From 7d315b6a7091f3fa1b76576c27e3bcddf93b0785 Mon Sep 17 00:00:00 2001 From: Gianluca Brilli Date: Mon, 17 May 2021 08:53:47 +0200 Subject: [PATCH] solutions for HLS lab2 --- hls/lab2/README.md | 9 + hls/lab2/TODO | 0 hls/lab2/exercise_1.tcl | 950 ++ hls/lab2/exercise_2.tcl | 976 ++ hls/lab2/exercise_3.tcl | 971 ++ hls/lab2/exercise_4.tcl | 975 ++ hls/lab2/exercise_5.tcl | 975 ++ hls/lab2/exercise_6.tcl | 975 ++ hls/lab2/exercise_7.tcl | 975 ++ hls/lab2/exercise_8.tcl | 989 ++ hls/lab2/exercise_9.tcl | 989 ++ .../xilinx_com_hls_exercise_2/component.xml | 5542 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v1_0/data/mmult.mdd | 16 + .../drivers/mmult_v1_0/data/mmult.tcl | 21 + .../drivers/mmult_v1_0/src/Makefile | 32 + .../drivers/mmult_v1_0/src/xmmult.c | 198 + .../drivers/mmult_v1_0/src/xmmult.h | 108 + .../drivers/mmult_v1_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v1_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v1_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 1411 +++ .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 1708 +++ .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_2/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v1_0.tcl | 529 + .../xilinx_com_hls_exercise_3/component.xml | 5560 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v2_0/data/mmult.mdd | 16 + .../drivers/mmult_v2_0/data/mmult.tcl | 21 + .../drivers/mmult_v2_0/src/Makefile | 32 + .../drivers/mmult_v2_0/src/xmmult.c | 198 + .../drivers/mmult_v2_0/src/xmmult.h | 108 + .../drivers/mmult_v2_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v2_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v2_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 2318 ++++ .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/verilog/mmult_urem_96ns_3bkb.v | 164 + .../hdl/vhdl/mmult.vhd | 2579 ++++ .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../hdl/vhdl/mmult_urem_96ns_3bkb.vhd | 219 + .../xilinx_com_hls_exercise_3/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v2_0.tcl | 529 + .../xilinx_com_hls_exercise_4/component.xml | 5560 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v3_0/data/mmult.mdd | 16 + .../drivers/mmult_v3_0/data/mmult.tcl | 21 + .../drivers/mmult_v3_0/src/Makefile | 32 + .../drivers/mmult_v3_0/src/xmmult.c | 198 + .../drivers/mmult_v3_0/src/xmmult.h | 108 + .../drivers/mmult_v3_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v3_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v3_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 1958 +++ .../hdl/verilog/mmult_in1_loc.v | 68 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 2337 ++++ .../hdl/vhdl/mmult_in1_loc.vhd | 112 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_4/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v3_0.tcl | 529 + .../xilinx_com_hls_exercise_5/component.xml | 5578 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v4_0/data/mmult.mdd | 16 + .../drivers/mmult_v4_0/data/mmult.tcl | 21 + .../drivers/mmult_v4_0/src/Makefile | 32 + .../drivers/mmult_v4_0/src/xmmult.c | 198 + .../drivers/mmult_v4_0/src/xmmult.h | 108 + .../drivers/mmult_v4_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v4_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v4_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 4497 +++++++ .../hdl/verilog/mmult_in1_loc.v | 88 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_loc.v | 68 + .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 4778 +++++++ .../hdl/vhdl/mmult_in1_loc.vhd | 146 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_loc.vhd | 112 + .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_5/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v4_0.tcl | 529 + .../xilinx_com_hls_exercise_6/component.xml | 5578 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v6_0/data/mmult.mdd | 16 + .../drivers/mmult_v6_0/data/mmult.tcl | 21 + .../drivers/mmult_v6_0/src/Makefile | 32 + .../drivers/mmult_v6_0/src/xmmult.c | 198 + .../drivers/mmult_v6_0/src/xmmult.h | 108 + .../drivers/mmult_v6_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v6_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v6_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 8117 ++++++++++++ .../hdl/verilog/mmult_in1_loc_0.v | 68 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_loc.v | 68 + .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 9139 ++++++++++++++ .../hdl/vhdl/mmult_in1_loc_0.vhd | 112 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_loc.vhd | 112 + .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_6/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v6_0.tcl | 529 + .../xilinx_com_hls_exercise_7/component.xml | 5578 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v7_0/data/mmult.mdd | 16 + .../drivers/mmult_v7_0/data/mmult.tcl | 21 + .../drivers/mmult_v7_0/src/Makefile | 32 + .../drivers/mmult_v7_0/src/xmmult.c | 198 + .../drivers/mmult_v7_0/src/xmmult.h | 108 + .../drivers/mmult_v7_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v7_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v7_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 8287 ++++++++++++ .../hdl/verilog/mmult_in1_loc_0.v | 68 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_loc.v | 83 + .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 9255 ++++++++++++++ .../hdl/vhdl/mmult_in1_loc_0.vhd | 112 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_loc.vhd | 129 + .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_7/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v7_0.tcl | 529 + .../xilinx_com_hls_exercise_8/component.xml | 5578 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v8_0/data/mmult.mdd | 16 + .../drivers/mmult_v8_0/data/mmult.tcl | 21 + .../drivers/mmult_v8_0/src/Makefile | 32 + .../drivers/mmult_v8_0/src/xmmult.c | 198 + .../drivers/mmult_v8_0/src/xmmult.h | 108 + .../drivers/mmult_v8_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v8_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v8_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 8344 ++++++++++++ .../hdl/verilog/mmult_in1_loc_0.v | 68 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_out_loc.v | 83 + .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 9452 ++++++++++++++ .../hdl/vhdl/mmult_in1_loc_0.vhd | 112 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_out_loc.vhd | 129 + .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_8/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v8_0.tcl | 529 + .../xilinx_com_hls_exercise_9/component.xml | 5614 ++++++++ .../constraints/mmult_ooc.xdc | 6 + .../doc/ReleaseNotes.txt | 10 + .../drivers/mmult_v9_0/data/mmult.mdd | 16 + .../drivers/mmult_v9_0/data/mmult.tcl | 21 + .../drivers/mmult_v9_0/src/Makefile | 32 + .../drivers/mmult_v9_0/src/xmmult.c | 198 + .../drivers/mmult_v9_0/src/xmmult.h | 108 + .../drivers/mmult_v9_0/src/xmmult_hw.h | 50 + .../drivers/mmult_v9_0/src/xmmult_linux.c | 147 + .../drivers/mmult_v9_0/src/xmmult_sinit.c | 43 + .../hdl/verilog/mmult.v | 9314 ++++++++++++++ .../hdl/verilog/mmult_in1_loc_0.v | 68 + .../hdl/verilog/mmult_in1_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_in2_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_mul_32ns_32bkb.v | 61 + .../hdl/verilog/mmult_mul_32s_32scud.v | 61 + .../hdl/verilog/mmult_out_loc.v | 83 + .../hdl/verilog/mmult_out_mem_m_axi.v | 2692 ++++ .../hdl/verilog/mmult_params_s_axi.v | 393 + .../hdl/vhdl/mmult.vhd | 10532 ++++++++++++++++ .../hdl/vhdl/mmult_in1_loc_0.vhd | 112 + .../hdl/vhdl/mmult_in1_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_in2_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_mul_32ns_32bkb.vhd | 88 + .../hdl/vhdl/mmult_mul_32s_32scud.vhd | 88 + .../hdl/vhdl/mmult_out_loc.vhd | 129 + .../hdl/vhdl/mmult_out_mem_m_axi.vhd | 3306 +++++ .../hdl/vhdl/mmult_params_s_axi.vhd | 439 + .../xilinx_com_hls_exercise_9/misc/logo.png | Bin 0 -> 4077 bytes .../xgui/mmult_v9_0.tcl | 529 + hls/lab2/hw/exercise_1.xsa | Bin 0 -> 1249344 bytes hls/lab2/hw/exercise_2.xsa | Bin 0 -> 1360510 bytes hls/lab2/hw/exercise_3.xsa | Bin 0 -> 1721345 bytes hls/lab2/hw/exercise_4.xsa | Bin 0 -> 1356701 bytes hls/lab2/hw/exercise_5.xsa | Bin 0 -> 1600326 bytes hls/lab2/hw/exercise_6.xsa | Bin 0 -> 1660334 bytes hls/lab2/hw/exercise_7.xsa | Bin 0 -> 1672595 bytes hls/lab2/hw/exercise_8.xsa | Bin 0 -> 1698646 bytes hls/lab2/hw/exercise_9.xsa | Bin 0 -> 1713599 bytes hls/lab2/sw/lscript.ld | 322 + hls/lab2/sw/main.c | 102 + hls/lab2/sw/platform.c | 111 + hls/lab2/sw/platform.h | 41 + hls/lab2/sw/platform_config.h | 6 + 237 files changed, 310679 insertions(+) create mode 100644 hls/lab2/README.md delete mode 100644 hls/lab2/TODO create mode 100644 hls/lab2/exercise_1.tcl create mode 100644 hls/lab2/exercise_2.tcl create mode 100644 hls/lab2/exercise_3.tcl create mode 100644 hls/lab2/exercise_4.tcl create mode 100644 hls/lab2/exercise_5.tcl create mode 100644 hls/lab2/exercise_6.tcl create mode 100644 hls/lab2/exercise_7.tcl create mode 100644 hls/lab2/exercise_8.tcl create mode 100644 hls/lab2/exercise_9.tcl create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/component.xml create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/constraints/mmult_ooc.xdc create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/doc/ReleaseNotes.txt create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.mdd create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.tcl create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/Makefile create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.c create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.h create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_hw.h create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_linux.c create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_sinit.c create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult.v create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_out_mem_m_axi.v create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_params_s_axi.v create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult.vhd create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/misc/logo.png create mode 100644 hls/lab2/exported_ips/xilinx_com_hls_exercise_2/xgui/mmult_v1_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_urem_96ns_3bkb.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_urem_96ns_3bkb.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_3/xgui/mmult_v2_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_4/xgui/mmult_v3_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_5/xgui/mmult_v4_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_loc_0.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_loc_0.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_6/xgui/mmult_v6_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_loc_0.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_loc_0.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_7/xgui/mmult_v7_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_loc_0.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_loc_0.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_8/xgui/mmult_v8_0.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/component.xml create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/constraints/mmult_ooc.xdc create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/doc/ReleaseNotes.txt create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.mdd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.tcl create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/Makefile create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_hw.h create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_linux.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_sinit.c create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_loc_0.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in2_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32ns_32bkb.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32s_32scud.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_loc.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_mem_m_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_params_s_axi.v create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_loc_0.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in2_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32ns_32bkb.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32s_32scud.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_loc.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_mem_m_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_params_s_axi.vhd create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/misc/logo.png create mode 100755 hls/lab2/exported_ips/xilinx_com_hls_exercise_9/xgui/mmult_v9_0.tcl create mode 100644 hls/lab2/hw/exercise_1.xsa create mode 100644 hls/lab2/hw/exercise_2.xsa create mode 100644 hls/lab2/hw/exercise_3.xsa create mode 100644 hls/lab2/hw/exercise_4.xsa create mode 100644 hls/lab2/hw/exercise_5.xsa create mode 100644 hls/lab2/hw/exercise_6.xsa create mode 100644 hls/lab2/hw/exercise_7.xsa create mode 100644 hls/lab2/hw/exercise_8.xsa create mode 100644 hls/lab2/hw/exercise_9.xsa create mode 100644 hls/lab2/sw/lscript.ld create mode 100644 hls/lab2/sw/main.c create mode 100644 hls/lab2/sw/platform.c create mode 100644 hls/lab2/sw/platform.h create mode 100644 hls/lab2/sw/platform_config.h diff --git a/hls/lab2/README.md b/hls/lab2/README.md new file mode 100644 index 0000000..262689e --- /dev/null +++ b/hls/lab2/README.md @@ -0,0 +1,9 @@ +exercise 1: design solo PS e AXI Timer; +exercise 2: mmult baseline +exercise 3: mmult pipelined +exercise 4: mmult con BRAM +exercise 5: mmult Unrolled +exercise 6: mmult Array Part +exercise 7: mmult Pipeline outer +exercise 8: mmult Pipeline outer 200MHz +exercise 9: mmult Pipeline outer 300MHz \ No newline at end of file diff --git a/hls/lab2/TODO b/hls/lab2/TODO deleted file mode 100644 index e69de29..0000000 diff --git a/hls/lab2/exercise_1.tcl b/hls/lab2/exercise_1.tcl new file mode 100644 index 0000000..f1ef726 --- /dev/null +++ b/hls/lab2/exercise_1.tcl @@ -0,0 +1,950 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {1} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;0|S_AXI_HP1_FPD:NA;0|S_AXI_HP0_FPD:NA;0|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_2.tcl b/hls/lab2/exercise_2.tcl new file mode 100644 index 0000000..b04eebc --- /dev/null +++ b/hls/lab2/exercise_2.tcl @@ -0,0 +1,976 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_2} [current_project] +update_ip_catalog + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:1.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:1.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_3.tcl b/hls/lab2/exercise_3.tcl new file mode 100644 index 0000000..83612b9 --- /dev/null +++ b/hls/lab2/exercise_3.tcl @@ -0,0 +1,971 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_3} [current_project] +update_ip_catalog + + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:2.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:2.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_4.tcl b/hls/lab2/exercise_4.tcl new file mode 100644 index 0000000..4293283 --- /dev/null +++ b/hls/lab2/exercise_4.tcl @@ -0,0 +1,975 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_4} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:3.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:3.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_5.tcl b/hls/lab2/exercise_5.tcl new file mode 100644 index 0000000..9e0e9f7 --- /dev/null +++ b/hls/lab2/exercise_5.tcl @@ -0,0 +1,975 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_5} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:4.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:4.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_6.tcl b/hls/lab2/exercise_6.tcl new file mode 100644 index 0000000..799ac57 --- /dev/null +++ b/hls/lab2/exercise_6.tcl @@ -0,0 +1,975 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_6} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:6.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:6.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_7.tcl b/hls/lab2/exercise_7.tcl new file mode 100644 index 0000000..047f938 --- /dev/null +++ b/hls/lab2/exercise_7.tcl @@ -0,0 +1,975 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_7} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:hls:mmult:7.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:7.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_8.tcl b/hls/lab2/exercise_8.tcl new file mode 100644 index 0000000..9c9eebd --- /dev/null +++ b/hls/lab2/exercise_8.tcl @@ -0,0 +1,989 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_8} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:ip:clk_wiz:6.0\ +xilinx.com:hls:mmult:8.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: clk_wiz_0, and set properties + set clk_wiz_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0 ] + set_property -dict [ list \ + CONFIG.CLKOUT1_JITTER {102.086} \ + CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {200.000} \ + CONFIG.CLK_OUT1_PORT {clk_out_200} \ + CONFIG.MMCM_CLKOUT0_DIVIDE_F {6.000} \ + CONFIG.RESET_PORT {resetn} \ + CONFIG.RESET_TYPE {ACTIVE_LOW} \ + ] $clk_wiz_0 + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:8.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net clk_wiz_0_locked [get_bd_pins clk_wiz_0/locked] [get_bd_pins rst_ps8_0_100M/dcm_locked] + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins clk_wiz_0/clk_out_200] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk1 [get_bd_pins clk_wiz_0/clk_in1] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins clk_wiz_0/resetn] [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exercise_9.tcl b/hls/lab2/exercise_9.tcl new file mode 100644 index 0000000..0aab834 --- /dev/null +++ b/hls/lab2/exercise_9.tcl @@ -0,0 +1,989 @@ + +################################################################ +# This is a generated script based on design: design_1 +# +# Though there are limitations about the generated script, +# the main purpose of this utility is to make learning +# IP Integrator Tcl commands easier. +################################################################ + +namespace eval _tcl { +proc get_script_folder {} { + set script_path [file normalize [info script]] + set script_folder [file dirname $script_path] + return $script_folder +} +} +variable script_folder +set script_folder [_tcl::get_script_folder] + +################################################################ +# Check if script is running in correct Vivado version. +################################################################ +set scripts_vivado_version 2020.1 +set current_vivado_version [version -short] + +if { [string first $scripts_vivado_version $current_vivado_version] == -1 } { + puts "" + catch {common::send_gid_msg -ssname BD::TCL -id 2041 -severity "ERROR" "This script was generated using Vivado <$scripts_vivado_version> and is being run in <$current_vivado_version> of Vivado. Please run the script in Vivado <$scripts_vivado_version> then open the design in Vivado <$current_vivado_version>. Upgrade the design by running \"Tools => Report => Report IP Status...\", then run write_bd_tcl to create an updated script."} + + return 1 +} + +################################################################ +# START +################################################################ + +# To test this script, run the following commands from Vivado Tcl console: +# source design_1_script.tcl + +# If there is no project opened, this script will create a +# project, but make sure you do not have an existing project +# <./myproj/project_1.xpr> in the current working folder. + +set list_projs [get_projects -quiet] +if { $list_projs eq "" } { + create_project project_1 myproj -part xczu3eg-sbva484-1-e + set_property BOARD_PART em.avnet.com:ultra96v2:part0:1.0 [current_project] +} + +set_property ip_repo_paths {exported_ips/xilinx_com_hls_exercise_9} [current_project] +update_ip_catalog + +# CHANGE DESIGN NAME HERE +variable design_name +set design_name design_1 + +# If you do not already have an existing IP Integrator design open, +# you can create a design using the following command: +# create_bd_design $design_name + +# Creating design if needed +set errMsg "" +set nRet 0 + +set cur_design [current_bd_design -quiet] +set list_cells [get_bd_cells -quiet] + +if { ${design_name} eq "" } { + # USE CASES: + # 1) Design_name not set + + set errMsg "Please set the variable to a non-empty value." + set nRet 1 + +} elseif { ${cur_design} ne "" && ${list_cells} eq "" } { + # USE CASES: + # 2): Current design opened AND is empty AND names same. + # 3): Current design opened AND is empty AND names diff; design_name NOT in project. + # 4): Current design opened AND is empty AND names diff; design_name exists in project. + + if { $cur_design ne $design_name } { + common::send_gid_msg -ssname BD::TCL -id 2001 -severity "INFO" "Changing value of from <$design_name> to <$cur_design> since current design is empty." + set design_name [get_property NAME $cur_design] + } + common::send_gid_msg -ssname BD::TCL -id 2002 -severity "INFO" "Constructing design in IPI design <$cur_design>..." + +} elseif { ${cur_design} ne "" && $list_cells ne "" && $cur_design eq $design_name } { + # USE CASES: + # 5) Current design opened AND has components AND same names. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 1 +} elseif { [get_files -quiet ${design_name}.bd] ne "" } { + # USE CASES: + # 6) Current opened design, has components, but diff names, design_name exists in project. + # 7) No opened design, design_name exists in project. + + set errMsg "Design <$design_name> already exists in your project, please set the variable to another value." + set nRet 2 + +} else { + # USE CASES: + # 8) No opened design, design_name not in project. + # 9) Current opened design, has components, but diff names, design_name not in project. + + common::send_gid_msg -ssname BD::TCL -id 2003 -severity "INFO" "Currently there is no design <$design_name> in project, so creating one..." + + create_bd_design $design_name + + common::send_gid_msg -ssname BD::TCL -id 2004 -severity "INFO" "Making design <$design_name> as current_bd_design." + current_bd_design $design_name + +} + +common::send_gid_msg -ssname BD::TCL -id 2005 -severity "INFO" "Currently the variable is equal to \"$design_name\"." + +if { $nRet != 0 } { + catch {common::send_gid_msg -ssname BD::TCL -id 2006 -severity "ERROR" $errMsg} + return $nRet +} + +set bCheckIPsPassed 1 +################################################################## +# CHECK IPs +################################################################## +set bCheckIPs 1 +if { $bCheckIPs == 1 } { + set list_check_ips "\ +xilinx.com:ip:axi_timer:2.0\ +xilinx.com:ip:clk_wiz:6.0\ +xilinx.com:hls:mmult:9.0\ +xilinx.com:ip:proc_sys_reset:5.0\ +xilinx.com:ip:zynq_ultra_ps_e:3.3\ +" + + set list_ips_missing "" + common::send_gid_msg -ssname BD::TCL -id 2011 -severity "INFO" "Checking if the following IPs exist in the project's IP catalog: $list_check_ips ." + + foreach ip_vlnv $list_check_ips { + set ip_obj [get_ipdefs -all $ip_vlnv] + if { $ip_obj eq "" } { + lappend list_ips_missing $ip_vlnv + } + } + + if { $list_ips_missing ne "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2012 -severity "ERROR" "The following IPs are not found in the IP Catalog:\n $list_ips_missing\n\nResolution: Please add the repository containing the IP(s) to the project." } + set bCheckIPsPassed 0 + } + +} + +if { $bCheckIPsPassed != 1 } { + common::send_gid_msg -ssname BD::TCL -id 2023 -severity "WARNING" "Will not continue with creation of design due to the error(s) above." + return 3 +} + +################################################################## +# DESIGN PROCs +################################################################## + + + +# Procedure to create entire design; Provide argument to make +# procedure reusable. If parentCell is "", will use root. +proc create_root_design { parentCell } { + + variable script_folder + variable design_name + + if { $parentCell eq "" } { + set parentCell [get_bd_cells /] + } + + # Get object for parentCell + set parentObj [get_bd_cells $parentCell] + if { $parentObj == "" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2090 -severity "ERROR" "Unable to find parent cell <$parentCell>!"} + return + } + + # Make sure parentObj is hier blk + set parentType [get_property TYPE $parentObj] + if { $parentType ne "hier" } { + catch {common::send_gid_msg -ssname BD::TCL -id 2091 -severity "ERROR" "Parent <$parentObj> has TYPE = <$parentType>. Expected to be ."} + return + } + + # Save current instance; Restore later + set oldCurInst [current_bd_instance .] + + # Set parent object as current + current_bd_instance $parentObj + + + # Create interface ports + + # Create ports + + # Create instance: axi_timer_0, and set properties + set axi_timer_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_timer:2.0 axi_timer_0 ] + + # Create instance: clk_wiz_0, and set properties + set clk_wiz_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:clk_wiz:6.0 clk_wiz_0 ] + set_property -dict [ list \ + CONFIG.CLKOUT1_JITTER {94.862} \ + CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {300.000} \ + CONFIG.CLK_OUT1_PORT {clk_out_300} \ + CONFIG.MMCM_CLKOUT0_DIVIDE_F {4.000} \ + CONFIG.RESET_PORT {resetn} \ + CONFIG.RESET_TYPE {ACTIVE_LOW} \ + ] $clk_wiz_0 + + # Create instance: mmult_0, and set properties + set mmult_0 [ create_bd_cell -type ip -vlnv xilinx.com:hls:mmult:9.0 mmult_0 ] + + # Create instance: ps8_0_axi_periph, and set properties + set ps8_0_axi_periph [ create_bd_cell -type ip -vlnv xilinx.com:ip:axi_interconnect:2.1 ps8_0_axi_periph ] + set_property -dict [ list \ + CONFIG.NUM_MI {2} \ + ] $ps8_0_axi_periph + + # Create instance: rst_ps8_0_100M, and set properties + set rst_ps8_0_100M [ create_bd_cell -type ip -vlnv xilinx.com:ip:proc_sys_reset:5.0 rst_ps8_0_100M ] + + # Create instance: zynq_ultra_ps_e_0, and set properties + set zynq_ultra_ps_e_0 [ create_bd_cell -type ip -vlnv xilinx.com:ip:zynq_ultra_ps_e:3.3 zynq_ultra_ps_e_0 ] + set_property -dict [ list \ + CONFIG.PSU_BANK_0_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_1_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_2_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_BANK_3_IO_STANDARD {LVCMOS18} \ + CONFIG.PSU_DDR_RAM_HIGHADDR {0x7FFFFFFF} \ + CONFIG.PSU_DDR_RAM_HIGHADDR_OFFSET {0x00000002} \ + CONFIG.PSU_DDR_RAM_LOWADDR_OFFSET {0x80000000} \ + CONFIG.PSU_DYNAMIC_DDR_CONFIG_EN {0} \ + CONFIG.PSU_MIO_0_DIRECTION {out} \ + CONFIG.PSU_MIO_0_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_0_POLARITY {Default} \ + CONFIG.PSU_MIO_10_DIRECTION {inout} \ + CONFIG.PSU_MIO_10_POLARITY {Default} \ + CONFIG.PSU_MIO_11_DIRECTION {inout} \ + CONFIG.PSU_MIO_11_POLARITY {Default} \ + CONFIG.PSU_MIO_12_DIRECTION {inout} \ + CONFIG.PSU_MIO_12_POLARITY {Default} \ + CONFIG.PSU_MIO_13_DIRECTION {inout} \ + CONFIG.PSU_MIO_13_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_13_POLARITY {Default} \ + CONFIG.PSU_MIO_14_DIRECTION {inout} \ + CONFIG.PSU_MIO_14_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_14_POLARITY {Default} \ + CONFIG.PSU_MIO_15_DIRECTION {inout} \ + CONFIG.PSU_MIO_15_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_15_POLARITY {Default} \ + CONFIG.PSU_MIO_16_DIRECTION {inout} \ + CONFIG.PSU_MIO_16_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_16_POLARITY {Default} \ + CONFIG.PSU_MIO_17_DIRECTION {inout} \ + CONFIG.PSU_MIO_17_POLARITY {Default} \ + CONFIG.PSU_MIO_18_DIRECTION {inout} \ + CONFIG.PSU_MIO_18_POLARITY {Default} \ + CONFIG.PSU_MIO_19_DIRECTION {inout} \ + CONFIG.PSU_MIO_19_POLARITY {Default} \ + CONFIG.PSU_MIO_1_DIRECTION {in} \ + CONFIG.PSU_MIO_1_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_1_POLARITY {Default} \ + CONFIG.PSU_MIO_1_SLEW {fast} \ + CONFIG.PSU_MIO_20_DIRECTION {inout} \ + CONFIG.PSU_MIO_20_POLARITY {Default} \ + CONFIG.PSU_MIO_21_DIRECTION {inout} \ + CONFIG.PSU_MIO_21_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_21_POLARITY {Default} \ + CONFIG.PSU_MIO_22_DIRECTION {out} \ + CONFIG.PSU_MIO_22_DRIVE_STRENGTH {4} \ + CONFIG.PSU_MIO_22_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_22_POLARITY {Default} \ + CONFIG.PSU_MIO_23_DIRECTION {inout} \ + CONFIG.PSU_MIO_23_POLARITY {Default} \ + CONFIG.PSU_MIO_24_DIRECTION {in} \ + CONFIG.PSU_MIO_24_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_24_POLARITY {Default} \ + CONFIG.PSU_MIO_24_SLEW {fast} \ + CONFIG.PSU_MIO_25_DIRECTION {inout} \ + CONFIG.PSU_MIO_25_POLARITY {Default} \ + CONFIG.PSU_MIO_26_DIRECTION {in} \ + CONFIG.PSU_MIO_26_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_26_POLARITY {Default} \ + CONFIG.PSU_MIO_26_SLEW {fast} \ + CONFIG.PSU_MIO_27_DIRECTION {out} \ + CONFIG.PSU_MIO_27_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_27_POLARITY {Default} \ + CONFIG.PSU_MIO_28_DIRECTION {in} \ + CONFIG.PSU_MIO_28_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_28_POLARITY {Default} \ + CONFIG.PSU_MIO_28_SLEW {fast} \ + CONFIG.PSU_MIO_29_DIRECTION {out} \ + CONFIG.PSU_MIO_29_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_29_POLARITY {Default} \ + CONFIG.PSU_MIO_2_DIRECTION {in} \ + CONFIG.PSU_MIO_2_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_2_POLARITY {Default} \ + CONFIG.PSU_MIO_2_SLEW {fast} \ + CONFIG.PSU_MIO_30_DIRECTION {in} \ + CONFIG.PSU_MIO_30_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_30_POLARITY {Default} \ + CONFIG.PSU_MIO_30_SLEW {fast} \ + CONFIG.PSU_MIO_31_DIRECTION {inout} \ + CONFIG.PSU_MIO_31_POLARITY {Default} \ + CONFIG.PSU_MIO_32_DIRECTION {out} \ + CONFIG.PSU_MIO_32_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_32_POLARITY {Default} \ + CONFIG.PSU_MIO_33_DIRECTION {out} \ + CONFIG.PSU_MIO_33_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_33_POLARITY {Default} \ + CONFIG.PSU_MIO_34_DIRECTION {out} \ + CONFIG.PSU_MIO_34_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_34_POLARITY {Default} \ + CONFIG.PSU_MIO_35_DIRECTION {inout} \ + CONFIG.PSU_MIO_35_POLARITY {Default} \ + CONFIG.PSU_MIO_36_DIRECTION {inout} \ + CONFIG.PSU_MIO_36_POLARITY {Default} \ + CONFIG.PSU_MIO_37_DIRECTION {inout} \ + CONFIG.PSU_MIO_37_POLARITY {Default} \ + CONFIG.PSU_MIO_38_DIRECTION {inout} \ + CONFIG.PSU_MIO_38_POLARITY {Default} \ + CONFIG.PSU_MIO_39_DIRECTION {inout} \ + CONFIG.PSU_MIO_39_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_39_POLARITY {Default} \ + CONFIG.PSU_MIO_39_SLEW {fast} \ + CONFIG.PSU_MIO_3_DIRECTION {out} \ + CONFIG.PSU_MIO_3_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_3_POLARITY {Default} \ + CONFIG.PSU_MIO_40_DIRECTION {inout} \ + CONFIG.PSU_MIO_40_POLARITY {Default} \ + CONFIG.PSU_MIO_41_DIRECTION {inout} \ + CONFIG.PSU_MIO_41_POLARITY {Default} \ + CONFIG.PSU_MIO_42_DIRECTION {inout} \ + CONFIG.PSU_MIO_42_POLARITY {Default} \ + CONFIG.PSU_MIO_43_DIRECTION {inout} \ + CONFIG.PSU_MIO_43_POLARITY {Default} \ + CONFIG.PSU_MIO_44_DIRECTION {inout} \ + CONFIG.PSU_MIO_44_POLARITY {Default} \ + CONFIG.PSU_MIO_45_DIRECTION {inout} \ + CONFIG.PSU_MIO_45_POLARITY {Default} \ + CONFIG.PSU_MIO_46_DIRECTION {inout} \ + CONFIG.PSU_MIO_46_POLARITY {Default} \ + CONFIG.PSU_MIO_47_DIRECTION {inout} \ + CONFIG.PSU_MIO_47_POLARITY {Default} \ + CONFIG.PSU_MIO_48_DIRECTION {inout} \ + CONFIG.PSU_MIO_48_POLARITY {Default} \ + CONFIG.PSU_MIO_49_DIRECTION {inout} \ + CONFIG.PSU_MIO_49_POLARITY {Default} \ + CONFIG.PSU_MIO_4_DIRECTION {inout} \ + CONFIG.PSU_MIO_4_POLARITY {Default} \ + CONFIG.PSU_MIO_50_DIRECTION {inout} \ + CONFIG.PSU_MIO_50_POLARITY {Default} \ + CONFIG.PSU_MIO_51_DIRECTION {out} \ + CONFIG.PSU_MIO_51_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_51_POLARITY {Default} \ + CONFIG.PSU_MIO_52_DIRECTION {in} \ + CONFIG.PSU_MIO_52_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_52_POLARITY {Default} \ + CONFIG.PSU_MIO_52_SLEW {fast} \ + CONFIG.PSU_MIO_53_DIRECTION {in} \ + CONFIG.PSU_MIO_53_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_53_POLARITY {Default} \ + CONFIG.PSU_MIO_53_SLEW {fast} \ + CONFIG.PSU_MIO_54_DIRECTION {inout} \ + CONFIG.PSU_MIO_54_POLARITY {Default} \ + CONFIG.PSU_MIO_55_DIRECTION {in} \ + CONFIG.PSU_MIO_55_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_55_POLARITY {Default} \ + CONFIG.PSU_MIO_55_SLEW {fast} \ + CONFIG.PSU_MIO_56_DIRECTION {inout} \ + CONFIG.PSU_MIO_56_POLARITY {Default} \ + CONFIG.PSU_MIO_57_DIRECTION {inout} \ + CONFIG.PSU_MIO_57_POLARITY {Default} \ + CONFIG.PSU_MIO_58_DIRECTION {out} \ + CONFIG.PSU_MIO_58_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_58_POLARITY {Default} \ + CONFIG.PSU_MIO_59_DIRECTION {inout} \ + CONFIG.PSU_MIO_59_POLARITY {Default} \ + CONFIG.PSU_MIO_5_DIRECTION {inout} \ + CONFIG.PSU_MIO_5_POLARITY {Default} \ + CONFIG.PSU_MIO_60_DIRECTION {inout} \ + CONFIG.PSU_MIO_60_POLARITY {Default} \ + CONFIG.PSU_MIO_61_DIRECTION {inout} \ + CONFIG.PSU_MIO_61_POLARITY {Default} \ + CONFIG.PSU_MIO_62_DIRECTION {inout} \ + CONFIG.PSU_MIO_62_POLARITY {Default} \ + CONFIG.PSU_MIO_63_DIRECTION {inout} \ + CONFIG.PSU_MIO_63_POLARITY {Default} \ + CONFIG.PSU_MIO_64_DIRECTION {in} \ + CONFIG.PSU_MIO_64_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_64_POLARITY {Default} \ + CONFIG.PSU_MIO_64_SLEW {fast} \ + CONFIG.PSU_MIO_65_DIRECTION {in} \ + CONFIG.PSU_MIO_65_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_65_POLARITY {Default} \ + CONFIG.PSU_MIO_65_SLEW {fast} \ + CONFIG.PSU_MIO_66_DIRECTION {inout} \ + CONFIG.PSU_MIO_66_POLARITY {Default} \ + CONFIG.PSU_MIO_67_DIRECTION {in} \ + CONFIG.PSU_MIO_67_DRIVE_STRENGTH {12} \ + CONFIG.PSU_MIO_67_POLARITY {Default} \ + CONFIG.PSU_MIO_67_SLEW {fast} \ + CONFIG.PSU_MIO_68_DIRECTION {inout} \ + CONFIG.PSU_MIO_68_POLARITY {Default} \ + CONFIG.PSU_MIO_69_DIRECTION {inout} \ + CONFIG.PSU_MIO_69_POLARITY {Default} \ + CONFIG.PSU_MIO_6_DIRECTION {inout} \ + CONFIG.PSU_MIO_6_POLARITY {Default} \ + CONFIG.PSU_MIO_70_DIRECTION {out} \ + CONFIG.PSU_MIO_70_INPUT_TYPE {cmos} \ + CONFIG.PSU_MIO_70_POLARITY {Default} \ + CONFIG.PSU_MIO_71_DIRECTION {inout} \ + CONFIG.PSU_MIO_71_POLARITY {Default} \ + CONFIG.PSU_MIO_72_DIRECTION {inout} \ + CONFIG.PSU_MIO_72_POLARITY {Default} \ + CONFIG.PSU_MIO_73_DIRECTION {inout} \ + CONFIG.PSU_MIO_73_POLARITY {Default} \ + CONFIG.PSU_MIO_74_DIRECTION {inout} \ + CONFIG.PSU_MIO_74_POLARITY {Default} \ + CONFIG.PSU_MIO_75_DIRECTION {inout} \ + CONFIG.PSU_MIO_75_POLARITY {Default} \ + CONFIG.PSU_MIO_76_DIRECTION {inout} \ + CONFIG.PSU_MIO_76_POLARITY {Default} \ + CONFIG.PSU_MIO_77_DIRECTION {inout} \ + CONFIG.PSU_MIO_77_POLARITY {Default} \ + CONFIG.PSU_MIO_7_DIRECTION {inout} \ + CONFIG.PSU_MIO_7_POLARITY {Default} \ + CONFIG.PSU_MIO_8_DIRECTION {inout} \ + CONFIG.PSU_MIO_8_POLARITY {Default} \ + CONFIG.PSU_MIO_9_DIRECTION {inout} \ + CONFIG.PSU_MIO_9_POLARITY {Default} \ + CONFIG.PSU_MIO_TREE_PERIPHERALS {UART 1#UART 1#UART 0#UART 0#I2C 1#I2C 1#SPI 1#GPIO0 MIO#GPIO0 MIO#SPI 1#SPI 1#SPI 1#GPIO0 MIO#SD 0#SD 0#SD 0#SD 0#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#GPIO0 MIO#SD 0#SD 0#GPIO0 MIO#SD 0#GPIO0 MIO#PMU GPI 0#DPAUX#DPAUX#DPAUX#DPAUX#GPIO1 MIO#PMU GPO 0#PMU GPO 1#PMU GPO 2#GPIO1 MIO#GPIO1 MIO#GPIO1 MIO#SPI 0#GPIO1 MIO#GPIO1 MIO#SPI 0#SPI 0#SPI 0#GPIO1 MIO#GPIO1 MIO#SD 1#SD 1#SD 1#SD 1#SD 1#SD 1#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 0#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#USB 1#GPIO2 MIO#GPIO2 MIO} \ + CONFIG.PSU_MIO_TREE_SIGNALS {txd#rxd#rxd#txd#scl_out#sda_out#sclk_out#gpio0[7]#gpio0[8]#n_ss_out[0]#miso#mosi#gpio0[12]#sdio0_data_out[0]#sdio0_data_out[1]#sdio0_data_out[2]#sdio0_data_out[3]#gpio0[17]#gpio0[18]#gpio0[19]#gpio0[20]#sdio0_cmd_out#sdio0_clk_out#gpio0[23]#sdio0_cd_n#gpio0[25]#gpi[0]#dp_aux_data_out#dp_hot_plug_detect#dp_aux_data_oe#dp_aux_data_in#gpio1[31]#gpo[0]#gpo[1]#gpo[2]#gpio1[35]#gpio1[36]#gpio1[37]#sclk_out#gpio1[39]#gpio1[40]#n_ss_out[0]#miso#mosi#gpio1[44]#gpio1[45]#sdio1_data_out[0]#sdio1_data_out[1]#sdio1_data_out[2]#sdio1_data_out[3]#sdio1_cmd_out#sdio1_clk_out#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#ulpi_clk_in#ulpi_dir#ulpi_tx_data[2]#ulpi_nxt#ulpi_tx_data[0]#ulpi_tx_data[1]#ulpi_stp#ulpi_tx_data[3]#ulpi_tx_data[4]#ulpi_tx_data[5]#ulpi_tx_data[6]#ulpi_tx_data[7]#gpio2[76]#gpio2[77]} \ + CONFIG.PSU_SD0_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_SD1_INTERNAL_BUS_WIDTH {4} \ + CONFIG.PSU_USB3__DUAL_CLOCK_ENABLE {1} \ + CONFIG.PSU__ACT_DDR_FREQ_MHZ {533.333313} \ + CONFIG.PSU__CAN1__GRP_CLK__ENABLE {0} \ + CONFIG.PSU__CAN1__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__ACT_FREQMHZ {1200.000000} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__ACPU_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FBDIV {72} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__APLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__APLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__APLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_FPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TRACE_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DBG_TSTMP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__ACT_FREQMHZ {266.666656} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__FREQMHZ {533} \ + CONFIG.PSU__CRF_APB__DDR_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__DPDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FBDIV {64} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRF_APB__DPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__DPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRF_APB__DPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__ACT_FREQMHZ {24.576040} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR0 {16} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_AUDIO_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_AUDIO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__ACT_FREQMHZ {26.214443} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_STC_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__ACT_FREQMHZ {297.029572} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRF_APB__DP_VIDEO_REF_CTRL__SRCSEL {VPLL} \ + CONFIG.PSU__CRF_APB__DP_VIDEO__FRAC_ENABLED {1} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__ACT_FREQMHZ {600.000000} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__GDMA_REF_CTRL__SRCSEL {APLL} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__DIVISOR0 {1} \ + CONFIG.PSU__CRF_APB__GPU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__PCIE_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRF_APB__SATA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRF_APB__TOPSW_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__ACT_FREQMHZ {533.333313} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__DIVISOR0 {2} \ + CONFIG.PSU__CRF_APB__TOPSW_MAIN_CTRL__SRCSEL {DPLL} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FBDIV {71} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACDATA {0.2871} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__FRACFREQ {300} \ + CONFIG.PSU__CRF_APB__VPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRF_APB__VPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRF_APB__VPLL_TO_LPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__ADMA_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__AFI6_REF_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__ACT_FREQMHZ {51.724136} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR0 {29} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__AMS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__CAN1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__CPU_R5_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__ACT_FREQMHZ {500} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__FREQMHZ {400} \ + CONFIG.PSU__CRL_APB__CSU_PLL_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__DBG_LPD_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__DLL_REF_CTRL__ACT_FREQMHZ {1500.000000} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM2_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM3_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__GEM_TSU_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__I2C1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__DIV2 {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FBDIV {45} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__FRACDATA {0} \ + CONFIG.PSU__CRL_APB__IOPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__IOPLL_FRAC_CFG__ENABLED {0} \ + CONFIG.PSU__CRL_APB__IOPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__IOU_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__LPD_LSBUS_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__ACT_FREQMHZ {500.000000} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__LPD_SWITCH_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__NAND_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__PCAP_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__ACT_FREQMHZ {24.999975} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__DIVISOR1 {4} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL1_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__ACT_FREQMHZ {299.999700} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL2_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__ACT_FREQMHZ {374.999625} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR0 {4} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__FREQMHZ {100} \ + CONFIG.PSU__CRL_APB__PL3_REF_CTRL__SRCSEL {RPLL} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR0 {12} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__QSPI_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__DIV2 {1} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FBDIV {70} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACDATA {0.779} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__FRACFREQ {25} \ + CONFIG.PSU__CRL_APB__RPLL_CTRL__SRCSEL {PSS_REF_CLK} \ + CONFIG.PSU__CRL_APB__RPLL_FRAC_CFG__ENABLED {1} \ + CONFIG.PSU__CRL_APB__RPLL_TO_FPD_CTRL__DIVISOR0 {3} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SDIO1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__ACT_FREQMHZ {187.500000} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR0 {8} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__SPI1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__TIMESTAMP_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART0_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR0 {15} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__UART1_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__FREQMHZ {250} \ + CONFIG.PSU__CRL_APB__USB0_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__ACT_FREQMHZ {250.000000} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR0 {6} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__DIVISOR1 {1} \ + CONFIG.PSU__CRL_APB__USB1_BUS_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__ACT_FREQMHZ {20.000000} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR0 {5} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__DIVISOR1 {15} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__FREQMHZ {20} \ + CONFIG.PSU__CRL_APB__USB3_DUAL_REF_CTRL__SRCSEL {IOPLL} \ + CONFIG.PSU__CRL_APB__USB3__ENABLE {1} \ + CONFIG.PSU__CSUPMU__PERIPHERAL__VALID {1} \ + CONFIG.PSU__DDRC__ADDR_MIRROR {1} \ + CONFIG.PSU__DDRC__AL {0} \ + CONFIG.PSU__DDRC__BANK_ADDR_COUNT {3} \ + CONFIG.PSU__DDRC__BG_ADDR_COUNT {NA} \ + CONFIG.PSU__DDRC__BRC_MAPPING {ROW_BANK_COL} \ + CONFIG.PSU__DDRC__BUS_WIDTH {32 Bit} \ + CONFIG.PSU__DDRC__CL {NA} \ + CONFIG.PSU__DDRC__CLOCK_STOP_EN {0} \ + CONFIG.PSU__DDRC__COL_ADDR_COUNT {10} \ + CONFIG.PSU__DDRC__COMPONENTS {Components} \ + CONFIG.PSU__DDRC__CWL {NA} \ + CONFIG.PSU__DDRC__DDR3L_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DDR4_ADDR_MAPPING {NA} \ + CONFIG.PSU__DDRC__DDR4_CAL_MODE_ENABLE {NA} \ + CONFIG.PSU__DDRC__DDR4_CRC_CONTROL {NA} \ + CONFIG.PSU__DDRC__DDR4_MAXPWR_SAVING_EN {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_MODE {NA} \ + CONFIG.PSU__DDRC__DDR4_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__DEEP_PWR_DOWN_EN {0} \ + CONFIG.PSU__DDRC__DEVICE_CAPACITY {16384 MBits} \ + CONFIG.PSU__DDRC__DIMM_ADDR_MIRROR {0} \ + CONFIG.PSU__DDRC__DM_DBI {DM_NO_DBI} \ + CONFIG.PSU__DDRC__DQMAP_0_3 {0} \ + CONFIG.PSU__DDRC__DQMAP_12_15 {0} \ + CONFIG.PSU__DDRC__DQMAP_16_19 {0} \ + CONFIG.PSU__DDRC__DQMAP_20_23 {0} \ + CONFIG.PSU__DDRC__DQMAP_24_27 {0} \ + CONFIG.PSU__DDRC__DQMAP_28_31 {0} \ + CONFIG.PSU__DDRC__DQMAP_32_35 {0} \ + CONFIG.PSU__DDRC__DQMAP_36_39 {0} \ + CONFIG.PSU__DDRC__DQMAP_40_43 {0} \ + CONFIG.PSU__DDRC__DQMAP_44_47 {0} \ + CONFIG.PSU__DDRC__DQMAP_48_51 {0} \ + CONFIG.PSU__DDRC__DQMAP_4_7 {0} \ + CONFIG.PSU__DDRC__DQMAP_52_55 {0} \ + CONFIG.PSU__DDRC__DQMAP_56_59 {0} \ + CONFIG.PSU__DDRC__DQMAP_60_63 {0} \ + CONFIG.PSU__DDRC__DQMAP_64_67 {0} \ + CONFIG.PSU__DDRC__DQMAP_68_71 {0} \ + CONFIG.PSU__DDRC__DQMAP_8_11 {0} \ + CONFIG.PSU__DDRC__DRAM_WIDTH {32 Bits} \ + CONFIG.PSU__DDRC__ECC {Disabled} \ + CONFIG.PSU__DDRC__ENABLE_2T_TIMING {0} \ + CONFIG.PSU__DDRC__ENABLE_DP_SWITCH {1} \ + CONFIG.PSU__DDRC__ENABLE_LP4_HAS_ECC_COMP {0} \ + CONFIG.PSU__DDRC__ENABLE_LP4_SLOWBOOT {0} \ + CONFIG.PSU__DDRC__FGRM {NA} \ + CONFIG.PSU__DDRC__LPDDR3_T_REF_RANGE {NA} \ + CONFIG.PSU__DDRC__LPDDR4_T_REF_RANGE {Normal (0-85)} \ + CONFIG.PSU__DDRC__LP_ASR {NA} \ + CONFIG.PSU__DDRC__MEMORY_TYPE {LPDDR 4} \ + CONFIG.PSU__DDRC__PARITY_ENABLE {NA} \ + CONFIG.PSU__DDRC__PER_BANK_REFRESH {0} \ + CONFIG.PSU__DDRC__PHY_DBI_MODE {0} \ + CONFIG.PSU__DDRC__RANK_ADDR_COUNT {0} \ + CONFIG.PSU__DDRC__ROW_ADDR_COUNT {16} \ + CONFIG.PSU__DDRC__SB_TARGET {NA} \ + CONFIG.PSU__DDRC__SELF_REF_ABORT {NA} \ + CONFIG.PSU__DDRC__SPEED_BIN {LPDDR4_1066} \ + CONFIG.PSU__DDRC__STATIC_RD_MODE {0} \ + CONFIG.PSU__DDRC__TRAIN_DATA_EYE {1} \ + CONFIG.PSU__DDRC__TRAIN_READ_GATE {1} \ + CONFIG.PSU__DDRC__TRAIN_WRITE_LEVEL {1} \ + CONFIG.PSU__DDRC__T_FAW {40.0} \ + CONFIG.PSU__DDRC__T_RAS_MIN {42} \ + CONFIG.PSU__DDRC__T_RC {63} \ + CONFIG.PSU__DDRC__T_RCD {10} \ + CONFIG.PSU__DDRC__T_RP {12} \ + CONFIG.PSU__DDRC__VENDOR_PART {OTHERS} \ + CONFIG.PSU__DDRC__VREF {0} \ + CONFIG.PSU__DDR_HIGH_ADDRESS_GUI_ENABLE {0} \ + CONFIG.PSU__DDR_QOS_ENABLE {1} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_FIX_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_FIX_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP0_RDQOS {7} \ + CONFIG.PSU__DDR_QOS_HP0_WRQOS {15} \ + CONFIG.PSU__DDR_QOS_HP1_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP1_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP2_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_RDQOS {3} \ + CONFIG.PSU__DDR_QOS_HP3_WRQOS {3} \ + CONFIG.PSU__DDR_QOS_PORT0_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT1_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT2_VN1_TYPE {Low Latency} \ + CONFIG.PSU__DDR_QOS_PORT2_VN2_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT3_TYPE {Video Traffic} \ + CONFIG.PSU__DDR_QOS_PORT4_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_PORT5_TYPE {Best Effort} \ + CONFIG.PSU__DDR_QOS_RD_HPR_THRSHLD {0} \ + CONFIG.PSU__DDR_QOS_RD_LPR_THRSHLD {16} \ + CONFIG.PSU__DDR_QOS_WR_THRSHLD {16} \ + CONFIG.PSU__DDR__INTERFACE__FREQMHZ {266.500} \ + CONFIG.PSU__DISPLAYPORT__LANE0__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE0__IO {GT Lane1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__ENABLE {1} \ + CONFIG.PSU__DISPLAYPORT__LANE1__IO {GT Lane0} \ + CONFIG.PSU__DISPLAYPORT__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DLL__ISUSED {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__DPAUX__PERIPHERAL__IO {MIO 27 .. 30} \ + CONFIG.PSU__DP__LANE_SEL {Dual Lower} \ + CONFIG.PSU__DP__REF_CLK_FREQ {27} \ + CONFIG.PSU__DP__REF_CLK_SEL {Ref Clk1} \ + CONFIG.PSU__ENET3__FIFO__ENABLE {0} \ + CONFIG.PSU__ENET3__GRP_MDIO__ENABLE {0} \ + CONFIG.PSU__ENET3__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__ENET3__PTP__ENABLE {0} \ + CONFIG.PSU__ENET3__TSU__ENABLE {0} \ + CONFIG.PSU__FPD_SLCR__WDT1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT1__FREQMHZ {100.000000} \ + CONFIG.PSU__FPD_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__FPGA_PL0_ENABLE {1} \ + CONFIG.PSU__FPGA_PL1_ENABLE {0} \ + CONFIG.PSU__FPGA_PL2_ENABLE {0} \ + CONFIG.PSU__FPGA_PL3_ENABLE {0} \ + CONFIG.PSU__GEM3_COHERENCY {0} \ + CONFIG.PSU__GEM3_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__GEM__TSU__ENABLE {0} \ + CONFIG.PSU__GPIO0_MIO__IO {MIO 0 .. 25} \ + CONFIG.PSU__GPIO0_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO1_MIO__IO {MIO 26 .. 51} \ + CONFIG.PSU__GPIO1_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GPIO2_MIO__IO {MIO 52 .. 77} \ + CONFIG.PSU__GPIO2_MIO__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__GT__LINK_SPEED {HBR} \ + CONFIG.PSU__GT__PRE_EMPH_LVL_4 {0} \ + CONFIG.PSU__GT__VLT_SWNG_LVL_4 {0} \ + CONFIG.PSU__HIGH_ADDRESS__ENABLE {0} \ + CONFIG.PSU__I2C0__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__I2C1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__I2C1__PERIPHERAL__IO {MIO 4 .. 5} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC0_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC1_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC2_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__IOU_TTC_APB_CLK__TTC3_SEL {APB} \ + CONFIG.PSU__IOU_SLCR__TTC0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC1__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC2__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__TTC3__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT0__FREQMHZ {100.000000} \ + CONFIG.PSU__IOU_SLCR__WDT_CLK_SEL__SELECT {APB} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__ACT_FREQMHZ {100.000000} \ + CONFIG.PSU__LPD_SLCR__CSUPMU__FREQMHZ {100.000000} \ + CONFIG.PSU__MAXIGP0__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP1__DATA_WIDTH {128} \ + CONFIG.PSU__MAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__OVERRIDE__BASIC_CLOCK {1} \ + CONFIG.PSU__PL_CLK0_BUF {TRUE} \ + CONFIG.PSU__PL_CLK1_BUF {FALSE} \ + CONFIG.PSU__PL_CLK2_BUF {FALSE} \ + CONFIG.PSU__PL_CLK3_BUF {FALSE} \ + CONFIG.PSU__PMU_COHERENCY {0} \ + CONFIG.PSU__PMU__AIBACK__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPI__ENABLE {0} \ + CONFIG.PSU__PMU__EMIO_GPO__ENABLE {0} \ + CONFIG.PSU__PMU__GPI0__ENABLE {1} \ + CONFIG.PSU__PMU__GPI0__IO {MIO 26} \ + CONFIG.PSU__PMU__GPI1__ENABLE {0} \ + CONFIG.PSU__PMU__GPI2__ENABLE {0} \ + CONFIG.PSU__PMU__GPI3__ENABLE {0} \ + CONFIG.PSU__PMU__GPI4__ENABLE {0} \ + CONFIG.PSU__PMU__GPI5__ENABLE {0} \ + CONFIG.PSU__PMU__GPO0__ENABLE {1} \ + CONFIG.PSU__PMU__GPO0__IO {MIO 32} \ + CONFIG.PSU__PMU__GPO1__ENABLE {1} \ + CONFIG.PSU__PMU__GPO1__IO {MIO 33} \ + CONFIG.PSU__PMU__GPO2__ENABLE {1} \ + CONFIG.PSU__PMU__GPO2__IO {MIO 34} \ + CONFIG.PSU__PMU__GPO2__POLARITY {high} \ + CONFIG.PSU__PMU__GPO3__ENABLE {0} \ + CONFIG.PSU__PMU__GPO4__ENABLE {0} \ + CONFIG.PSU__PMU__GPO5__ENABLE {0} \ + CONFIG.PSU__PMU__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__PMU__PLERROR__ENABLE {0} \ + CONFIG.PSU__PRESET_APPLIED {1} \ + CONFIG.PSU__PROTECTION__MASTERS {USB1:NonSecure;1|USB0:NonSecure;1|S_AXI_LPD:NA;0|S_AXI_HPC1_FPD:NA;0|S_AXI_HPC0_FPD:NA;0|S_AXI_HP3_FPD:NA;0|S_AXI_HP2_FPD:NA;1|S_AXI_HP1_FPD:NA;1|S_AXI_HP0_FPD:NA;1|S_AXI_ACP:NA;0|S_AXI_ACE:NA;0|SD1:NonSecure;1|SD0:NonSecure;1|SATA1:NonSecure;0|SATA0:NonSecure;0|RPU1:Secure;1|RPU0:Secure;1|QSPI:NonSecure;0|PMU:NA;1|PCIe:NonSecure;0|NAND:NonSecure;0|LDMA:NonSecure;1|GPU:NonSecure;1|GEM3:NonSecure;0|GEM2:NonSecure;0|GEM1:NonSecure;0|GEM0:NonSecure;0|FDMA:NonSecure;1|DP:NonSecure;1|DAP:NA;1|Coresight:NA;1|CSU:NA;1|APU:NA;1} \ + CONFIG.PSU__PROTECTION__SLAVES {LPD;USB3_1_XHCI;FE300000;FE3FFFFF;1|LPD;USB3_1;FF9E0000;FF9EFFFF;1|LPD;USB3_0_XHCI;FE200000;FE2FFFFF;1|LPD;USB3_0;FF9D0000;FF9DFFFF;1|LPD;UART1;FF010000;FF01FFFF;1|LPD;UART0;FF000000;FF00FFFF;1|LPD;TTC3;FF140000;FF14FFFF;1|LPD;TTC2;FF130000;FF13FFFF;1|LPD;TTC1;FF120000;FF12FFFF;1|LPD;TTC0;FF110000;FF11FFFF;1|FPD;SWDT1;FD4D0000;FD4DFFFF;1|LPD;SWDT0;FF150000;FF15FFFF;1|LPD;SPI1;FF050000;FF05FFFF;1|LPD;SPI0;FF040000;FF04FFFF;1|FPD;SMMU_REG;FD5F0000;FD5FFFFF;1|FPD;SMMU;FD800000;FDFFFFFF;1|FPD;SIOU;FD3D0000;FD3DFFFF;1|FPD;SERDES;FD400000;FD47FFFF;1|LPD;SD1;FF170000;FF17FFFF;1|LPD;SD0;FF160000;FF16FFFF;1|FPD;SATA;FD0C0000;FD0CFFFF;0|LPD;RTC;FFA60000;FFA6FFFF;1|LPD;RSA_CORE;FFCE0000;FFCEFFFF;1|LPD;RPU;FF9A0000;FF9AFFFF;1|LPD;R5_TCM_RAM_GLOBAL;FFE00000;FFE3FFFF;1|LPD;R5_1_Instruction_Cache;FFEC0000;FFECFFFF;1|LPD;R5_1_Data_Cache;FFED0000;FFEDFFFF;1|LPD;R5_1_BTCM_GLOBAL;FFEB0000;FFEBFFFF;1|LPD;R5_1_ATCM_GLOBAL;FFE90000;FFE9FFFF;1|LPD;R5_0_Instruction_Cache;FFE40000;FFE4FFFF;1|LPD;R5_0_Data_Cache;FFE50000;FFE5FFFF;1|LPD;R5_0_BTCM_GLOBAL;FFE20000;FFE2FFFF;1|LPD;R5_0_ATCM_GLOBAL;FFE00000;FFE0FFFF;1|LPD;QSPI_Linear_Address;C0000000;DFFFFFFF;1|LPD;QSPI;FF0F0000;FF0FFFFF;0|LPD;PMU_RAM;FFDC0000;FFDDFFFF;1|LPD;PMU_GLOBAL;FFD80000;FFDBFFFF;1|FPD;PCIE_MAIN;FD0E0000;FD0EFFFF;0|FPD;PCIE_LOW;E0000000;EFFFFFFF;0|FPD;PCIE_HIGH2;8000000000;BFFFFFFFFF;0|FPD;PCIE_HIGH1;600000000;7FFFFFFFF;0|FPD;PCIE_DMA;FD0F0000;FD0FFFFF;0|FPD;PCIE_ATTRIB;FD480000;FD48FFFF;0|LPD;OCM_XMPU_CFG;FFA70000;FFA7FFFF;1|LPD;OCM_SLCR;FF960000;FF96FFFF;1|OCM;OCM;FFFC0000;FFFFFFFF;1|LPD;NAND;FF100000;FF10FFFF;0|LPD;MBISTJTAG;FFCF0000;FFCFFFFF;1|LPD;LPD_XPPU_SINK;FF9C0000;FF9CFFFF;1|LPD;LPD_XPPU;FF980000;FF98FFFF;1|LPD;LPD_SLCR_SECURE;FF4B0000;FF4DFFFF;1|LPD;LPD_SLCR;FF410000;FF4AFFFF;1|LPD;LPD_GPV;FE100000;FE1FFFFF;1|LPD;LPD_DMA_7;FFAF0000;FFAFFFFF;1|LPD;LPD_DMA_6;FFAE0000;FFAEFFFF;1|LPD;LPD_DMA_5;FFAD0000;FFADFFFF;1|LPD;LPD_DMA_4;FFAC0000;FFACFFFF;1|LPD;LPD_DMA_3;FFAB0000;FFABFFFF;1|LPD;LPD_DMA_2;FFAA0000;FFAAFFFF;1|LPD;LPD_DMA_1;FFA90000;FFA9FFFF;1|LPD;LPD_DMA_0;FFA80000;FFA8FFFF;1|LPD;IPI_CTRL;FF380000;FF3FFFFF;1|LPD;IOU_SLCR;FF180000;FF23FFFF;1|LPD;IOU_SECURE_SLCR;FF240000;FF24FFFF;1|LPD;IOU_SCNTRS;FF260000;FF26FFFF;1|LPD;IOU_SCNTR;FF250000;FF25FFFF;1|LPD;IOU_GPV;FE000000;FE0FFFFF;1|LPD;I2C1;FF030000;FF03FFFF;1|LPD;I2C0;FF020000;FF02FFFF;0|FPD;GPU;FD4B0000;FD4BFFFF;1|LPD;GPIO;FF0A0000;FF0AFFFF;1|LPD;GEM3;FF0E0000;FF0EFFFF;0|LPD;GEM2;FF0D0000;FF0DFFFF;0|LPD;GEM1;FF0C0000;FF0CFFFF;0|LPD;GEM0;FF0B0000;FF0BFFFF;0|FPD;FPD_XMPU_SINK;FD4F0000;FD4FFFFF;1|FPD;FPD_XMPU_CFG;FD5D0000;FD5DFFFF;1|FPD;FPD_SLCR_SECURE;FD690000;FD6CFFFF;1|FPD;FPD_SLCR;FD610000;FD68FFFF;1|FPD;FPD_GPV;FD700000;FD7FFFFF;1|FPD;FPD_DMA_CH7;FD570000;FD57FFFF;1|FPD;FPD_DMA_CH6;FD560000;FD56FFFF;1|FPD;FPD_DMA_CH5;FD550000;FD55FFFF;1|FPD;FPD_DMA_CH4;FD540000;FD54FFFF;1|FPD;FPD_DMA_CH3;FD530000;FD53FFFF;1|FPD;FPD_DMA_CH2;FD520000;FD52FFFF;1|FPD;FPD_DMA_CH1;FD510000;FD51FFFF;1|FPD;FPD_DMA_CH0;FD500000;FD50FFFF;1|LPD;EFUSE;FFCC0000;FFCCFFFF;1|FPD;Display Port;FD4A0000;FD4AFFFF;1|FPD;DPDMA;FD4C0000;FD4CFFFF;1|FPD;DDR_XMPU5_CFG;FD050000;FD05FFFF;1|FPD;DDR_XMPU4_CFG;FD040000;FD04FFFF;1|FPD;DDR_XMPU3_CFG;FD030000;FD03FFFF;1|FPD;DDR_XMPU2_CFG;FD020000;FD02FFFF;1|FPD;DDR_XMPU1_CFG;FD010000;FD01FFFF;1|FPD;DDR_XMPU0_CFG;FD000000;FD00FFFF;1|FPD;DDR_QOS_CTRL;FD090000;FD09FFFF;1|FPD;DDR_PHY;FD080000;FD08FFFF;1|DDR;DDR_LOW;0;7FFFFFFF;1|DDR;DDR_HIGH;800000000;800000000;0|FPD;DDDR_CTRL;FD070000;FD070FFF;1|LPD;Coresight;FE800000;FEFFFFFF;1|LPD;CSU_DMA;FFC80000;FFC9FFFF;1|LPD;CSU;FFCA0000;FFCAFFFF;1|LPD;CRL_APB;FF5E0000;FF85FFFF;1|FPD;CRF_APB;FD1A0000;FD2DFFFF;1|FPD;CCI_REG;FD5E0000;FD5EFFFF;1|FPD;CCI_GPV;FD6E0000;FD6EFFFF;1|LPD;CAN1;FF070000;FF07FFFF;0|LPD;CAN0;FF060000;FF06FFFF;0|FPD;APU;FD5C0000;FD5CFFFF;1|LPD;APM_INTC_IOU;FFA20000;FFA2FFFF;1|LPD;APM_FPD_LPD;FFA30000;FFA3FFFF;1|FPD;APM_5;FD490000;FD49FFFF;1|FPD;APM_0;FD0B0000;FD0BFFFF;1|LPD;APM2;FFA10000;FFA1FFFF;1|LPD;APM1;FFA00000;FFA0FFFF;1|LPD;AMS;FFA50000;FFA5FFFF;1|FPD;AFI_5;FD3B0000;FD3BFFFF;1|FPD;AFI_4;FD3A0000;FD3AFFFF;1|FPD;AFI_3;FD390000;FD39FFFF;1|FPD;AFI_2;FD380000;FD38FFFF;1|FPD;AFI_1;FD370000;FD37FFFF;1|FPD;AFI_0;FD360000;FD36FFFF;1|LPD;AFIFM6;FF9B0000;FF9BFFFF;1|FPD;ACPU_GIC;F9010000;F907FFFF;1} \ + CONFIG.PSU__PSS_REF_CLK__FREQMHZ {33.333333} \ + CONFIG.PSU__QSPI_COHERENCY {0} \ + CONFIG.PSU__QSPI_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__QSPI__GRP_FBCLK__ENABLE {0} \ + CONFIG.PSU__QSPI__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SATA__LANE0__ENABLE {0} \ + CONFIG.PSU__SATA__LANE1__ENABLE {0} \ + CONFIG.PSU__SATA__PERIPHERAL__ENABLE {0} \ + CONFIG.PSU__SAXIGP2__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP3__DATA_WIDTH {32} \ + CONFIG.PSU__SAXIGP4__DATA_WIDTH {32} \ + CONFIG.PSU__SD0_COHERENCY {0} \ + CONFIG.PSU__SD0_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD0__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD0__GRP_CD__ENABLE {1} \ + CONFIG.PSU__SD0__GRP_CD__IO {MIO 24} \ + CONFIG.PSU__SD0__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD0__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD0__PERIPHERAL__IO {MIO 13 .. 16 21 22} \ + CONFIG.PSU__SD0__RESET__ENABLE {0} \ + CONFIG.PSU__SD0__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SD1_COHERENCY {0} \ + CONFIG.PSU__SD1_ROUTE_THROUGH_FPD {0} \ + CONFIG.PSU__SD1__DATA_TRANSFER_MODE {4Bit} \ + CONFIG.PSU__SD1__GRP_CD__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_POW__ENABLE {0} \ + CONFIG.PSU__SD1__GRP_WP__ENABLE {0} \ + CONFIG.PSU__SD1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SD1__PERIPHERAL__IO {MIO 46 .. 51} \ + CONFIG.PSU__SD1__RESET__ENABLE {0} \ + CONFIG.PSU__SD1__SLOT_TYPE {SD 2.0} \ + CONFIG.PSU__SPI0__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI0__GRP_SS0__IO {MIO 41} \ + CONFIG.PSU__SPI0__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI0__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI0__PERIPHERAL__IO {MIO 38 .. 43} \ + CONFIG.PSU__SPI1__GRP_SS0__ENABLE {1} \ + CONFIG.PSU__SPI1__GRP_SS0__IO {MIO 9} \ + CONFIG.PSU__SPI1__GRP_SS1__ENABLE {0} \ + CONFIG.PSU__SPI1__GRP_SS2__ENABLE {0} \ + CONFIG.PSU__SPI1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SPI1__PERIPHERAL__IO {MIO 6 .. 11} \ + CONFIG.PSU__SWDT0__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT0__RESET__ENABLE {0} \ + CONFIG.PSU__SWDT1__CLOCK__ENABLE {0} \ + CONFIG.PSU__SWDT1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__SWDT1__RESET__ENABLE {0} \ + CONFIG.PSU__TSU__BUFG_PORT_PAIR {0} \ + CONFIG.PSU__TTC0__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC0__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC1__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC1__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC2__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC2__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC2__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__TTC3__CLOCK__ENABLE {0} \ + CONFIG.PSU__TTC3__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__TTC3__WAVEOUT__ENABLE {0} \ + CONFIG.PSU__UART0__BAUD_RATE {115200} \ + CONFIG.PSU__UART0__MODEM__ENABLE {0} \ + CONFIG.PSU__UART0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART0__PERIPHERAL__IO {MIO 2 .. 3} \ + CONFIG.PSU__UART1__BAUD_RATE {115200} \ + CONFIG.PSU__UART1__MODEM__ENABLE {0} \ + CONFIG.PSU__UART1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__UART1__PERIPHERAL__IO {MIO 0 .. 1} \ + CONFIG.PSU__USB0_COHERENCY {0} \ + CONFIG.PSU__USB0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB0__PERIPHERAL__IO {MIO 52 .. 63} \ + CONFIG.PSU__USB0__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB0__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB0__RESET__ENABLE {0} \ + CONFIG.PSU__USB1_COHERENCY {0} \ + CONFIG.PSU__USB1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB1__PERIPHERAL__IO {MIO 64 .. 75} \ + CONFIG.PSU__USB1__REF_CLK_FREQ {26} \ + CONFIG.PSU__USB1__REF_CLK_SEL {Ref Clk0} \ + CONFIG.PSU__USB1__RESET__ENABLE {0} \ + CONFIG.PSU__USB2_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB2_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_0__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_0__PERIPHERAL__IO {GT Lane2} \ + CONFIG.PSU__USB3_1__EMIO__ENABLE {0} \ + CONFIG.PSU__USB3_1__PERIPHERAL__ENABLE {1} \ + CONFIG.PSU__USB3_1__PERIPHERAL__IO {GT Lane3} \ + CONFIG.PSU__USB__RESET__MODE {Boot Pin} \ + CONFIG.PSU__USB__RESET__POLARITY {Active Low} \ + CONFIG.PSU__USE__IRQ0 {0} \ + CONFIG.PSU__USE__M_AXI_GP0 {1} \ + CONFIG.PSU__USE__M_AXI_GP1 {0} \ + CONFIG.PSU__USE__M_AXI_GP2 {0} \ + CONFIG.PSU__USE__S_AXI_GP2 {1} \ + CONFIG.PSU__USE__S_AXI_GP3 {1} \ + CONFIG.PSU__USE__S_AXI_GP4 {1} \ + CONFIG.SUBPRESET1 {Custom} \ + ] $zynq_ultra_ps_e_0 + + # Create interface connections + connect_bd_intf_net -intf_net mmult_0_m_axi_in1_mem [get_bd_intf_pins mmult_0/m_axi_in1_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP0_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_in2_mem [get_bd_intf_pins mmult_0/m_axi_in2_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP1_FPD] + connect_bd_intf_net -intf_net mmult_0_m_axi_out_mem [get_bd_intf_pins mmult_0/m_axi_out_mem] [get_bd_intf_pins zynq_ultra_ps_e_0/S_AXI_HP2_FPD] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M00_AXI [get_bd_intf_pins axi_timer_0/S_AXI] [get_bd_intf_pins ps8_0_axi_periph/M00_AXI] + connect_bd_intf_net -intf_net ps8_0_axi_periph_M01_AXI [get_bd_intf_pins mmult_0/s_axi_params] [get_bd_intf_pins ps8_0_axi_periph/M01_AXI] + connect_bd_intf_net -intf_net zynq_ultra_ps_e_0_M_AXI_HPM0_FPD [get_bd_intf_pins ps8_0_axi_periph/S00_AXI] [get_bd_intf_pins zynq_ultra_ps_e_0/M_AXI_HPM0_FPD] + + # Create port connections + connect_bd_net -net clk_wiz_0_locked [get_bd_pins clk_wiz_0/locked] [get_bd_pins rst_ps8_0_100M/dcm_locked] + connect_bd_net -net rst_ps8_0_100M_peripheral_aresetn [get_bd_pins axi_timer_0/s_axi_aresetn] [get_bd_pins mmult_0/ap_rst_n] [get_bd_pins ps8_0_axi_periph/ARESETN] [get_bd_pins ps8_0_axi_periph/M00_ARESETN] [get_bd_pins ps8_0_axi_periph/M01_ARESETN] [get_bd_pins ps8_0_axi_periph/S00_ARESETN] [get_bd_pins rst_ps8_0_100M/peripheral_aresetn] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk0 [get_bd_pins axi_timer_0/s_axi_aclk] [get_bd_pins clk_wiz_0/clk_out_300] [get_bd_pins mmult_0/ap_clk] [get_bd_pins ps8_0_axi_periph/ACLK] [get_bd_pins ps8_0_axi_periph/M00_ACLK] [get_bd_pins ps8_0_axi_periph/M01_ACLK] [get_bd_pins ps8_0_axi_periph/S00_ACLK] [get_bd_pins rst_ps8_0_100M/slowest_sync_clk] [get_bd_pins zynq_ultra_ps_e_0/maxihpm0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp0_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp1_fpd_aclk] [get_bd_pins zynq_ultra_ps_e_0/saxihp2_fpd_aclk] + connect_bd_net -net zynq_ultra_ps_e_0_pl_clk1 [get_bd_pins clk_wiz_0/clk_in1] [get_bd_pins zynq_ultra_ps_e_0/pl_clk0] + connect_bd_net -net zynq_ultra_ps_e_0_pl_resetn0 [get_bd_pins clk_wiz_0/resetn] [get_bd_pins rst_ps8_0_100M/ext_reset_in] [get_bd_pins zynq_ultra_ps_e_0/pl_resetn0] + + # Create address segments + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_DDR_LOW] -force + assign_bd_address -offset 0x00000000 -range 0x80000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_DDR_LOW] -force + assign_bd_address -offset 0xA0000000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs axi_timer_0/S_AXI/Reg] -force + assign_bd_address -offset 0xA0010000 -range 0x00010000 -target_address_space [get_bd_addr_spaces zynq_ultra_ps_e_0/Data] [get_bd_addr_segs mmult_0/s_axi_params/Reg] -force + + # Exclude Address Segments + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in1_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP2/HP0_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_in2_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP3/HP1_LPS_OCM] + exclude_bd_addr_seg -offset 0xFF000000 -range 0x01000000 -target_address_space [get_bd_addr_spaces mmult_0/Data_m_axi_out_mem] [get_bd_addr_segs zynq_ultra_ps_e_0/SAXIGP4/HP2_LPS_OCM] + + + # Restore current instance + current_bd_instance $oldCurInst + + validate_bd_design + save_bd_design +} +# End of create_root_design() + + +################################################################## +# MAIN FLOW +################################################################## + +create_root_design "" + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/component.xml new file mode 100644 index 0000000..066e55e --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/component.xml @@ -0,0 +1,5542 @@ + + + xilinx.com + hls + mmult + 1.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + b7fcdff9 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 463e7701 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 7ed60df9 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + b5396713 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 30e2261f + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_13e987c1 + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v1_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v1_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v1_0/src/Makefile + driver_src + + + drivers/mmult_v1_0/src/xmmult.c + driver_src + + + drivers/mmult_v1_0/src/xmmult.h + driver_src + + + drivers/mmult_v1_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v1_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v1_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v1_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v1_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 4227201 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141655 + 2021-05-14T14:55:50Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/constraints/mmult_ooc.xdc new file mode 100644 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/doc/ReleaseNotes.txt new file mode 100644 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.mdd new file mode 100644 index 0000000..003057c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v1_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 1.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.tcl new file mode 100644 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/Makefile new file mode 100644 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.c new file mode 100644 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.h new file mode 100644 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_hw.h new file mode 100644 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_linux.c new file mode 100644 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_sinit.c new file mode 100644 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/drivers/mmult_v1_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult.v new file mode 100644 index 0000000..fa39bf4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult.v @@ -0,0 +1,1411 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=4227201,HLS_SYN_TPT=none,HLS_SYN_MEM=6,HLS_SYN_DSP=3,HLS_SYN_FF=2413,HLS_SYN_LUT=2800,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 25'd1; +parameter ap_ST_fsm_state2 = 25'd2; +parameter ap_ST_fsm_state3 = 25'd4; +parameter ap_ST_fsm_state4 = 25'd8; +parameter ap_ST_fsm_state5 = 25'd16; +parameter ap_ST_fsm_state6 = 25'd32; +parameter ap_ST_fsm_state7 = 25'd64; +parameter ap_ST_fsm_state8 = 25'd128; +parameter ap_ST_fsm_state9 = 25'd256; +parameter ap_ST_fsm_state10 = 25'd512; +parameter ap_ST_fsm_state11 = 25'd1024; +parameter ap_ST_fsm_state12 = 25'd2048; +parameter ap_ST_fsm_state13 = 25'd4096; +parameter ap_ST_fsm_state14 = 25'd8192; +parameter ap_ST_fsm_state15 = 25'd16384; +parameter ap_ST_fsm_state16 = 25'd32768; +parameter ap_ST_fsm_state17 = 25'd65536; +parameter ap_ST_fsm_state18 = 25'd131072; +parameter ap_ST_fsm_state19 = 25'd262144; +parameter ap_ST_fsm_state20 = 25'd524288; +parameter ap_ST_fsm_state21 = 25'd1048576; +parameter ap_ST_fsm_state22 = 25'd2097152; +parameter ap_ST_fsm_state23 = 25'd4194304; +parameter ap_ST_fsm_state24 = 25'd8388608; +parameter ap_ST_fsm_state25 = 25'd16777216; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [24:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state3; +wire [0:0] icmp_ln20_fu_301_p2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_state18; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state11; +reg in2_mem_blk_n_R; +reg out_mem_blk_n_AR; +reg out_mem_blk_n_R; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state19; +reg out_mem_blk_n_W; +wire ap_CS_fsm_state20; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state25; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +reg out_mem_ARVALID; +wire out_mem_ARREADY; +wire out_mem_RVALID; +reg out_mem_RREADY; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [31:0] dim_read_reg_387; +wire [32:0] p_cast11_fu_230_p1; +reg [32:0] p_cast11_reg_397; +wire [32:0] p_cast10_fu_244_p1; +reg [32:0] p_cast10_reg_402; +wire [32:0] p_cast_fu_258_p1; +reg [32:0] p_cast_reg_407; +wire [31:0] add_ln18_fu_262_p2; +reg [31:0] add_ln18_reg_412; +wire ap_CS_fsm_state2; +wire [30:0] i_fu_276_p2; +reg [30:0] i_reg_420; +reg [31:0] in1_mem_addr_reg_425; +wire [0:0] icmp_ln18_fu_271_p2; +wire [31:0] j_fu_306_p2; +reg [31:0] j_reg_434; +reg ap_block_state3_io; +reg [31:0] out_mem_addr_reg_439; +wire [31:0] k_fu_342_p2; +reg [31:0] k_reg_449; +wire ap_CS_fsm_state10; +wire [31:0] add_ln25_5_fu_348_p2; +reg [31:0] add_ln25_5_reg_454; +wire [0:0] icmp_ln22_fu_337_p2; +reg [31:0] in2_mem_addr_reg_459; +reg signed [31:0] in1_mem_addr_read_reg_465; +reg ap_block_state18; +reg signed [31:0] in2_mem_addr_read_reg_470; +reg [31:0] out_mem_addr_read_reg_475; +wire [31:0] add_ln25_3_fu_382_p2; +reg [31:0] add_ln25_3_reg_480; +reg [30:0] i_0_reg_163; +reg signed [31:0] phi_mul8_reg_174; +reg [31:0] j_0_reg_186; +reg [31:0] k_0_reg_198; +wire ap_CS_fsm_state9; +reg [31:0] phi_mul_reg_209; +wire signed [63:0] sext_ln25_1_fu_291_p1; +wire signed [63:0] sext_ln25_3_fu_327_p1; +wire signed [63:0] sext_ln25_5_fu_368_p1; +reg ap_block_state11_io; +wire [29:0] tmp_3_fu_220_p4; +wire [29:0] tmp_4_fu_234_p4; +wire [29:0] tmp_5_fu_248_p4; +wire [31:0] zext_ln18_fu_267_p1; +wire signed [32:0] sext_ln25_fu_282_p1; +wire [32:0] add_ln25_1_fu_286_p2; +wire [31:0] add_ln25_fu_312_p2; +wire signed [32:0] sext_ln25_2_fu_318_p1; +wire [32:0] add_ln25_4_fu_322_p2; +wire [31:0] add_ln25_2_fu_353_p2; +wire signed [32:0] sext_ln25_4_fu_359_p1; +wire [32:0] add_ln25_6_fu_363_p2; +wire [31:0] mul_ln25_fu_378_p2; +reg [24:0] ap_NS_fsm; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 25'd1; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_addr_reg_425), + .I_ARID(1'd0), + .I_ARLEN(dim_read_reg_387), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_459), + .I_ARID(1'd0), + .I_ARLEN(32'd1), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(out_mem_ARVALID), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(out_mem_addr_reg_439), + .I_ARID(1'd0), + .I_ARLEN(32'd1), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(out_mem_RREADY), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_439), + .I_AWID(1'd0), + .I_AWLEN(32'd1), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(add_ln25_3_reg_480), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +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 (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state3))) begin + i_0_reg_163 <= i_reg_420; + end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + i_0_reg_163 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln22_fu_337_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state10))) begin + j_0_reg_186 <= j_reg_434; + end else if (((icmp_ln18_fu_271_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin + j_0_reg_186 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + k_0_reg_198 <= k_reg_449; + end else if ((1'b1 == ap_CS_fsm_state9)) begin + k_0_reg_198 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state3))) begin + phi_mul8_reg_174 <= add_ln18_reg_412; + end else if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + phi_mul8_reg_174 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + phi_mul_reg_209 <= add_ln25_5_reg_454; + end else if ((1'b1 == ap_CS_fsm_state9)) begin + phi_mul_reg_209 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + add_ln18_reg_412 <= add_ln18_fu_262_p2; + i_reg_420 <= i_fu_276_p2; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state19))) begin + add_ln25_3_reg_480 <= add_ln25_3_fu_382_p2; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln22_fu_337_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state10))) begin + add_ln25_5_reg_454 <= add_ln25_5_fu_348_p2; + in2_mem_addr_reg_459 <= sext_ln25_5_fu_368_p1; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_387 <= dim; + p_cast10_reg_402[29 : 0] <= p_cast10_fu_244_p1[29 : 0]; + p_cast11_reg_397[29 : 0] <= p_cast11_fu_230_p1[29 : 0]; + p_cast_reg_407[29 : 0] <= p_cast_fu_258_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if ((~((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)) & (1'b1 == ap_CS_fsm_state18))) begin + in1_mem_addr_read_reg_465 <= in1_mem_RDATA; + in2_mem_addr_read_reg_470 <= in2_mem_RDATA; + out_mem_addr_read_reg_475 <= out_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln18_fu_271_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_addr_reg_425 <= sext_ln25_1_fu_291_p1; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state3_io) & (1'b1 == ap_CS_fsm_state3))) begin + j_reg_434 <= j_fu_306_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state10)) begin + k_reg_449 <= k_fu_342_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state3))) begin + out_mem_addr_reg_439 <= sext_ln25_3_fu_327_p1; + end +end + +always @ (*) begin + if (((icmp_ln18_fu_271_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) 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_ln18_fu_271_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state3))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if ((~((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)) & (1'b1 == ap_CS_fsm_state18))) begin + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln20_fu_301_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state3))) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_state11_io) & (1'b1 == ap_CS_fsm_state11))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if ((~((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)) & (1'b1 == ap_CS_fsm_state18))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state11)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_state11_io) & (1'b1 == ap_CS_fsm_state11))) begin + out_mem_ARVALID = 1'b1; + end else begin + out_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state19))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if ((~((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)) & (1'b1 == ap_CS_fsm_state18))) begin + out_mem_RREADY = 1'b1; + end else begin + out_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_WREADY == 1'b1) & (1'b1 == ap_CS_fsm_state20))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state11)) begin + out_mem_blk_n_AR = m_axi_out_mem_ARREADY; + end else begin + out_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state19)) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + out_mem_blk_n_R = m_axi_out_mem_RVALID; + end else begin + out_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state20)) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((icmp_ln18_fu_271_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state2))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state3; + end + end + ap_ST_fsm_state3 : begin + if (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state3))) begin + ap_NS_fsm = ap_ST_fsm_state2; + end else if (((1'b0 == ap_block_state3_io) & (icmp_ln20_fu_301_p2 == 1'd0) & (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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_state9; + end + ap_ST_fsm_state9 : begin + ap_NS_fsm = ap_ST_fsm_state10; + end + ap_ST_fsm_state10 : begin + if (((icmp_ln22_fu_337_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state10))) begin + ap_NS_fsm = ap_ST_fsm_state3; + end else begin + ap_NS_fsm = ap_ST_fsm_state11; + end + end + ap_ST_fsm_state11 : begin + if (((1'b0 == ap_block_state11_io) & (1'b1 == ap_CS_fsm_state11))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_state11; + end + end + ap_ST_fsm_state12 : begin + ap_NS_fsm = ap_ST_fsm_state13; + end + ap_ST_fsm_state13 : begin + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + if ((~((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)) & (1'b1 == ap_CS_fsm_state18))) begin + ap_NS_fsm = ap_ST_fsm_state19; + end else begin + ap_NS_fsm = ap_ST_fsm_state18; + end + end + ap_ST_fsm_state19 : begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state19))) begin + ap_NS_fsm = ap_ST_fsm_state20; + end else begin + ap_NS_fsm = ap_ST_fsm_state19; + end + end + ap_ST_fsm_state20 : begin + if (((out_mem_WREADY == 1'b1) & (1'b1 == ap_CS_fsm_state20))) begin + ap_NS_fsm = ap_ST_fsm_state21; + end else begin + ap_NS_fsm = ap_ST_fsm_state20; + end + end + ap_ST_fsm_state21 : begin + ap_NS_fsm = ap_ST_fsm_state22; + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state23 : begin + ap_NS_fsm = ap_ST_fsm_state24; + end + ap_ST_fsm_state24 : begin + ap_NS_fsm = ap_ST_fsm_state25; + end + ap_ST_fsm_state25 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + ap_NS_fsm = ap_ST_fsm_state10; + end else begin + ap_NS_fsm = ap_ST_fsm_state25; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln18_fu_262_p2 = ($signed(phi_mul8_reg_174) + $signed(dim_read_reg_387)); + +assign add_ln25_1_fu_286_p2 = ($signed(sext_ln25_fu_282_p1) + $signed(p_cast_reg_407)); + +assign add_ln25_2_fu_353_p2 = (j_0_reg_186 + phi_mul_reg_209); + +assign add_ln25_3_fu_382_p2 = (mul_ln25_fu_378_p2 + out_mem_addr_read_reg_475); + +assign add_ln25_4_fu_322_p2 = ($signed(sext_ln25_2_fu_318_p1) + $signed(p_cast11_reg_397)); + +assign add_ln25_5_fu_348_p2 = (dim_read_reg_387 + phi_mul_reg_209); + +assign add_ln25_6_fu_363_p2 = ($signed(sext_ln25_4_fu_359_p1) + $signed(p_cast10_reg_402)); + +assign add_ln25_fu_312_p2 = ($signed(phi_mul8_reg_174) + $signed(j_0_reg_186)); + +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_state18 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state19 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state20 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state25 = ap_CS_fsm[32'd24]; + +assign ap_CS_fsm_state3 = ap_CS_fsm[32'd2]; + +assign ap_CS_fsm_state9 = ap_CS_fsm[32'd8]; + +always @ (*) begin + ap_block_state11_io = ((out_mem_ARREADY == 1'b0) | (in2_mem_ARREADY == 1'b0)); +end + +always @ (*) begin + ap_block_state18 = ((out_mem_RVALID == 1'b0) | (in2_mem_RVALID == 1'b0) | (in1_mem_RVALID == 1'b0)); +end + +always @ (*) begin + ap_block_state3_io = ((in1_mem_ARREADY == 1'b0) & (icmp_ln20_fu_301_p2 == 1'd0)); +end + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign i_fu_276_p2 = (i_0_reg_163 + 31'd1); + +assign icmp_ln18_fu_271_p2 = (($signed(zext_ln18_fu_267_p1) < $signed(dim_read_reg_387)) ? 1'b1 : 1'b0); + +assign icmp_ln20_fu_301_p2 = ((j_0_reg_186 == dim_read_reg_387) ? 1'b1 : 1'b0); + +assign icmp_ln22_fu_337_p2 = ((k_0_reg_198 == dim_read_reg_387) ? 1'b1 : 1'b0); + +assign j_fu_306_p2 = (j_0_reg_186 + 32'd1); + +assign k_fu_342_p2 = (k_0_reg_198 + 32'd1); + +assign mul_ln25_fu_378_p2 = ($signed(in1_mem_addr_read_reg_465) * $signed(in2_mem_addr_read_reg_470)); + +assign p_cast10_fu_244_p1 = tmp_4_fu_234_p4; + +assign p_cast11_fu_230_p1 = tmp_3_fu_220_p4; + +assign p_cast_fu_258_p1 = tmp_5_fu_248_p4; + +assign sext_ln25_1_fu_291_p1 = $signed(add_ln25_1_fu_286_p2); + +assign sext_ln25_2_fu_318_p1 = $signed(add_ln25_fu_312_p2); + +assign sext_ln25_3_fu_327_p1 = $signed(add_ln25_4_fu_322_p2); + +assign sext_ln25_4_fu_359_p1 = $signed(add_ln25_2_fu_353_p2); + +assign sext_ln25_5_fu_368_p1 = $signed(add_ln25_6_fu_363_p2); + +assign sext_ln25_fu_282_p1 = phi_mul8_reg_174; + +assign tmp_3_fu_220_p4 = {{out_r[31:2]}}; + +assign tmp_4_fu_234_p4 = {{in2[31:2]}}; + +assign tmp_5_fu_248_p4 = {{in1[31:2]}}; + +assign zext_ln18_fu_267_p1 = i_0_reg_163; + +always @ (posedge ap_clk) begin + p_cast11_reg_397[32:30] <= 3'b000; + p_cast10_reg_402[32:30] <= 3'b000; + p_cast_reg_407[32:30] <= 3'b000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100644 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100644 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100644 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_params_s_axi.v new file mode 100644 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult.vhd new file mode 100644 index 0000000..6378dc3 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult.vhd @@ -0,0 +1,1708 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=4227201,HLS_SYN_TPT=none,HLS_SYN_MEM=6,HLS_SYN_DSP=3,HLS_SYN_FF=2413,HLS_SYN_LUT=2800,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000010000000"; + constant ap_ST_fsm_state9 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000100000000"; + constant ap_ST_fsm_state10 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000001000000000"; + constant ap_ST_fsm_state11 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000010000000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000100000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000001000000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000010000000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (24 downto 0) := "0000000000100000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (24 downto 0) := "0000000001000000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (24 downto 0) := "0000000010000000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (24 downto 0) := "0000000100000000000000000"; + constant ap_ST_fsm_state19 : STD_LOGIC_VECTOR (24 downto 0) := "0000001000000000000000000"; + constant ap_ST_fsm_state20 : STD_LOGIC_VECTOR (24 downto 0) := "0000010000000000000000000"; + constant ap_ST_fsm_state21 : STD_LOGIC_VECTOR (24 downto 0) := "0000100000000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (24 downto 0) := "0001000000000000000000000"; + constant ap_ST_fsm_state23 : STD_LOGIC_VECTOR (24 downto 0) := "0010000000000000000000000"; + constant ap_ST_fsm_state24 : STD_LOGIC_VECTOR (24 downto 0) := "0100000000000000000000000"; + constant ap_ST_fsm_state25 : STD_LOGIC_VECTOR (24 downto 0) := "1000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001010"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv32_18 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011000"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + constant ap_const_boolean_1 : BOOLEAN := true; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (24 downto 0) := "0000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state3 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state3 : signal is "none"; + signal icmp_ln20_fu_301_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state11 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state11 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal out_mem_blk_n_AR : STD_LOGIC; + signal out_mem_blk_n_R : STD_LOGIC; + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state19 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state19 : signal is "none"; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_CS_fsm_state20 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state20 : signal is "none"; + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state25 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state25 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARVALID : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RREADY : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal dim_read_reg_387 : STD_LOGIC_VECTOR (31 downto 0); + signal p_cast11_fu_230_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast11_reg_397 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast10_fu_244_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast10_reg_402 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast_fu_258_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast_reg_407 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln18_fu_262_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln18_reg_412 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal i_fu_276_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal i_reg_420 : STD_LOGIC_VECTOR (30 downto 0); + signal in1_mem_addr_reg_425 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln18_fu_271_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal j_fu_306_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal j_reg_434 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state3_io : BOOLEAN; + signal out_mem_addr_reg_439 : STD_LOGIC_VECTOR (31 downto 0); + signal k_fu_342_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal k_reg_449 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state10 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state10 : signal is "none"; + signal add_ln25_5_fu_348_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln25_5_reg_454 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln22_fu_337_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_addr_reg_459 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_read_reg_465 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state18 : BOOLEAN; + signal in2_mem_addr_read_reg_470 : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_read_reg_475 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln25_3_fu_382_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln25_3_reg_480 : STD_LOGIC_VECTOR (31 downto 0); + signal i_0_reg_163 : STD_LOGIC_VECTOR (30 downto 0); + signal phi_mul8_reg_174 : STD_LOGIC_VECTOR (31 downto 0); + signal j_0_reg_186 : STD_LOGIC_VECTOR (31 downto 0); + signal k_0_reg_198 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state9 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state9 : signal is "none"; + signal phi_mul_reg_209 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln25_1_fu_291_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln25_3_fu_327_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln25_5_fu_368_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_state11_io : BOOLEAN; + signal tmp_3_fu_220_p4 : STD_LOGIC_VECTOR (29 downto 0); + signal tmp_4_fu_234_p4 : STD_LOGIC_VECTOR (29 downto 0); + signal tmp_5_fu_248_p4 : STD_LOGIC_VECTOR (29 downto 0); + signal zext_ln18_fu_267_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln25_fu_282_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln25_1_fu_286_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln25_fu_312_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln25_2_fu_318_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln25_4_fu_322_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln25_2_fu_353_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln25_4_fu_359_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln25_6_fu_363_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal mul_ln25_fu_378_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (24 downto 0); + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_addr_reg_425, + I_ARID => ap_const_lv1_0, + I_ARLEN => dim_read_reg_387, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_459, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => out_mem_ARVALID, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => out_mem_addr_reg_439, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => out_mem_RREADY, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_439, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => add_ln25_3_reg_480, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + i_0_reg_163_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + i_0_reg_163 <= i_reg_420; + elsif (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + i_0_reg_163 <= ap_const_lv31_0; + end if; + end if; + end process; + + j_0_reg_186_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln22_fu_337_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state10))) then + j_0_reg_186 <= j_reg_434; + elsif (((icmp_ln18_fu_271_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + j_0_reg_186 <= ap_const_lv32_0; + end if; + end if; + end process; + + k_0_reg_198_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + k_0_reg_198 <= k_reg_449; + elsif ((ap_const_logic_1 = ap_CS_fsm_state9)) then + k_0_reg_198 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_mul8_reg_174_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + phi_mul8_reg_174 <= add_ln18_reg_412; + elsif (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + phi_mul8_reg_174 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_mul_reg_209_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + phi_mul_reg_209 <= add_ln25_5_reg_454; + elsif ((ap_const_logic_1 = ap_CS_fsm_state9)) then + phi_mul_reg_209 <= ap_const_lv32_0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + add_ln18_reg_412 <= add_ln18_fu_262_p2; + i_reg_420 <= i_fu_276_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state19))) then + add_ln25_3_reg_480 <= add_ln25_3_fu_382_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln22_fu_337_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state10))) then + add_ln25_5_reg_454 <= add_ln25_5_fu_348_p2; + in2_mem_addr_reg_459 <= sext_ln25_5_fu_368_p1(32 - 1 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_387 <= dim; + p_cast10_reg_402(29 downto 0) <= p_cast10_fu_244_p1(29 downto 0); + p_cast11_reg_397(29 downto 0) <= p_cast11_fu_230_p1(29 downto 0); + p_cast_reg_407(29 downto 0) <= p_cast_fu_258_p1(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((not(((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0))) and (ap_const_logic_1 = ap_CS_fsm_state18))) then + in1_mem_addr_read_reg_465 <= in1_mem_RDATA; + in2_mem_addr_read_reg_470 <= in2_mem_RDATA; + out_mem_addr_read_reg_475 <= out_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln18_fu_271_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_addr_reg_425 <= sext_ln25_1_fu_291_p1(32 - 1 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state3_io) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + j_reg_434 <= j_fu_306_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state10)) then + k_reg_449 <= k_fu_342_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + out_mem_addr_reg_439 <= sext_ln25_3_fu_327_p1(32 - 1 downto 0); + end if; + end if; + end process; + p_cast11_reg_397(32 downto 30) <= "000"; + p_cast10_reg_402(32 downto 30) <= "000"; + p_cast_reg_407(32 downto 30) <= "000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state3, icmp_ln20_fu_301_p2, ap_CS_fsm_state18, ap_CS_fsm_state11, ap_CS_fsm_state19, ap_CS_fsm_state20, ap_CS_fsm_state25, in1_mem_RVALID, in2_mem_RVALID, out_mem_AWREADY, out_mem_WREADY, out_mem_RVALID, out_mem_BVALID, ap_CS_fsm_state2, icmp_ln18_fu_271_p2, ap_block_state3_io, ap_CS_fsm_state10, icmp_ln22_fu_337_p2, ap_block_state11_io) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((icmp_ln18_fu_271_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state3; + end if; + when ap_ST_fsm_state3 => + if (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + ap_NS_fsm <= ap_ST_fsm_state2; + elsif (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + ap_NS_fsm <= ap_ST_fsm_state4; + else + ap_NS_fsm <= ap_ST_fsm_state3; + end if; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_state9; + when ap_ST_fsm_state9 => + ap_NS_fsm <= ap_ST_fsm_state10; + when ap_ST_fsm_state10 => + if (((icmp_ln22_fu_337_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state10))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state11; + end if; + when ap_ST_fsm_state11 => + if (((ap_const_boolean_0 = ap_block_state11_io) and (ap_const_logic_1 = ap_CS_fsm_state11))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_state11; + end if; + when ap_ST_fsm_state12 => + ap_NS_fsm <= ap_ST_fsm_state13; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + if ((not(((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0))) and (ap_const_logic_1 = ap_CS_fsm_state18))) then + ap_NS_fsm <= ap_ST_fsm_state19; + else + ap_NS_fsm <= ap_ST_fsm_state18; + end if; + when ap_ST_fsm_state19 => + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state19))) then + ap_NS_fsm <= ap_ST_fsm_state20; + else + ap_NS_fsm <= ap_ST_fsm_state19; + end if; + when ap_ST_fsm_state20 => + if (((out_mem_WREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state20))) then + ap_NS_fsm <= ap_ST_fsm_state21; + else + ap_NS_fsm <= ap_ST_fsm_state20; + end if; + when ap_ST_fsm_state21 => + ap_NS_fsm <= ap_ST_fsm_state22; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state23 => + ap_NS_fsm <= ap_ST_fsm_state24; + when ap_ST_fsm_state24 => + ap_NS_fsm <= ap_ST_fsm_state25; + when ap_ST_fsm_state25 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + ap_NS_fsm <= ap_ST_fsm_state10; + else + ap_NS_fsm <= ap_ST_fsm_state25; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln18_fu_262_p2 <= std_logic_vector(signed(phi_mul8_reg_174) + signed(dim_read_reg_387)); + add_ln25_1_fu_286_p2 <= std_logic_vector(signed(sext_ln25_fu_282_p1) + signed(p_cast_reg_407)); + add_ln25_2_fu_353_p2 <= std_logic_vector(unsigned(j_0_reg_186) + unsigned(phi_mul_reg_209)); + add_ln25_3_fu_382_p2 <= std_logic_vector(unsigned(mul_ln25_fu_378_p2) + unsigned(out_mem_addr_read_reg_475)); + add_ln25_4_fu_322_p2 <= std_logic_vector(signed(sext_ln25_2_fu_318_p1) + signed(p_cast11_reg_397)); + add_ln25_5_fu_348_p2 <= std_logic_vector(unsigned(dim_read_reg_387) + unsigned(phi_mul_reg_209)); + add_ln25_6_fu_363_p2 <= std_logic_vector(signed(sext_ln25_4_fu_359_p1) + signed(p_cast10_reg_402)); + add_ln25_fu_312_p2 <= std_logic_vector(signed(phi_mul8_reg_174) + signed(j_0_reg_186)); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state10 <= ap_CS_fsm(9); + ap_CS_fsm_state11 <= ap_CS_fsm(10); + ap_CS_fsm_state18 <= ap_CS_fsm(17); + ap_CS_fsm_state19 <= ap_CS_fsm(18); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state20 <= ap_CS_fsm(19); + ap_CS_fsm_state25 <= ap_CS_fsm(24); + ap_CS_fsm_state3 <= ap_CS_fsm(2); + ap_CS_fsm_state9 <= ap_CS_fsm(8); + + ap_block_state11_io_assign_proc : process(in2_mem_ARREADY, out_mem_ARREADY) + begin + ap_block_state11_io <= ((out_mem_ARREADY = ap_const_logic_0) or (in2_mem_ARREADY = ap_const_logic_0)); + end process; + + + ap_block_state18_assign_proc : process(in1_mem_RVALID, in2_mem_RVALID, out_mem_RVALID) + begin + ap_block_state18 <= ((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0)); + end process; + + + ap_block_state3_io_assign_proc : process(icmp_ln20_fu_301_p2, in1_mem_ARREADY) + begin + ap_block_state3_io <= ((in1_mem_ARREADY = ap_const_logic_0) and (icmp_ln20_fu_301_p2 = ap_const_lv1_0)); + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state2, icmp_ln18_fu_271_p2) + begin + if (((icmp_ln18_fu_271_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state2, icmp_ln18_fu_271_p2) + begin + if (((icmp_ln18_fu_271_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + i_fu_276_p2 <= std_logic_vector(unsigned(i_0_reg_163) + unsigned(ap_const_lv31_1)); + icmp_ln18_fu_271_p2 <= "1" when (signed(zext_ln18_fu_267_p1) < signed(dim_read_reg_387)) else "0"; + icmp_ln20_fu_301_p2 <= "1" when (j_0_reg_186 = dim_read_reg_387) else "0"; + icmp_ln22_fu_337_p2 <= "1" when (k_0_reg_198 = dim_read_reg_387) else "0"; + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state3, icmp_ln20_fu_301_p2, ap_block_state3_io) + begin + if (((ap_const_boolean_0 = ap_block_state3_io) and (icmp_ln20_fu_301_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_state18, in1_mem_RVALID, in2_mem_RVALID, out_mem_RVALID) + begin + if ((not(((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0))) and (ap_const_logic_1 = ap_CS_fsm_state18))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state3, icmp_ln20_fu_301_p2) + begin + if (((icmp_ln20_fu_301_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state3))) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_state18) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state11, ap_block_state11_io) + begin + if (((ap_const_boolean_0 = ap_block_state11_io) and (ap_const_logic_1 = ap_CS_fsm_state11))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_state18, in1_mem_RVALID, in2_mem_RVALID, out_mem_RVALID) + begin + if ((not(((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0))) and (ap_const_logic_1 = ap_CS_fsm_state18))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state11) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state11)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_state18) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_306_p2 <= std_logic_vector(unsigned(j_0_reg_186) + unsigned(ap_const_lv32_1)); + k_fu_342_p2 <= std_logic_vector(unsigned(k_0_reg_198) + unsigned(ap_const_lv32_1)); + mul_ln25_fu_378_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in1_mem_addr_read_reg_465) * signed(in2_mem_addr_read_reg_470))), 32)); + + out_mem_ARVALID_assign_proc : process(ap_CS_fsm_state11, ap_block_state11_io) + begin + if (((ap_const_boolean_0 = ap_block_state11_io) and (ap_const_logic_1 = ap_CS_fsm_state11))) then + out_mem_ARVALID <= ap_const_logic_1; + else + out_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state19, out_mem_AWREADY) + begin + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state19))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state25, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_RREADY_assign_proc : process(ap_CS_fsm_state18, in1_mem_RVALID, in2_mem_RVALID, out_mem_RVALID) + begin + if ((not(((out_mem_RVALID = ap_const_logic_0) or (in2_mem_RVALID = ap_const_logic_0) or (in1_mem_RVALID = ap_const_logic_0))) and (ap_const_logic_1 = ap_CS_fsm_state18))) then + out_mem_RREADY <= ap_const_logic_1; + else + out_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_CS_fsm_state20, out_mem_WREADY) + begin + if (((out_mem_WREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state20))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AR_assign_proc : process(m_axi_out_mem_ARREADY, ap_CS_fsm_state11) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state11)) then + out_mem_blk_n_AR <= m_axi_out_mem_ARREADY; + else + out_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state19) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state19)) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state25) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_R_assign_proc : process(m_axi_out_mem_RVALID, ap_CS_fsm_state18) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + out_mem_blk_n_R <= m_axi_out_mem_RVALID; + else + out_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_CS_fsm_state20) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state20)) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + p_cast10_fu_244_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_4_fu_234_p4),33)); + p_cast11_fu_230_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_3_fu_220_p4),33)); + p_cast_fu_258_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_5_fu_248_p4),33)); + sext_ln25_1_fu_291_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln25_1_fu_286_p2),64)); + + sext_ln25_2_fu_318_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln25_fu_312_p2),33)); + + sext_ln25_3_fu_327_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln25_4_fu_322_p2),64)); + + sext_ln25_4_fu_359_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln25_2_fu_353_p2),33)); + + sext_ln25_5_fu_368_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln25_6_fu_363_p2),64)); + + sext_ln25_fu_282_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(phi_mul8_reg_174),33)); + + tmp_3_fu_220_p4 <= out_r(31 downto 2); + tmp_4_fu_234_p4 <= in2(31 downto 2); + tmp_5_fu_248_p4 <= in1(31 downto 2); + zext_ln18_fu_267_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(i_0_reg_163),32)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100644 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100644 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100644 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100644 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/xgui/mmult_v1_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/xgui/mmult_v1_0.tcl new file mode 100644 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_2/xgui/mmult_v1_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/component.xml new file mode 100755 index 0000000..4dbbf4e --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/component.xml @@ -0,0 +1,5560 @@ + + + xilinx.com + hls + mmult + 2.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + c6c6a30c + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 530f6324 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + a633e100 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 4ac0d38c + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 77099262 + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult_urem_96ns_3bkb.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_urem_96ns_3bkb.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_urem_96ns_3bkb.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_23c31290 + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_urem_96ns_3bkb.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v2_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v2_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v2_0/src/Makefile + driver_src + + + drivers/mmult_v2_0/src/xmmult.c + driver_src + + + drivers/mmult_v2_0/src/xmmult.h + driver_src + + + drivers/mmult_v2_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v2_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v2_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v2_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v2_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 3932262 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + mmult pipeline + HLS + 2105141659 + 2021-05-14T15:00:08Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/doc/ReleaseNotes.txt new file mode 100755 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.mdd new file mode 100755 index 0000000..0c2ccb9 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v2_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 2.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/drivers/mmult_v2_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult.v new file mode 100755 index 0000000..fdd02a0 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult.v @@ -0,0 +1,2318 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=3932262,HLS_SYN_TPT=none,HLS_SYN_MEM=6,HLS_SYN_DSP=28,HLS_SYN_FF=11990,HLS_SYN_LUT=10233,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 18'd1; +parameter ap_ST_fsm_state2 = 18'd2; +parameter ap_ST_fsm_pp0_stage0 = 18'd4; +parameter ap_ST_fsm_pp0_stage1 = 18'd8; +parameter ap_ST_fsm_pp0_stage2 = 18'd16; +parameter ap_ST_fsm_pp0_stage3 = 18'd32; +parameter ap_ST_fsm_pp0_stage4 = 18'd64; +parameter ap_ST_fsm_pp0_stage5 = 18'd128; +parameter ap_ST_fsm_pp0_stage6 = 18'd256; +parameter ap_ST_fsm_pp0_stage7 = 18'd512; +parameter ap_ST_fsm_pp0_stage8 = 18'd1024; +parameter ap_ST_fsm_pp0_stage9 = 18'd2048; +parameter ap_ST_fsm_pp0_stage10 = 18'd4096; +parameter ap_ST_fsm_pp0_stage11 = 18'd8192; +parameter ap_ST_fsm_pp0_stage12 = 18'd16384; +parameter ap_ST_fsm_pp0_stage13 = 18'd32768; +parameter ap_ST_fsm_pp0_stage14 = 18'd65536; +parameter ap_ST_fsm_state118 = 18'd131072; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [17:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_pp0_stage10; +reg ap_enable_reg_pp0_iter6; +wire ap_block_pp0_stage10; +reg [0:0] icmp_ln8_reg_676; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage2; +reg ap_enable_reg_pp0_iter7; +wire ap_block_pp0_stage2; +reg [0:0] icmp_ln19_reg_600; +reg [0:0] icmp_ln19_reg_600_pp0_iter7_reg; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_pp0_stage3; +reg ap_enable_reg_pp0_iter0; +wire ap_block_pp0_stage3; +reg in2_mem_blk_n_R; +reg out_mem_blk_n_AR; +reg [0:0] icmp_ln19_reg_600_pp0_iter6_reg; +reg out_mem_blk_n_R; +reg out_mem_blk_n_AW; +reg out_mem_blk_n_W; +wire ap_CS_fsm_pp0_stage4; +wire ap_block_pp0_stage4; +reg out_mem_blk_n_B; +wire ap_CS_fsm_pp0_stage9; +wire ap_block_pp0_stage9; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +reg out_mem_ARVALID; +wire out_mem_ARREADY; +wire out_mem_RVALID; +reg out_mem_RREADY; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [95:0] indvar_flatten18_reg_171; +wire ap_CS_fsm_pp0_stage0; +wire ap_block_state3_pp0_stage0_iter0; +wire ap_block_state18_pp0_stage0_iter1; +wire ap_block_state33_pp0_stage0_iter2; +wire ap_block_state48_pp0_stage0_iter3; +wire ap_block_state63_pp0_stage0_iter4; +wire ap_block_state78_pp0_stage0_iter5; +wire ap_block_state93_pp0_stage0_iter6; +wire ap_block_state108_pp0_stage0_iter7; +wire ap_block_pp0_stage0_11001; +reg [30:0] i_0_reg_183; +reg [63:0] indvar_flatten_reg_195; +reg [31:0] j_0_reg_207; +reg [31:0] k_0_reg_219; +reg [31:0] dim_read_reg_528; +reg [29:0] tmp_reg_539; +reg [29:0] tmp_1_reg_544; +reg [29:0] tmp_3_reg_549; +wire [63:0] bound_fu_265_p2; +reg [63:0] bound_reg_554; +wire [32:0] p_cast20_fu_271_p1; +reg [32:0] p_cast20_reg_560; +wire ap_CS_fsm_state2; +wire [32:0] p_cast19_fu_274_p1; +reg [32:0] p_cast19_reg_565; +wire [32:0] p_cast_fu_277_p1; +reg [32:0] p_cast_reg_570; +wire [95:0] cast5_fu_280_p1; +reg [95:0] cast5_reg_575; +wire [95:0] bound7_fu_286_p2; +reg [95:0] bound7_reg_580; +wire [0:0] icmp_ln21_fu_292_p2; +reg [0:0] icmp_ln21_reg_585; +wire [31:0] mul_ln26_fu_301_p2; +reg [31:0] mul_ln26_reg_590; +wire [31:0] add_ln26_fu_306_p2; +reg [31:0] add_ln26_reg_595; +wire [0:0] icmp_ln19_fu_312_p2; +reg [0:0] icmp_ln19_reg_600_pp0_iter1_reg; +reg [0:0] icmp_ln19_reg_600_pp0_iter2_reg; +reg [0:0] icmp_ln19_reg_600_pp0_iter3_reg; +reg [0:0] icmp_ln19_reg_600_pp0_iter4_reg; +reg [0:0] icmp_ln19_reg_600_pp0_iter5_reg; +wire [95:0] add_ln19_fu_317_p2; +reg [95:0] add_ln19_reg_604; +wire [30:0] add_ln19_1_fu_328_p2; +reg [30:0] add_ln19_1_reg_609; +wire ap_CS_fsm_pp0_stage1; +wire ap_block_state4_pp0_stage1_iter0; +wire ap_block_state19_pp0_stage1_iter1; +wire ap_block_state34_pp0_stage1_iter2; +wire ap_block_state49_pp0_stage1_iter3; +wire ap_block_state64_pp0_stage1_iter4; +wire ap_block_state79_pp0_stage1_iter5; +wire ap_block_state94_pp0_stage1_iter6; +wire ap_block_state109_pp0_stage1_iter7; +wire ap_block_pp0_stage1_11001; +wire [0:0] icmp_ln21_1_fu_338_p2; +reg [0:0] icmp_ln21_1_reg_614; +wire signed [31:0] select_ln26_fu_398_p3; +reg signed [31:0] select_ln26_reg_620; +wire [31:0] select_ln21_fu_424_p3; +reg [31:0] select_ln21_reg_626; +reg [31:0] in1_mem_addr_reg_632; +reg [31:0] in1_mem_addr_reg_632_pp0_iter1_reg; +reg [31:0] in1_mem_addr_reg_632_pp0_iter2_reg; +reg [31:0] in1_mem_addr_reg_632_pp0_iter3_reg; +reg [31:0] in1_mem_addr_reg_632_pp0_iter4_reg; +reg [31:0] in1_mem_addr_reg_632_pp0_iter5_reg; +reg [31:0] in1_mem_addr_reg_632_pp0_iter6_reg; +reg [31:0] out_mem_addr_reg_638; +reg [31:0] out_mem_addr_reg_638_pp0_iter1_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter2_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter3_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter4_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter5_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter6_reg; +reg [31:0] out_mem_addr_reg_638_pp0_iter7_reg; +wire [63:0] add_ln21_1_fu_462_p2; +reg [63:0] add_ln21_1_reg_645; +reg [31:0] in2_mem_addr_reg_650; +wire ap_block_state5_pp0_stage2_iter0; +wire ap_block_state20_pp0_stage2_iter1; +wire ap_block_state35_pp0_stage2_iter2; +wire ap_block_state50_pp0_stage2_iter3; +wire ap_block_state65_pp0_stage2_iter4; +wire ap_block_state80_pp0_stage2_iter5; +wire ap_block_state95_pp0_stage2_iter6; +reg ap_block_state110_pp0_stage2_iter7; +reg ap_block_pp0_stage2_11001; +reg signed [31:0] in2_mem_addr_read_reg_656; +reg ap_block_state13_pp0_stage10_iter0; +wire ap_block_state28_pp0_stage10_iter1; +wire ap_block_state43_pp0_stage10_iter2; +wire ap_block_state58_pp0_stage10_iter3; +wire ap_block_state73_pp0_stage10_iter4; +wire ap_block_state88_pp0_stage10_iter5; +wire ap_block_state103_pp0_stage10_iter6; +reg ap_block_state103_io; +reg ap_block_pp0_stage10_11001; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter1_reg; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter2_reg; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter3_reg; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter4_reg; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter5_reg; +reg signed [31:0] in2_mem_addr_read_reg_656_pp0_iter6_reg; +wire [30:0] select_ln19_4_fu_496_p3; +reg [30:0] select_ln19_4_reg_661; +wire ap_CS_fsm_pp0_stage14; +wire ap_block_state17_pp0_stage14_iter0; +wire ap_block_state32_pp0_stage14_iter1; +wire ap_block_state47_pp0_stage14_iter2; +wire ap_block_state62_pp0_stage14_iter3; +wire ap_block_state77_pp0_stage14_iter4; +wire ap_block_state92_pp0_stage14_iter5; +wire ap_block_state107_pp0_stage14_iter6; +wire ap_block_pp0_stage14_11001; +wire [31:0] k_fu_502_p2; +reg [31:0] k_reg_666; +reg ap_enable_reg_pp0_iter1; +wire [63:0] select_ln21_1_fu_507_p3; +reg [63:0] select_ln21_1_reg_671; +wire [0:0] icmp_ln8_fu_513_p2; +wire ap_block_state12_pp0_stage9_iter0; +wire ap_block_state27_pp0_stage9_iter1; +wire ap_block_state42_pp0_stage9_iter2; +wire ap_block_state57_pp0_stage9_iter3; +wire ap_block_state72_pp0_stage9_iter4; +wire ap_block_state87_pp0_stage9_iter5; +wire ap_block_state102_pp0_stage9_iter6; +reg ap_block_state117_pp0_stage9_iter7; +reg ap_block_pp0_stage9_11001; +reg signed [31:0] in1_mem_addr_read_reg_680; +reg [31:0] out_mem_addr_read_reg_685; +wire [31:0] add_ln26_3_fu_523_p2; +reg [31:0] add_ln26_3_reg_690; +wire ap_block_state6_pp0_stage3_iter0; +reg ap_block_state6_io; +wire ap_block_state21_pp0_stage3_iter1; +wire ap_block_state36_pp0_stage3_iter2; +wire ap_block_state51_pp0_stage3_iter3; +wire ap_block_state66_pp0_stage3_iter4; +wire ap_block_state81_pp0_stage3_iter5; +wire ap_block_state96_pp0_stage3_iter6; +wire ap_block_state111_pp0_stage3_iter7; +reg ap_block_state111_io; +reg ap_block_pp0_stage3_11001; +wire ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state3; +wire ap_block_pp0_stage14_subdone; +reg ap_block_pp0_stage9_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 [95:0] ap_phi_mux_indvar_flatten18_phi_fu_175_p4; +wire ap_block_pp0_stage0; +reg [30:0] ap_phi_mux_i_0_phi_fu_187_p4; +reg [63:0] ap_phi_mux_indvar_flatten_phi_fu_199_p4; +wire ap_block_pp0_stage1; +reg [31:0] ap_phi_mux_j_0_phi_fu_211_p4; +reg [31:0] ap_phi_mux_k_0_phi_fu_223_p4; +wire signed [63:0] sext_ln26_1_fu_437_p1; +wire signed [63:0] sext_ln26_4_fu_452_p1; +wire signed [63:0] sext_ln26_3_fu_486_p1; +wire ap_block_state7_pp0_stage4_iter0; +wire ap_block_state22_pp0_stage4_iter1; +wire ap_block_state37_pp0_stage4_iter2; +wire ap_block_state52_pp0_stage4_iter3; +wire ap_block_state67_pp0_stage4_iter4; +wire ap_block_state82_pp0_stage4_iter5; +wire ap_block_state97_pp0_stage4_iter6; +wire ap_block_state112_pp0_stage4_iter7; +reg ap_block_state112_io; +reg ap_block_pp0_stage4_11001; +wire ap_block_pp0_stage4_01001; +wire signed [31:0] cast_fu_261_p0; +wire [31:0] bound_fu_265_p0; +wire [63:0] cast_fu_261_p1; +wire [31:0] bound_fu_265_p1; +wire [63:0] bound7_fu_286_p0; +wire [31:0] bound7_fu_286_p1; +wire [30:0] mul_ln26_fu_301_p1; +wire [31:0] grp_fu_323_p1; +wire [30:0] mul_ln26_3_fu_351_p1; +wire [31:0] mul_ln26_3_fu_351_p2; +wire signed [31:0] select_ln19_1_fu_356_p3; +wire [0:0] icmp_ln23_fu_374_p2; +wire [31:0] select_ln19_fu_343_p3; +wire [0:0] select_ln19_3_fu_379_p3; +wire [0:0] or_ln26_fu_392_p2; +wire [31:0] j_fu_386_p2; +wire [31:0] add_ln26_1_fu_406_p2; +wire [31:0] select_ln19_2_fu_367_p3; +wire [31:0] select_ln26_1_fu_412_p3; +wire signed [32:0] sext_ln19_fu_363_p1; +wire [32:0] add_ln26_4_fu_432_p2; +wire signed [32:0] sext_ln26_fu_420_p1; +wire [32:0] add_ln26_6_fu_447_p2; +wire [31:0] mul_ln26_1_fu_468_p2; +wire [31:0] add_ln26_2_fu_472_p2; +wire signed [32:0] sext_ln26_2_fu_477_p1; +wire [32:0] add_ln26_5_fu_481_p2; +wire ap_block_pp0_stage14; +wire [95:0] grp_fu_323_p2; +wire [31:0] mul_ln26_2_fu_519_p2; +reg grp_fu_323_ce; +wire ap_block_state8_pp0_stage5_iter0; +wire ap_block_state23_pp0_stage5_iter1; +wire ap_block_state38_pp0_stage5_iter2; +wire ap_block_state53_pp0_stage5_iter3; +wire ap_block_state68_pp0_stage5_iter4; +wire ap_block_state83_pp0_stage5_iter5; +wire ap_block_state98_pp0_stage5_iter6; +wire ap_block_state113_pp0_stage5_iter7; +wire ap_block_pp0_stage5_11001; +wire ap_CS_fsm_pp0_stage5; +wire ap_block_state9_pp0_stage6_iter0; +wire ap_block_state24_pp0_stage6_iter1; +wire ap_block_state39_pp0_stage6_iter2; +wire ap_block_state54_pp0_stage6_iter3; +wire ap_block_state69_pp0_stage6_iter4; +wire ap_block_state84_pp0_stage6_iter5; +wire ap_block_state99_pp0_stage6_iter6; +wire ap_block_state114_pp0_stage6_iter7; +wire ap_block_pp0_stage6_11001; +wire ap_CS_fsm_pp0_stage6; +wire ap_block_state10_pp0_stage7_iter0; +wire ap_block_state25_pp0_stage7_iter1; +wire ap_block_state40_pp0_stage7_iter2; +wire ap_block_state55_pp0_stage7_iter3; +wire ap_block_state70_pp0_stage7_iter4; +wire ap_block_state85_pp0_stage7_iter5; +wire ap_block_state100_pp0_stage7_iter6; +wire ap_block_state115_pp0_stage7_iter7; +wire ap_block_pp0_stage7_11001; +wire ap_CS_fsm_pp0_stage7; +wire ap_block_state11_pp0_stage8_iter0; +wire ap_block_state26_pp0_stage8_iter1; +wire ap_block_state41_pp0_stage8_iter2; +wire ap_block_state56_pp0_stage8_iter3; +wire ap_block_state71_pp0_stage8_iter4; +wire ap_block_state86_pp0_stage8_iter5; +wire ap_block_state101_pp0_stage8_iter6; +wire ap_block_state116_pp0_stage8_iter7; +wire ap_block_pp0_stage8_11001; +wire ap_CS_fsm_pp0_stage8; +wire ap_block_state14_pp0_stage11_iter0; +wire ap_block_state29_pp0_stage11_iter1; +wire ap_block_state44_pp0_stage11_iter2; +wire ap_block_state59_pp0_stage11_iter3; +wire ap_block_state74_pp0_stage11_iter4; +wire ap_block_state89_pp0_stage11_iter5; +wire ap_block_state104_pp0_stage11_iter6; +wire ap_block_pp0_stage11_11001; +wire ap_CS_fsm_pp0_stage11; +wire ap_block_state15_pp0_stage12_iter0; +wire ap_block_state30_pp0_stage12_iter1; +wire ap_block_state45_pp0_stage12_iter2; +wire ap_block_state60_pp0_stage12_iter3; +wire ap_block_state75_pp0_stage12_iter4; +wire ap_block_state90_pp0_stage12_iter5; +wire ap_block_state105_pp0_stage12_iter6; +wire ap_block_pp0_stage12_11001; +wire ap_CS_fsm_pp0_stage12; +wire ap_block_state16_pp0_stage13_iter0; +wire ap_block_state31_pp0_stage13_iter1; +wire ap_block_state46_pp0_stage13_iter2; +wire ap_block_state61_pp0_stage13_iter3; +wire ap_block_state76_pp0_stage13_iter4; +wire ap_block_state91_pp0_stage13_iter5; +wire ap_block_state106_pp0_stage13_iter6; +wire ap_block_pp0_stage13_11001; +wire ap_CS_fsm_pp0_stage13; +wire ap_CS_fsm_state118; +reg [17:0] ap_NS_fsm; +wire ap_block_pp0_stage1_subdone; +reg ap_block_pp0_stage2_subdone; +reg ap_block_pp0_stage3_subdone; +reg ap_block_pp0_stage4_subdone; +wire ap_block_pp0_stage5_subdone; +wire ap_block_pp0_stage6_subdone; +wire ap_block_pp0_stage7_subdone; +wire ap_block_pp0_stage8_subdone; +reg ap_block_pp0_stage10_subdone; +wire ap_block_pp0_stage11_subdone; +wire ap_block_pp0_stage12_subdone; +wire ap_block_pp0_stage13_subdone; +reg ap_idle_pp0; +wire ap_enable_pp0; +wire [95:0] bound7_fu_286_p00; +wire [95:0] bound7_fu_286_p10; +wire [31:0] mul_ln26_3_fu_351_p10; +wire [31:0] mul_ln26_fu_301_p10; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 18'd1; +#0 ap_enable_reg_pp0_iter6 = 1'b0; +#0 ap_enable_reg_pp0_iter7 = 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; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_addr_reg_632_pp0_iter6_reg), + .I_ARID(1'd0), + .I_ARLEN(dim_read_reg_528), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_650), + .I_ARID(1'd0), + .I_ARLEN(32'd1), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(out_mem_ARVALID), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(out_mem_addr_reg_638_pp0_iter6_reg), + .I_ARID(1'd0), + .I_ARLEN(32'd1), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(out_mem_RREADY), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_638_pp0_iter7_reg), + .I_AWID(1'd0), + .I_AWLEN(32'd1), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(add_ln26_3_reg_690), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_urem_96ns_3bkb #( + .ID( 1 ), + .NUM_STAGE( 100 ), + .din0_WIDTH( 96 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 96 )) +mmult_urem_96ns_3bkb_U1( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(ap_phi_mux_indvar_flatten18_phi_fu_175_p4), + .din1(grp_fu_323_p1), + .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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state3) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter3 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter4 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter5 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter6 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14))) begin + ap_enable_reg_pp0_iter6 <= ap_enable_reg_pp0_iter5; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter7 <= 1'b0; + end else begin + if ((((1'b0 == ap_block_pp0_stage14_subdone) & (1'b1 == ap_CS_fsm_pp0_stage14)) | ((1'b0 == ap_block_pp0_stage9_subdone) & (1'b1 == ap_CS_fsm_pp0_stage9)))) begin + ap_enable_reg_pp0_iter7 <= ap_enable_reg_pp0_iter6; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + ap_enable_reg_pp0_iter7 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + i_0_reg_183 <= select_ln19_4_reg_661; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + i_0_reg_183 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + indvar_flatten18_reg_171 <= add_ln19_reg_604; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + indvar_flatten18_reg_171 <= 96'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage1_11001) & (icmp_ln19_reg_600_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + indvar_flatten_reg_195 <= select_ln21_1_reg_671; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + indvar_flatten_reg_195 <= 64'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + j_0_reg_207 <= select_ln21_reg_626; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + j_0_reg_207 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage1_11001) & (icmp_ln19_reg_600_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + k_0_reg_219 <= k_reg_666; + end else if ((1'b1 == ap_CS_fsm_state2)) begin + k_0_reg_219 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage1_11001) & (icmp_ln19_reg_600 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + add_ln19_1_reg_609 <= add_ln19_1_fu_328_p2; + add_ln21_1_reg_645 <= add_ln21_1_fu_462_p2; + icmp_ln21_1_reg_614 <= icmp_ln21_1_fu_338_p2; + in1_mem_addr_reg_632 <= sext_ln26_1_fu_437_p1; + out_mem_addr_reg_638 <= sext_ln26_4_fu_452_p1; + select_ln26_reg_620 <= select_ln26_fu_398_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin + add_ln19_reg_604 <= add_ln19_fu_317_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage3_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage3))) begin + add_ln26_3_reg_690 <= add_ln26_3_fu_523_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + add_ln26_reg_595 <= add_ln26_fu_306_p2; + icmp_ln19_reg_600 <= icmp_ln19_fu_312_p2; + icmp_ln19_reg_600_pp0_iter1_reg <= icmp_ln19_reg_600; + icmp_ln19_reg_600_pp0_iter2_reg <= icmp_ln19_reg_600_pp0_iter1_reg; + icmp_ln19_reg_600_pp0_iter3_reg <= icmp_ln19_reg_600_pp0_iter2_reg; + icmp_ln19_reg_600_pp0_iter4_reg <= icmp_ln19_reg_600_pp0_iter3_reg; + icmp_ln19_reg_600_pp0_iter5_reg <= icmp_ln19_reg_600_pp0_iter4_reg; + icmp_ln19_reg_600_pp0_iter6_reg <= icmp_ln19_reg_600_pp0_iter5_reg; + icmp_ln19_reg_600_pp0_iter7_reg <= icmp_ln19_reg_600_pp0_iter6_reg; + mul_ln26_reg_590 <= mul_ln26_fu_301_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + bound7_reg_580 <= bound7_fu_286_p2; + cast5_reg_575[31 : 0] <= cast5_fu_280_p1[31 : 0]; + icmp_ln21_reg_585 <= icmp_ln21_fu_292_p2; + p_cast19_reg_565[29 : 0] <= p_cast19_fu_274_p1[29 : 0]; + p_cast20_reg_560[29 : 0] <= p_cast20_fu_271_p1[29 : 0]; + p_cast_reg_570[29 : 0] <= p_cast_fu_277_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + bound_reg_554 <= bound_fu_265_p2; + dim_read_reg_528 <= dim; + tmp_1_reg_544 <= {{in2[31:2]}}; + tmp_3_reg_549 <= {{in1[31:2]}}; + tmp_reg_539 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage9_11001) & (icmp_ln19_reg_600_pp0_iter6_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage9))) begin + icmp_ln8_reg_676 <= icmp_ln8_fu_513_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage2_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + in1_mem_addr_read_reg_680 <= in1_mem_RDATA; + out_mem_addr_read_reg_685 <= out_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage1_11001) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + in1_mem_addr_reg_632_pp0_iter1_reg <= in1_mem_addr_reg_632; + in1_mem_addr_reg_632_pp0_iter2_reg <= in1_mem_addr_reg_632_pp0_iter1_reg; + in1_mem_addr_reg_632_pp0_iter3_reg <= in1_mem_addr_reg_632_pp0_iter2_reg; + in1_mem_addr_reg_632_pp0_iter4_reg <= in1_mem_addr_reg_632_pp0_iter3_reg; + in1_mem_addr_reg_632_pp0_iter5_reg <= in1_mem_addr_reg_632_pp0_iter4_reg; + in1_mem_addr_reg_632_pp0_iter6_reg <= in1_mem_addr_reg_632_pp0_iter5_reg; + out_mem_addr_reg_638_pp0_iter1_reg <= out_mem_addr_reg_638; + out_mem_addr_reg_638_pp0_iter2_reg <= out_mem_addr_reg_638_pp0_iter1_reg; + out_mem_addr_reg_638_pp0_iter3_reg <= out_mem_addr_reg_638_pp0_iter2_reg; + out_mem_addr_reg_638_pp0_iter4_reg <= out_mem_addr_reg_638_pp0_iter3_reg; + out_mem_addr_reg_638_pp0_iter5_reg <= out_mem_addr_reg_638_pp0_iter4_reg; + out_mem_addr_reg_638_pp0_iter6_reg <= out_mem_addr_reg_638_pp0_iter5_reg; + out_mem_addr_reg_638_pp0_iter7_reg <= out_mem_addr_reg_638_pp0_iter6_reg; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage10_11001) & (icmp_ln19_reg_600 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in2_mem_addr_read_reg_656 <= in2_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage10_11001) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in2_mem_addr_read_reg_656_pp0_iter1_reg <= in2_mem_addr_read_reg_656; + in2_mem_addr_read_reg_656_pp0_iter2_reg <= in2_mem_addr_read_reg_656_pp0_iter1_reg; + in2_mem_addr_read_reg_656_pp0_iter3_reg <= in2_mem_addr_read_reg_656_pp0_iter2_reg; + in2_mem_addr_read_reg_656_pp0_iter4_reg <= in2_mem_addr_read_reg_656_pp0_iter3_reg; + in2_mem_addr_read_reg_656_pp0_iter5_reg <= in2_mem_addr_read_reg_656_pp0_iter4_reg; + in2_mem_addr_read_reg_656_pp0_iter6_reg <= in2_mem_addr_read_reg_656_pp0_iter5_reg; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage2_11001) & (icmp_ln19_reg_600 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + in2_mem_addr_reg_650 <= sext_ln26_3_fu_486_p1; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + k_reg_666 <= k_fu_502_p2; + select_ln21_1_reg_671 <= select_ln21_1_fu_507_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage14_11001) & (icmp_ln19_reg_600 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage14) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin + select_ln19_4_reg_661 <= select_ln19_4_fu_496_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage1_11001) & (icmp_ln19_reg_600 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage1) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin + select_ln21_reg_626 <= select_ln21_fu_424_p3; + end +end + +always @ (*) begin + if ((icmp_ln19_fu_312_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state3 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state3 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state118)) 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_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_iter7 == 1'b0) & (ap_enable_reg_pp0_iter6 == 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) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_phi_mux_i_0_phi_fu_187_p4 = select_ln19_4_reg_661; + end else begin + ap_phi_mux_i_0_phi_fu_187_p4 = i_0_reg_183; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_phi_mux_indvar_flatten18_phi_fu_175_p4 = add_ln19_reg_604; + end else begin + ap_phi_mux_indvar_flatten18_phi_fu_175_p4 = indvar_flatten18_reg_171; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage1) & (icmp_ln19_reg_600_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + ap_phi_mux_indvar_flatten_phi_fu_199_p4 = select_ln21_1_reg_671; + end else begin + ap_phi_mux_indvar_flatten_phi_fu_199_p4 = indvar_flatten_reg_195; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_phi_mux_j_0_phi_fu_211_p4 = select_ln21_reg_626; + end else begin + ap_phi_mux_j_0_phi_fu_211_p4 = j_0_reg_207; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage1) & (icmp_ln19_reg_600_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage1))) begin + ap_phi_mux_k_0_phi_fu_223_p4 = k_reg_666; + end else begin + ap_phi_mux_k_0_phi_fu_223_p4 = k_0_reg_219; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state118)) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage14_11001) & (1'b1 == ap_CS_fsm_pp0_stage14)) | ((1'b0 == ap_block_pp0_stage1_11001) & (1'b1 == ap_CS_fsm_pp0_stage1)) | ((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0)) | ((1'b0 == ap_block_pp0_stage9_11001) & (1'b1 == ap_CS_fsm_pp0_stage9)) | ((1'b0 == ap_block_pp0_stage4_11001) & (1'b1 == ap_CS_fsm_pp0_stage4)) | ((1'b0 == ap_block_pp0_stage3_11001) & (1'b1 == ap_CS_fsm_pp0_stage3)) | ((1'b0 == ap_block_pp0_stage2_11001) & (1'b1 == ap_CS_fsm_pp0_stage2)) | ((1'b0 == ap_block_pp0_stage10_11001) & (1'b1 == ap_CS_fsm_pp0_stage10)) | ((1'b1 == ap_CS_fsm_pp0_stage13) & (1'b0 == ap_block_pp0_stage13_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage12) & (1'b0 == ap_block_pp0_stage12_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage11) & (1'b0 == ap_block_pp0_stage11_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage8) & (1'b0 == ap_block_pp0_stage8_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage7) & (1'b0 == ap_block_pp0_stage7_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage6) & (1'b0 == ap_block_pp0_stage6_11001)) | ((1'b1 == ap_CS_fsm_pp0_stage5) & (1'b0 == ap_block_pp0_stage5_11001)))) begin + grp_fu_323_ce = 1'b1; + end else begin + grp_fu_323_ce = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage10_11001) & (icmp_ln8_reg_676 == 1'd1) & (ap_enable_reg_pp0_iter6 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage2_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (ap_enable_reg_pp0_iter7 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln8_reg_676 == 1'd1) & (1'b0 == ap_block_pp0_stage10) & (ap_enable_reg_pp0_iter6 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b0 == ap_block_pp0_stage2) & (ap_enable_reg_pp0_iter7 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage3_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage3))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage10_11001) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage3) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage3))) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln19_reg_600 == 1'd0) & (1'b0 == ap_block_pp0_stage10) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage10_11001) & (icmp_ln19_reg_600_pp0_iter6_reg == 1'd0) & (ap_enable_reg_pp0_iter6 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + out_mem_ARVALID = 1'b1; + end else begin + out_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage3_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage3) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage9_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage9) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage2_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (ap_enable_reg_pp0_iter7 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + out_mem_RREADY = 1'b1; + end else begin + out_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage4_11001) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage4) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln19_reg_600_pp0_iter6_reg == 1'd0) & (1'b0 == ap_block_pp0_stage10) & (ap_enable_reg_pp0_iter6 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage10))) begin + out_mem_blk_n_AR = m_axi_out_mem_ARREADY; + end else begin + out_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage3) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage3) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage9) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage9) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b0 == ap_block_pp0_stage2) & (ap_enable_reg_pp0_iter7 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage2))) begin + out_mem_blk_n_R = m_axi_out_mem_RVALID; + end else begin + out_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage4) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage4) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (icmp_ln19_fu_312_p2 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1)) & (1'b0 == ap_block_pp0_stage0_subdone))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage1; + end else if (((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (icmp_ln19_fu_312_p2 == 1'd1) & (ap_enable_reg_pp0_iter0 == 1'b1))) begin + ap_NS_fsm = ap_ST_fsm_state118; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_pp0_stage1 : begin + if ((1'b0 == ap_block_pp0_stage1_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage2; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage1; + end + end + ap_ST_fsm_pp0_stage2 : begin + if ((1'b0 == ap_block_pp0_stage2_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage3; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage2; + end + end + ap_ST_fsm_pp0_stage3 : begin + if ((1'b0 == ap_block_pp0_stage3_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage4; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage3; + end + end + ap_ST_fsm_pp0_stage4 : begin + if ((1'b0 == ap_block_pp0_stage4_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage5; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage4; + end + end + ap_ST_fsm_pp0_stage5 : begin + if ((1'b0 == ap_block_pp0_stage5_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage6; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage5; + end + end + ap_ST_fsm_pp0_stage6 : begin + if ((1'b0 == ap_block_pp0_stage6_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage7; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage6; + end + end + ap_ST_fsm_pp0_stage7 : begin + if ((1'b0 == ap_block_pp0_stage7_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage8; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage7; + end + end + ap_ST_fsm_pp0_stage8 : begin + if ((1'b0 == ap_block_pp0_stage8_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage9; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage8; + end + end + ap_ST_fsm_pp0_stage9 : begin + if ((~((1'b0 == ap_block_pp0_stage9_subdone) & (ap_enable_reg_pp0_iter6 == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage9) & (ap_enable_reg_pp0_iter7 == 1'b1)) & (1'b0 == ap_block_pp0_stage9_subdone))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage10; + end else if (((1'b0 == ap_block_pp0_stage9_subdone) & (ap_enable_reg_pp0_iter6 == 1'b0) & (1'b1 == ap_CS_fsm_pp0_stage9) & (ap_enable_reg_pp0_iter7 == 1'b1))) begin + ap_NS_fsm = ap_ST_fsm_state118; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage9; + end + end + ap_ST_fsm_pp0_stage10 : begin + if ((1'b0 == ap_block_pp0_stage10_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage11; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage10; + end + end + ap_ST_fsm_pp0_stage11 : begin + if ((1'b0 == ap_block_pp0_stage11_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage11; + end + end + ap_ST_fsm_pp0_stage12 : begin + if ((1'b0 == ap_block_pp0_stage12_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage13; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage12; + end + end + ap_ST_fsm_pp0_stage13 : begin + if ((1'b0 == ap_block_pp0_stage13_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage14; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage13; + end + end + ap_ST_fsm_pp0_stage14 : begin + if ((1'b0 == ap_block_pp0_stage14_subdone)) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage14; + end + end + ap_ST_fsm_state118 : begin + ap_NS_fsm = ap_ST_fsm_state1; + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln19_1_fu_328_p2 = (i_0_reg_183 + 31'd1); + +assign add_ln19_fu_317_p2 = (ap_phi_mux_indvar_flatten18_phi_fu_175_p4 + 96'd1); + +assign add_ln21_1_fu_462_p2 = (ap_phi_mux_indvar_flatten_phi_fu_199_p4 + 64'd1); + +assign add_ln26_1_fu_406_p2 = ($signed(j_fu_386_p2) + $signed(select_ln19_1_fu_356_p3)); + +assign add_ln26_2_fu_472_p2 = (mul_ln26_1_fu_468_p2 + select_ln21_reg_626); + +assign add_ln26_3_fu_523_p2 = (out_mem_addr_read_reg_685 + mul_ln26_2_fu_519_p2); + +assign add_ln26_4_fu_432_p2 = ($signed(sext_ln19_fu_363_p1) + $signed(p_cast_reg_570)); + +assign add_ln26_5_fu_481_p2 = ($signed(sext_ln26_2_fu_477_p1) + $signed(p_cast19_reg_565)); + +assign add_ln26_6_fu_447_p2 = ($signed(sext_ln26_fu_420_p1) + $signed(p_cast20_reg_560)); + +assign add_ln26_fu_306_p2 = (mul_ln26_fu_301_p2 + ap_phi_mux_j_0_phi_fu_211_p4); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd2]; + +assign ap_CS_fsm_pp0_stage1 = ap_CS_fsm[32'd3]; + +assign ap_CS_fsm_pp0_stage10 = ap_CS_fsm[32'd12]; + +assign ap_CS_fsm_pp0_stage11 = ap_CS_fsm[32'd13]; + +assign ap_CS_fsm_pp0_stage12 = ap_CS_fsm[32'd14]; + +assign ap_CS_fsm_pp0_stage13 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_pp0_stage14 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp0_stage2 = ap_CS_fsm[32'd4]; + +assign ap_CS_fsm_pp0_stage3 = ap_CS_fsm[32'd5]; + +assign ap_CS_fsm_pp0_stage4 = ap_CS_fsm[32'd6]; + +assign ap_CS_fsm_pp0_stage5 = ap_CS_fsm[32'd7]; + +assign ap_CS_fsm_pp0_stage6 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp0_stage7 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_pp0_stage8 = ap_CS_fsm[32'd10]; + +assign ap_CS_fsm_pp0_stage9 = ap_CS_fsm[32'd11]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state118 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +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_pp0_stage1 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage10 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage10_11001 = (((in2_mem_RVALID == 1'b0) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1)) | ((1'b1 == ap_block_state103_io) & (ap_enable_reg_pp0_iter6 == 1'b1))); +end + +always @ (*) begin + ap_block_pp0_stage10_subdone = (((in2_mem_RVALID == 1'b0) & (icmp_ln19_reg_600 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1)) | ((1'b1 == ap_block_state103_io) & (ap_enable_reg_pp0_iter6 == 1'b1))); +end + +assign ap_block_pp0_stage11_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage11_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage12_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage12_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage13_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage13_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage14 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage14_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage14_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage1_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage1_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage2 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage2_11001 = ((ap_enable_reg_pp0_iter7 == 1'b1) & (((out_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)) | ((in1_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)))); +end + +always @ (*) begin + ap_block_pp0_stage2_subdone = ((ap_enable_reg_pp0_iter7 == 1'b1) & (((out_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)) | ((in1_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)))); +end + +assign ap_block_pp0_stage3 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage3_11001 = (((1'b1 == ap_block_state6_io) & (ap_enable_reg_pp0_iter0 == 1'b1)) | ((1'b1 == ap_block_state111_io) & (ap_enable_reg_pp0_iter7 == 1'b1))); +end + +always @ (*) begin + ap_block_pp0_stage3_subdone = (((1'b1 == ap_block_state6_io) & (ap_enable_reg_pp0_iter0 == 1'b1)) | ((1'b1 == ap_block_state111_io) & (ap_enable_reg_pp0_iter7 == 1'b1))); +end + +assign ap_block_pp0_stage4 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage4_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage4_11001 = ((1'b1 == ap_block_state112_io) & (ap_enable_reg_pp0_iter7 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage4_subdone = ((1'b1 == ap_block_state112_io) & (ap_enable_reg_pp0_iter7 == 1'b1)); +end + +assign ap_block_pp0_stage5_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage5_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage6_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage6_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage7_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage7_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage8_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage8_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp0_stage9 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage9_11001 = ((out_mem_BVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (ap_enable_reg_pp0_iter7 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage9_subdone = ((out_mem_BVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0) & (ap_enable_reg_pp0_iter7 == 1'b1)); +end + +assign ap_block_state100_pp0_stage7_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state101_pp0_stage8_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state102_pp0_stage9_iter6 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state103_io = (((out_mem_ARREADY == 1'b0) & (icmp_ln19_reg_600_pp0_iter6_reg == 1'd0)) | ((in1_mem_ARREADY == 1'b0) & (icmp_ln8_reg_676 == 1'd1))); +end + +assign ap_block_state103_pp0_stage10_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state104_pp0_stage11_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state105_pp0_stage12_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state106_pp0_stage13_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state107_pp0_stage14_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state108_pp0_stage0_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state109_pp0_stage1_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state10_pp0_stage7_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state110_pp0_stage2_iter7 = (((out_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)) | ((in1_mem_RVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0))); +end + +always @ (*) begin + ap_block_state111_io = ((out_mem_AWREADY == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)); +end + +assign ap_block_state111_pp0_stage3_iter7 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state112_io = ((out_mem_WREADY == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)); +end + +assign ap_block_state112_pp0_stage4_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state113_pp0_stage5_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state114_pp0_stage6_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state115_pp0_stage7_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state116_pp0_stage8_iter7 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state117_pp0_stage9_iter7 = ((out_mem_BVALID == 1'b0) & (icmp_ln19_reg_600_pp0_iter7_reg == 1'd0)); +end + +assign ap_block_state11_pp0_stage8_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state12_pp0_stage9_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state13_pp0_stage10_iter0 = ((in2_mem_RVALID == 1'b0) & (icmp_ln19_reg_600 == 1'd0)); +end + +assign ap_block_state14_pp0_stage11_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state15_pp0_stage12_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state16_pp0_stage13_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state17_pp0_stage14_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state18_pp0_stage0_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp0_stage1_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state20_pp0_stage2_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state21_pp0_stage3_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state22_pp0_stage4_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state23_pp0_stage5_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state24_pp0_stage6_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state25_pp0_stage7_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state26_pp0_stage8_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state27_pp0_stage9_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state28_pp0_stage10_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state29_pp0_stage11_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state30_pp0_stage12_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state31_pp0_stage13_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state32_pp0_stage14_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state33_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state34_pp0_stage1_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state35_pp0_stage2_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state36_pp0_stage3_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state37_pp0_stage4_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state38_pp0_stage5_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state39_pp0_stage6_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state3_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state40_pp0_stage7_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state41_pp0_stage8_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state42_pp0_stage9_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state43_pp0_stage10_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state44_pp0_stage11_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state45_pp0_stage12_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state46_pp0_stage13_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state47_pp0_stage14_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state48_pp0_stage0_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state49_pp0_stage1_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state4_pp0_stage1_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state50_pp0_stage2_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state51_pp0_stage3_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state52_pp0_stage4_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state53_pp0_stage5_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state54_pp0_stage6_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state55_pp0_stage7_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state56_pp0_stage8_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state57_pp0_stage9_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state58_pp0_stage10_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state59_pp0_stage11_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state5_pp0_stage2_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state60_pp0_stage12_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state61_pp0_stage13_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state62_pp0_stage14_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state63_pp0_stage0_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state64_pp0_stage1_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state65_pp0_stage2_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state66_pp0_stage3_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state67_pp0_stage4_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state68_pp0_stage5_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state69_pp0_stage6_iter4 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state6_io = ((in2_mem_ARREADY == 1'b0) & (icmp_ln19_reg_600 == 1'd0)); +end + +assign ap_block_state6_pp0_stage3_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state70_pp0_stage7_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state71_pp0_stage8_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state72_pp0_stage9_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state73_pp0_stage10_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state74_pp0_stage11_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state75_pp0_stage12_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state76_pp0_stage13_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state77_pp0_stage14_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state78_pp0_stage0_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state79_pp0_stage1_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state7_pp0_stage4_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state80_pp0_stage2_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state81_pp0_stage3_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state82_pp0_stage4_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state83_pp0_stage5_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state84_pp0_stage6_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state85_pp0_stage7_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state86_pp0_stage8_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state87_pp0_stage9_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state88_pp0_stage10_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state89_pp0_stage11_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state8_pp0_stage5_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state90_pp0_stage12_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state91_pp0_stage13_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state92_pp0_stage14_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state93_pp0_stage0_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state94_pp0_stage1_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state95_pp0_stage2_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state96_pp0_stage3_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state97_pp0_stage4_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state98_pp0_stage5_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state99_pp0_stage6_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage6_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign bound7_fu_286_p0 = bound7_fu_286_p00; + +assign bound7_fu_286_p00 = bound_reg_554; + +assign bound7_fu_286_p1 = bound7_fu_286_p10; + +assign bound7_fu_286_p10 = dim_read_reg_528; + +assign bound7_fu_286_p2 = (bound7_fu_286_p0 * bound7_fu_286_p1); + +assign bound_fu_265_p0 = cast_fu_261_p1; + +assign bound_fu_265_p1 = cast_fu_261_p1; + +assign bound_fu_265_p2 = (bound_fu_265_p0 * bound_fu_265_p1); + +assign cast5_fu_280_p1 = dim_read_reg_528; + +assign cast_fu_261_p0 = dim; + +assign cast_fu_261_p1 = $unsigned(cast_fu_261_p0); + +assign grp_fu_323_p1 = cast5_reg_575; + +assign icmp_ln19_fu_312_p2 = ((ap_phi_mux_indvar_flatten18_phi_fu_175_p4 == bound7_reg_580) ? 1'b1 : 1'b0); + +assign icmp_ln21_1_fu_338_p2 = ((ap_phi_mux_indvar_flatten_phi_fu_199_p4 == bound_reg_554) ? 1'b1 : 1'b0); + +assign icmp_ln21_fu_292_p2 = ((dim_read_reg_528 == 32'd0) ? 1'b1 : 1'b0); + +assign icmp_ln23_fu_374_p2 = ((ap_phi_mux_k_0_phi_fu_223_p4 == dim_read_reg_528) ? 1'b1 : 1'b0); + +assign icmp_ln8_fu_513_p2 = ((grp_fu_323_p2 == 96'd0) ? 1'b1 : 1'b0); + +assign j_fu_386_p2 = (select_ln19_fu_343_p3 + 32'd1); + +assign k_fu_502_p2 = ($signed(select_ln26_reg_620) + $signed(32'd1)); + +assign mul_ln26_1_fu_468_p2 = ($signed({{1'b0}, {dim_read_reg_528}}) * $signed(select_ln26_reg_620)); + +assign mul_ln26_2_fu_519_p2 = ($signed(in2_mem_addr_read_reg_656_pp0_iter6_reg) * $signed(in1_mem_addr_read_reg_680)); + +assign mul_ln26_3_fu_351_p1 = mul_ln26_3_fu_351_p10; + +assign mul_ln26_3_fu_351_p10 = add_ln19_1_fu_328_p2; + +assign mul_ln26_3_fu_351_p2 = (dim_read_reg_528 * mul_ln26_3_fu_351_p1); + +assign mul_ln26_fu_301_p1 = mul_ln26_fu_301_p10; + +assign mul_ln26_fu_301_p10 = ap_phi_mux_i_0_phi_fu_187_p4; + +assign mul_ln26_fu_301_p2 = (dim_read_reg_528 * mul_ln26_fu_301_p1); + +assign or_ln26_fu_392_p2 = (select_ln19_3_fu_379_p3 | icmp_ln21_1_fu_338_p2); + +assign p_cast19_fu_274_p1 = tmp_1_reg_544; + +assign p_cast20_fu_271_p1 = tmp_reg_539; + +assign p_cast_fu_277_p1 = tmp_3_reg_549; + +assign select_ln19_1_fu_356_p3 = ((icmp_ln21_1_fu_338_p2[0:0] === 1'b1) ? mul_ln26_3_fu_351_p2 : mul_ln26_reg_590); + +assign select_ln19_2_fu_367_p3 = ((icmp_ln21_1_fu_338_p2[0:0] === 1'b1) ? mul_ln26_3_fu_351_p2 : add_ln26_reg_595); + +assign select_ln19_3_fu_379_p3 = ((icmp_ln21_1_fu_338_p2[0:0] === 1'b1) ? icmp_ln21_reg_585 : icmp_ln23_fu_374_p2); + +assign select_ln19_4_fu_496_p3 = ((icmp_ln21_1_reg_614[0:0] === 1'b1) ? add_ln19_1_reg_609 : i_0_reg_183); + +assign select_ln19_fu_343_p3 = ((icmp_ln21_1_fu_338_p2[0:0] === 1'b1) ? 32'd0 : j_0_reg_207); + +assign select_ln21_1_fu_507_p3 = ((icmp_ln21_1_reg_614[0:0] === 1'b1) ? 64'd1 : add_ln21_1_reg_645); + +assign select_ln21_fu_424_p3 = ((select_ln19_3_fu_379_p3[0:0] === 1'b1) ? j_fu_386_p2 : select_ln19_fu_343_p3); + +assign select_ln26_1_fu_412_p3 = ((select_ln19_3_fu_379_p3[0:0] === 1'b1) ? add_ln26_1_fu_406_p2 : select_ln19_2_fu_367_p3); + +assign select_ln26_fu_398_p3 = ((or_ln26_fu_392_p2[0:0] === 1'b1) ? 32'd0 : ap_phi_mux_k_0_phi_fu_223_p4); + +assign sext_ln19_fu_363_p1 = select_ln19_1_fu_356_p3; + +assign sext_ln26_1_fu_437_p1 = $signed(add_ln26_4_fu_432_p2); + +assign sext_ln26_2_fu_477_p1 = $signed(add_ln26_2_fu_472_p2); + +assign sext_ln26_3_fu_486_p1 = $signed(add_ln26_5_fu_481_p2); + +assign sext_ln26_4_fu_452_p1 = $signed(add_ln26_6_fu_447_p2); + +assign sext_ln26_fu_420_p1 = $signed(select_ln26_1_fu_412_p3); + +always @ (posedge ap_clk) begin + p_cast20_reg_560[32:30] <= 3'b000; + p_cast19_reg_565[32:30] <= 3'b000; + p_cast_reg_570[32:30] <= 3'b000; + cast5_reg_575[95:32] <= 64'b0000000000000000000000000000000000000000000000000000000000000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_urem_96ns_3bkb.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_urem_96ns_3bkb.v new file mode 100755 index 0000000..3991faf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/verilog/mmult_urem_96ns_3bkb.v @@ -0,0 +1,164 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps + +module mmult_urem_96ns_3bkb_div_u +#(parameter + in0_WIDTH = 32, + in1_WIDTH = 32, + out_WIDTH = 32 +) +( + input clk, + input reset, + input ce, + input [in0_WIDTH-1:0] dividend, + input [in1_WIDTH-1:0] divisor, + output wire [out_WIDTH-1:0] quot, + output wire [out_WIDTH-1:0] remd +); + +localparam cal_WIDTH = (in0_WIDTH > in1_WIDTH)? in0_WIDTH : in1_WIDTH; + +//------------------------Local signal------------------- +reg [in0_WIDTH-1:0] dividend_tmp[0:in0_WIDTH]; +reg [in1_WIDTH-1:0] divisor_tmp[0:in0_WIDTH]; +reg [in0_WIDTH-1:0] remd_tmp[0:in0_WIDTH]; +wire [in0_WIDTH-1:0] comb_tmp[0:in0_WIDTH-1]; +wire [cal_WIDTH:0] cal_tmp[0:in0_WIDTH-1]; +//------------------------Body--------------------------- +assign quot = dividend_tmp[in0_WIDTH]; +assign remd = remd_tmp[in0_WIDTH]; + +// dividend_tmp[0], divisor_tmp[0], remd_tmp[0] +always @(posedge clk) +begin + if (ce) begin + dividend_tmp[0] <= dividend; + divisor_tmp[0] <= divisor; + remd_tmp[0] <= 1'b0; + end +end + +genvar i; +generate + for (i = 0; i < in0_WIDTH; i = i + 1) + begin : loop + if (in0_WIDTH == 1) assign comb_tmp[i] = dividend_tmp[i][0]; + else assign comb_tmp[i] = {remd_tmp[i][in0_WIDTH-2:0], dividend_tmp[i][in0_WIDTH-1]}; + assign cal_tmp[i] = {1'b0, comb_tmp[i]} - {1'b0, divisor_tmp[i]}; + + always @(posedge clk) + begin + if (ce) begin + if (in0_WIDTH == 1) dividend_tmp[i+1] <= ~cal_tmp[i][cal_WIDTH]; + else dividend_tmp[i+1] <= {dividend_tmp[i][in0_WIDTH-2:0], ~cal_tmp[i][cal_WIDTH]}; + divisor_tmp[i+1] <= divisor_tmp[i]; + remd_tmp[i+1] <= cal_tmp[i][cal_WIDTH]? comb_tmp[i] : cal_tmp[i][in0_WIDTH-1:0]; + end + end + end +endgenerate + +endmodule + +module mmult_urem_96ns_3bkb_div +#(parameter + in0_WIDTH = 32, + in1_WIDTH = 32, + out_WIDTH = 32 +) +( + input clk, + input reset, + input ce, + input [in0_WIDTH-1:0] dividend, + input [in1_WIDTH-1:0] divisor, + output reg [out_WIDTH-1:0] quot, + output reg [out_WIDTH-1:0] remd +); +//------------------------Local signal------------------- +reg [in0_WIDTH-1:0] dividend0; +reg [in1_WIDTH-1:0] divisor0; +wire [in0_WIDTH-1:0] dividend_u; +wire [in1_WIDTH-1:0] divisor_u; +wire [out_WIDTH-1:0] quot_u; +wire [out_WIDTH-1:0] remd_u; +//------------------------Instantiation------------------ +mmult_urem_96ns_3bkb_div_u #( + .in0_WIDTH ( in0_WIDTH ), + .in1_WIDTH ( in1_WIDTH ), + .out_WIDTH ( out_WIDTH ) +) mmult_urem_96ns_3bkb_div_u_0 ( + .clk ( clk ), + .reset ( reset ), + .ce ( ce ), + .dividend ( dividend_u ), + .divisor ( divisor_u ), + .quot ( quot_u ), + .remd ( remd_u ) +); +//------------------------Body--------------------------- +assign dividend_u = dividend0; +assign divisor_u = divisor0; + +always @(posedge clk) +begin + if (ce) begin + dividend0 <= dividend; + divisor0 <= divisor; + end +end + +always @(posedge clk) +begin + if (ce) begin + quot <= quot_u; + remd <= remd_u; + end +end + +endmodule + + +`timescale 1 ns / 1 ps +module mmult_urem_96ns_3bkb( + 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; + +wire[dout_WIDTH - 1:0] sig_quot; + + +mmult_urem_96ns_3bkb_div #( +.in0_WIDTH( din0_WIDTH ), +.in1_WIDTH( din1_WIDTH ), +.out_WIDTH( dout_WIDTH )) +mmult_urem_96ns_3bkb_div_U( + .dividend( din0 ), + .divisor( din1 ), + .remd( dout ), + .quot( sig_quot ), + .clk( clk ), + .ce( ce ), + .reset( reset )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..81676f0 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult.vhd @@ -0,0 +1,2579 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=3932262,HLS_SYN_TPT=none,HLS_SYN_MEM=6,HLS_SYN_DSP=28,HLS_SYN_FF=11990,HLS_SYN_LUT=10233,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000000010"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000000100"; + constant ap_ST_fsm_pp0_stage1 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000001000"; + constant ap_ST_fsm_pp0_stage2 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000010000"; + constant ap_ST_fsm_pp0_stage3 : STD_LOGIC_VECTOR (17 downto 0) := "000000000000100000"; + constant ap_ST_fsm_pp0_stage4 : STD_LOGIC_VECTOR (17 downto 0) := "000000000001000000"; + constant ap_ST_fsm_pp0_stage5 : STD_LOGIC_VECTOR (17 downto 0) := "000000000010000000"; + constant ap_ST_fsm_pp0_stage6 : STD_LOGIC_VECTOR (17 downto 0) := "000000000100000000"; + constant ap_ST_fsm_pp0_stage7 : STD_LOGIC_VECTOR (17 downto 0) := "000000001000000000"; + constant ap_ST_fsm_pp0_stage8 : STD_LOGIC_VECTOR (17 downto 0) := "000000010000000000"; + constant ap_ST_fsm_pp0_stage9 : STD_LOGIC_VECTOR (17 downto 0) := "000000100000000000"; + constant ap_ST_fsm_pp0_stage10 : STD_LOGIC_VECTOR (17 downto 0) := "000001000000000000"; + constant ap_ST_fsm_pp0_stage11 : STD_LOGIC_VECTOR (17 downto 0) := "000010000000000000"; + constant ap_ST_fsm_pp0_stage12 : STD_LOGIC_VECTOR (17 downto 0) := "000100000000000000"; + constant ap_ST_fsm_pp0_stage13 : STD_LOGIC_VECTOR (17 downto 0) := "001000000000000000"; + constant ap_ST_fsm_pp0_stage14 : STD_LOGIC_VECTOR (17 downto 0) := "010000000000000000"; + constant ap_ST_fsm_state118 : STD_LOGIC_VECTOR (17 downto 0) := "100000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001100"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_4 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000100"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_5 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000101"; + constant ap_const_lv32_6 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000110"; + constant ap_const_lv32_B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001011"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_3 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000011"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv96_0 : STD_LOGIC_VECTOR (95 downto 0) := "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv64_0 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv96_1 : STD_LOGIC_VECTOR (95 downto 0) := "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + constant ap_const_lv64_1 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001010"; + constant ap_const_lv32_D : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001101"; + constant ap_const_lv32_E : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001110"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (17 downto 0) := "000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_pp0_stage10 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage10 : signal is "none"; + signal ap_enable_reg_pp0_iter6 : STD_LOGIC := '0'; + signal ap_block_pp0_stage10 : BOOLEAN; + signal icmp_ln8_reg_676 : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage2 : signal is "none"; + signal ap_enable_reg_pp0_iter7 : STD_LOGIC := '0'; + signal ap_block_pp0_stage2 : BOOLEAN; + signal icmp_ln19_reg_600 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter7_reg : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_pp0_stage3 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage3 : signal is "none"; + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal ap_block_pp0_stage3 : BOOLEAN; + signal in2_mem_blk_n_R : STD_LOGIC; + signal out_mem_blk_n_AR : STD_LOGIC; + signal icmp_ln19_reg_600_pp0_iter6_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_R : STD_LOGIC; + signal out_mem_blk_n_AW : STD_LOGIC; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_CS_fsm_pp0_stage4 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage4 : signal is "none"; + signal ap_block_pp0_stage4 : BOOLEAN; + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_pp0_stage9 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage9 : signal is "none"; + signal ap_block_pp0_stage9 : BOOLEAN; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARVALID : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RREADY : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal indvar_flatten18_reg_171 : STD_LOGIC_VECTOR (95 downto 0); + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_block_state3_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state18_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state33_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_state48_pp0_stage0_iter3 : BOOLEAN; + signal ap_block_state63_pp0_stage0_iter4 : BOOLEAN; + signal ap_block_state78_pp0_stage0_iter5 : BOOLEAN; + signal ap_block_state93_pp0_stage0_iter6 : BOOLEAN; + signal ap_block_state108_pp0_stage0_iter7 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal i_0_reg_183 : STD_LOGIC_VECTOR (30 downto 0); + signal indvar_flatten_reg_195 : STD_LOGIC_VECTOR (63 downto 0); + signal j_0_reg_207 : STD_LOGIC_VECTOR (31 downto 0); + signal k_0_reg_219 : STD_LOGIC_VECTOR (31 downto 0); + signal dim_read_reg_528 : STD_LOGIC_VECTOR (31 downto 0); + signal tmp_reg_539 : STD_LOGIC_VECTOR (29 downto 0); + signal tmp_1_reg_544 : STD_LOGIC_VECTOR (29 downto 0); + signal tmp_3_reg_549 : STD_LOGIC_VECTOR (29 downto 0); + signal bound_fu_265_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal bound_reg_554 : STD_LOGIC_VECTOR (63 downto 0); + signal p_cast20_fu_271_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast20_reg_560 : STD_LOGIC_VECTOR (32 downto 0); + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal p_cast19_fu_274_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast19_reg_565 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast_fu_277_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal p_cast_reg_570 : STD_LOGIC_VECTOR (32 downto 0); + signal cast5_fu_280_p1 : STD_LOGIC_VECTOR (95 downto 0); + signal cast5_reg_575 : STD_LOGIC_VECTOR (95 downto 0); + signal bound7_fu_286_p2 : STD_LOGIC_VECTOR (95 downto 0); + signal bound7_reg_580 : STD_LOGIC_VECTOR (95 downto 0); + signal icmp_ln21_fu_292_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln21_reg_585 : STD_LOGIC_VECTOR (0 downto 0); + signal mul_ln26_fu_301_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln26_reg_590 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_fu_306_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_reg_595 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln19_fu_312_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter2_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter3_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter4_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln19_reg_600_pp0_iter5_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln19_fu_317_p2 : STD_LOGIC_VECTOR (95 downto 0); + signal add_ln19_reg_604 : STD_LOGIC_VECTOR (95 downto 0); + signal add_ln19_1_fu_328_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal add_ln19_1_reg_609 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_CS_fsm_pp0_stage1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage1 : signal is "none"; + signal ap_block_state4_pp0_stage1_iter0 : BOOLEAN; + signal ap_block_state19_pp0_stage1_iter1 : BOOLEAN; + signal ap_block_state34_pp0_stage1_iter2 : BOOLEAN; + signal ap_block_state49_pp0_stage1_iter3 : BOOLEAN; + signal ap_block_state64_pp0_stage1_iter4 : BOOLEAN; + signal ap_block_state79_pp0_stage1_iter5 : BOOLEAN; + signal ap_block_state94_pp0_stage1_iter6 : BOOLEAN; + signal ap_block_state109_pp0_stage1_iter7 : BOOLEAN; + signal ap_block_pp0_stage1_11001 : BOOLEAN; + signal icmp_ln21_1_fu_338_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln21_1_reg_614 : STD_LOGIC_VECTOR (0 downto 0); + signal select_ln26_fu_398_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln26_reg_620 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln21_fu_424_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln21_reg_626 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter1_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter2_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter3_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter4_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter5_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_addr_reg_632_pp0_iter6_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638 : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter1_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter2_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter3_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter4_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter5_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter6_reg : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_reg_638_pp0_iter7_reg : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln21_1_fu_462_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal add_ln21_1_reg_645 : STD_LOGIC_VECTOR (63 downto 0); + signal in2_mem_addr_reg_650 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state5_pp0_stage2_iter0 : BOOLEAN; + signal ap_block_state20_pp0_stage2_iter1 : BOOLEAN; + signal ap_block_state35_pp0_stage2_iter2 : BOOLEAN; + signal ap_block_state50_pp0_stage2_iter3 : BOOLEAN; + signal ap_block_state65_pp0_stage2_iter4 : BOOLEAN; + signal ap_block_state80_pp0_stage2_iter5 : BOOLEAN; + signal ap_block_state95_pp0_stage2_iter6 : BOOLEAN; + signal ap_block_state110_pp0_stage2_iter7 : BOOLEAN; + signal ap_block_pp0_stage2_11001 : BOOLEAN; + signal in2_mem_addr_read_reg_656 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state13_pp0_stage10_iter0 : BOOLEAN; + signal ap_block_state28_pp0_stage10_iter1 : BOOLEAN; + signal ap_block_state43_pp0_stage10_iter2 : BOOLEAN; + signal ap_block_state58_pp0_stage10_iter3 : BOOLEAN; + signal ap_block_state73_pp0_stage10_iter4 : BOOLEAN; + signal ap_block_state88_pp0_stage10_iter5 : BOOLEAN; + signal ap_block_state103_pp0_stage10_iter6 : BOOLEAN; + signal ap_block_state103_io : BOOLEAN; + signal ap_block_pp0_stage10_11001 : BOOLEAN; + signal in2_mem_addr_read_reg_656_pp0_iter1_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_addr_read_reg_656_pp0_iter2_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_addr_read_reg_656_pp0_iter3_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_addr_read_reg_656_pp0_iter4_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_addr_read_reg_656_pp0_iter5_reg : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_addr_read_reg_656_pp0_iter6_reg : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln19_4_fu_496_p3 : STD_LOGIC_VECTOR (30 downto 0); + signal select_ln19_4_reg_661 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_CS_fsm_pp0_stage14 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage14 : signal is "none"; + signal ap_block_state17_pp0_stage14_iter0 : BOOLEAN; + signal ap_block_state32_pp0_stage14_iter1 : BOOLEAN; + signal ap_block_state47_pp0_stage14_iter2 : BOOLEAN; + signal ap_block_state62_pp0_stage14_iter3 : BOOLEAN; + signal ap_block_state77_pp0_stage14_iter4 : BOOLEAN; + signal ap_block_state92_pp0_stage14_iter5 : BOOLEAN; + signal ap_block_state107_pp0_stage14_iter6 : BOOLEAN; + signal ap_block_pp0_stage14_11001 : BOOLEAN; + signal k_fu_502_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal k_reg_666 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal select_ln21_1_fu_507_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal select_ln21_1_reg_671 : STD_LOGIC_VECTOR (63 downto 0); + signal icmp_ln8_fu_513_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state12_pp0_stage9_iter0 : BOOLEAN; + signal ap_block_state27_pp0_stage9_iter1 : BOOLEAN; + signal ap_block_state42_pp0_stage9_iter2 : BOOLEAN; + signal ap_block_state57_pp0_stage9_iter3 : BOOLEAN; + signal ap_block_state72_pp0_stage9_iter4 : BOOLEAN; + signal ap_block_state87_pp0_stage9_iter5 : BOOLEAN; + signal ap_block_state102_pp0_stage9_iter6 : BOOLEAN; + signal ap_block_state117_pp0_stage9_iter7 : BOOLEAN; + signal ap_block_pp0_stage9_11001 : BOOLEAN; + signal in1_mem_addr_read_reg_680 : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_addr_read_reg_685 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_3_fu_523_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_3_reg_690 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state6_pp0_stage3_iter0 : BOOLEAN; + signal ap_block_state6_io : BOOLEAN; + signal ap_block_state21_pp0_stage3_iter1 : BOOLEAN; + signal ap_block_state36_pp0_stage3_iter2 : BOOLEAN; + signal ap_block_state51_pp0_stage3_iter3 : BOOLEAN; + signal ap_block_state66_pp0_stage3_iter4 : BOOLEAN; + signal ap_block_state81_pp0_stage3_iter5 : BOOLEAN; + signal ap_block_state96_pp0_stage3_iter6 : BOOLEAN; + signal ap_block_state111_pp0_stage3_iter7 : BOOLEAN; + signal ap_block_state111_io : BOOLEAN; + signal ap_block_pp0_stage3_11001 : BOOLEAN; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state3 : STD_LOGIC; + signal ap_block_pp0_stage14_subdone : BOOLEAN; + signal ap_block_pp0_stage9_subdone : BOOLEAN; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_enable_reg_pp0_iter3 : STD_LOGIC := '0'; + signal ap_enable_reg_pp0_iter4 : STD_LOGIC := '0'; + signal ap_enable_reg_pp0_iter5 : STD_LOGIC := '0'; + signal ap_phi_mux_indvar_flatten18_phi_fu_175_p4 : STD_LOGIC_VECTOR (95 downto 0); + signal ap_block_pp0_stage0 : BOOLEAN; + signal ap_phi_mux_i_0_phi_fu_187_p4 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_phi_mux_indvar_flatten_phi_fu_199_p4 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp0_stage1 : BOOLEAN; + signal ap_phi_mux_j_0_phi_fu_211_p4 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_k_0_phi_fu_223_p4 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln26_1_fu_437_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln26_4_fu_452_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln26_3_fu_486_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_state7_pp0_stage4_iter0 : BOOLEAN; + signal ap_block_state22_pp0_stage4_iter1 : BOOLEAN; + signal ap_block_state37_pp0_stage4_iter2 : BOOLEAN; + signal ap_block_state52_pp0_stage4_iter3 : BOOLEAN; + signal ap_block_state67_pp0_stage4_iter4 : BOOLEAN; + signal ap_block_state82_pp0_stage4_iter5 : BOOLEAN; + signal ap_block_state97_pp0_stage4_iter6 : BOOLEAN; + signal ap_block_state112_pp0_stage4_iter7 : BOOLEAN; + signal ap_block_state112_io : BOOLEAN; + signal ap_block_pp0_stage4_11001 : BOOLEAN; + signal ap_block_pp0_stage4_01001 : BOOLEAN; + signal cast_fu_261_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal bound_fu_265_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal cast_fu_261_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal bound_fu_265_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal bound7_fu_286_p0 : STD_LOGIC_VECTOR (63 downto 0); + signal bound7_fu_286_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln26_fu_301_p1 : STD_LOGIC_VECTOR (30 downto 0); + signal grp_fu_323_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln26_3_fu_351_p1 : STD_LOGIC_VECTOR (30 downto 0); + signal mul_ln26_3_fu_351_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln19_1_fu_356_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln23_fu_374_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal select_ln19_fu_343_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln19_3_fu_379_p3 : STD_LOGIC_VECTOR (0 downto 0); + signal or_ln26_fu_392_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal j_fu_386_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_1_fu_406_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln19_2_fu_367_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln26_1_fu_412_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln19_fu_363_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln26_4_fu_432_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal sext_ln26_fu_420_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln26_6_fu_447_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal mul_ln26_1_fu_468_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln26_2_fu_472_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal sext_ln26_2_fu_477_p1 : STD_LOGIC_VECTOR (32 downto 0); + signal add_ln26_5_fu_481_p2 : STD_LOGIC_VECTOR (32 downto 0); + signal ap_block_pp0_stage14 : BOOLEAN; + signal grp_fu_323_p2 : STD_LOGIC_VECTOR (95 downto 0); + signal mul_ln26_2_fu_519_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_323_ce : STD_LOGIC; + signal ap_block_state8_pp0_stage5_iter0 : BOOLEAN; + signal ap_block_state23_pp0_stage5_iter1 : BOOLEAN; + signal ap_block_state38_pp0_stage5_iter2 : BOOLEAN; + signal ap_block_state53_pp0_stage5_iter3 : BOOLEAN; + signal ap_block_state68_pp0_stage5_iter4 : BOOLEAN; + signal ap_block_state83_pp0_stage5_iter5 : BOOLEAN; + signal ap_block_state98_pp0_stage5_iter6 : BOOLEAN; + signal ap_block_state113_pp0_stage5_iter7 : BOOLEAN; + signal ap_block_pp0_stage5_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage5 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage5 : signal is "none"; + signal ap_block_state9_pp0_stage6_iter0 : BOOLEAN; + signal ap_block_state24_pp0_stage6_iter1 : BOOLEAN; + signal ap_block_state39_pp0_stage6_iter2 : BOOLEAN; + signal ap_block_state54_pp0_stage6_iter3 : BOOLEAN; + signal ap_block_state69_pp0_stage6_iter4 : BOOLEAN; + signal ap_block_state84_pp0_stage6_iter5 : BOOLEAN; + signal ap_block_state99_pp0_stage6_iter6 : BOOLEAN; + signal ap_block_state114_pp0_stage6_iter7 : BOOLEAN; + signal ap_block_pp0_stage6_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage6 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage6 : signal is "none"; + signal ap_block_state10_pp0_stage7_iter0 : BOOLEAN; + signal ap_block_state25_pp0_stage7_iter1 : BOOLEAN; + signal ap_block_state40_pp0_stage7_iter2 : BOOLEAN; + signal ap_block_state55_pp0_stage7_iter3 : BOOLEAN; + signal ap_block_state70_pp0_stage7_iter4 : BOOLEAN; + signal ap_block_state85_pp0_stage7_iter5 : BOOLEAN; + signal ap_block_state100_pp0_stage7_iter6 : BOOLEAN; + signal ap_block_state115_pp0_stage7_iter7 : BOOLEAN; + signal ap_block_pp0_stage7_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage7 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage7 : signal is "none"; + signal ap_block_state11_pp0_stage8_iter0 : BOOLEAN; + signal ap_block_state26_pp0_stage8_iter1 : BOOLEAN; + signal ap_block_state41_pp0_stage8_iter2 : BOOLEAN; + signal ap_block_state56_pp0_stage8_iter3 : BOOLEAN; + signal ap_block_state71_pp0_stage8_iter4 : BOOLEAN; + signal ap_block_state86_pp0_stage8_iter5 : BOOLEAN; + signal ap_block_state101_pp0_stage8_iter6 : BOOLEAN; + signal ap_block_state116_pp0_stage8_iter7 : BOOLEAN; + signal ap_block_pp0_stage8_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage8 : signal is "none"; + signal ap_block_state14_pp0_stage11_iter0 : BOOLEAN; + signal ap_block_state29_pp0_stage11_iter1 : BOOLEAN; + signal ap_block_state44_pp0_stage11_iter2 : BOOLEAN; + signal ap_block_state59_pp0_stage11_iter3 : BOOLEAN; + signal ap_block_state74_pp0_stage11_iter4 : BOOLEAN; + signal ap_block_state89_pp0_stage11_iter5 : BOOLEAN; + signal ap_block_state104_pp0_stage11_iter6 : BOOLEAN; + signal ap_block_pp0_stage11_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage11 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage11 : signal is "none"; + signal ap_block_state15_pp0_stage12_iter0 : BOOLEAN; + signal ap_block_state30_pp0_stage12_iter1 : BOOLEAN; + signal ap_block_state45_pp0_stage12_iter2 : BOOLEAN; + signal ap_block_state60_pp0_stage12_iter3 : BOOLEAN; + signal ap_block_state75_pp0_stage12_iter4 : BOOLEAN; + signal ap_block_state90_pp0_stage12_iter5 : BOOLEAN; + signal ap_block_state105_pp0_stage12_iter6 : BOOLEAN; + signal ap_block_pp0_stage12_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage12 : signal is "none"; + signal ap_block_state16_pp0_stage13_iter0 : BOOLEAN; + signal ap_block_state31_pp0_stage13_iter1 : BOOLEAN; + signal ap_block_state46_pp0_stage13_iter2 : BOOLEAN; + signal ap_block_state61_pp0_stage13_iter3 : BOOLEAN; + signal ap_block_state76_pp0_stage13_iter4 : BOOLEAN; + signal ap_block_state91_pp0_stage13_iter5 : BOOLEAN; + signal ap_block_state106_pp0_stage13_iter6 : BOOLEAN; + signal ap_block_pp0_stage13_11001 : BOOLEAN; + signal ap_CS_fsm_pp0_stage13 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage13 : signal is "none"; + signal ap_CS_fsm_state118 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state118 : signal is "none"; + signal ap_NS_fsm : STD_LOGIC_VECTOR (17 downto 0); + signal ap_block_pp0_stage1_subdone : BOOLEAN; + signal ap_block_pp0_stage2_subdone : BOOLEAN; + signal ap_block_pp0_stage3_subdone : BOOLEAN; + signal ap_block_pp0_stage4_subdone : BOOLEAN; + signal ap_block_pp0_stage5_subdone : BOOLEAN; + signal ap_block_pp0_stage6_subdone : BOOLEAN; + signal ap_block_pp0_stage7_subdone : BOOLEAN; + signal ap_block_pp0_stage8_subdone : BOOLEAN; + signal ap_block_pp0_stage10_subdone : BOOLEAN; + signal ap_block_pp0_stage11_subdone : BOOLEAN; + signal ap_block_pp0_stage12_subdone : BOOLEAN; + signal ap_block_pp0_stage13_subdone : BOOLEAN; + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal bound7_fu_286_p00 : STD_LOGIC_VECTOR (95 downto 0); + signal bound7_fu_286_p10 : STD_LOGIC_VECTOR (95 downto 0); + signal mul_ln26_3_fu_351_p10 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln26_fu_301_p10 : STD_LOGIC_VECTOR (31 downto 0); + + component mmult_urem_96ns_3bkb IS + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR (95 downto 0); + din1 : IN STD_LOGIC_VECTOR (31 downto 0); + ce : IN STD_LOGIC; + dout : OUT STD_LOGIC_VECTOR (95 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_addr_reg_632_pp0_iter6_reg, + I_ARID => ap_const_lv1_0, + I_ARLEN => dim_read_reg_528, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_650, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => out_mem_ARVALID, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => out_mem_addr_reg_638_pp0_iter6_reg, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => out_mem_RREADY, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_638_pp0_iter7_reg, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => add_ln26_3_reg_690, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + mmult_urem_96ns_3bkb_U1 : component mmult_urem_96ns_3bkb + generic map ( + ID => 1, + NUM_STAGE => 100, + din0_WIDTH => 96, + din1_WIDTH => 32, + dout_WIDTH => 96) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => ap_phi_mux_indvar_flatten18_phi_fu_175_p4, + din1 => grp_fu_323_p1, + ce => grp_fu_323_ce, + dout => grp_fu_323_p2); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state3) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter3_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter3 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter3 <= ap_enable_reg_pp0_iter2; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter4_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter4 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter4 <= ap_enable_reg_pp0_iter3; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter5_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter5 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter5 <= ap_enable_reg_pp0_iter4; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter6_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter6 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14))) then + ap_enable_reg_pp0_iter6 <= ap_enable_reg_pp0_iter5; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter7_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter7 <= ap_const_logic_0; + else + if ((((ap_const_boolean_0 = ap_block_pp0_stage14_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14)) or ((ap_const_boolean_0 = ap_block_pp0_stage9_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9)))) then + ap_enable_reg_pp0_iter7 <= ap_enable_reg_pp0_iter6; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + ap_enable_reg_pp0_iter7 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_183_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + i_0_reg_183 <= select_ln19_4_reg_661; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + i_0_reg_183 <= ap_const_lv31_0; + end if; + end if; + end process; + + indvar_flatten18_reg_171_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + indvar_flatten18_reg_171 <= add_ln19_reg_604; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + indvar_flatten18_reg_171 <= ap_const_lv96_0; + end if; + end if; + end process; + + indvar_flatten_reg_195_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (icmp_ln19_reg_600_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + indvar_flatten_reg_195 <= select_ln21_1_reg_671; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + indvar_flatten_reg_195 <= ap_const_lv64_0; + end if; + end if; + end process; + + j_0_reg_207_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + j_0_reg_207 <= select_ln21_reg_626; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + j_0_reg_207 <= ap_const_lv32_0; + end if; + end if; + end process; + + k_0_reg_219_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (icmp_ln19_reg_600_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + k_0_reg_219 <= k_reg_666; + elsif ((ap_const_logic_1 = ap_CS_fsm_state2)) then + k_0_reg_219 <= ap_const_lv32_0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + add_ln19_1_reg_609 <= add_ln19_1_fu_328_p2; + add_ln21_1_reg_645 <= add_ln21_1_fu_462_p2; + icmp_ln21_1_reg_614 <= icmp_ln21_1_fu_338_p2; + in1_mem_addr_reg_632 <= sext_ln26_1_fu_437_p1(32 - 1 downto 0); + out_mem_addr_reg_638 <= sext_ln26_4_fu_452_p1(32 - 1 downto 0); + select_ln26_reg_620 <= select_ln26_fu_398_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) then + add_ln19_reg_604 <= add_ln19_fu_317_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage3_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3))) then + add_ln26_3_reg_690 <= add_ln26_3_fu_523_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + add_ln26_reg_595 <= add_ln26_fu_306_p2; + icmp_ln19_reg_600 <= icmp_ln19_fu_312_p2; + icmp_ln19_reg_600_pp0_iter1_reg <= icmp_ln19_reg_600; + icmp_ln19_reg_600_pp0_iter2_reg <= icmp_ln19_reg_600_pp0_iter1_reg; + icmp_ln19_reg_600_pp0_iter3_reg <= icmp_ln19_reg_600_pp0_iter2_reg; + icmp_ln19_reg_600_pp0_iter4_reg <= icmp_ln19_reg_600_pp0_iter3_reg; + icmp_ln19_reg_600_pp0_iter5_reg <= icmp_ln19_reg_600_pp0_iter4_reg; + icmp_ln19_reg_600_pp0_iter6_reg <= icmp_ln19_reg_600_pp0_iter5_reg; + icmp_ln19_reg_600_pp0_iter7_reg <= icmp_ln19_reg_600_pp0_iter6_reg; + mul_ln26_reg_590 <= mul_ln26_fu_301_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + bound7_reg_580 <= bound7_fu_286_p2; + cast5_reg_575(31 downto 0) <= cast5_fu_280_p1(31 downto 0); + icmp_ln21_reg_585 <= icmp_ln21_fu_292_p2; + p_cast19_reg_565(29 downto 0) <= p_cast19_fu_274_p1(29 downto 0); + p_cast20_reg_560(29 downto 0) <= p_cast20_fu_271_p1(29 downto 0); + p_cast_reg_570(29 downto 0) <= p_cast_fu_277_p1(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + bound_reg_554 <= bound_fu_265_p2; + dim_read_reg_528 <= dim; + tmp_1_reg_544 <= in2(31 downto 2); + tmp_3_reg_549 <= in1(31 downto 2); + tmp_reg_539 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage9_11001) and (icmp_ln19_reg_600_pp0_iter6_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9))) then + icmp_ln8_reg_676 <= icmp_ln8_fu_513_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage2_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + in1_mem_addr_read_reg_680 <= in1_mem_RDATA; + out_mem_addr_read_reg_685 <= out_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + in1_mem_addr_reg_632_pp0_iter1_reg <= in1_mem_addr_reg_632; + in1_mem_addr_reg_632_pp0_iter2_reg <= in1_mem_addr_reg_632_pp0_iter1_reg; + in1_mem_addr_reg_632_pp0_iter3_reg <= in1_mem_addr_reg_632_pp0_iter2_reg; + in1_mem_addr_reg_632_pp0_iter4_reg <= in1_mem_addr_reg_632_pp0_iter3_reg; + in1_mem_addr_reg_632_pp0_iter5_reg <= in1_mem_addr_reg_632_pp0_iter4_reg; + in1_mem_addr_reg_632_pp0_iter6_reg <= in1_mem_addr_reg_632_pp0_iter5_reg; + out_mem_addr_reg_638_pp0_iter1_reg <= out_mem_addr_reg_638; + out_mem_addr_reg_638_pp0_iter2_reg <= out_mem_addr_reg_638_pp0_iter1_reg; + out_mem_addr_reg_638_pp0_iter3_reg <= out_mem_addr_reg_638_pp0_iter2_reg; + out_mem_addr_reg_638_pp0_iter4_reg <= out_mem_addr_reg_638_pp0_iter3_reg; + out_mem_addr_reg_638_pp0_iter5_reg <= out_mem_addr_reg_638_pp0_iter4_reg; + out_mem_addr_reg_638_pp0_iter6_reg <= out_mem_addr_reg_638_pp0_iter5_reg; + out_mem_addr_reg_638_pp0_iter7_reg <= out_mem_addr_reg_638_pp0_iter6_reg; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in2_mem_addr_read_reg_656 <= in2_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in2_mem_addr_read_reg_656_pp0_iter1_reg <= in2_mem_addr_read_reg_656; + in2_mem_addr_read_reg_656_pp0_iter2_reg <= in2_mem_addr_read_reg_656_pp0_iter1_reg; + in2_mem_addr_read_reg_656_pp0_iter3_reg <= in2_mem_addr_read_reg_656_pp0_iter2_reg; + in2_mem_addr_read_reg_656_pp0_iter4_reg <= in2_mem_addr_read_reg_656_pp0_iter3_reg; + in2_mem_addr_read_reg_656_pp0_iter5_reg <= in2_mem_addr_read_reg_656_pp0_iter4_reg; + in2_mem_addr_read_reg_656_pp0_iter6_reg <= in2_mem_addr_read_reg_656_pp0_iter5_reg; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage2_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + in2_mem_addr_reg_650 <= sext_ln26_3_fu_486_p1(32 - 1 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + k_reg_666 <= k_fu_502_p2; + select_ln21_1_reg_671 <= select_ln21_1_fu_507_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage14_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) then + select_ln19_4_reg_661 <= select_ln19_4_fu_496_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) then + select_ln21_reg_626 <= select_ln21_fu_424_p3; + end if; + end if; + end process; + p_cast20_reg_560(32 downto 30) <= "000"; + p_cast19_reg_565(32 downto 30) <= "000"; + p_cast_reg_570(32 downto 30) <= "000"; + cast5_reg_575(95 downto 32) <= "0000000000000000000000000000000000000000000000000000000000000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_enable_reg_pp0_iter6, ap_enable_reg_pp0_iter7, ap_enable_reg_pp0_iter0, ap_CS_fsm_pp0_stage9, icmp_ln19_fu_312_p2, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0_subdone, ap_block_pp0_stage14_subdone, ap_block_pp0_stage9_subdone, ap_block_pp0_stage1_subdone, ap_block_pp0_stage2_subdone, ap_block_pp0_stage3_subdone, ap_block_pp0_stage4_subdone, ap_block_pp0_stage5_subdone, ap_block_pp0_stage6_subdone, ap_block_pp0_stage7_subdone, ap_block_pp0_stage8_subdone, ap_block_pp0_stage10_subdone, ap_block_pp0_stage11_subdone, ap_block_pp0_stage12_subdone, ap_block_pp0_stage13_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (icmp_ln19_fu_312_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage1; + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (icmp_ln19_fu_312_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) then + ap_NS_fsm <= ap_ST_fsm_state118; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_pp0_stage1 => + if ((ap_const_boolean_0 = ap_block_pp0_stage1_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage2; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage1; + end if; + when ap_ST_fsm_pp0_stage2 => + if ((ap_const_boolean_0 = ap_block_pp0_stage2_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage3; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage2; + end if; + when ap_ST_fsm_pp0_stage3 => + if ((ap_const_boolean_0 = ap_block_pp0_stage3_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage4; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage3; + end if; + when ap_ST_fsm_pp0_stage4 => + if ((ap_const_boolean_0 = ap_block_pp0_stage4_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage5; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage4; + end if; + when ap_ST_fsm_pp0_stage5 => + if ((ap_const_boolean_0 = ap_block_pp0_stage5_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage6; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage5; + end if; + when ap_ST_fsm_pp0_stage6 => + if ((ap_const_boolean_0 = ap_block_pp0_stage6_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage7; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage6; + end if; + when ap_ST_fsm_pp0_stage7 => + if ((ap_const_boolean_0 = ap_block_pp0_stage7_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage8; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage7; + end if; + when ap_ST_fsm_pp0_stage8 => + if ((ap_const_boolean_0 = ap_block_pp0_stage8_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage9; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage8; + end if; + when ap_ST_fsm_pp0_stage9 => + if ((not(((ap_const_boolean_0 = ap_block_pp0_stage9_subdone) and (ap_enable_reg_pp0_iter6 = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) and (ap_const_boolean_0 = ap_block_pp0_stage9_subdone))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage10; + elsif (((ap_const_boolean_0 = ap_block_pp0_stage9_subdone) and (ap_enable_reg_pp0_iter6 = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + ap_NS_fsm <= ap_ST_fsm_state118; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage9; + end if; + when ap_ST_fsm_pp0_stage10 => + if ((ap_const_boolean_0 = ap_block_pp0_stage10_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage11; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage10; + end if; + when ap_ST_fsm_pp0_stage11 => + if ((ap_const_boolean_0 = ap_block_pp0_stage11_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage11; + end if; + when ap_ST_fsm_pp0_stage12 => + if ((ap_const_boolean_0 = ap_block_pp0_stage12_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage13; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage12; + end if; + when ap_ST_fsm_pp0_stage13 => + if ((ap_const_boolean_0 = ap_block_pp0_stage13_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage14; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage13; + end if; + when ap_ST_fsm_pp0_stage14 => + if ((ap_const_boolean_0 = ap_block_pp0_stage14_subdone)) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage14; + end if; + when ap_ST_fsm_state118 => + ap_NS_fsm <= ap_ST_fsm_state1; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln19_1_fu_328_p2 <= std_logic_vector(unsigned(i_0_reg_183) + unsigned(ap_const_lv31_1)); + add_ln19_fu_317_p2 <= std_logic_vector(unsigned(ap_phi_mux_indvar_flatten18_phi_fu_175_p4) + unsigned(ap_const_lv96_1)); + add_ln21_1_fu_462_p2 <= std_logic_vector(unsigned(ap_phi_mux_indvar_flatten_phi_fu_199_p4) + unsigned(ap_const_lv64_1)); + add_ln26_1_fu_406_p2 <= std_logic_vector(unsigned(j_fu_386_p2) + unsigned(select_ln19_1_fu_356_p3)); + add_ln26_2_fu_472_p2 <= std_logic_vector(unsigned(mul_ln26_1_fu_468_p2) + unsigned(select_ln21_reg_626)); + add_ln26_3_fu_523_p2 <= std_logic_vector(unsigned(out_mem_addr_read_reg_685) + unsigned(mul_ln26_2_fu_519_p2)); + add_ln26_4_fu_432_p2 <= std_logic_vector(signed(sext_ln19_fu_363_p1) + signed(p_cast_reg_570)); + add_ln26_5_fu_481_p2 <= std_logic_vector(signed(sext_ln26_2_fu_477_p1) + signed(p_cast19_reg_565)); + add_ln26_6_fu_447_p2 <= std_logic_vector(signed(sext_ln26_fu_420_p1) + signed(p_cast20_reg_560)); + add_ln26_fu_306_p2 <= std_logic_vector(unsigned(mul_ln26_fu_301_p2) + unsigned(ap_phi_mux_j_0_phi_fu_211_p4)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(2); + ap_CS_fsm_pp0_stage1 <= ap_CS_fsm(3); + ap_CS_fsm_pp0_stage10 <= ap_CS_fsm(12); + ap_CS_fsm_pp0_stage11 <= ap_CS_fsm(13); + ap_CS_fsm_pp0_stage12 <= ap_CS_fsm(14); + ap_CS_fsm_pp0_stage13 <= ap_CS_fsm(15); + ap_CS_fsm_pp0_stage14 <= ap_CS_fsm(16); + ap_CS_fsm_pp0_stage2 <= ap_CS_fsm(4); + ap_CS_fsm_pp0_stage3 <= ap_CS_fsm(5); + ap_CS_fsm_pp0_stage4 <= ap_CS_fsm(6); + ap_CS_fsm_pp0_stage5 <= ap_CS_fsm(7); + ap_CS_fsm_pp0_stage6 <= ap_CS_fsm(8); + ap_CS_fsm_pp0_stage7 <= ap_CS_fsm(9); + ap_CS_fsm_pp0_stage8 <= ap_CS_fsm(10); + ap_CS_fsm_pp0_stage9 <= ap_CS_fsm(11); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state118 <= ap_CS_fsm(17); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage0_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage0_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage10 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage10_11001_assign_proc : process(ap_enable_reg_pp0_iter6, icmp_ln19_reg_600, ap_enable_reg_pp0_iter0, in2_mem_RVALID, ap_block_state103_io) + begin + ap_block_pp0_stage10_11001 <= (((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)) or ((ap_const_boolean_1 = ap_block_state103_io) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1))); + end process; + + + ap_block_pp0_stage10_subdone_assign_proc : process(ap_enable_reg_pp0_iter6, icmp_ln19_reg_600, ap_enable_reg_pp0_iter0, in2_mem_RVALID, ap_block_state103_io) + begin + ap_block_pp0_stage10_subdone <= (((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)) or ((ap_const_boolean_1 = ap_block_state103_io) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1))); + end process; + + ap_block_pp0_stage11_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage11_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage12_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage12_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage13_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage13_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage14 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage14_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage14_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage1_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage1_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage2_11001_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, in1_mem_RVALID, out_mem_RVALID) + begin + ap_block_pp0_stage2_11001 <= ((ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (((out_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)) or ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)))); + end process; + + + ap_block_pp0_stage2_subdone_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, in1_mem_RVALID, out_mem_RVALID) + begin + ap_block_pp0_stage2_subdone <= ((ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (((out_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)) or ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)))); + end process; + + ap_block_pp0_stage3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage3_11001_assign_proc : process(ap_enable_reg_pp0_iter7, ap_enable_reg_pp0_iter0, ap_block_state6_io, ap_block_state111_io) + begin + ap_block_pp0_stage3_11001 <= (((ap_const_boolean_1 = ap_block_state6_io) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)) or ((ap_const_boolean_1 = ap_block_state111_io) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))); + end process; + + + ap_block_pp0_stage3_subdone_assign_proc : process(ap_enable_reg_pp0_iter7, ap_enable_reg_pp0_iter0, ap_block_state6_io, ap_block_state111_io) + begin + ap_block_pp0_stage3_subdone <= (((ap_const_boolean_1 = ap_block_state6_io) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)) or ((ap_const_boolean_1 = ap_block_state111_io) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))); + end process; + + ap_block_pp0_stage4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage4_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage4_11001_assign_proc : process(ap_enable_reg_pp0_iter7, ap_block_state112_io) + begin + ap_block_pp0_stage4_11001 <= ((ap_const_boolean_1 = ap_block_state112_io) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage4_subdone_assign_proc : process(ap_enable_reg_pp0_iter7, ap_block_state112_io) + begin + ap_block_pp0_stage4_subdone <= ((ap_const_boolean_1 = ap_block_state112_io) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1)); + end process; + + ap_block_pp0_stage5_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage5_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage6_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage6_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage7_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage7_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage8_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage8_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp0_stage9 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage9_11001_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, out_mem_BVALID) + begin + ap_block_pp0_stage9_11001 <= ((out_mem_BVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage9_subdone_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, out_mem_BVALID) + begin + ap_block_pp0_stage9_subdone <= ((out_mem_BVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1)); + end process; + + ap_block_state100_pp0_stage7_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state101_pp0_stage8_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state102_pp0_stage9_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state103_io_assign_proc : process(icmp_ln8_reg_676, icmp_ln19_reg_600_pp0_iter6_reg, in1_mem_ARREADY, out_mem_ARREADY) + begin + ap_block_state103_io <= (((out_mem_ARREADY = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter6_reg = ap_const_lv1_0)) or ((in1_mem_ARREADY = ap_const_logic_0) and (icmp_ln8_reg_676 = ap_const_lv1_1))); + end process; + + ap_block_state103_pp0_stage10_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state104_pp0_stage11_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state105_pp0_stage12_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state106_pp0_stage13_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state107_pp0_stage14_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state108_pp0_stage0_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state109_pp0_stage1_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state10_pp0_stage7_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state110_pp0_stage2_iter7_assign_proc : process(icmp_ln19_reg_600_pp0_iter7_reg, in1_mem_RVALID, out_mem_RVALID) + begin + ap_block_state110_pp0_stage2_iter7 <= (((out_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)) or ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0))); + end process; + + + ap_block_state111_io_assign_proc : process(icmp_ln19_reg_600_pp0_iter7_reg, out_mem_AWREADY) + begin + ap_block_state111_io <= ((out_mem_AWREADY = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)); + end process; + + ap_block_state111_pp0_stage3_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state112_io_assign_proc : process(icmp_ln19_reg_600_pp0_iter7_reg, out_mem_WREADY) + begin + ap_block_state112_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)); + end process; + + ap_block_state112_pp0_stage4_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state113_pp0_stage5_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state114_pp0_stage6_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state115_pp0_stage7_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state116_pp0_stage8_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state117_pp0_stage9_iter7_assign_proc : process(icmp_ln19_reg_600_pp0_iter7_reg, out_mem_BVALID) + begin + ap_block_state117_pp0_stage9_iter7 <= ((out_mem_BVALID = ap_const_logic_0) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0)); + end process; + + ap_block_state11_pp0_stage8_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state12_pp0_stage9_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state13_pp0_stage10_iter0_assign_proc : process(icmp_ln19_reg_600, in2_mem_RVALID) + begin + ap_block_state13_pp0_stage10_iter0 <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln19_reg_600 = ap_const_lv1_0)); + end process; + + ap_block_state14_pp0_stage11_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state15_pp0_stage12_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state16_pp0_stage13_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state17_pp0_stage14_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state18_pp0_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp0_stage1_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state20_pp0_stage2_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state21_pp0_stage3_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state22_pp0_stage4_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state23_pp0_stage5_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state24_pp0_stage6_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state25_pp0_stage7_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state26_pp0_stage8_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state27_pp0_stage9_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state28_pp0_stage10_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state29_pp0_stage11_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state30_pp0_stage12_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state31_pp0_stage13_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state32_pp0_stage14_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state33_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state34_pp0_stage1_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state35_pp0_stage2_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state36_pp0_stage3_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state37_pp0_stage4_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state38_pp0_stage5_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state39_pp0_stage6_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state3_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state40_pp0_stage7_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state41_pp0_stage8_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state42_pp0_stage9_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state43_pp0_stage10_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state44_pp0_stage11_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state45_pp0_stage12_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state46_pp0_stage13_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state47_pp0_stage14_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state48_pp0_stage0_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state49_pp0_stage1_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state4_pp0_stage1_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state50_pp0_stage2_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state51_pp0_stage3_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state52_pp0_stage4_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state53_pp0_stage5_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state54_pp0_stage6_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state55_pp0_stage7_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state56_pp0_stage8_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state57_pp0_stage9_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state58_pp0_stage10_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state59_pp0_stage11_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state5_pp0_stage2_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state60_pp0_stage12_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state61_pp0_stage13_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state62_pp0_stage14_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state63_pp0_stage0_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state64_pp0_stage1_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state65_pp0_stage2_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state66_pp0_stage3_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state67_pp0_stage4_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state68_pp0_stage5_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state69_pp0_stage6_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state6_io_assign_proc : process(icmp_ln19_reg_600, in2_mem_ARREADY) + begin + ap_block_state6_io <= ((in2_mem_ARREADY = ap_const_logic_0) and (icmp_ln19_reg_600 = ap_const_lv1_0)); + end process; + + ap_block_state6_pp0_stage3_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state70_pp0_stage7_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state71_pp0_stage8_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state72_pp0_stage9_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state73_pp0_stage10_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state74_pp0_stage11_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state75_pp0_stage12_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state76_pp0_stage13_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state77_pp0_stage14_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state78_pp0_stage0_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state79_pp0_stage1_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state7_pp0_stage4_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state80_pp0_stage2_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state81_pp0_stage3_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state82_pp0_stage4_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state83_pp0_stage5_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state84_pp0_stage6_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state85_pp0_stage7_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state86_pp0_stage8_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state87_pp0_stage9_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state88_pp0_stage10_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state89_pp0_stage11_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state8_pp0_stage5_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state90_pp0_stage12_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state91_pp0_stage13_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state92_pp0_stage14_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state93_pp0_stage0_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state94_pp0_stage1_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state95_pp0_stage2_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state96_pp0_stage3_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state97_pp0_stage4_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state98_pp0_stage5_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state99_pp0_stage6_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage6_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state3_assign_proc : process(icmp_ln19_fu_312_p2) + begin + if ((icmp_ln19_fu_312_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state3 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state3 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state118) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state118)) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter6, ap_enable_reg_pp0_iter7, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp0_iter3, ap_enable_reg_pp0_iter4, ap_enable_reg_pp0_iter5) + begin + if (((ap_enable_reg_pp0_iter5 = ap_const_logic_0) and (ap_enable_reg_pp0_iter4 = ap_const_logic_0) and (ap_enable_reg_pp0_iter3 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter7 = ap_const_logic_0) and (ap_enable_reg_pp0_iter6 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_i_0_phi_fu_187_p4_assign_proc : process(icmp_ln19_reg_600, ap_CS_fsm_pp0_stage0, i_0_reg_183, select_ln19_4_reg_661, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_phi_mux_i_0_phi_fu_187_p4 <= select_ln19_4_reg_661; + else + ap_phi_mux_i_0_phi_fu_187_p4 <= i_0_reg_183; + end if; + end process; + + + ap_phi_mux_indvar_flatten18_phi_fu_175_p4_assign_proc : process(icmp_ln19_reg_600, indvar_flatten18_reg_171, ap_CS_fsm_pp0_stage0, add_ln19_reg_604, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_phi_mux_indvar_flatten18_phi_fu_175_p4 <= add_ln19_reg_604; + else + ap_phi_mux_indvar_flatten18_phi_fu_175_p4 <= indvar_flatten18_reg_171; + end if; + end process; + + + ap_phi_mux_indvar_flatten_phi_fu_199_p4_assign_proc : process(indvar_flatten_reg_195, icmp_ln19_reg_600_pp0_iter1_reg, ap_CS_fsm_pp0_stage1, ap_enable_reg_pp0_iter1, select_ln21_1_reg_671, ap_block_pp0_stage1) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage1) and (icmp_ln19_reg_600_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + ap_phi_mux_indvar_flatten_phi_fu_199_p4 <= select_ln21_1_reg_671; + else + ap_phi_mux_indvar_flatten_phi_fu_199_p4 <= indvar_flatten_reg_195; + end if; + end process; + + + ap_phi_mux_j_0_phi_fu_211_p4_assign_proc : process(icmp_ln19_reg_600, ap_CS_fsm_pp0_stage0, j_0_reg_207, select_ln21_reg_626, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_phi_mux_j_0_phi_fu_211_p4 <= select_ln21_reg_626; + else + ap_phi_mux_j_0_phi_fu_211_p4 <= j_0_reg_207; + end if; + end process; + + + ap_phi_mux_k_0_phi_fu_223_p4_assign_proc : process(k_0_reg_219, icmp_ln19_reg_600_pp0_iter1_reg, ap_CS_fsm_pp0_stage1, k_reg_666, ap_enable_reg_pp0_iter1, ap_block_pp0_stage1) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage1) and (icmp_ln19_reg_600_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1))) then + ap_phi_mux_k_0_phi_fu_223_p4 <= k_reg_666; + else + ap_phi_mux_k_0_phi_fu_223_p4 <= k_0_reg_219; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state118) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state118)) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + bound7_fu_286_p0 <= bound7_fu_286_p00(64 - 1 downto 0); + bound7_fu_286_p00 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(bound_reg_554),96)); + bound7_fu_286_p1 <= bound7_fu_286_p10(32 - 1 downto 0); + bound7_fu_286_p10 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_528),96)); + bound7_fu_286_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(bound7_fu_286_p0) * unsigned(bound7_fu_286_p1), 96)); + bound_fu_265_p0 <= cast_fu_261_p1(32 - 1 downto 0); + bound_fu_265_p1 <= cast_fu_261_p1(32 - 1 downto 0); + bound_fu_265_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(bound_fu_265_p0) * unsigned(bound_fu_265_p1), 64)); + cast5_fu_280_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_528),96)); + cast_fu_261_p0 <= dim; + cast_fu_261_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(cast_fu_261_p0),64)); + + grp_fu_323_ce_assign_proc : process(ap_CS_fsm_pp0_stage10, ap_CS_fsm_pp0_stage2, ap_CS_fsm_pp0_stage3, ap_CS_fsm_pp0_stage4, ap_CS_fsm_pp0_stage9, ap_CS_fsm_pp0_stage0, ap_block_pp0_stage0_11001, ap_CS_fsm_pp0_stage1, ap_block_pp0_stage1_11001, ap_block_pp0_stage2_11001, ap_block_pp0_stage10_11001, ap_CS_fsm_pp0_stage14, ap_block_pp0_stage14_11001, ap_block_pp0_stage9_11001, ap_block_pp0_stage3_11001, ap_block_pp0_stage4_11001, ap_block_pp0_stage5_11001, ap_CS_fsm_pp0_stage5, ap_block_pp0_stage6_11001, ap_CS_fsm_pp0_stage6, ap_block_pp0_stage7_11001, ap_CS_fsm_pp0_stage7, ap_block_pp0_stage8_11001, ap_CS_fsm_pp0_stage8, ap_block_pp0_stage11_11001, ap_CS_fsm_pp0_stage11, ap_block_pp0_stage12_11001, ap_CS_fsm_pp0_stage12, ap_block_pp0_stage13_11001, ap_CS_fsm_pp0_stage13) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage14_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage14)) or ((ap_const_boolean_0 = ap_block_pp0_stage1_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage1)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage9_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9)) or ((ap_const_boolean_0 = ap_block_pp0_stage4_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage4)) or ((ap_const_boolean_0 = ap_block_pp0_stage3_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3)) or ((ap_const_boolean_0 = ap_block_pp0_stage2_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2)) or ((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage13) and (ap_const_boolean_0 = ap_block_pp0_stage13_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage12) and (ap_const_boolean_0 = ap_block_pp0_stage12_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage11) and (ap_const_boolean_0 = ap_block_pp0_stage11_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage8) and (ap_const_boolean_0 = ap_block_pp0_stage8_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage7) and (ap_const_boolean_0 = ap_block_pp0_stage7_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage6) and (ap_const_boolean_0 = ap_block_pp0_stage6_11001)) or ((ap_const_logic_1 = ap_CS_fsm_pp0_stage5) and (ap_const_boolean_0 = ap_block_pp0_stage5_11001)))) then + grp_fu_323_ce <= ap_const_logic_1; + else + grp_fu_323_ce <= ap_const_logic_0; + end if; + end process; + + grp_fu_323_p1 <= cast5_reg_575(32 - 1 downto 0); + icmp_ln19_fu_312_p2 <= "1" when (ap_phi_mux_indvar_flatten18_phi_fu_175_p4 = bound7_reg_580) else "0"; + icmp_ln21_1_fu_338_p2 <= "1" when (ap_phi_mux_indvar_flatten_phi_fu_199_p4 = bound_reg_554) else "0"; + icmp_ln21_fu_292_p2 <= "1" when (dim_read_reg_528 = ap_const_lv32_0) else "0"; + icmp_ln23_fu_374_p2 <= "1" when (ap_phi_mux_k_0_phi_fu_223_p4 = dim_read_reg_528) else "0"; + icmp_ln8_fu_513_p2 <= "1" when (grp_fu_323_p2 = ap_const_lv96_0) else "0"; + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_pp0_stage10, ap_enable_reg_pp0_iter6, icmp_ln8_reg_676, ap_block_pp0_stage10_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (icmp_ln8_reg_676 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage2, ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_block_pp0_stage2_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage2_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_pp0_stage10, ap_enable_reg_pp0_iter6, ap_block_pp0_stage10, icmp_ln8_reg_676) + begin + if (((icmp_ln8_reg_676 = ap_const_lv1_1) and (ap_const_boolean_0 = ap_block_pp0_stage10) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage2, ap_enable_reg_pp0_iter7, ap_block_pp0_stage2, icmp_ln19_reg_600_pp0_iter7_reg) + begin + if (((icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage2) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(icmp_ln19_reg_600, ap_CS_fsm_pp0_stage3, ap_enable_reg_pp0_iter0, ap_block_pp0_stage3_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage3_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage10, icmp_ln19_reg_600, ap_enable_reg_pp0_iter0, ap_block_pp0_stage10_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, icmp_ln19_reg_600, ap_CS_fsm_pp0_stage3, ap_enable_reg_pp0_iter0, ap_block_pp0_stage3) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage3) and (icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3))) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp0_stage10, ap_block_pp0_stage10, icmp_ln19_reg_600, ap_enable_reg_pp0_iter0) + begin + if (((icmp_ln19_reg_600 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage10) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_386_p2 <= std_logic_vector(unsigned(select_ln19_fu_343_p3) + unsigned(ap_const_lv32_1)); + k_fu_502_p2 <= std_logic_vector(signed(select_ln26_reg_620) + signed(ap_const_lv32_1)); + mul_ln26_1_fu_468_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed('0' &dim_read_reg_528) * signed(select_ln26_reg_620))), 32)); + mul_ln26_2_fu_519_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_mem_addr_read_reg_656_pp0_iter6_reg) * signed(in1_mem_addr_read_reg_680))), 32)); + mul_ln26_3_fu_351_p1 <= mul_ln26_3_fu_351_p10(31 - 1 downto 0); + mul_ln26_3_fu_351_p10 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(add_ln19_1_fu_328_p2),32)); + mul_ln26_3_fu_351_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_528) * unsigned(mul_ln26_3_fu_351_p1), 32)); + mul_ln26_fu_301_p1 <= mul_ln26_fu_301_p10(31 - 1 downto 0); + mul_ln26_fu_301_p10 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(ap_phi_mux_i_0_phi_fu_187_p4),32)); + mul_ln26_fu_301_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_528) * unsigned(mul_ln26_fu_301_p1), 32)); + or_ln26_fu_392_p2 <= (select_ln19_3_fu_379_p3 or icmp_ln21_1_fu_338_p2); + + out_mem_ARVALID_assign_proc : process(ap_CS_fsm_pp0_stage10, ap_enable_reg_pp0_iter6, icmp_ln19_reg_600_pp0_iter6_reg, ap_block_pp0_stage10_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage10_11001) and (icmp_ln19_reg_600_pp0_iter6_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + out_mem_ARVALID <= ap_const_logic_1; + else + out_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage3, ap_block_pp0_stage3_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage3_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage9, ap_block_pp0_stage9_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage9_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage2, ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_block_pp0_stage2_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage2_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + out_mem_RREADY <= ap_const_logic_1; + else + out_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage4, ap_block_pp0_stage4_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage4_11001) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage4) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AR_assign_proc : process(m_axi_out_mem_ARREADY, ap_CS_fsm_pp0_stage10, ap_enable_reg_pp0_iter6, ap_block_pp0_stage10, icmp_ln19_reg_600_pp0_iter6_reg) + begin + if (((icmp_ln19_reg_600_pp0_iter6_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage10) and (ap_enable_reg_pp0_iter6 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage10))) then + out_mem_blk_n_AR <= m_axi_out_mem_ARREADY; + else + out_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage3, ap_block_pp0_stage3) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage3) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage3) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage9, ap_block_pp0_stage9) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage9) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage9) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_R_assign_proc : process(m_axi_out_mem_RVALID, ap_CS_fsm_pp0_stage2, ap_enable_reg_pp0_iter7, ap_block_pp0_stage2, icmp_ln19_reg_600_pp0_iter7_reg) + begin + if (((icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage2) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage2))) then + out_mem_blk_n_R <= m_axi_out_mem_RVALID; + else + out_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp0_iter7, icmp_ln19_reg_600_pp0_iter7_reg, ap_CS_fsm_pp0_stage4, ap_block_pp0_stage4) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage4) and (icmp_ln19_reg_600_pp0_iter7_reg = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage4) and (ap_enable_reg_pp0_iter7 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + p_cast19_fu_274_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_1_reg_544),33)); + p_cast20_fu_271_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_reg_539),33)); + p_cast_fu_277_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_3_reg_549),33)); + select_ln19_1_fu_356_p3 <= + mul_ln26_3_fu_351_p2 when (icmp_ln21_1_fu_338_p2(0) = '1') else + mul_ln26_reg_590; + select_ln19_2_fu_367_p3 <= + mul_ln26_3_fu_351_p2 when (icmp_ln21_1_fu_338_p2(0) = '1') else + add_ln26_reg_595; + select_ln19_3_fu_379_p3 <= + icmp_ln21_reg_585 when (icmp_ln21_1_fu_338_p2(0) = '1') else + icmp_ln23_fu_374_p2; + select_ln19_4_fu_496_p3 <= + add_ln19_1_reg_609 when (icmp_ln21_1_reg_614(0) = '1') else + i_0_reg_183; + select_ln19_fu_343_p3 <= + ap_const_lv32_0 when (icmp_ln21_1_fu_338_p2(0) = '1') else + j_0_reg_207; + select_ln21_1_fu_507_p3 <= + ap_const_lv64_1 when (icmp_ln21_1_reg_614(0) = '1') else + add_ln21_1_reg_645; + select_ln21_fu_424_p3 <= + j_fu_386_p2 when (select_ln19_3_fu_379_p3(0) = '1') else + select_ln19_fu_343_p3; + select_ln26_1_fu_412_p3 <= + add_ln26_1_fu_406_p2 when (select_ln19_3_fu_379_p3(0) = '1') else + select_ln19_2_fu_367_p3; + select_ln26_fu_398_p3 <= + ap_const_lv32_0 when (or_ln26_fu_392_p2(0) = '1') else + ap_phi_mux_k_0_phi_fu_223_p4; + sext_ln19_fu_363_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(select_ln19_1_fu_356_p3),33)); + + sext_ln26_1_fu_437_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln26_4_fu_432_p2),64)); + + sext_ln26_2_fu_477_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln26_2_fu_472_p2),33)); + + sext_ln26_3_fu_486_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln26_5_fu_481_p2),64)); + + sext_ln26_4_fu_452_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln26_6_fu_447_p2),64)); + + sext_ln26_fu_420_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(select_ln26_1_fu_412_p3),33)); + +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_urem_96ns_3bkb.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_urem_96ns_3bkb.vhd new file mode 100755 index 0000000..f0a00fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/hdl/vhdl/mmult_urem_96ns_3bkb.vhd @@ -0,0 +1,219 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity mmult_urem_96ns_3bkb_div_u is + generic ( + in0_WIDTH : INTEGER :=32; + in1_WIDTH : INTEGER :=32; + out_WIDTH : INTEGER :=32); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + dividend : in STD_LOGIC_VECTOR(in0_WIDTH-1 downto 0); + divisor : in STD_LOGIC_VECTOR(in1_WIDTH-1 downto 0); + quot : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0); + remd : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0)); + + function max (left, right : INTEGER) return INTEGER is + begin + if left > right then return left; + else return right; + end if; + end max; + +end entity; + +architecture rtl of mmult_urem_96ns_3bkb_div_u is + constant cal_WIDTH : INTEGER := max(in0_WIDTH, in1_WIDTH); + type in0_vector is array(INTEGER range <>) of UNSIGNED(in0_WIDTH-1 downto 0); + type in1_vector is array(INTEGER range <>) of UNSIGNED(in1_WIDTH-1 downto 0); + type cal_vector is array(INTEGER range <>) of UNSIGNED(cal_WIDTH downto 0); + + signal dividend_tmp : in0_vector(0 to in0_WIDTH); + signal divisor_tmp : in1_vector(0 to in0_WIDTH); + signal remd_tmp : in0_vector(0 to in0_WIDTH); + signal comb_tmp : in0_vector(0 to in0_WIDTH-1); + signal cal_tmp : cal_vector(0 to in0_WIDTH-1); +begin + quot <= STD_LOGIC_VECTOR(RESIZE(dividend_tmp(in0_WIDTH), out_WIDTH)); + remd <= STD_LOGIC_VECTOR(RESIZE(remd_tmp(in0_WIDTH), out_WIDTH)); + + tran_tmp_proc : process (clk) + begin + if (clk'event and clk='1') then + if (ce = '1') then + dividend_tmp(0) <= UNSIGNED(dividend); + divisor_tmp(0) <= UNSIGNED(divisor); + remd_tmp(0) <= (others => '0'); + end if; + end if; + end process tran_tmp_proc; + + run_proc: for i in 0 to in0_WIDTH-1 generate + begin + comb_tmp(i) <= remd_tmp(i)(in0_WIDTH-2 downto 0) & dividend_tmp(i)(in0_WIDTH-1); + cal_tmp(i) <= ('0' & comb_tmp(i)) - ('0' & divisor_tmp(i)); + + process (clk) + begin + if (clk'event and clk='1') then + if (ce = '1') then + dividend_tmp(i+1) <= dividend_tmp(i)(in0_WIDTH-2 downto 0) & (not cal_tmp(i)(cal_WIDTH)); + divisor_tmp(i+1) <= divisor_tmp(i); + if cal_tmp(i)(cal_WIDTH) = '1' then + remd_tmp(i+1) <= comb_tmp(i); + else + remd_tmp(i+1) <= cal_tmp(i)(in0_WIDTH-1 downto 0); + end if; + end if; + end if; + end process; + end generate run_proc; + +end architecture; + +library ieee; +use ieee.std_logic_1164.all; +use ieee.numeric_std.all; + +entity mmult_urem_96ns_3bkb_div is + generic ( + in0_WIDTH : INTEGER :=32; + in1_WIDTH : INTEGER :=32; + out_WIDTH : INTEGER :=32); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + dividend : in STD_LOGIC_VECTOR(in0_WIDTH-1 downto 0); + divisor : in STD_LOGIC_VECTOR(in1_WIDTH-1 downto 0); + quot : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0); + remd : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0)); +end entity; + +architecture rtl of mmult_urem_96ns_3bkb_div is + component mmult_urem_96ns_3bkb_div_u is + generic ( + in0_WIDTH : INTEGER :=32; + in1_WIDTH : INTEGER :=32; + out_WIDTH : INTEGER :=32); + port ( + reset : in STD_LOGIC; + clk : in STD_LOGIC; + ce : in STD_LOGIC; + dividend : in STD_LOGIC_VECTOR(in0_WIDTH-1 downto 0); + divisor : in STD_LOGIC_VECTOR(in1_WIDTH-1 downto 0); + quot : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0); + remd : out STD_LOGIC_VECTOR(out_WIDTH-1 downto 0)); + end component; + + signal dividend0 : STD_LOGIC_VECTOR(in0_WIDTH-1 downto 0); + signal divisor0 : STD_LOGIC_VECTOR(in1_WIDTH-1 downto 0); + signal dividend_u : STD_LOGIC_VECTOR(in0_WIDTH-1 downto 0); + signal divisor_u : STD_LOGIC_VECTOR(in1_WIDTH-1 downto 0); + signal quot_u : STD_LOGIC_VECTOR(out_WIDTH-1 downto 0); + signal remd_u : STD_LOGIC_VECTOR(out_WIDTH-1 downto 0); +begin + mmult_urem_96ns_3bkb_div_u_0 : mmult_urem_96ns_3bkb_div_u + generic map( + in0_WIDTH => in0_WIDTH, + in1_WIDTH => in1_WIDTH, + out_WIDTH => out_WIDTH) + port map( + clk => clk, + reset => reset, + ce => ce, + dividend => dividend_u, + divisor => divisor_u, + quot => quot_u, + remd => remd_u); + + dividend_u <= dividend0; + divisor_u <= divisor0; + +process (clk) +begin + if (clk'event and clk = '1') then + if (ce = '1') then + dividend0 <= dividend; + divisor0 <= divisor; + end if; + end if; +end process; + +process (clk) +begin + if (clk'event and clk = '1') then + if (ce = '1') then + quot <= quot_u; + remd <= remd_u; + end if; + end if; +end process; + +end architecture; + + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_urem_96ns_3bkb is + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + ce : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR(din0_WIDTH - 1 DOWNTO 0); + din1 : IN STD_LOGIC_VECTOR(din1_WIDTH - 1 DOWNTO 0); + dout : OUT STD_LOGIC_VECTOR(dout_WIDTH - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_urem_96ns_3bkb is + component mmult_urem_96ns_3bkb_div is + generic ( + in0_WIDTH : INTEGER; + in1_WIDTH : INTEGER; + out_WIDTH : INTEGER); + port ( + dividend : IN STD_LOGIC_VECTOR; + divisor : IN STD_LOGIC_VECTOR; + remd : OUT STD_LOGIC_VECTOR; + quot : OUT STD_LOGIC_VECTOR; + clk : IN STD_LOGIC; + ce : IN STD_LOGIC; + reset : IN STD_LOGIC); + end component; + + signal sig_quot : STD_LOGIC_VECTOR(dout_WIDTH - 1 DOWNTO 0); + signal sig_remd : STD_LOGIC_VECTOR(dout_WIDTH - 1 DOWNTO 0); + + +begin + mmult_urem_96ns_3bkb_div_U : component mmult_urem_96ns_3bkb_div + generic map ( + in0_WIDTH => din0_WIDTH, + in1_WIDTH => din1_WIDTH, + out_WIDTH => dout_WIDTH) + port map ( + dividend => din0, + divisor => din1, + remd => dout, + quot => sig_quot, + clk => clk, + ce => ce, + reset => reset); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/xgui/mmult_v2_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/xgui/mmult_v2_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_3/xgui/mmult_v2_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/component.xml new file mode 100755 index 0000000..a898174 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/component.xml @@ -0,0 +1,5560 @@ + + + xilinx.com + hls + mmult + 3.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 59dc66a4 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 445218bf + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 06d0fcc4 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 9615eb44 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 4a50fe49 + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_c35dd805 + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v3_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v3_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v3_0/src/Makefile + driver_src + + + drivers/mmult_v3_0/src/xmmult.c + driver_src + + + drivers/mmult_v3_0/src/xmmult.h + driver_src + + + drivers/mmult_v3_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v3_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v3_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v3_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v3_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 536604 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141703 + 2021-05-14T15:03:24Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/doc/ReleaseNotes.txt new file mode 100755 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.mdd new file mode 100755 index 0000000..742dc85 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v3_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 3.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/drivers/mmult_v3_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult.v new file mode 100755 index 0000000..8784b8f --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult.v @@ -0,0 +1,1958 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=536604,HLS_SYN_TPT=none,HLS_SYN_MEM=30,HLS_SYN_DSP=8,HLS_SYN_FF=2601,HLS_SYN_LUT=3166,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 27'd1; +parameter ap_ST_fsm_state2 = 27'd2; +parameter ap_ST_fsm_state3 = 27'd4; +parameter ap_ST_fsm_state4 = 27'd8; +parameter ap_ST_fsm_state5 = 27'd16; +parameter ap_ST_fsm_state6 = 27'd32; +parameter ap_ST_fsm_state7 = 27'd64; +parameter ap_ST_fsm_state8 = 27'd128; +parameter ap_ST_fsm_pp0_stage0 = 27'd256; +parameter ap_ST_fsm_state12 = 27'd512; +parameter ap_ST_fsm_state13 = 27'd1024; +parameter ap_ST_fsm_state14 = 27'd2048; +parameter ap_ST_fsm_state15 = 27'd4096; +parameter ap_ST_fsm_state16 = 27'd8192; +parameter ap_ST_fsm_state17 = 27'd16384; +parameter ap_ST_fsm_state18 = 27'd32768; +parameter ap_ST_fsm_pp1_stage0 = 27'd65536; +parameter ap_ST_fsm_state22 = 27'd131072; +parameter ap_ST_fsm_state23 = 27'd262144; +parameter ap_ST_fsm_state24 = 27'd524288; +parameter ap_ST_fsm_state25 = 27'd1048576; +parameter ap_ST_fsm_pp3_stage0 = 27'd2097152; +parameter ap_ST_fsm_state29 = 27'd4194304; +parameter ap_ST_fsm_state30 = 27'd8388608; +parameter ap_ST_fsm_state31 = 27'd16777216; +parameter ap_ST_fsm_state32 = 27'd33554432; +parameter ap_ST_fsm_state33 = 27'd67108864; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [26:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg [0:0] icmp_ln27_reg_748; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg [0:0] icmp_ln28_reg_762; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state25; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp3_iter2; +wire ap_block_pp3_stage0; +reg [0:0] icmp_ln42_reg_834; +reg [0:0] icmp_ln42_reg_834_pp3_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state33; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_285; +reg [12:0] phi_ln27_reg_285_pp0_iter1_reg; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +reg [12:0] phi_ln28_reg_297; +reg [12:0] phi_ln28_reg_297_pp1_iter1_reg; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +reg [12:0] phi_ln42_reg_364; +reg [31:0] dim_read_reg_709; +reg [29:0] out5_reg_715; +reg [29:0] in_reg_720; +reg [29:0] in3_reg_725; +reg [31:0] out_mem_addr_reg_736; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_742; +wire [0:0] icmp_ln27_fu_433_p2; +reg [0:0] icmp_ln27_reg_748_pp0_iter1_reg; +wire [12:0] add_ln27_fu_439_p2; +reg [12:0] add_ln27_reg_752; +reg ap_enable_reg_pp0_iter0; +reg [31:0] in1_mem_addr_read_reg_757; +wire [0:0] icmp_ln28_fu_450_p2; +reg [0:0] icmp_ln28_reg_762_pp1_iter1_reg; +wire [12:0] add_ln28_fu_456_p2; +reg [12:0] add_ln28_reg_766; +reg ap_enable_reg_pp1_iter0; +reg [31:0] in2_mem_addr_read_reg_771; +wire [38:0] zext_ln31_fu_474_p1; +reg [38:0] zext_ln31_reg_776; +wire ap_CS_fsm_state22; +wire [69:0] mul_ln31_fu_485_p2; +reg [69:0] mul_ln31_reg_781; +wire [69:0] add_ln31_fu_496_p2; +reg [69:0] add_ln31_reg_789; +wire ap_CS_fsm_state23; +wire [30:0] select_ln31_1_fu_521_p3; +reg [30:0] select_ln31_1_reg_794; +wire [0:0] icmp_ln31_fu_491_p2; +wire [6:0] select_ln38_fu_571_p3; +reg [6:0] select_ln38_reg_799; +reg [11:0] out_loc_addr_reg_804; +wire [31:0] select_ln33_fu_614_p3; +reg [31:0] select_ln33_reg_809; +wire [38:0] select_ln33_1_fu_666_p3; +reg [38:0] select_ln33_1_reg_824; +wire [6:0] k_fu_687_p2; +wire ap_CS_fsm_state24; +wire [0:0] icmp_ln42_fu_692_p2; +wire ap_CS_fsm_pp3_stage0; +wire ap_block_state26_pp3_stage0_iter0; +wire ap_block_state27_pp3_stage0_iter1; +wire ap_block_state28_pp3_stage0_iter2; +reg ap_block_state28_io; +reg ap_block_pp3_stage0_11001; +wire [12:0] add_ln42_fu_698_p2; +reg ap_enable_reg_pp3_iter0; +wire [31:0] out_loc_q0; +reg [31:0] out_loc_load_reg_848; +reg ap_enable_reg_pp3_iter1; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +reg ap_block_pp3_stage0_subdone; +reg ap_condition_pp3_exit_iter0_state26; +reg [11:0] in1_loc_address0; +reg in1_loc_ce0; +reg in1_loc_we0; +wire [31:0] in1_loc_q0; +reg [11:0] in2_loc_address0; +reg in2_loc_ce0; +reg in2_loc_we0; +wire [31:0] in2_loc_q0; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_we0; +wire [31:0] out_loc_d0; +reg [12:0] ap_phi_mux_phi_ln27_phi_fu_289_p4; +reg [12:0] ap_phi_mux_phi_ln28_phi_fu_301_p4; +reg [69:0] indvar_flatten15_reg_309; +reg [30:0] i_0_reg_320; +reg [38:0] indvar_flatten_reg_331; +reg [31:0] j_0_reg_342; +reg [6:0] k_0_reg_353; +wire [63:0] zext_ln27_fu_445_p1; +wire [63:0] zext_ln28_fu_462_p1; +wire signed [63:0] sext_ln38_fu_609_p1; +wire [63:0] zext_ln38_1_fu_632_p1; +wire signed [63:0] sext_ln38_1_fu_655_p1; +wire [63:0] zext_ln42_fu_704_p1; +wire [63:0] empty_6_fu_405_p1; +wire [63:0] empty_fu_415_p1; +wire [63:0] empty_5_fu_424_p1; +wire ap_block_pp3_stage0_01001; +wire [37:0] tmp_fu_467_p3; +wire [31:0] mul_ln31_fu_485_p0; +wire [37:0] mul_ln31_fu_485_p1; +wire [0:0] icmp_ln33_fu_508_p2; +wire [30:0] i_fu_502_p2; +wire [7:0] trunc_ln38_fu_529_p1; +wire [0:0] icmp_ln35_fu_547_p2; +wire [0:0] xor_ln31_fu_541_p2; +wire [31:0] select_ln31_fu_513_p3; +wire [0:0] and_ln31_fu_553_p2; +wire [0:0] or_ln38_fu_565_p2; +wire [31:0] j_fu_559_p2; +wire [13:0] trunc_ln38_2_fu_583_p1; +wire [13:0] trunc_ln38_1_fu_579_p1; +wire [13:0] select_ln31_2_fu_587_p3; +wire [13:0] zext_ln38_cast_fu_533_p3; +wire [13:0] select_ln38_1_fu_595_p3; +wire [13:0] add_ln38_1_fu_603_p2; +wire [13:0] zext_ln38_fu_622_p1; +wire [13:0] add_ln38_2_fu_626_p2; +wire [12:0] tmp_3_fu_637_p3; +wire [13:0] zext_ln38_2_fu_645_p1; +wire [13:0] add_ln38_3_fu_649_p2; +wire [38:0] add_ln33_fu_660_p2; +wire signed [31:0] mul_ln38_fu_674_p0; +wire signed [31:0] mul_ln38_fu_674_p1; +wire [31:0] mul_ln38_fu_674_p2; +reg [26:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp3; +wire ap_enable_pp3; +wire [69:0] mul_ln31_fu_485_p00; +wire [69:0] mul_ln31_fu_485_p10; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 27'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp3_iter2 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp3_iter0 = 1'b0; +#0 ap_enable_reg_pp3_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_742), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_736), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(out_loc_load_reg_848), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +in1_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_address0), + .ce0(in1_loc_ce0), + .we0(in1_loc_we0), + .d0(in1_mem_addr_read_reg_757), + .q0(in1_loc_q0) +); + +mmult_in1_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +in2_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_address0), + .ce0(in2_loc_ce0), + .we0(in2_loc_we0), + .d0(in2_mem_addr_read_reg_771), + .q0(in2_loc_q0) +); + +mmult_in1_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .we0(out_loc_we0), + .d0(out_loc_d0), + .q0(out_loc_q0) +); + +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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp1_stage0_subdone) & (1'b1 == ap_condition_pp1_exit_iter0_state19) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp3_stage0_subdone) & (1'b1 == ap_condition_pp3_exit_iter0_state26) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + ap_enable_reg_pp3_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp3_exit_iter0_state26)) begin + ap_enable_reg_pp3_iter1 <= (1'b1 ^ ap_condition_pp3_exit_iter0_state26); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + i_0_reg_320 <= select_ln31_1_reg_794; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + i_0_reg_320 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + indvar_flatten15_reg_309 <= add_ln31_reg_789; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + indvar_flatten15_reg_309 <= 70'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + indvar_flatten_reg_331 <= select_ln33_1_reg_824; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + indvar_flatten_reg_331 <= 39'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + j_0_reg_342 <= select_ln33_reg_809; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + j_0_reg_342 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + k_0_reg_353 <= k_fu_687_p2; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + k_0_reg_353 <= 7'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_748 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_285 <= add_ln27_reg_752; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_285 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_297 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_297 <= add_ln28_reg_766; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + phi_ln42_reg_364 <= 13'd0; + end else if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_fu_692_p2 == 1'd0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + phi_ln42_reg_364 <= add_ln42_fu_698_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + add_ln27_reg_752 <= add_ln27_fu_439_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + add_ln28_reg_766 <= add_ln28_fu_456_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + add_ln31_reg_789 <= add_ln31_fu_496_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_709 <= dim; + in3_reg_725 <= {{in1[31:2]}}; + in_reg_720 <= {{in2[31:2]}}; + out5_reg_715 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + icmp_ln27_reg_748 <= icmp_ln27_fu_433_p2; + icmp_ln27_reg_748_pp0_iter1_reg <= icmp_ln27_reg_748; + phi_ln27_reg_285_pp0_iter1_reg <= phi_ln27_reg_285; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + icmp_ln28_reg_762 <= icmp_ln28_fu_450_p2; + icmp_ln28_reg_762_pp1_iter1_reg <= icmp_ln28_reg_762; + phi_ln28_reg_297_pp1_iter1_reg <= phi_ln28_reg_297; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + icmp_ln42_reg_834 <= icmp_ln42_fu_692_p2; + icmp_ln42_reg_834_pp3_iter1_reg <= icmp_ln42_reg_834; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_748 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_757 <= in1_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_762 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_771 <= in2_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_742[29 : 0] <= empty_5_fu_424_p1[29 : 0]; + out_mem_addr_reg_736[29 : 0] <= empty_fu_415_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state22)) begin + mul_ln31_reg_781[69 : 6] <= mul_ln31_fu_485_p2[69 : 6]; + zext_ln31_reg_776[37 : 6] <= zext_ln31_fu_474_p1[37 : 6]; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln31_fu_491_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + out_loc_addr_reg_804 <= sext_ln38_fu_609_p1; + select_ln31_1_reg_794 <= select_ln31_1_fu_521_p3; + select_ln33_1_reg_824 <= select_ln33_1_fu_666_p3; + select_ln33_reg_809 <= select_ln33_fu_614_p3; + select_ln38_reg_799 <= select_ln38_fu_571_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_834 == 1'd0) & (ap_enable_reg_pp3_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + out_loc_load_reg_848 <= out_loc_q0; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_433_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_450_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_692_p2 == 1'd1)) begin + ap_condition_pp3_exit_iter0_state26 = 1'b1; + end else begin + ap_condition_pp3_exit_iter0_state26 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state33))) 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_iter2 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter2 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b0))) begin + ap_idle_pp3 = 1'b1; + end else begin + ap_idle_pp3 = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln27_reg_748 == 1'd0) & (1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_phi_mux_phi_ln27_phi_fu_289_p4 = add_ln27_reg_752; + end else begin + ap_phi_mux_phi_ln27_phi_fu_289_p4 = phi_ln27_reg_285; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + ap_phi_mux_phi_ln28_phi_fu_301_p4 = add_ln28_reg_766; + end else begin + ap_phi_mux_phi_ln28_phi_fu_301_p4 = phi_ln28_reg_297; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state33))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_address0 = zext_ln38_1_fu_632_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_address0 = zext_ln27_fu_445_p1; + end else begin + in1_loc_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state23) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_ce0 = 1'b1; + end else begin + in1_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_748_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_we0 = 1'b1; + end else begin + in1_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_748 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln27_reg_748 == 1'd0) & (1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in2_loc_address0 = sext_ln38_1_fu_655_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_address0 = zext_ln28_fu_462_p1; + end else begin + in2_loc_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state23) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_ce0 = 1'b1; + end else begin + in2_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_762_pp1_iter1_reg == 1'd0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_we0 = 1'b1; + end else begin + in2_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + out_loc_address0 = zext_ln42_fu_704_p1; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + out_loc_address0 = out_loc_addr_reg_804; + end else if ((1'b1 == ap_CS_fsm_state23)) begin + out_loc_address0 = sext_ln38_fu_609_p1; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state24) | (1'b1 == ap_CS_fsm_state23) | ((1'b0 == ap_block_pp3_stage0_11001) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + out_loc_we0 = 1'b1; + end else begin + out_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state33))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_834_pp3_iter1_reg == 1'd0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state33)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0) & (icmp_ln42_reg_834_pp3_iter1_reg == 1'd0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln27_fu_433_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1)) & ~((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln27_fu_433_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((1'b0 == ap_block_pp1_stage0_subdone) & (icmp_ln28_fu_450_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1)) & ~((1'b0 == ap_block_pp1_stage0_subdone) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((1'b0 == ap_block_pp1_stage0_subdone) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp1_stage0_subdone) & (icmp_ln28_fu_450_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state23 : begin + if (((icmp_ln31_fu_491_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_NS_fsm = ap_ST_fsm_state24; + end else begin + ap_NS_fsm = ap_ST_fsm_state25; + end + end + ap_ST_fsm_state24 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state25 : begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state25))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else begin + ap_NS_fsm = ap_ST_fsm_state25; + end + end + ap_ST_fsm_pp3_stage0 : begin + if ((~((1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_692_p2 == 1'd1) & (ap_enable_reg_pp3_iter0 == 1'b1)) & ~((1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else if ((((1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_692_p2 == 1'd1) & (ap_enable_reg_pp3_iter0 == 1'b1)) | ((1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_state29; + end else begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end + end + ap_ST_fsm_state29 : begin + ap_NS_fsm = ap_ST_fsm_state30; + end + ap_ST_fsm_state30 : begin + ap_NS_fsm = ap_ST_fsm_state31; + end + ap_ST_fsm_state31 : begin + ap_NS_fsm = ap_ST_fsm_state32; + end + ap_ST_fsm_state32 : begin + ap_NS_fsm = ap_ST_fsm_state33; + end + ap_ST_fsm_state33 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state33))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state33; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_439_p2 = (ap_phi_mux_phi_ln27_phi_fu_289_p4 + 13'd1); + +assign add_ln28_fu_456_p2 = (ap_phi_mux_phi_ln28_phi_fu_301_p4 + 13'd1); + +assign add_ln31_fu_496_p2 = (indvar_flatten15_reg_309 + 70'd1); + +assign add_ln33_fu_660_p2 = (39'd1 + indvar_flatten_reg_331); + +assign add_ln38_1_fu_603_p2 = (zext_ln38_cast_fu_533_p3 + select_ln38_1_fu_595_p3); + +assign add_ln38_2_fu_626_p2 = (zext_ln38_cast_fu_533_p3 + zext_ln38_fu_622_p1); + +assign add_ln38_3_fu_649_p2 = (zext_ln38_2_fu_645_p1 + select_ln38_1_fu_595_p3); + +assign add_ln42_fu_698_p2 = (phi_ln42_reg_364 + 13'd1); + +assign and_ln31_fu_553_p2 = (xor_ln31_fu_541_p2 & icmp_ln35_fu_547_p2); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp3_stage0 = ap_CS_fsm[32'd21]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state23 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_state24 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state25 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_state33 = ap_CS_fsm[32'd26]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_748 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_748 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_762 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp3_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp3_stage0_11001 = ((1'b1 == ap_block_state28_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_pp3_stage0_subdone = ((1'b1 == ap_block_state28_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_748 == 1'd0)); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_762 == 1'd0)); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state26_pp3_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state27_pp3_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state28_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_834_pp3_iter1_reg == 1'd0)); +end + +assign ap_block_state28_pp3_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp3 = (ap_idle_pp3 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_5_fu_424_p1 = in_reg_720; + +assign empty_6_fu_405_p1 = in3_reg_725; + +assign empty_fu_415_p1 = out5_reg_715; + +assign i_fu_502_p2 = (31'd1 + i_0_reg_320); + +assign icmp_ln27_fu_433_p2 = ((ap_phi_mux_phi_ln27_phi_fu_289_p4 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_450_p2 = ((ap_phi_mux_phi_ln28_phi_fu_301_p4 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_491_p2 = ((indvar_flatten15_reg_309 == mul_ln31_reg_781) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_508_p2 = ((indvar_flatten_reg_331 == zext_ln31_reg_776) ? 1'b1 : 1'b0); + +assign icmp_ln35_fu_547_p2 = ((k_0_reg_353 == 7'd64) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_692_p2 = ((phi_ln42_reg_364 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_6_fu_405_p1; + +assign j_fu_559_p2 = (32'd1 + select_ln31_fu_513_p3); + +assign k_fu_687_p2 = (7'd1 + select_ln38_reg_799); + +assign mul_ln31_fu_485_p0 = mul_ln31_fu_485_p00; + +assign mul_ln31_fu_485_p00 = dim_read_reg_709; + +assign mul_ln31_fu_485_p1 = mul_ln31_fu_485_p10; + +assign mul_ln31_fu_485_p10 = tmp_fu_467_p3; + +assign mul_ln31_fu_485_p2 = (mul_ln31_fu_485_p0 * mul_ln31_fu_485_p1); + +assign mul_ln38_fu_674_p0 = in2_loc_q0; + +assign mul_ln38_fu_674_p1 = in1_loc_q0; + +assign mul_ln38_fu_674_p2 = ($signed(mul_ln38_fu_674_p0) * $signed(mul_ln38_fu_674_p1)); + +assign or_ln38_fu_565_p2 = (icmp_ln33_fu_508_p2 | and_ln31_fu_553_p2); + +assign out_loc_d0 = (mul_ln38_fu_674_p2 + out_loc_q0); + +assign select_ln31_1_fu_521_p3 = ((icmp_ln33_fu_508_p2[0:0] === 1'b1) ? i_fu_502_p2 : i_0_reg_320); + +assign select_ln31_2_fu_587_p3 = ((icmp_ln33_fu_508_p2[0:0] === 1'b1) ? 14'd0 : trunc_ln38_2_fu_583_p1); + +assign select_ln31_fu_513_p3 = ((icmp_ln33_fu_508_p2[0:0] === 1'b1) ? 32'd0 : j_0_reg_342); + +assign select_ln33_1_fu_666_p3 = ((icmp_ln33_fu_508_p2[0:0] === 1'b1) ? 39'd1 : add_ln33_fu_660_p2); + +assign select_ln33_fu_614_p3 = ((and_ln31_fu_553_p2[0:0] === 1'b1) ? j_fu_559_p2 : select_ln31_fu_513_p3); + +assign select_ln38_1_fu_595_p3 = ((and_ln31_fu_553_p2[0:0] === 1'b1) ? trunc_ln38_1_fu_579_p1 : select_ln31_2_fu_587_p3); + +assign select_ln38_fu_571_p3 = ((or_ln38_fu_565_p2[0:0] === 1'b1) ? 7'd0 : k_0_reg_353); + +assign sext_ln38_1_fu_655_p1 = $signed(add_ln38_3_fu_649_p2); + +assign sext_ln38_fu_609_p1 = $signed(add_ln38_1_fu_603_p2); + +assign tmp_3_fu_637_p3 = {{select_ln38_fu_571_p3}, {6'd0}}; + +assign tmp_fu_467_p3 = {{dim_read_reg_709}, {6'd0}}; + +assign trunc_ln38_1_fu_579_p1 = j_fu_559_p2[13:0]; + +assign trunc_ln38_2_fu_583_p1 = j_0_reg_342[13:0]; + +assign trunc_ln38_fu_529_p1 = select_ln31_1_fu_521_p3[7:0]; + +assign xor_ln31_fu_541_p2 = (icmp_ln33_fu_508_p2 ^ 1'd1); + +assign zext_ln27_fu_445_p1 = phi_ln27_reg_285_pp0_iter1_reg; + +assign zext_ln28_fu_462_p1 = phi_ln28_reg_297_pp1_iter1_reg; + +assign zext_ln31_fu_474_p1 = tmp_fu_467_p3; + +assign zext_ln38_1_fu_632_p1 = add_ln38_2_fu_626_p2; + +assign zext_ln38_2_fu_645_p1 = tmp_3_fu_637_p3; + +assign zext_ln38_cast_fu_533_p3 = {{trunc_ln38_fu_529_p1}, {6'd0}}; + +assign zext_ln38_fu_622_p1 = select_ln38_fu_571_p3; + +assign zext_ln42_fu_704_p1 = phi_ln42_reg_364; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_736[31:30] <= 2'b00; + in2_mem_addr_reg_742[31:30] <= 2'b00; + zext_ln31_reg_776[5:0] <= 6'b000000; + zext_ln31_reg_776[38] <= 1'b0; + mul_ln31_reg_781[5:0] <= 6'b000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_loc.v new file mode 100755 index 0000000..900452c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_loc.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_in1_loc_ram mmult_in1_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..2d2d93d --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult.vhd @@ -0,0 +1,2337 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=536604,HLS_SYN_TPT=none,HLS_SYN_MEM=30,HLS_SYN_DSP=8,HLS_SYN_FF=2601,HLS_SYN_LUT=3166,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (26 downto 0) := "000000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (26 downto 0) := "000000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (26 downto 0) := "000000000100000000000000000"; + constant ap_ST_fsm_state23 : STD_LOGIC_VECTOR (26 downto 0) := "000000001000000000000000000"; + constant ap_ST_fsm_state24 : STD_LOGIC_VECTOR (26 downto 0) := "000000010000000000000000000"; + constant ap_ST_fsm_state25 : STD_LOGIC_VECTOR (26 downto 0) := "000000100000000000000000000"; + constant ap_ST_fsm_pp3_stage0 : STD_LOGIC_VECTOR (26 downto 0) := "000001000000000000000000000"; + constant ap_ST_fsm_state29 : STD_LOGIC_VECTOR (26 downto 0) := "000010000000000000000000000"; + constant ap_ST_fsm_state30 : STD_LOGIC_VECTOR (26 downto 0) := "000100000000000000000000000"; + constant ap_ST_fsm_state31 : STD_LOGIC_VECTOR (26 downto 0) := "001000000000000000000000000"; + constant ap_ST_fsm_state32 : STD_LOGIC_VECTOR (26 downto 0) := "010000000000000000000000000"; + constant ap_ST_fsm_state33 : STD_LOGIC_VECTOR (26 downto 0) := "100000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv32_1A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011010"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv32_15 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010101"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv70_0 : STD_LOGIC_VECTOR (69 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv39_0 : STD_LOGIC_VECTOR (38 downto 0) := "000000000000000000000000000000000000000"; + constant ap_const_lv7_0 : STD_LOGIC_VECTOR (6 downto 0) := "0000000"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv70_1 : STD_LOGIC_VECTOR (69 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + constant ap_const_lv7_40 : STD_LOGIC_VECTOR (6 downto 0) := "1000000"; + constant ap_const_lv14_0 : STD_LOGIC_VECTOR (13 downto 0) := "00000000000000"; + constant ap_const_lv39_1 : STD_LOGIC_VECTOR (38 downto 0) := "000000000000000000000000000000000000001"; + constant ap_const_lv7_1 : STD_LOGIC_VECTOR (6 downto 0) := "0000001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal icmp_ln27_reg_748 : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal icmp_ln28_reg_762 : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state25 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state25 : signal is "none"; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp3_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0 : BOOLEAN; + signal icmp_ln42_reg_834 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_834_pp3_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state33 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state33 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_285 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln27_reg_285_pp0_iter1_reg : STD_LOGIC_VECTOR (12 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal phi_ln28_reg_297 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_297_pp1_iter1_reg : STD_LOGIC_VECTOR (12 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal phi_ln42_reg_364 : STD_LOGIC_VECTOR (12 downto 0); + signal dim_read_reg_709 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_715 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_720 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_725 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_736 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_742 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_433_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln27_reg_748_pp0_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln27_fu_439_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal add_ln27_reg_752 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal in1_mem_addr_read_reg_757 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_450_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln28_reg_762_pp1_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln28_fu_456_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal add_ln28_reg_766 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal in2_mem_addr_read_reg_771 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln31_fu_474_p1 : STD_LOGIC_VECTOR (38 downto 0); + signal zext_ln31_reg_776 : STD_LOGIC_VECTOR (38 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal mul_ln31_fu_485_p2 : STD_LOGIC_VECTOR (69 downto 0); + signal mul_ln31_reg_781 : STD_LOGIC_VECTOR (69 downto 0); + signal add_ln31_fu_496_p2 : STD_LOGIC_VECTOR (69 downto 0); + signal add_ln31_reg_789 : STD_LOGIC_VECTOR (69 downto 0); + signal ap_CS_fsm_state23 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state23 : signal is "none"; + signal select_ln31_1_fu_521_p3 : STD_LOGIC_VECTOR (30 downto 0); + signal select_ln31_1_reg_794 : STD_LOGIC_VECTOR (30 downto 0); + signal icmp_ln31_fu_491_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal select_ln38_fu_571_p3 : STD_LOGIC_VECTOR (6 downto 0); + signal select_ln38_reg_799 : STD_LOGIC_VECTOR (6 downto 0); + signal out_loc_addr_reg_804 : STD_LOGIC_VECTOR (11 downto 0); + signal select_ln33_fu_614_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln33_reg_809 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln33_1_fu_666_p3 : STD_LOGIC_VECTOR (38 downto 0); + signal select_ln33_1_reg_824 : STD_LOGIC_VECTOR (38 downto 0); + signal k_fu_687_p2 : STD_LOGIC_VECTOR (6 downto 0); + signal ap_CS_fsm_state24 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state24 : signal is "none"; + signal icmp_ln42_fu_692_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp3_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp3_stage0 : signal is "none"; + signal ap_block_state26_pp3_stage0_iter0 : BOOLEAN; + signal ap_block_state27_pp3_stage0_iter1 : BOOLEAN; + signal ap_block_state28_pp3_stage0_iter2 : BOOLEAN; + signal ap_block_state28_io : BOOLEAN; + signal ap_block_pp3_stage0_11001 : BOOLEAN; + signal add_ln42_fu_698_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp3_iter0 : STD_LOGIC := '0'; + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_load_reg_848 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp3_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0_subdone : BOOLEAN; + signal ap_condition_pp3_exit_iter0_state26 : STD_LOGIC; + signal in1_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal in1_loc_ce0 : STD_LOGIC; + signal in1_loc_we0 : STD_LOGIC; + signal in1_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal in2_loc_ce0 : STD_LOGIC; + signal in2_loc_we0 : STD_LOGIC; + signal in2_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_we0 : STD_LOGIC; + signal out_loc_d0 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_phi_ln27_phi_fu_289_p4 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_phi_mux_phi_ln28_phi_fu_301_p4 : STD_LOGIC_VECTOR (12 downto 0); + signal indvar_flatten15_reg_309 : STD_LOGIC_VECTOR (69 downto 0); + signal i_0_reg_320 : STD_LOGIC_VECTOR (30 downto 0); + signal indvar_flatten_reg_331 : STD_LOGIC_VECTOR (38 downto 0); + signal j_0_reg_342 : STD_LOGIC_VECTOR (31 downto 0); + signal k_0_reg_353 : STD_LOGIC_VECTOR (6 downto 0); + signal zext_ln27_fu_445_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_462_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_609_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_1_fu_632_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_1_fu_655_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_704_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_6_fu_405_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_415_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_5_fu_424_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp3_stage0_01001 : BOOLEAN; + signal tmp_fu_467_p3 : STD_LOGIC_VECTOR (37 downto 0); + signal mul_ln31_fu_485_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln31_fu_485_p1 : STD_LOGIC_VECTOR (37 downto 0); + signal icmp_ln33_fu_508_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal i_fu_502_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal trunc_ln38_fu_529_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal icmp_ln35_fu_547_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal xor_ln31_fu_541_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal select_ln31_fu_513_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal and_ln31_fu_553_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal or_ln38_fu_565_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal j_fu_559_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal trunc_ln38_2_fu_583_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal trunc_ln38_1_fu_579_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal select_ln31_2_fu_587_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal zext_ln38_cast_fu_533_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal select_ln38_1_fu_595_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_1_fu_603_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal zext_ln38_fu_622_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_2_fu_626_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal tmp_3_fu_637_p3 : STD_LOGIC_VECTOR (12 downto 0); + signal zext_ln38_2_fu_645_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_3_fu_649_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln33_fu_660_p2 : STD_LOGIC_VECTOR (38 downto 0); + signal mul_ln38_fu_674_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_674_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_674_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (26 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp3 : STD_LOGIC; + signal ap_enable_pp3 : STD_LOGIC; + signal mul_ln31_fu_485_p00 : STD_LOGIC_VECTOR (69 downto 0); + signal mul_ln31_fu_485_p10 : STD_LOGIC_VECTOR (69 downto 0); + + component mmult_in1_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_742, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_736, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => out_loc_load_reg_848, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_U : component mmult_in1_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_address0, + ce0 => in1_loc_ce0, + we0 => in1_loc_we0, + d0 => in1_mem_addr_read_reg_757, + q0 => in1_loc_q0); + + in2_loc_U : component mmult_in1_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_address0, + ce0 => in2_loc_ce0, + we0 => in2_loc_we0, + d0 => in2_mem_addr_read_reg_771, + q0 => in2_loc_q0); + + out_loc_U : component mmult_in1_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + we0 => out_loc_we0, + d0 => out_loc_d0, + q0 => out_loc_q0); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_const_logic_1 = ap_condition_pp3_exit_iter0_state26) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp3_exit_iter0_state26)) then + ap_enable_reg_pp3_iter1 <= (ap_const_logic_1 xor ap_condition_pp3_exit_iter0_state26); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_320_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + i_0_reg_320 <= select_ln31_1_reg_794; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + i_0_reg_320 <= ap_const_lv31_0; + end if; + end if; + end process; + + indvar_flatten15_reg_309_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + indvar_flatten15_reg_309 <= add_ln31_reg_789; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + indvar_flatten15_reg_309 <= ap_const_lv70_0; + end if; + end if; + end process; + + indvar_flatten_reg_331_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + indvar_flatten_reg_331 <= select_ln33_1_reg_824; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + indvar_flatten_reg_331 <= ap_const_lv39_0; + end if; + end if; + end process; + + j_0_reg_342_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + j_0_reg_342 <= select_ln33_reg_809; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + j_0_reg_342 <= ap_const_lv32_0; + end if; + end if; + end process; + + k_0_reg_353_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + k_0_reg_353 <= k_fu_687_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + k_0_reg_353 <= ap_const_lv7_0; + end if; + end if; + end process; + + phi_ln27_reg_285_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_285 <= add_ln27_reg_752; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_285 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_297_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_297 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_297 <= add_ln28_reg_766; + end if; + end if; + end process; + + phi_ln42_reg_364_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + phi_ln42_reg_364 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_fu_692_p2 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + phi_ln42_reg_364 <= add_ln42_fu_698_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + add_ln27_reg_752 <= add_ln27_fu_439_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + add_ln28_reg_766 <= add_ln28_fu_456_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + add_ln31_reg_789 <= add_ln31_fu_496_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_709 <= dim; + in3_reg_725 <= in1(31 downto 2); + in_reg_720 <= in2(31 downto 2); + out5_reg_715 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + icmp_ln27_reg_748 <= icmp_ln27_fu_433_p2; + icmp_ln27_reg_748_pp0_iter1_reg <= icmp_ln27_reg_748; + phi_ln27_reg_285_pp0_iter1_reg <= phi_ln27_reg_285; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + icmp_ln28_reg_762 <= icmp_ln28_fu_450_p2; + icmp_ln28_reg_762_pp1_iter1_reg <= icmp_ln28_reg_762; + phi_ln28_reg_297_pp1_iter1_reg <= phi_ln28_reg_297; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + icmp_ln42_reg_834 <= icmp_ln42_fu_692_p2; + icmp_ln42_reg_834_pp3_iter1_reg <= icmp_ln42_reg_834; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_757 <= in1_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_771 <= in2_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_742(29 downto 0) <= empty_5_fu_424_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_736(29 downto 0) <= empty_fu_415_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state22)) then + mul_ln31_reg_781(69 downto 6) <= mul_ln31_fu_485_p2(69 downto 6); + zext_ln31_reg_776(37 downto 6) <= zext_ln31_fu_474_p1(37 downto 6); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln31_fu_491_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + out_loc_addr_reg_804 <= sext_ln38_fu_609_p1(12 - 1 downto 0); + select_ln31_1_reg_794 <= select_ln31_1_fu_521_p3; + select_ln33_1_reg_824 <= select_ln33_1_fu_666_p3; + select_ln33_reg_809 <= select_ln33_fu_614_p3; + select_ln38_reg_799 <= select_ln38_fu_571_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_834 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + out_loc_load_reg_848 <= out_loc_q0; + end if; + end if; + end process; + out_mem_addr_reg_736(31 downto 30) <= "00"; + in2_mem_addr_reg_742(31 downto 30) <= "00"; + zext_ln31_reg_776(5 downto 0) <= "000000"; + zext_ln31_reg_776(38) <= '0'; + mul_ln31_reg_781(5 downto 0) <= "000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state25, ap_enable_reg_pp3_iter2, ap_CS_fsm_state33, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_AWREADY, out_mem_BVALID, icmp_ln27_fu_433_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_450_p2, ap_enable_reg_pp1_iter0, ap_CS_fsm_state23, icmp_ln31_fu_491_p2, icmp_ln42_fu_692_p2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp3_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (icmp_ln27_fu_433_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) and not(((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (icmp_ln27_fu_433_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (icmp_ln28_fu_450_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1))) and not(((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (icmp_ln28_fu_450_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state23 => + if (((icmp_ln31_fu_491_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_NS_fsm <= ap_ST_fsm_state24; + else + ap_NS_fsm <= ap_ST_fsm_state25; + end if; + when ap_ST_fsm_state24 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state25 => + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + else + ap_NS_fsm <= ap_ST_fsm_state25; + end if; + when ap_ST_fsm_pp3_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_692_p2 = ap_const_lv1_1) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1))) and not(((ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + elsif ((((ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_692_p2 = ap_const_lv1_1) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)))) then + ap_NS_fsm <= ap_ST_fsm_state29; + else + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + end if; + when ap_ST_fsm_state29 => + ap_NS_fsm <= ap_ST_fsm_state30; + when ap_ST_fsm_state30 => + ap_NS_fsm <= ap_ST_fsm_state31; + when ap_ST_fsm_state31 => + ap_NS_fsm <= ap_ST_fsm_state32; + when ap_ST_fsm_state32 => + ap_NS_fsm <= ap_ST_fsm_state33; + when ap_ST_fsm_state33 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state33))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state33; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_439_p2 <= std_logic_vector(unsigned(ap_phi_mux_phi_ln27_phi_fu_289_p4) + unsigned(ap_const_lv13_1)); + add_ln28_fu_456_p2 <= std_logic_vector(unsigned(ap_phi_mux_phi_ln28_phi_fu_301_p4) + unsigned(ap_const_lv13_1)); + add_ln31_fu_496_p2 <= std_logic_vector(unsigned(indvar_flatten15_reg_309) + unsigned(ap_const_lv70_1)); + add_ln33_fu_660_p2 <= std_logic_vector(unsigned(ap_const_lv39_1) + unsigned(indvar_flatten_reg_331)); + add_ln38_1_fu_603_p2 <= std_logic_vector(unsigned(zext_ln38_cast_fu_533_p3) + unsigned(select_ln38_1_fu_595_p3)); + add_ln38_2_fu_626_p2 <= std_logic_vector(unsigned(zext_ln38_cast_fu_533_p3) + unsigned(zext_ln38_fu_622_p1)); + add_ln38_3_fu_649_p2 <= std_logic_vector(unsigned(zext_ln38_2_fu_645_p1) + unsigned(select_ln38_1_fu_595_p3)); + add_ln42_fu_698_p2 <= std_logic_vector(unsigned(phi_ln42_reg_364) + unsigned(ap_const_lv13_1)); + and_ln31_fu_553_p2 <= (xor_ln31_fu_541_p2 and icmp_ln35_fu_547_p2); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp3_stage0 <= ap_CS_fsm(21); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state23 <= ap_CS_fsm(18); + ap_CS_fsm_state24 <= ap_CS_fsm(19); + ap_CS_fsm_state25 <= ap_CS_fsm(20); + ap_CS_fsm_state33 <= ap_CS_fsm(26); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, icmp_ln27_reg_748, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, icmp_ln27_reg_748, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, icmp_ln28_reg_762, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, icmp_ln28_reg_762, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp3_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp3_stage0_11001_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state28_io) + begin + ap_block_pp3_stage0_11001 <= ((ap_const_boolean_1 = ap_block_state28_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_pp3_stage0_subdone_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state28_io) + begin + ap_block_pp3_stage0_subdone <= ((ap_const_boolean_1 = ap_block_state28_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(icmp_ln27_reg_748, in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_748 = ap_const_lv1_0)); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(icmp_ln28_reg_762, in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_762 = ap_const_lv1_0)); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state26_pp3_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state27_pp3_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state28_io_assign_proc : process(icmp_ln42_reg_834_pp3_iter1_reg, out_mem_WREADY) + begin + ap_block_state28_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_834_pp3_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state28_pp3_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_433_p2) + begin + if ((icmp_ln27_fu_433_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_450_p2) + begin + if ((icmp_ln28_fu_450_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp3_exit_iter0_state26_assign_proc : process(icmp_ln42_fu_692_p2) + begin + if ((icmp_ln42_fu_692_p2 = ap_const_lv1_1)) then + ap_condition_pp3_exit_iter0_state26 <= ap_const_logic_1; + else + ap_condition_pp3_exit_iter0_state26 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state33, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state33))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp3 <= (ap_idle_pp3 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter2 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter2 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp3_assign_proc : process(ap_enable_reg_pp3_iter2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1) + begin + if (((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_0))) then + ap_idle_pp3 <= ap_const_logic_1; + else + ap_idle_pp3 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_phi_ln27_phi_fu_289_p4_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0, icmp_ln27_reg_748, phi_ln27_reg_285, add_ln27_reg_752) + begin + if (((icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_phi_mux_phi_ln27_phi_fu_289_p4 <= add_ln27_reg_752; + else + ap_phi_mux_phi_ln27_phi_fu_289_p4 <= phi_ln27_reg_285; + end if; + end process; + + + ap_phi_mux_phi_ln28_phi_fu_301_p4_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0, icmp_ln28_reg_762, phi_ln28_reg_297, add_ln28_reg_766) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + ap_phi_mux_phi_ln28_phi_fu_301_p4 <= add_ln28_reg_766; + else + ap_phi_mux_phi_ln28_phi_fu_301_p4 <= phi_ln28_reg_297; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state33, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state33))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_5_fu_424_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_720),64)); + empty_6_fu_405_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_725),64)); + empty_fu_415_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_715),64)); + i_fu_502_p2 <= std_logic_vector(unsigned(ap_const_lv31_1) + unsigned(i_0_reg_320)); + icmp_ln27_fu_433_p2 <= "1" when (ap_phi_mux_phi_ln27_phi_fu_289_p4 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_450_p2 <= "1" when (ap_phi_mux_phi_ln28_phi_fu_301_p4 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_491_p2 <= "1" when (indvar_flatten15_reg_309 = mul_ln31_reg_781) else "0"; + icmp_ln33_fu_508_p2 <= "1" when (indvar_flatten_reg_331 = zext_ln31_reg_776) else "0"; + icmp_ln35_fu_547_p2 <= "1" when (k_0_reg_353 = ap_const_lv7_40) else "0"; + icmp_ln42_fu_692_p2 <= "1" when (phi_ln42_reg_364 = ap_const_lv13_1000) else "0"; + + in1_loc_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_445_p1, zext_ln38_1_fu_632_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_address0 <= zext_ln38_1_fu_632_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_address0 <= zext_ln27_fu_445_p1(12 - 1 downto 0); + else + in1_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in1_loc_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state23) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_ce0 <= ap_const_logic_1; + else + in1_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_we0_assign_proc : process(ap_block_pp0_stage0_11001, icmp_ln27_reg_748_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_748_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_we0 <= ap_const_logic_1; + else + in1_loc_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_6_fu_405_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, icmp_ln27_reg_748, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0, icmp_ln27_reg_748) + begin + if (((icmp_ln27_reg_748 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state23, ap_enable_reg_pp1_iter2, zext_ln28_fu_462_p1, sext_ln38_1_fu_655_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in2_loc_address0 <= sext_ln38_1_fu_655_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_address0 <= zext_ln28_fu_462_p1(12 - 1 downto 0); + else + in2_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in2_loc_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state23, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state23) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_ce0 <= ap_const_logic_1; + else + in2_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_we0_assign_proc : process(ap_block_pp1_stage0_11001, icmp_ln28_reg_762_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_762_pp1_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_we0 <= ap_const_logic_1; + else + in2_loc_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, icmp_ln28_reg_762, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0, icmp_ln28_reg_762) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (icmp_ln28_reg_762 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_559_p2 <= std_logic_vector(unsigned(ap_const_lv32_1) + unsigned(select_ln31_fu_513_p3)); + k_fu_687_p2 <= std_logic_vector(unsigned(ap_const_lv7_1) + unsigned(select_ln38_reg_799)); + mul_ln31_fu_485_p0 <= mul_ln31_fu_485_p00(32 - 1 downto 0); + mul_ln31_fu_485_p00 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_709),70)); + mul_ln31_fu_485_p1 <= mul_ln31_fu_485_p10(38 - 1 downto 0); + mul_ln31_fu_485_p10 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_fu_467_p3),70)); + mul_ln31_fu_485_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(mul_ln31_fu_485_p0) * unsigned(mul_ln31_fu_485_p1), 70)); + mul_ln38_fu_674_p0 <= in2_loc_q0; + mul_ln38_fu_674_p1 <= in1_loc_q0; + mul_ln38_fu_674_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_fu_674_p0) * signed(mul_ln38_fu_674_p1))), 32)); + or_ln38_fu_565_p2 <= (icmp_ln33_fu_508_p2 or and_ln31_fu_553_p2); + + out_loc_address0_assign_proc : process(ap_block_pp3_stage0, ap_CS_fsm_state23, out_loc_addr_reg_804, ap_CS_fsm_state24, ap_CS_fsm_pp3_stage0, ap_enable_reg_pp3_iter0, sext_ln38_fu_609_p1, zext_ln42_fu_704_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + out_loc_address0 <= zext_ln42_fu_704_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + out_loc_address0 <= out_loc_addr_reg_804; + elsif ((ap_const_logic_1 = ap_CS_fsm_state23)) then + out_loc_address0 <= sext_ln38_fu_609_p1(12 - 1 downto 0); + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_CS_fsm_state23, ap_CS_fsm_state24, ap_CS_fsm_pp3_stage0, ap_block_pp3_stage0_11001, ap_enable_reg_pp3_iter0) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state24) or (ap_const_logic_1 = ap_CS_fsm_state23) or ((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + out_loc_d0 <= std_logic_vector(unsigned(mul_ln38_fu_674_p2) + unsigned(out_loc_q0)); + + out_loc_we0_assign_proc : process(ap_CS_fsm_state24) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + out_loc_we0 <= ap_const_logic_1; + else + out_loc_we0 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state25, out_mem_AWREADY) + begin + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state33, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state33))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp3_iter2, icmp_ln42_reg_834_pp3_iter1_reg, ap_block_pp3_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_834_pp3_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state25) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state33) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state33)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp3_iter2, ap_block_pp3_stage0, icmp_ln42_reg_834_pp3_iter1_reg) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0) and (icmp_ln42_reg_834_pp3_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + select_ln31_1_fu_521_p3 <= + i_fu_502_p2 when (icmp_ln33_fu_508_p2(0) = '1') else + i_0_reg_320; + select_ln31_2_fu_587_p3 <= + ap_const_lv14_0 when (icmp_ln33_fu_508_p2(0) = '1') else + trunc_ln38_2_fu_583_p1; + select_ln31_fu_513_p3 <= + ap_const_lv32_0 when (icmp_ln33_fu_508_p2(0) = '1') else + j_0_reg_342; + select_ln33_1_fu_666_p3 <= + ap_const_lv39_1 when (icmp_ln33_fu_508_p2(0) = '1') else + add_ln33_fu_660_p2; + select_ln33_fu_614_p3 <= + j_fu_559_p2 when (and_ln31_fu_553_p2(0) = '1') else + select_ln31_fu_513_p3; + select_ln38_1_fu_595_p3 <= + trunc_ln38_1_fu_579_p1 when (and_ln31_fu_553_p2(0) = '1') else + select_ln31_2_fu_587_p3; + select_ln38_fu_571_p3 <= + ap_const_lv7_0 when (or_ln38_fu_565_p2(0) = '1') else + k_0_reg_353; + sext_ln38_1_fu_655_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_3_fu_649_p2),64)); + + sext_ln38_fu_609_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_1_fu_603_p2),64)); + + tmp_3_fu_637_p3 <= (select_ln38_fu_571_p3 & ap_const_lv6_0); + tmp_fu_467_p3 <= (dim_read_reg_709 & ap_const_lv6_0); + trunc_ln38_1_fu_579_p1 <= j_fu_559_p2(14 - 1 downto 0); + trunc_ln38_2_fu_583_p1 <= j_0_reg_342(14 - 1 downto 0); + trunc_ln38_fu_529_p1 <= select_ln31_1_fu_521_p3(8 - 1 downto 0); + xor_ln31_fu_541_p2 <= (icmp_ln33_fu_508_p2 xor ap_const_lv1_1); + zext_ln27_fu_445_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln27_reg_285_pp0_iter1_reg),64)); + zext_ln28_fu_462_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln28_reg_297_pp1_iter1_reg),64)); + zext_ln31_fu_474_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_fu_467_p3),39)); + zext_ln38_1_fu_632_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(add_ln38_2_fu_626_p2),64)); + zext_ln38_2_fu_645_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_3_fu_637_p3),14)); + zext_ln38_cast_fu_533_p3 <= (trunc_ln38_fu_529_p1 & ap_const_lv6_0); + zext_ln38_fu_622_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(select_ln38_fu_571_p3),14)); + zext_ln42_fu_704_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_364),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_loc.vhd new file mode 100755 index 0000000..ccbf7ef --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_loc.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc is + component mmult_in1_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_ram_U : component mmult_in1_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/xgui/mmult_v3_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/xgui/mmult_v3_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_4/xgui/mmult_v3_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/component.xml new file mode 100755 index 0000000..a5aa6ac --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/component.xml @@ -0,0 +1,5578 @@ + + + xilinx.com + hls + mmult + 4.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 5bde30c7 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 26c91a02 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 632ca6c1 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 20881ce3 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + f8defa98 + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_loc.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_fbabb8ff + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v4_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v4_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v4_0/src/Makefile + driver_src + + + drivers/mmult_v4_0/src/xmmult.c + driver_src + + + drivers/mmult_v4_0/src/xmmult.h + driver_src + + + drivers/mmult_v4_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v4_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v4_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v4_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v4_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 153755 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141705 + 2021-05-14T15:05:48Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/doc/ReleaseNotes.txt new file mode 100755 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.mdd new file mode 100755 index 0000000..fd11f42 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v4_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 4.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/drivers/mmult_v4_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult.v new file mode 100755 index 0000000..ddacaec --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult.v @@ -0,0 +1,4497 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=153755,HLS_SYN_TPT=none,HLS_SYN_MEM=30,HLS_SYN_DSP=192,HLS_SYN_FF=6462,HLS_SYN_LUT=10635,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 91'd1; +parameter ap_ST_fsm_state2 = 91'd2; +parameter ap_ST_fsm_state3 = 91'd4; +parameter ap_ST_fsm_state4 = 91'd8; +parameter ap_ST_fsm_state5 = 91'd16; +parameter ap_ST_fsm_state6 = 91'd32; +parameter ap_ST_fsm_state7 = 91'd64; +parameter ap_ST_fsm_state8 = 91'd128; +parameter ap_ST_fsm_pp0_stage0 = 91'd256; +parameter ap_ST_fsm_state12 = 91'd512; +parameter ap_ST_fsm_state13 = 91'd1024; +parameter ap_ST_fsm_state14 = 91'd2048; +parameter ap_ST_fsm_state15 = 91'd4096; +parameter ap_ST_fsm_state16 = 91'd8192; +parameter ap_ST_fsm_state17 = 91'd16384; +parameter ap_ST_fsm_state18 = 91'd32768; +parameter ap_ST_fsm_pp1_stage0 = 91'd65536; +parameter ap_ST_fsm_state22 = 91'd131072; +parameter ap_ST_fsm_state23 = 91'd262144; +parameter ap_ST_fsm_state24 = 91'd524288; +parameter ap_ST_fsm_state25 = 91'd1048576; +parameter ap_ST_fsm_state26 = 91'd2097152; +parameter ap_ST_fsm_state27 = 91'd4194304; +parameter ap_ST_fsm_state28 = 91'd8388608; +parameter ap_ST_fsm_state29 = 91'd16777216; +parameter ap_ST_fsm_state30 = 91'd33554432; +parameter ap_ST_fsm_state31 = 91'd67108864; +parameter ap_ST_fsm_state32 = 91'd134217728; +parameter ap_ST_fsm_state33 = 91'd268435456; +parameter ap_ST_fsm_state34 = 91'd536870912; +parameter ap_ST_fsm_state35 = 91'd1073741824; +parameter ap_ST_fsm_state36 = 91'd2147483648; +parameter ap_ST_fsm_state37 = 91'd4294967296; +parameter ap_ST_fsm_state38 = 91'd8589934592; +parameter ap_ST_fsm_state39 = 91'd17179869184; +parameter ap_ST_fsm_state40 = 91'd34359738368; +parameter ap_ST_fsm_state41 = 91'd68719476736; +parameter ap_ST_fsm_state42 = 91'd137438953472; +parameter ap_ST_fsm_state43 = 91'd274877906944; +parameter ap_ST_fsm_state44 = 91'd549755813888; +parameter ap_ST_fsm_state45 = 91'd1099511627776; +parameter ap_ST_fsm_state46 = 91'd2199023255552; +parameter ap_ST_fsm_state47 = 91'd4398046511104; +parameter ap_ST_fsm_state48 = 91'd8796093022208; +parameter ap_ST_fsm_state49 = 91'd17592186044416; +parameter ap_ST_fsm_state50 = 91'd35184372088832; +parameter ap_ST_fsm_state51 = 91'd70368744177664; +parameter ap_ST_fsm_state52 = 91'd140737488355328; +parameter ap_ST_fsm_state53 = 91'd281474976710656; +parameter ap_ST_fsm_state54 = 91'd562949953421312; +parameter ap_ST_fsm_state55 = 91'd1125899906842624; +parameter ap_ST_fsm_state56 = 91'd2251799813685248; +parameter ap_ST_fsm_state57 = 91'd4503599627370496; +parameter ap_ST_fsm_state58 = 91'd9007199254740992; +parameter ap_ST_fsm_state59 = 91'd18014398509481984; +parameter ap_ST_fsm_state60 = 91'd36028797018963968; +parameter ap_ST_fsm_state61 = 91'd72057594037927936; +parameter ap_ST_fsm_state62 = 91'd144115188075855872; +parameter ap_ST_fsm_state63 = 91'd288230376151711744; +parameter ap_ST_fsm_state64 = 91'd576460752303423488; +parameter ap_ST_fsm_state65 = 91'd1152921504606846976; +parameter ap_ST_fsm_state66 = 91'd2305843009213693952; +parameter ap_ST_fsm_state67 = 91'd4611686018427387904; +parameter ap_ST_fsm_state68 = 91'd9223372036854775808; +parameter ap_ST_fsm_state69 = 91'd18446744073709551616; +parameter ap_ST_fsm_state70 = 91'd36893488147419103232; +parameter ap_ST_fsm_state71 = 91'd73786976294838206464; +parameter ap_ST_fsm_state72 = 91'd147573952589676412928; +parameter ap_ST_fsm_state73 = 91'd295147905179352825856; +parameter ap_ST_fsm_state74 = 91'd590295810358705651712; +parameter ap_ST_fsm_state75 = 91'd1180591620717411303424; +parameter ap_ST_fsm_state76 = 91'd2361183241434822606848; +parameter ap_ST_fsm_state77 = 91'd4722366482869645213696; +parameter ap_ST_fsm_state78 = 91'd9444732965739290427392; +parameter ap_ST_fsm_state79 = 91'd18889465931478580854784; +parameter ap_ST_fsm_state80 = 91'd37778931862957161709568; +parameter ap_ST_fsm_state81 = 91'd75557863725914323419136; +parameter ap_ST_fsm_state82 = 91'd151115727451828646838272; +parameter ap_ST_fsm_state83 = 91'd302231454903657293676544; +parameter ap_ST_fsm_state84 = 91'd604462909807314587353088; +parameter ap_ST_fsm_state85 = 91'd1208925819614629174706176; +parameter ap_ST_fsm_state86 = 91'd2417851639229258349412352; +parameter ap_ST_fsm_state87 = 91'd4835703278458516698824704; +parameter ap_ST_fsm_state88 = 91'd9671406556917033397649408; +parameter ap_ST_fsm_state89 = 91'd19342813113834066795298816; +parameter ap_ST_fsm_pp2_stage0 = 91'd38685626227668133590597632; +parameter ap_ST_fsm_state93 = 91'd77371252455336267181195264; +parameter ap_ST_fsm_state94 = 91'd154742504910672534362390528; +parameter ap_ST_fsm_state95 = 91'd309485009821345068724781056; +parameter ap_ST_fsm_state96 = 91'd618970019642690137449562112; +parameter ap_ST_fsm_state97 = 91'd1237940039285380274899124224; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [90:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg [0:0] icmp_ln27_reg_3840; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg [0:0] icmp_ln28_reg_3854; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state23; +wire [0:0] icmp_ln31_fu_1563_p2; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp2_iter2; +wire ap_block_pp2_stage0; +reg [0:0] icmp_ln42_reg_5307; +reg [0:0] icmp_ln42_reg_5307_pp2_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state97; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_1410; +reg [12:0] phi_ln27_reg_1410_pp0_iter1_reg; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +reg [12:0] phi_ln28_reg_1422; +reg [12:0] phi_ln28_reg_1422_pp1_iter1_reg; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +reg [12:0] phi_ln42_reg_1456; +reg [31:0] dim_read_reg_3801; +reg [29:0] out5_reg_3807; +reg [29:0] in_reg_3812; +reg [29:0] in3_reg_3817; +reg [31:0] out_mem_addr_reg_3828; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_3834; +wire [0:0] icmp_ln27_fu_1525_p2; +reg [0:0] icmp_ln27_reg_3840_pp0_iter1_reg; +wire [12:0] add_ln27_fu_1531_p2; +reg [12:0] add_ln27_reg_3844; +reg ap_enable_reg_pp0_iter0; +reg [31:0] in1_mem_addr_read_reg_3849; +wire [0:0] icmp_ln28_fu_1542_p2; +reg [0:0] icmp_ln28_reg_3854_pp1_iter1_reg; +wire [12:0] add_ln28_fu_1548_p2; +reg [12:0] add_ln28_reg_3858; +reg ap_enable_reg_pp1_iter0; +reg [31:0] in2_mem_addr_read_reg_3863; +reg ap_block_state23_io; +wire [30:0] i_fu_1568_p2; +reg [30:0] i_reg_3872; +wire [36:0] tmp_2_fu_1574_p3; +reg [36:0] tmp_2_reg_3877; +wire [7:0] trunc_ln38_fu_1587_p1; +reg [7:0] trunc_ln38_reg_3943; +wire ap_CS_fsm_state24; +wire [31:0] in1_loc_q0; +reg signed [31:0] in1_loc_load_reg_3968; +wire [31:0] in1_loc_q1; +reg signed [31:0] in1_loc_load_1_reg_3973; +wire ap_CS_fsm_state25; +reg signed [31:0] in1_loc_load_2_reg_3988; +reg signed [31:0] in1_loc_load_3_reg_3993; +wire ap_CS_fsm_state26; +reg signed [31:0] in1_loc_load_4_reg_4008; +reg signed [31:0] in1_loc_load_5_reg_4013; +wire ap_CS_fsm_state27; +reg signed [31:0] in1_loc_load_6_reg_4028; +reg signed [31:0] in1_loc_load_7_reg_4033; +wire ap_CS_fsm_state28; +reg signed [31:0] in1_loc_load_8_reg_4048; +reg signed [31:0] in1_loc_load_9_reg_4053; +wire ap_CS_fsm_state29; +reg signed [31:0] in1_loc_load_10_reg_4068; +reg signed [31:0] in1_loc_load_11_reg_4073; +wire ap_CS_fsm_state30; +reg signed [31:0] in1_loc_load_12_reg_4088; +reg signed [31:0] in1_loc_load_13_reg_4093; +wire ap_CS_fsm_state31; +reg signed [31:0] in1_loc_load_14_reg_4108; +reg signed [31:0] in1_loc_load_15_reg_4113; +wire ap_CS_fsm_state32; +reg signed [31:0] in1_loc_load_16_reg_4128; +reg signed [31:0] in1_loc_load_17_reg_4133; +wire ap_CS_fsm_state33; +reg signed [31:0] in1_loc_load_18_reg_4148; +reg signed [31:0] in1_loc_load_19_reg_4153; +wire ap_CS_fsm_state34; +reg signed [31:0] in1_loc_load_20_reg_4168; +reg signed [31:0] in1_loc_load_21_reg_4173; +wire ap_CS_fsm_state35; +reg signed [31:0] in1_loc_load_22_reg_4188; +reg signed [31:0] in1_loc_load_23_reg_4193; +wire ap_CS_fsm_state36; +reg signed [31:0] in1_loc_load_24_reg_4208; +reg signed [31:0] in1_loc_load_25_reg_4213; +wire ap_CS_fsm_state37; +reg signed [31:0] in1_loc_load_26_reg_4228; +reg signed [31:0] in1_loc_load_27_reg_4233; +wire ap_CS_fsm_state38; +reg signed [31:0] in1_loc_load_28_reg_4248; +reg signed [31:0] in1_loc_load_29_reg_4253; +wire ap_CS_fsm_state39; +reg signed [31:0] in1_loc_load_30_reg_4268; +reg signed [31:0] in1_loc_load_31_reg_4273; +wire ap_CS_fsm_state40; +reg signed [31:0] in1_loc_load_32_reg_4288; +reg signed [31:0] in1_loc_load_33_reg_4293; +wire ap_CS_fsm_state41; +reg signed [31:0] in1_loc_load_34_reg_4308; +reg signed [31:0] in1_loc_load_35_reg_4313; +wire ap_CS_fsm_state42; +reg signed [31:0] in1_loc_load_36_reg_4328; +reg signed [31:0] in1_loc_load_37_reg_4333; +wire ap_CS_fsm_state43; +reg signed [31:0] in1_loc_load_38_reg_4348; +reg signed [31:0] in1_loc_load_39_reg_4353; +wire ap_CS_fsm_state44; +reg signed [31:0] in1_loc_load_40_reg_4368; +reg signed [31:0] in1_loc_load_41_reg_4373; +wire ap_CS_fsm_state45; +reg signed [31:0] in1_loc_load_42_reg_4388; +reg signed [31:0] in1_loc_load_43_reg_4393; +wire ap_CS_fsm_state46; +reg signed [31:0] in1_loc_load_44_reg_4408; +reg signed [31:0] in1_loc_load_45_reg_4413; +wire ap_CS_fsm_state47; +reg signed [31:0] in1_loc_load_46_reg_4428; +reg signed [31:0] in1_loc_load_47_reg_4433; +wire ap_CS_fsm_state48; +reg signed [31:0] in1_loc_load_48_reg_4448; +reg signed [31:0] in1_loc_load_49_reg_4453; +wire ap_CS_fsm_state49; +reg signed [31:0] in1_loc_load_50_reg_4468; +reg signed [31:0] in1_loc_load_51_reg_4473; +wire ap_CS_fsm_state50; +reg signed [31:0] in1_loc_load_52_reg_4488; +reg signed [31:0] in1_loc_load_53_reg_4493; +wire ap_CS_fsm_state51; +reg signed [31:0] in1_loc_load_54_reg_4508; +reg signed [31:0] in1_loc_load_55_reg_4513; +wire ap_CS_fsm_state52; +reg signed [31:0] in1_loc_load_56_reg_4528; +reg signed [31:0] in1_loc_load_57_reg_4533; +wire ap_CS_fsm_state53; +reg signed [31:0] in1_loc_load_58_reg_4548; +reg signed [31:0] in1_loc_load_59_reg_4553; +wire ap_CS_fsm_state54; +reg signed [31:0] in1_loc_load_60_reg_4568; +reg signed [31:0] in1_loc_load_61_reg_4573; +wire [13:0] zext_ln38_cast_fu_2474_p3; +reg [13:0] zext_ln38_cast_reg_4578; +wire ap_CS_fsm_state55; +reg signed [31:0] in1_loc_load_62_reg_4583; +reg signed [31:0] in1_loc_load_63_reg_4588; +wire [31:0] j_fu_2486_p2; +reg [31:0] j_reg_4596; +wire ap_CS_fsm_state56; +wire [13:0] trunc_ln38_1_fu_2497_p1; +reg [13:0] trunc_ln38_1_reg_4601; +wire [0:0] icmp_ln33_fu_2481_p2; +reg [11:0] out_loc_addr_reg_4677; +wire ap_CS_fsm_state57; +wire [31:0] mul_ln38_fu_2542_p2; +reg [31:0] mul_ln38_reg_4692; +wire [31:0] mul_ln38_1_fu_2547_p2; +reg [31:0] mul_ln38_1_reg_4697; +wire ap_CS_fsm_state58; +wire [31:0] mul_ln38_3_fu_2577_p2; +reg [31:0] mul_ln38_3_reg_4712; +wire [31:0] add_ln38_2_fu_2592_p2; +reg [31:0] add_ln38_2_reg_4717; +wire ap_CS_fsm_state59; +wire [31:0] mul_ln38_5_fu_2623_p2; +reg [31:0] mul_ln38_5_reg_4732; +wire [31:0] add_ln38_3_fu_2628_p2; +reg [31:0] add_ln38_3_reg_4737; +wire ap_CS_fsm_state60; +wire [31:0] mul_ln38_7_fu_2658_p2; +reg [31:0] mul_ln38_7_reg_4752; +wire [31:0] add_ln38_6_fu_2673_p2; +reg [31:0] add_ln38_6_reg_4757; +wire ap_CS_fsm_state61; +wire [31:0] mul_ln38_9_fu_2703_p2; +reg [31:0] mul_ln38_9_reg_4772; +wire [31:0] add_ln38_7_fu_2708_p2; +reg [31:0] add_ln38_7_reg_4777; +wire ap_CS_fsm_state62; +wire [31:0] mul_ln38_11_fu_2738_p2; +reg [31:0] mul_ln38_11_reg_4792; +wire [31:0] add_ln38_9_fu_2748_p2; +reg [31:0] add_ln38_9_reg_4797; +wire ap_CS_fsm_state63; +wire [31:0] mul_ln38_13_fu_2778_p2; +reg [31:0] mul_ln38_13_reg_4812; +wire [31:0] add_ln38_10_fu_2783_p2; +reg [31:0] add_ln38_10_reg_4817; +wire ap_CS_fsm_state64; +wire [31:0] mul_ln38_15_fu_2813_p2; +reg [31:0] mul_ln38_15_reg_4832; +wire [31:0] add_ln38_14_fu_2833_p2; +reg [31:0] add_ln38_14_reg_4837; +wire ap_CS_fsm_state65; +wire [31:0] mul_ln38_17_fu_2863_p2; +reg [31:0] mul_ln38_17_reg_4852; +wire [31:0] add_ln38_15_fu_2868_p2; +reg [31:0] add_ln38_15_reg_4857; +wire ap_CS_fsm_state66; +wire [31:0] mul_ln38_19_fu_2898_p2; +reg [31:0] mul_ln38_19_reg_4872; +wire [31:0] add_ln38_17_fu_2908_p2; +reg [31:0] add_ln38_17_reg_4877; +wire ap_CS_fsm_state67; +wire [31:0] mul_ln38_21_fu_2938_p2; +reg [31:0] mul_ln38_21_reg_4892; +wire [31:0] add_ln38_18_fu_2943_p2; +reg [31:0] add_ln38_18_reg_4897; +wire ap_CS_fsm_state68; +wire [31:0] mul_ln38_23_fu_2973_p2; +reg [31:0] mul_ln38_23_reg_4912; +wire [31:0] add_ln38_21_fu_2988_p2; +reg [31:0] add_ln38_21_reg_4917; +wire ap_CS_fsm_state69; +wire [31:0] mul_ln38_25_fu_3018_p2; +reg [31:0] mul_ln38_25_reg_4932; +wire [31:0] add_ln38_22_fu_3023_p2; +reg [31:0] add_ln38_22_reg_4937; +wire ap_CS_fsm_state70; +wire [31:0] mul_ln38_27_fu_3053_p2; +reg [31:0] mul_ln38_27_reg_4952; +wire [31:0] add_ln38_24_fu_3063_p2; +reg [31:0] add_ln38_24_reg_4957; +wire ap_CS_fsm_state71; +wire [31:0] mul_ln38_29_fu_3093_p2; +reg [31:0] mul_ln38_29_reg_4972; +wire [31:0] add_ln38_25_fu_3098_p2; +reg [31:0] add_ln38_25_reg_4977; +wire ap_CS_fsm_state72; +wire [31:0] mul_ln38_31_fu_3128_p2; +reg [31:0] mul_ln38_31_reg_4992; +wire [31:0] add_ln38_30_fu_3153_p2; +reg [31:0] add_ln38_30_reg_4997; +wire ap_CS_fsm_state73; +wire [31:0] mul_ln38_33_fu_3183_p2; +reg [31:0] mul_ln38_33_reg_5012; +wire [31:0] add_ln38_31_fu_3188_p2; +reg [31:0] add_ln38_31_reg_5017; +wire ap_CS_fsm_state74; +wire [31:0] mul_ln38_35_fu_3218_p2; +reg [31:0] mul_ln38_35_reg_5032; +wire [31:0] add_ln38_33_fu_3228_p2; +reg [31:0] add_ln38_33_reg_5037; +wire ap_CS_fsm_state75; +wire [31:0] mul_ln38_37_fu_3258_p2; +reg [31:0] mul_ln38_37_reg_5052; +wire [31:0] add_ln38_34_fu_3263_p2; +reg [31:0] add_ln38_34_reg_5057; +wire ap_CS_fsm_state76; +wire [31:0] mul_ln38_39_fu_3293_p2; +reg [31:0] mul_ln38_39_reg_5072; +wire [31:0] add_ln38_37_fu_3308_p2; +reg [31:0] add_ln38_37_reg_5077; +wire ap_CS_fsm_state77; +wire [31:0] mul_ln38_41_fu_3338_p2; +reg [31:0] mul_ln38_41_reg_5092; +wire [31:0] add_ln38_38_fu_3343_p2; +reg [31:0] add_ln38_38_reg_5097; +wire ap_CS_fsm_state78; +wire [31:0] mul_ln38_43_fu_3373_p2; +reg [31:0] mul_ln38_43_reg_5112; +wire [31:0] add_ln38_40_fu_3383_p2; +reg [31:0] add_ln38_40_reg_5117; +wire ap_CS_fsm_state79; +wire [31:0] mul_ln38_45_fu_3413_p2; +reg [31:0] mul_ln38_45_reg_5132; +wire [31:0] add_ln38_41_fu_3418_p2; +reg [31:0] add_ln38_41_reg_5137; +wire ap_CS_fsm_state80; +wire [31:0] mul_ln38_47_fu_3448_p2; +reg [31:0] mul_ln38_47_reg_5152; +wire [31:0] add_ln38_45_fu_3468_p2; +reg [31:0] add_ln38_45_reg_5157; +wire ap_CS_fsm_state81; +wire [31:0] mul_ln38_49_fu_3498_p2; +reg [31:0] mul_ln38_49_reg_5172; +wire [31:0] add_ln38_46_fu_3503_p2; +reg [31:0] add_ln38_46_reg_5177; +wire ap_CS_fsm_state82; +wire [31:0] mul_ln38_51_fu_3533_p2; +reg [31:0] mul_ln38_51_reg_5192; +wire [31:0] add_ln38_48_fu_3543_p2; +reg [31:0] add_ln38_48_reg_5197; +wire ap_CS_fsm_state83; +wire [31:0] mul_ln38_53_fu_3573_p2; +reg [31:0] mul_ln38_53_reg_5212; +wire [31:0] add_ln38_49_fu_3578_p2; +reg [31:0] add_ln38_49_reg_5217; +wire ap_CS_fsm_state84; +wire [31:0] mul_ln38_55_fu_3608_p2; +reg [31:0] mul_ln38_55_reg_5232; +wire [31:0] add_ln38_52_fu_3623_p2; +reg [31:0] add_ln38_52_reg_5237; +wire ap_CS_fsm_state85; +wire [31:0] mul_ln38_57_fu_3653_p2; +reg [31:0] mul_ln38_57_reg_5252; +wire [31:0] add_ln38_53_fu_3658_p2; +reg [31:0] add_ln38_53_reg_5257; +wire ap_CS_fsm_state86; +wire [31:0] mul_ln38_59_fu_3688_p2; +reg [31:0] mul_ln38_59_reg_5272; +wire [31:0] add_ln38_55_fu_3698_p2; +reg [31:0] add_ln38_55_reg_5277; +wire ap_CS_fsm_state87; +wire [31:0] mul_ln38_61_fu_3728_p2; +reg [31:0] mul_ln38_61_reg_5292; +wire [31:0] add_ln38_56_fu_3733_p2; +reg [31:0] add_ln38_56_reg_5297; +wire [31:0] add_ln38_61_fu_3769_p2; +reg [31:0] add_ln38_61_reg_5302; +wire ap_CS_fsm_state88; +wire [0:0] icmp_ln42_fu_3784_p2; +wire ap_CS_fsm_pp2_stage0; +wire ap_block_state90_pp2_stage0_iter0; +wire ap_block_state91_pp2_stage0_iter1; +wire ap_block_state92_pp2_stage0_iter2; +reg ap_block_state92_io; +reg ap_block_pp2_stage0_11001; +wire [12:0] add_ln42_fu_3790_p2; +reg ap_enable_reg_pp2_iter0; +wire [31:0] out_loc_q0; +reg [31:0] out_loc_load_reg_5321; +reg ap_enable_reg_pp2_iter1; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +reg ap_block_pp2_stage0_subdone; +reg ap_condition_pp2_exit_iter0_state90; +reg [11:0] in1_loc_address0; +reg in1_loc_ce0; +reg in1_loc_we0; +reg [11:0] in1_loc_address1; +reg in1_loc_ce1; +reg [11:0] in2_loc_address0; +reg in2_loc_ce0; +reg in2_loc_we0; +wire [31:0] in2_loc_q0; +reg [11:0] in2_loc_address1; +reg in2_loc_ce1; +wire [31:0] in2_loc_q1; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_we0; +wire [31:0] out_loc_d0; +reg [12:0] ap_phi_mux_phi_ln27_phi_fu_1414_p4; +reg [12:0] ap_phi_mux_phi_ln28_phi_fu_1426_p4; +reg [30:0] i_0_reg_1434; +wire ap_CS_fsm_state22; +reg signed [31:0] j_0_reg_1445; +wire ap_CS_fsm_state89; +wire [63:0] zext_ln27_fu_1537_p1; +wire [63:0] zext_ln28_fu_1554_p1; +wire [63:0] zext_ln38_fu_1582_p1; +wire [63:0] tmp_3_fu_1597_p3; +wire [63:0] tmp_4_fu_1611_p3; +wire [63:0] tmp_5_fu_1625_p3; +wire [63:0] tmp_6_fu_1639_p3; +wire [63:0] tmp_7_fu_1653_p3; +wire [63:0] tmp_8_fu_1667_p3; +wire [63:0] tmp_9_fu_1681_p3; +wire [63:0] tmp_s_fu_1695_p3; +wire [63:0] tmp_10_fu_1709_p3; +wire [63:0] tmp_11_fu_1723_p3; +wire [63:0] tmp_12_fu_1737_p3; +wire [63:0] tmp_13_fu_1751_p3; +wire [63:0] tmp_14_fu_1765_p3; +wire [63:0] tmp_15_fu_1779_p3; +wire [63:0] tmp_16_fu_1793_p3; +wire [63:0] tmp_17_fu_1807_p3; +wire [63:0] tmp_18_fu_1821_p3; +wire [63:0] tmp_19_fu_1835_p3; +wire [63:0] tmp_20_fu_1849_p3; +wire [63:0] tmp_21_fu_1863_p3; +wire [63:0] tmp_22_fu_1877_p3; +wire [63:0] tmp_23_fu_1891_p3; +wire [63:0] tmp_24_fu_1905_p3; +wire [63:0] tmp_25_fu_1919_p3; +wire [63:0] tmp_26_fu_1933_p3; +wire [63:0] tmp_27_fu_1947_p3; +wire [63:0] tmp_28_fu_1961_p3; +wire [63:0] tmp_29_fu_1975_p3; +wire [63:0] tmp_30_fu_1989_p3; +wire [63:0] tmp_31_fu_2003_p3; +wire [63:0] tmp_32_fu_2017_p3; +wire [63:0] tmp_33_fu_2031_p3; +wire [63:0] tmp_34_fu_2045_p3; +wire [63:0] tmp_35_fu_2059_p3; +wire [63:0] tmp_36_fu_2073_p3; +wire [63:0] tmp_37_fu_2087_p3; +wire [63:0] tmp_38_fu_2101_p3; +wire [63:0] tmp_39_fu_2115_p3; +wire [63:0] tmp_40_fu_2129_p3; +wire [63:0] tmp_41_fu_2143_p3; +wire [63:0] tmp_42_fu_2157_p3; +wire [63:0] tmp_43_fu_2171_p3; +wire [63:0] tmp_44_fu_2185_p3; +wire [63:0] tmp_45_fu_2199_p3; +wire [63:0] tmp_46_fu_2213_p3; +wire [63:0] tmp_47_fu_2227_p3; +wire [63:0] tmp_48_fu_2241_p3; +wire [63:0] tmp_49_fu_2255_p3; +wire [63:0] tmp_50_fu_2269_p3; +wire [63:0] tmp_51_fu_2283_p3; +wire [63:0] tmp_52_fu_2297_p3; +wire [63:0] tmp_53_fu_2311_p3; +wire [63:0] tmp_54_fu_2325_p3; +wire [63:0] tmp_55_fu_2339_p3; +wire [63:0] tmp_56_fu_2353_p3; +wire [63:0] tmp_57_fu_2367_p3; +wire [63:0] tmp_58_fu_2381_p3; +wire [63:0] tmp_59_fu_2395_p3; +wire [63:0] tmp_60_fu_2409_p3; +wire [63:0] tmp_61_fu_2423_p3; +wire [63:0] tmp_62_fu_2437_p3; +wire [63:0] tmp_63_fu_2451_p3; +wire [63:0] tmp_64_fu_2465_p3; +wire signed [63:0] sext_ln38_fu_2492_p1; +wire signed [63:0] sext_ln38_1_fu_2507_p1; +wire signed [63:0] sext_ln38_64_fu_2517_p1; +wire signed [63:0] sext_ln38_2_fu_2527_p1; +wire signed [63:0] sext_ln38_3_fu_2537_p1; +wire signed [63:0] sext_ln38_4_fu_2557_p1; +wire signed [63:0] sext_ln38_5_fu_2567_p1; +wire signed [63:0] sext_ln38_6_fu_2603_p1; +wire signed [63:0] sext_ln38_7_fu_2613_p1; +wire signed [63:0] sext_ln38_8_fu_2638_p1; +wire signed [63:0] sext_ln38_9_fu_2648_p1; +wire signed [63:0] sext_ln38_10_fu_2683_p1; +wire signed [63:0] sext_ln38_11_fu_2693_p1; +wire signed [63:0] sext_ln38_12_fu_2718_p1; +wire signed [63:0] sext_ln38_13_fu_2728_p1; +wire signed [63:0] sext_ln38_14_fu_2758_p1; +wire signed [63:0] sext_ln38_15_fu_2768_p1; +wire signed [63:0] sext_ln38_16_fu_2793_p1; +wire signed [63:0] sext_ln38_17_fu_2803_p1; +wire signed [63:0] sext_ln38_18_fu_2843_p1; +wire signed [63:0] sext_ln38_19_fu_2853_p1; +wire signed [63:0] sext_ln38_20_fu_2878_p1; +wire signed [63:0] sext_ln38_21_fu_2888_p1; +wire signed [63:0] sext_ln38_22_fu_2918_p1; +wire signed [63:0] sext_ln38_23_fu_2928_p1; +wire signed [63:0] sext_ln38_24_fu_2953_p1; +wire signed [63:0] sext_ln38_25_fu_2963_p1; +wire signed [63:0] sext_ln38_26_fu_2998_p1; +wire signed [63:0] sext_ln38_27_fu_3008_p1; +wire signed [63:0] sext_ln38_28_fu_3033_p1; +wire signed [63:0] sext_ln38_29_fu_3043_p1; +wire signed [63:0] sext_ln38_30_fu_3073_p1; +wire signed [63:0] sext_ln38_31_fu_3083_p1; +wire signed [63:0] sext_ln38_32_fu_3108_p1; +wire signed [63:0] sext_ln38_33_fu_3118_p1; +wire signed [63:0] sext_ln38_34_fu_3163_p1; +wire signed [63:0] sext_ln38_35_fu_3173_p1; +wire signed [63:0] sext_ln38_36_fu_3198_p1; +wire signed [63:0] sext_ln38_37_fu_3208_p1; +wire signed [63:0] sext_ln38_38_fu_3238_p1; +wire signed [63:0] sext_ln38_39_fu_3248_p1; +wire signed [63:0] sext_ln38_40_fu_3273_p1; +wire signed [63:0] sext_ln38_41_fu_3283_p1; +wire signed [63:0] sext_ln38_42_fu_3318_p1; +wire signed [63:0] sext_ln38_43_fu_3328_p1; +wire signed [63:0] sext_ln38_44_fu_3353_p1; +wire signed [63:0] sext_ln38_45_fu_3363_p1; +wire signed [63:0] sext_ln38_46_fu_3393_p1; +wire signed [63:0] sext_ln38_47_fu_3403_p1; +wire signed [63:0] sext_ln38_48_fu_3428_p1; +wire signed [63:0] sext_ln38_49_fu_3438_p1; +wire signed [63:0] sext_ln38_50_fu_3478_p1; +wire signed [63:0] sext_ln38_51_fu_3488_p1; +wire signed [63:0] sext_ln38_52_fu_3513_p1; +wire signed [63:0] sext_ln38_53_fu_3523_p1; +wire signed [63:0] sext_ln38_54_fu_3553_p1; +wire signed [63:0] sext_ln38_55_fu_3563_p1; +wire signed [63:0] sext_ln38_56_fu_3588_p1; +wire signed [63:0] sext_ln38_57_fu_3598_p1; +wire signed [63:0] sext_ln38_58_fu_3633_p1; +wire signed [63:0] sext_ln38_59_fu_3643_p1; +wire signed [63:0] sext_ln38_60_fu_3668_p1; +wire signed [63:0] sext_ln38_61_fu_3678_p1; +wire signed [63:0] sext_ln38_62_fu_3708_p1; +wire signed [63:0] sext_ln38_63_fu_3718_p1; +wire [63:0] zext_ln42_fu_3796_p1; +wire [63:0] empty_6_fu_1497_p1; +wire [63:0] empty_fu_1507_p1; +wire [63:0] empty_5_fu_1516_p1; +wire ap_block_pp2_stage0_01001; +wire [31:0] zext_ln31_fu_1559_p1; +wire [36:0] or_ln38_fu_1591_p2; +wire [36:0] or_ln38_1_fu_1606_p2; +wire [36:0] or_ln38_2_fu_1620_p2; +wire [36:0] or_ln38_3_fu_1634_p2; +wire [36:0] or_ln38_4_fu_1648_p2; +wire [36:0] or_ln38_5_fu_1662_p2; +wire [36:0] or_ln38_6_fu_1676_p2; +wire [36:0] or_ln38_7_fu_1690_p2; +wire [36:0] or_ln38_8_fu_1704_p2; +wire [36:0] or_ln38_9_fu_1718_p2; +wire [36:0] or_ln38_10_fu_1732_p2; +wire [36:0] or_ln38_11_fu_1746_p2; +wire [36:0] or_ln38_12_fu_1760_p2; +wire [36:0] or_ln38_13_fu_1774_p2; +wire [36:0] or_ln38_14_fu_1788_p2; +wire [36:0] or_ln38_15_fu_1802_p2; +wire [36:0] or_ln38_16_fu_1816_p2; +wire [36:0] or_ln38_17_fu_1830_p2; +wire [36:0] or_ln38_18_fu_1844_p2; +wire [36:0] or_ln38_19_fu_1858_p2; +wire [36:0] or_ln38_20_fu_1872_p2; +wire [36:0] or_ln38_21_fu_1886_p2; +wire [36:0] or_ln38_22_fu_1900_p2; +wire [36:0] or_ln38_23_fu_1914_p2; +wire [36:0] or_ln38_24_fu_1928_p2; +wire [36:0] or_ln38_25_fu_1942_p2; +wire [36:0] or_ln38_26_fu_1956_p2; +wire [36:0] or_ln38_27_fu_1970_p2; +wire [36:0] or_ln38_28_fu_1984_p2; +wire [36:0] or_ln38_29_fu_1998_p2; +wire [36:0] or_ln38_30_fu_2012_p2; +wire [36:0] or_ln38_31_fu_2026_p2; +wire [36:0] or_ln38_32_fu_2040_p2; +wire [36:0] or_ln38_33_fu_2054_p2; +wire [36:0] or_ln38_34_fu_2068_p2; +wire [36:0] or_ln38_35_fu_2082_p2; +wire [36:0] or_ln38_36_fu_2096_p2; +wire [36:0] or_ln38_37_fu_2110_p2; +wire [36:0] or_ln38_38_fu_2124_p2; +wire [36:0] or_ln38_39_fu_2138_p2; +wire [36:0] or_ln38_40_fu_2152_p2; +wire [36:0] or_ln38_41_fu_2166_p2; +wire [36:0] or_ln38_42_fu_2180_p2; +wire [36:0] or_ln38_43_fu_2194_p2; +wire [36:0] or_ln38_44_fu_2208_p2; +wire [36:0] or_ln38_45_fu_2222_p2; +wire [36:0] or_ln38_46_fu_2236_p2; +wire [36:0] or_ln38_47_fu_2250_p2; +wire [36:0] or_ln38_48_fu_2264_p2; +wire [36:0] or_ln38_49_fu_2278_p2; +wire [36:0] or_ln38_50_fu_2292_p2; +wire [36:0] or_ln38_51_fu_2306_p2; +wire [36:0] or_ln38_52_fu_2320_p2; +wire [36:0] or_ln38_53_fu_2334_p2; +wire [36:0] or_ln38_54_fu_2348_p2; +wire [36:0] or_ln38_55_fu_2362_p2; +wire [36:0] or_ln38_56_fu_2376_p2; +wire [36:0] or_ln38_57_fu_2390_p2; +wire [36:0] or_ln38_58_fu_2404_p2; +wire [36:0] or_ln38_59_fu_2418_p2; +wire [36:0] or_ln38_60_fu_2432_p2; +wire [36:0] or_ln38_61_fu_2446_p2; +wire [36:0] or_ln38_62_fu_2460_p2; +wire [13:0] add_ln38_64_fu_2501_p2; +wire [13:0] add_ln38_127_fu_2512_p2; +wire [13:0] add_ln38_65_fu_2522_p2; +wire [13:0] add_ln38_66_fu_2532_p2; +wire signed [31:0] mul_ln38_fu_2542_p0; +wire signed [31:0] mul_ln38_1_fu_2547_p0; +wire [13:0] add_ln38_67_fu_2552_p2; +wire [13:0] add_ln38_68_fu_2562_p2; +wire signed [31:0] mul_ln38_2_fu_2572_p0; +wire signed [31:0] mul_ln38_3_fu_2577_p0; +wire [31:0] mul_ln38_2_fu_2572_p2; +wire [31:0] add_ln38_fu_2582_p2; +wire [31:0] add_ln38_1_fu_2587_p2; +wire [13:0] add_ln38_69_fu_2598_p2; +wire [13:0] add_ln38_70_fu_2608_p2; +wire signed [31:0] mul_ln38_4_fu_2618_p0; +wire signed [31:0] mul_ln38_5_fu_2623_p0; +wire [31:0] mul_ln38_4_fu_2618_p2; +wire [13:0] add_ln38_71_fu_2633_p2; +wire [13:0] add_ln38_72_fu_2643_p2; +wire signed [31:0] mul_ln38_6_fu_2653_p0; +wire signed [31:0] mul_ln38_7_fu_2658_p0; +wire [31:0] mul_ln38_6_fu_2653_p2; +wire [31:0] add_ln38_4_fu_2663_p2; +wire [31:0] add_ln38_5_fu_2668_p2; +wire [13:0] add_ln38_73_fu_2678_p2; +wire [13:0] add_ln38_74_fu_2688_p2; +wire signed [31:0] mul_ln38_8_fu_2698_p0; +wire signed [31:0] mul_ln38_9_fu_2703_p0; +wire [31:0] mul_ln38_8_fu_2698_p2; +wire [13:0] add_ln38_75_fu_2713_p2; +wire [13:0] add_ln38_76_fu_2723_p2; +wire signed [31:0] mul_ln38_10_fu_2733_p0; +wire signed [31:0] mul_ln38_11_fu_2738_p0; +wire [31:0] mul_ln38_10_fu_2733_p2; +wire [31:0] add_ln38_8_fu_2743_p2; +wire [13:0] add_ln38_77_fu_2753_p2; +wire [13:0] add_ln38_78_fu_2763_p2; +wire signed [31:0] mul_ln38_12_fu_2773_p0; +wire signed [31:0] mul_ln38_13_fu_2778_p0; +wire [31:0] mul_ln38_12_fu_2773_p2; +wire [13:0] add_ln38_79_fu_2788_p2; +wire [13:0] add_ln38_80_fu_2798_p2; +wire signed [31:0] mul_ln38_14_fu_2808_p0; +wire signed [31:0] mul_ln38_15_fu_2813_p0; +wire [31:0] mul_ln38_14_fu_2808_p2; +wire [31:0] add_ln38_11_fu_2818_p2; +wire [31:0] add_ln38_12_fu_2823_p2; +wire [31:0] add_ln38_13_fu_2828_p2; +wire [13:0] add_ln38_81_fu_2838_p2; +wire [13:0] add_ln38_82_fu_2848_p2; +wire signed [31:0] mul_ln38_16_fu_2858_p0; +wire signed [31:0] mul_ln38_17_fu_2863_p0; +wire [31:0] mul_ln38_16_fu_2858_p2; +wire [13:0] add_ln38_83_fu_2873_p2; +wire [13:0] add_ln38_84_fu_2883_p2; +wire signed [31:0] mul_ln38_18_fu_2893_p0; +wire signed [31:0] mul_ln38_19_fu_2898_p0; +wire [31:0] mul_ln38_18_fu_2893_p2; +wire [31:0] add_ln38_16_fu_2903_p2; +wire [13:0] add_ln38_85_fu_2913_p2; +wire [13:0] add_ln38_86_fu_2923_p2; +wire signed [31:0] mul_ln38_20_fu_2933_p0; +wire signed [31:0] mul_ln38_21_fu_2938_p0; +wire [31:0] mul_ln38_20_fu_2933_p2; +wire [13:0] add_ln38_87_fu_2948_p2; +wire [13:0] add_ln38_88_fu_2958_p2; +wire signed [31:0] mul_ln38_22_fu_2968_p0; +wire signed [31:0] mul_ln38_23_fu_2973_p0; +wire [31:0] mul_ln38_22_fu_2968_p2; +wire [31:0] add_ln38_19_fu_2978_p2; +wire [31:0] add_ln38_20_fu_2983_p2; +wire [13:0] add_ln38_89_fu_2993_p2; +wire [13:0] add_ln38_90_fu_3003_p2; +wire signed [31:0] mul_ln38_24_fu_3013_p0; +wire signed [31:0] mul_ln38_25_fu_3018_p0; +wire [31:0] mul_ln38_24_fu_3013_p2; +wire [13:0] add_ln38_91_fu_3028_p2; +wire [13:0] add_ln38_92_fu_3038_p2; +wire signed [31:0] mul_ln38_26_fu_3048_p0; +wire signed [31:0] mul_ln38_27_fu_3053_p0; +wire [31:0] mul_ln38_26_fu_3048_p2; +wire [31:0] add_ln38_23_fu_3058_p2; +wire [13:0] add_ln38_93_fu_3068_p2; +wire [13:0] add_ln38_94_fu_3078_p2; +wire signed [31:0] mul_ln38_28_fu_3088_p0; +wire signed [31:0] mul_ln38_29_fu_3093_p0; +wire [31:0] mul_ln38_28_fu_3088_p2; +wire [13:0] add_ln38_95_fu_3103_p2; +wire [13:0] add_ln38_96_fu_3113_p2; +wire signed [31:0] mul_ln38_30_fu_3123_p0; +wire signed [31:0] mul_ln38_31_fu_3128_p0; +wire [31:0] mul_ln38_30_fu_3123_p2; +wire [31:0] add_ln38_26_fu_3133_p2; +wire [31:0] add_ln38_27_fu_3138_p2; +wire [31:0] add_ln38_28_fu_3143_p2; +wire [31:0] add_ln38_29_fu_3148_p2; +wire [13:0] add_ln38_97_fu_3158_p2; +wire [13:0] add_ln38_98_fu_3168_p2; +wire signed [31:0] mul_ln38_32_fu_3178_p0; +wire signed [31:0] mul_ln38_33_fu_3183_p0; +wire [31:0] mul_ln38_32_fu_3178_p2; +wire [13:0] add_ln38_99_fu_3193_p2; +wire [13:0] add_ln38_100_fu_3203_p2; +wire signed [31:0] mul_ln38_34_fu_3213_p0; +wire signed [31:0] mul_ln38_35_fu_3218_p0; +wire [31:0] mul_ln38_34_fu_3213_p2; +wire [31:0] add_ln38_32_fu_3223_p2; +wire [13:0] add_ln38_101_fu_3233_p2; +wire [13:0] add_ln38_102_fu_3243_p2; +wire signed [31:0] mul_ln38_36_fu_3253_p0; +wire signed [31:0] mul_ln38_37_fu_3258_p0; +wire [31:0] mul_ln38_36_fu_3253_p2; +wire [13:0] add_ln38_103_fu_3268_p2; +wire [13:0] add_ln38_104_fu_3278_p2; +wire signed [31:0] mul_ln38_38_fu_3288_p0; +wire signed [31:0] mul_ln38_39_fu_3293_p0; +wire [31:0] mul_ln38_38_fu_3288_p2; +wire [31:0] add_ln38_35_fu_3298_p2; +wire [31:0] add_ln38_36_fu_3303_p2; +wire [13:0] add_ln38_105_fu_3313_p2; +wire [13:0] add_ln38_106_fu_3323_p2; +wire signed [31:0] mul_ln38_40_fu_3333_p0; +wire signed [31:0] mul_ln38_41_fu_3338_p0; +wire [31:0] mul_ln38_40_fu_3333_p2; +wire [13:0] add_ln38_107_fu_3348_p2; +wire [13:0] add_ln38_108_fu_3358_p2; +wire signed [31:0] mul_ln38_42_fu_3368_p0; +wire signed [31:0] mul_ln38_43_fu_3373_p0; +wire [31:0] mul_ln38_42_fu_3368_p2; +wire [31:0] add_ln38_39_fu_3378_p2; +wire [13:0] add_ln38_109_fu_3388_p2; +wire [13:0] add_ln38_110_fu_3398_p2; +wire signed [31:0] mul_ln38_44_fu_3408_p0; +wire signed [31:0] mul_ln38_45_fu_3413_p0; +wire [31:0] mul_ln38_44_fu_3408_p2; +wire [13:0] add_ln38_111_fu_3423_p2; +wire [13:0] add_ln38_112_fu_3433_p2; +wire signed [31:0] mul_ln38_46_fu_3443_p0; +wire signed [31:0] mul_ln38_47_fu_3448_p0; +wire [31:0] mul_ln38_46_fu_3443_p2; +wire [31:0] add_ln38_42_fu_3453_p2; +wire [31:0] add_ln38_43_fu_3458_p2; +wire [31:0] add_ln38_44_fu_3463_p2; +wire [13:0] add_ln38_113_fu_3473_p2; +wire [13:0] add_ln38_114_fu_3483_p2; +wire signed [31:0] mul_ln38_48_fu_3493_p0; +wire signed [31:0] mul_ln38_49_fu_3498_p0; +wire [31:0] mul_ln38_48_fu_3493_p2; +wire [13:0] add_ln38_115_fu_3508_p2; +wire [13:0] add_ln38_116_fu_3518_p2; +wire signed [31:0] mul_ln38_50_fu_3528_p0; +wire signed [31:0] mul_ln38_51_fu_3533_p0; +wire [31:0] mul_ln38_50_fu_3528_p2; +wire [31:0] add_ln38_47_fu_3538_p2; +wire [13:0] add_ln38_117_fu_3548_p2; +wire [13:0] add_ln38_118_fu_3558_p2; +wire signed [31:0] mul_ln38_52_fu_3568_p0; +wire signed [31:0] mul_ln38_53_fu_3573_p0; +wire [31:0] mul_ln38_52_fu_3568_p2; +wire [13:0] add_ln38_119_fu_3583_p2; +wire [13:0] add_ln38_120_fu_3593_p2; +wire signed [31:0] mul_ln38_54_fu_3603_p0; +wire signed [31:0] mul_ln38_55_fu_3608_p0; +wire [31:0] mul_ln38_54_fu_3603_p2; +wire [31:0] add_ln38_50_fu_3613_p2; +wire [31:0] add_ln38_51_fu_3618_p2; +wire [13:0] add_ln38_121_fu_3628_p2; +wire [13:0] add_ln38_122_fu_3638_p2; +wire signed [31:0] mul_ln38_56_fu_3648_p0; +wire signed [31:0] mul_ln38_57_fu_3653_p0; +wire [31:0] mul_ln38_56_fu_3648_p2; +wire [13:0] add_ln38_123_fu_3663_p2; +wire [13:0] add_ln38_124_fu_3673_p2; +wire signed [31:0] mul_ln38_58_fu_3683_p0; +wire signed [31:0] mul_ln38_59_fu_3688_p0; +wire [31:0] mul_ln38_58_fu_3683_p2; +wire [31:0] add_ln38_54_fu_3693_p2; +wire [13:0] add_ln38_125_fu_3703_p2; +wire [13:0] add_ln38_126_fu_3713_p2; +wire signed [31:0] mul_ln38_60_fu_3723_p0; +wire signed [31:0] mul_ln38_61_fu_3728_p0; +wire [31:0] mul_ln38_60_fu_3723_p2; +wire signed [31:0] mul_ln38_62_fu_3738_p0; +wire signed [31:0] mul_ln38_63_fu_3743_p0; +wire [31:0] mul_ln38_63_fu_3743_p2; +wire [31:0] mul_ln38_62_fu_3738_p2; +wire [31:0] add_ln38_57_fu_3748_p2; +wire [31:0] add_ln38_58_fu_3754_p2; +wire [31:0] add_ln38_59_fu_3759_p2; +wire [31:0] add_ln38_60_fu_3764_p2; +wire [31:0] add_ln38_62_fu_3774_p2; +reg [90:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp2; +wire ap_enable_pp2; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 91'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp2_iter2 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_3834), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_3828), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(out_loc_load_reg_5321), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +in1_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_address0), + .ce0(in1_loc_ce0), + .we0(in1_loc_we0), + .d0(in1_mem_addr_read_reg_3849), + .q0(in1_loc_q0), + .address1(in1_loc_address1), + .ce1(in1_loc_ce1), + .q1(in1_loc_q1) +); + +mmult_in1_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +in2_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_address0), + .ce0(in2_loc_ce0), + .we0(in2_loc_we0), + .d0(in2_mem_addr_read_reg_3863), + .q0(in2_loc_q0), + .address1(in2_loc_address1), + .ce1(in2_loc_ce1), + .q1(in2_loc_q1) +); + +mmult_out_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .we0(out_loc_we0), + .d0(out_loc_d0), + .q0(out_loc_q0) +); + +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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp0_stage0) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b0 == ap_block_pp0_stage0_subdone))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp1_stage0) & (1'b1 == ap_condition_pp1_exit_iter0_state19) & (1'b0 == ap_block_pp1_stage0_subdone))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_condition_pp2_exit_iter0_state90) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_subdone))) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_enable_reg_pp2_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp2_exit_iter0_state90)) begin + ap_enable_reg_pp2_iter1 <= (1'b1 ^ ap_condition_pp2_exit_iter0_state90); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state22)) begin + i_0_reg_1434 <= 31'd0; + end else if (((icmp_ln33_fu_2481_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state56))) begin + i_0_reg_1434 <= i_reg_3872; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state89)) begin + j_0_reg_1445 <= j_reg_4596; + end else if ((1'b1 == ap_CS_fsm_state55)) begin + j_0_reg_1445 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_3840 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_1410 <= add_ln27_reg_3844; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_1410 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_1422 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_1422 <= add_ln28_reg_3858; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + phi_ln42_reg_1456 <= 13'd0; + end else if (((icmp_ln42_fu_3784_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + phi_ln42_reg_1456 <= add_ln42_fu_3790_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + add_ln27_reg_3844 <= add_ln27_fu_1531_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + add_ln28_reg_3858 <= add_ln28_fu_1548_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state63)) begin + add_ln38_10_reg_4817 <= add_ln38_10_fu_2783_p2; + mul_ln38_13_reg_4812 <= mul_ln38_13_fu_2778_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state64)) begin + add_ln38_14_reg_4837 <= add_ln38_14_fu_2833_p2; + mul_ln38_15_reg_4832 <= mul_ln38_15_fu_2813_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state65)) begin + add_ln38_15_reg_4857 <= add_ln38_15_fu_2868_p2; + mul_ln38_17_reg_4852 <= mul_ln38_17_fu_2863_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state66)) begin + add_ln38_17_reg_4877 <= add_ln38_17_fu_2908_p2; + mul_ln38_19_reg_4872 <= mul_ln38_19_fu_2898_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state67)) begin + add_ln38_18_reg_4897 <= add_ln38_18_fu_2943_p2; + mul_ln38_21_reg_4892 <= mul_ln38_21_fu_2938_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state68)) begin + add_ln38_21_reg_4917 <= add_ln38_21_fu_2988_p2; + mul_ln38_23_reg_4912 <= mul_ln38_23_fu_2973_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state69)) begin + add_ln38_22_reg_4937 <= add_ln38_22_fu_3023_p2; + mul_ln38_25_reg_4932 <= mul_ln38_25_fu_3018_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state70)) begin + add_ln38_24_reg_4957 <= add_ln38_24_fu_3063_p2; + mul_ln38_27_reg_4952 <= mul_ln38_27_fu_3053_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state71)) begin + add_ln38_25_reg_4977 <= add_ln38_25_fu_3098_p2; + mul_ln38_29_reg_4972 <= mul_ln38_29_fu_3093_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state58)) begin + add_ln38_2_reg_4717 <= add_ln38_2_fu_2592_p2; + mul_ln38_3_reg_4712 <= mul_ln38_3_fu_2577_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state72)) begin + add_ln38_30_reg_4997 <= add_ln38_30_fu_3153_p2; + mul_ln38_31_reg_4992 <= mul_ln38_31_fu_3128_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state73)) begin + add_ln38_31_reg_5017 <= add_ln38_31_fu_3188_p2; + mul_ln38_33_reg_5012 <= mul_ln38_33_fu_3183_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state74)) begin + add_ln38_33_reg_5037 <= add_ln38_33_fu_3228_p2; + mul_ln38_35_reg_5032 <= mul_ln38_35_fu_3218_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state75)) begin + add_ln38_34_reg_5057 <= add_ln38_34_fu_3263_p2; + mul_ln38_37_reg_5052 <= mul_ln38_37_fu_3258_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state76)) begin + add_ln38_37_reg_5077 <= add_ln38_37_fu_3308_p2; + mul_ln38_39_reg_5072 <= mul_ln38_39_fu_3293_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state77)) begin + add_ln38_38_reg_5097 <= add_ln38_38_fu_3343_p2; + mul_ln38_41_reg_5092 <= mul_ln38_41_fu_3338_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state59)) begin + add_ln38_3_reg_4737 <= add_ln38_3_fu_2628_p2; + mul_ln38_5_reg_4732 <= mul_ln38_5_fu_2623_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state78)) begin + add_ln38_40_reg_5117 <= add_ln38_40_fu_3383_p2; + mul_ln38_43_reg_5112 <= mul_ln38_43_fu_3373_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state79)) begin + add_ln38_41_reg_5137 <= add_ln38_41_fu_3418_p2; + mul_ln38_45_reg_5132 <= mul_ln38_45_fu_3413_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state80)) begin + add_ln38_45_reg_5157 <= add_ln38_45_fu_3468_p2; + mul_ln38_47_reg_5152 <= mul_ln38_47_fu_3448_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state81)) begin + add_ln38_46_reg_5177 <= add_ln38_46_fu_3503_p2; + mul_ln38_49_reg_5172 <= mul_ln38_49_fu_3498_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state82)) begin + add_ln38_48_reg_5197 <= add_ln38_48_fu_3543_p2; + mul_ln38_51_reg_5192 <= mul_ln38_51_fu_3533_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state83)) begin + add_ln38_49_reg_5217 <= add_ln38_49_fu_3578_p2; + mul_ln38_53_reg_5212 <= mul_ln38_53_fu_3573_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state84)) begin + add_ln38_52_reg_5237 <= add_ln38_52_fu_3623_p2; + mul_ln38_55_reg_5232 <= mul_ln38_55_fu_3608_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state85)) begin + add_ln38_53_reg_5257 <= add_ln38_53_fu_3658_p2; + mul_ln38_57_reg_5252 <= mul_ln38_57_fu_3653_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state86)) begin + add_ln38_55_reg_5277 <= add_ln38_55_fu_3698_p2; + mul_ln38_59_reg_5272 <= mul_ln38_59_fu_3688_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state87)) begin + add_ln38_56_reg_5297 <= add_ln38_56_fu_3733_p2; + mul_ln38_61_reg_5292 <= mul_ln38_61_fu_3728_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state88)) begin + add_ln38_61_reg_5302 <= add_ln38_61_fu_3769_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state60)) begin + add_ln38_6_reg_4757 <= add_ln38_6_fu_2673_p2; + mul_ln38_7_reg_4752 <= mul_ln38_7_fu_2658_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state61)) begin + add_ln38_7_reg_4777 <= add_ln38_7_fu_2708_p2; + mul_ln38_9_reg_4772 <= mul_ln38_9_fu_2703_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state62)) begin + add_ln38_9_reg_4797 <= add_ln38_9_fu_2748_p2; + mul_ln38_11_reg_4792 <= mul_ln38_11_fu_2738_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_3801 <= dim; + in3_reg_3817 <= {{in1[31:2]}}; + in_reg_3812 <= {{in2[31:2]}}; + out5_reg_3807 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23))) begin + i_reg_3872 <= i_fu_1568_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + icmp_ln27_reg_3840 <= icmp_ln27_fu_1525_p2; + icmp_ln27_reg_3840_pp0_iter1_reg <= icmp_ln27_reg_3840; + phi_ln27_reg_1410_pp0_iter1_reg <= phi_ln27_reg_1410; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + icmp_ln28_reg_3854 <= icmp_ln28_fu_1542_p2; + icmp_ln28_reg_3854_pp1_iter1_reg <= icmp_ln28_reg_3854; + phi_ln28_reg_1422_pp1_iter1_reg <= phi_ln28_reg_1422; + end +end + +always @ (posedge ap_clk) begin + if (((1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + icmp_ln42_reg_5307 <= icmp_ln42_fu_3784_p2; + icmp_ln42_reg_5307_pp2_iter1_reg <= icmp_ln42_reg_5307; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state29)) begin + in1_loc_load_10_reg_4068 <= in1_loc_q1; + in1_loc_load_11_reg_4073 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state30)) begin + in1_loc_load_12_reg_4088 <= in1_loc_q1; + in1_loc_load_13_reg_4093 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state31)) begin + in1_loc_load_14_reg_4108 <= in1_loc_q1; + in1_loc_load_15_reg_4113 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state32)) begin + in1_loc_load_16_reg_4128 <= in1_loc_q1; + in1_loc_load_17_reg_4133 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state33)) begin + in1_loc_load_18_reg_4148 <= in1_loc_q1; + in1_loc_load_19_reg_4153 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + in1_loc_load_1_reg_3973 <= in1_loc_q1; + in1_loc_load_reg_3968 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state34)) begin + in1_loc_load_20_reg_4168 <= in1_loc_q1; + in1_loc_load_21_reg_4173 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state35)) begin + in1_loc_load_22_reg_4188 <= in1_loc_q1; + in1_loc_load_23_reg_4193 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state36)) begin + in1_loc_load_24_reg_4208 <= in1_loc_q1; + in1_loc_load_25_reg_4213 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state37)) begin + in1_loc_load_26_reg_4228 <= in1_loc_q1; + in1_loc_load_27_reg_4233 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state38)) begin + in1_loc_load_28_reg_4248 <= in1_loc_q1; + in1_loc_load_29_reg_4253 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in1_loc_load_2_reg_3988 <= in1_loc_q1; + in1_loc_load_3_reg_3993 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state39)) begin + in1_loc_load_30_reg_4268 <= in1_loc_q1; + in1_loc_load_31_reg_4273 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state40)) begin + in1_loc_load_32_reg_4288 <= in1_loc_q1; + in1_loc_load_33_reg_4293 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state41)) begin + in1_loc_load_34_reg_4308 <= in1_loc_q1; + in1_loc_load_35_reg_4313 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state42)) begin + in1_loc_load_36_reg_4328 <= in1_loc_q1; + in1_loc_load_37_reg_4333 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state43)) begin + in1_loc_load_38_reg_4348 <= in1_loc_q1; + in1_loc_load_39_reg_4353 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state44)) begin + in1_loc_load_40_reg_4368 <= in1_loc_q1; + in1_loc_load_41_reg_4373 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state45)) begin + in1_loc_load_42_reg_4388 <= in1_loc_q1; + in1_loc_load_43_reg_4393 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state46)) begin + in1_loc_load_44_reg_4408 <= in1_loc_q1; + in1_loc_load_45_reg_4413 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state47)) begin + in1_loc_load_46_reg_4428 <= in1_loc_q1; + in1_loc_load_47_reg_4433 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state48)) begin + in1_loc_load_48_reg_4448 <= in1_loc_q1; + in1_loc_load_49_reg_4453 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state26)) begin + in1_loc_load_4_reg_4008 <= in1_loc_q1; + in1_loc_load_5_reg_4013 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state49)) begin + in1_loc_load_50_reg_4468 <= in1_loc_q1; + in1_loc_load_51_reg_4473 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state50)) begin + in1_loc_load_52_reg_4488 <= in1_loc_q1; + in1_loc_load_53_reg_4493 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state51)) begin + in1_loc_load_54_reg_4508 <= in1_loc_q1; + in1_loc_load_55_reg_4513 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state52)) begin + in1_loc_load_56_reg_4528 <= in1_loc_q1; + in1_loc_load_57_reg_4533 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state53)) begin + in1_loc_load_58_reg_4548 <= in1_loc_q1; + in1_loc_load_59_reg_4553 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state54)) begin + in1_loc_load_60_reg_4568 <= in1_loc_q1; + in1_loc_load_61_reg_4573 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state55)) begin + in1_loc_load_62_reg_4583 <= in1_loc_q1; + in1_loc_load_63_reg_4588 <= in1_loc_q0; + zext_ln38_cast_reg_4578[13 : 6] <= zext_ln38_cast_fu_2474_p3[13 : 6]; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state27)) begin + in1_loc_load_6_reg_4028 <= in1_loc_q1; + in1_loc_load_7_reg_4033 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state28)) begin + in1_loc_load_8_reg_4048 <= in1_loc_q1; + in1_loc_load_9_reg_4053 <= in1_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_3840 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_3849 <= in1_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_3854 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_3863 <= in2_mem_RDATA; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_3834[29 : 0] <= empty_5_fu_1516_p1[29 : 0]; + out_mem_addr_reg_3828[29 : 0] <= empty_fu_1507_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state56)) begin + j_reg_4596 <= j_fu_2486_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state57)) begin + mul_ln38_1_reg_4697 <= mul_ln38_1_fu_2547_p2; + mul_ln38_reg_4692 <= mul_ln38_fu_2542_p2; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln33_fu_2481_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state56))) begin + out_loc_addr_reg_4677 <= sext_ln38_64_fu_2517_p1; + trunc_ln38_1_reg_4601 <= trunc_ln38_1_fu_2497_p1; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln42_reg_5307 == 1'd0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + out_loc_load_reg_5321 <= out_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state23))) begin + tmp_2_reg_3877[36 : 6] <= tmp_2_fu_1574_p3[36 : 6]; + trunc_ln38_reg_3943 <= trunc_ln38_fu_1587_p1; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_1525_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_1542_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_3784_p2 == 1'd1)) begin + ap_condition_pp2_exit_iter0_state90 = 1'b1; + end else begin + ap_condition_pp2_exit_iter0_state90 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state97))) 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_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp2_iter2 == 1'b0) & (ap_enable_reg_pp2_iter1 == 1'b0) & (ap_enable_reg_pp2_iter0 == 1'b0))) begin + ap_idle_pp2 = 1'b1; + end else begin + ap_idle_pp2 = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln27_reg_3840 == 1'd0) & (1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_phi_mux_phi_ln27_phi_fu_1414_p4 = add_ln27_reg_3844; + end else begin + ap_phi_mux_phi_ln27_phi_fu_1414_p4 = phi_ln27_reg_1410; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + ap_phi_mux_phi_ln28_phi_fu_1426_p4 = add_ln28_reg_3858; + end else begin + ap_phi_mux_phi_ln28_phi_fu_1426_p4 = phi_ln28_reg_1422; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state97))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state54)) begin + in1_loc_address0 = tmp_64_fu_2465_p3; + end else if ((1'b1 == ap_CS_fsm_state53)) begin + in1_loc_address0 = tmp_62_fu_2437_p3; + end else if ((1'b1 == ap_CS_fsm_state52)) begin + in1_loc_address0 = tmp_60_fu_2409_p3; + end else if ((1'b1 == ap_CS_fsm_state51)) begin + in1_loc_address0 = tmp_58_fu_2381_p3; + end else if ((1'b1 == ap_CS_fsm_state50)) begin + in1_loc_address0 = tmp_56_fu_2353_p3; + end else if ((1'b1 == ap_CS_fsm_state49)) begin + in1_loc_address0 = tmp_54_fu_2325_p3; + end else if ((1'b1 == ap_CS_fsm_state48)) begin + in1_loc_address0 = tmp_52_fu_2297_p3; + end else if ((1'b1 == ap_CS_fsm_state47)) begin + in1_loc_address0 = tmp_50_fu_2269_p3; + end else if ((1'b1 == ap_CS_fsm_state46)) begin + in1_loc_address0 = tmp_48_fu_2241_p3; + end else if ((1'b1 == ap_CS_fsm_state45)) begin + in1_loc_address0 = tmp_46_fu_2213_p3; + end else if ((1'b1 == ap_CS_fsm_state44)) begin + in1_loc_address0 = tmp_44_fu_2185_p3; + end else if ((1'b1 == ap_CS_fsm_state43)) begin + in1_loc_address0 = tmp_42_fu_2157_p3; + end else if ((1'b1 == ap_CS_fsm_state42)) begin + in1_loc_address0 = tmp_40_fu_2129_p3; + end else if ((1'b1 == ap_CS_fsm_state41)) begin + in1_loc_address0 = tmp_38_fu_2101_p3; + end else if ((1'b1 == ap_CS_fsm_state40)) begin + in1_loc_address0 = tmp_36_fu_2073_p3; + end else if ((1'b1 == ap_CS_fsm_state39)) begin + in1_loc_address0 = tmp_34_fu_2045_p3; + end else if ((1'b1 == ap_CS_fsm_state38)) begin + in1_loc_address0 = tmp_32_fu_2017_p3; + end else if ((1'b1 == ap_CS_fsm_state37)) begin + in1_loc_address0 = tmp_30_fu_1989_p3; + end else if ((1'b1 == ap_CS_fsm_state36)) begin + in1_loc_address0 = tmp_28_fu_1961_p3; + end else if ((1'b1 == ap_CS_fsm_state35)) begin + in1_loc_address0 = tmp_26_fu_1933_p3; + end else if ((1'b1 == ap_CS_fsm_state34)) begin + in1_loc_address0 = tmp_24_fu_1905_p3; + end else if ((1'b1 == ap_CS_fsm_state33)) begin + in1_loc_address0 = tmp_22_fu_1877_p3; + end else if ((1'b1 == ap_CS_fsm_state32)) begin + in1_loc_address0 = tmp_20_fu_1849_p3; + end else if ((1'b1 == ap_CS_fsm_state31)) begin + in1_loc_address0 = tmp_18_fu_1821_p3; + end else if ((1'b1 == ap_CS_fsm_state30)) begin + in1_loc_address0 = tmp_16_fu_1793_p3; + end else if ((1'b1 == ap_CS_fsm_state29)) begin + in1_loc_address0 = tmp_14_fu_1765_p3; + end else if ((1'b1 == ap_CS_fsm_state28)) begin + in1_loc_address0 = tmp_12_fu_1737_p3; + end else if ((1'b1 == ap_CS_fsm_state27)) begin + in1_loc_address0 = tmp_10_fu_1709_p3; + end else if ((1'b1 == ap_CS_fsm_state26)) begin + in1_loc_address0 = tmp_9_fu_1681_p3; + end else if ((1'b1 == ap_CS_fsm_state25)) begin + in1_loc_address0 = tmp_7_fu_1653_p3; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + in1_loc_address0 = tmp_5_fu_1625_p3; + end else if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_address0 = zext_ln38_fu_1582_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_address0 = zext_ln27_fu_1537_p1; + end else begin + in1_loc_address0 = 'bx; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state54)) begin + in1_loc_address1 = tmp_63_fu_2451_p3; + end else if ((1'b1 == ap_CS_fsm_state53)) begin + in1_loc_address1 = tmp_61_fu_2423_p3; + end else if ((1'b1 == ap_CS_fsm_state52)) begin + in1_loc_address1 = tmp_59_fu_2395_p3; + end else if ((1'b1 == ap_CS_fsm_state51)) begin + in1_loc_address1 = tmp_57_fu_2367_p3; + end else if ((1'b1 == ap_CS_fsm_state50)) begin + in1_loc_address1 = tmp_55_fu_2339_p3; + end else if ((1'b1 == ap_CS_fsm_state49)) begin + in1_loc_address1 = tmp_53_fu_2311_p3; + end else if ((1'b1 == ap_CS_fsm_state48)) begin + in1_loc_address1 = tmp_51_fu_2283_p3; + end else if ((1'b1 == ap_CS_fsm_state47)) begin + in1_loc_address1 = tmp_49_fu_2255_p3; + end else if ((1'b1 == ap_CS_fsm_state46)) begin + in1_loc_address1 = tmp_47_fu_2227_p3; + end else if ((1'b1 == ap_CS_fsm_state45)) begin + in1_loc_address1 = tmp_45_fu_2199_p3; + end else if ((1'b1 == ap_CS_fsm_state44)) begin + in1_loc_address1 = tmp_43_fu_2171_p3; + end else if ((1'b1 == ap_CS_fsm_state43)) begin + in1_loc_address1 = tmp_41_fu_2143_p3; + end else if ((1'b1 == ap_CS_fsm_state42)) begin + in1_loc_address1 = tmp_39_fu_2115_p3; + end else if ((1'b1 == ap_CS_fsm_state41)) begin + in1_loc_address1 = tmp_37_fu_2087_p3; + end else if ((1'b1 == ap_CS_fsm_state40)) begin + in1_loc_address1 = tmp_35_fu_2059_p3; + end else if ((1'b1 == ap_CS_fsm_state39)) begin + in1_loc_address1 = tmp_33_fu_2031_p3; + end else if ((1'b1 == ap_CS_fsm_state38)) begin + in1_loc_address1 = tmp_31_fu_2003_p3; + end else if ((1'b1 == ap_CS_fsm_state37)) begin + in1_loc_address1 = tmp_29_fu_1975_p3; + end else if ((1'b1 == ap_CS_fsm_state36)) begin + in1_loc_address1 = tmp_27_fu_1947_p3; + end else if ((1'b1 == ap_CS_fsm_state35)) begin + in1_loc_address1 = tmp_25_fu_1919_p3; + end else if ((1'b1 == ap_CS_fsm_state34)) begin + in1_loc_address1 = tmp_23_fu_1891_p3; + end else if ((1'b1 == ap_CS_fsm_state33)) begin + in1_loc_address1 = tmp_21_fu_1863_p3; + end else if ((1'b1 == ap_CS_fsm_state32)) begin + in1_loc_address1 = tmp_19_fu_1835_p3; + end else if ((1'b1 == ap_CS_fsm_state31)) begin + in1_loc_address1 = tmp_17_fu_1807_p3; + end else if ((1'b1 == ap_CS_fsm_state30)) begin + in1_loc_address1 = tmp_15_fu_1779_p3; + end else if ((1'b1 == ap_CS_fsm_state29)) begin + in1_loc_address1 = tmp_13_fu_1751_p3; + end else if ((1'b1 == ap_CS_fsm_state28)) begin + in1_loc_address1 = tmp_11_fu_1723_p3; + end else if ((1'b1 == ap_CS_fsm_state27)) begin + in1_loc_address1 = tmp_s_fu_1695_p3; + end else if ((1'b1 == ap_CS_fsm_state26)) begin + in1_loc_address1 = tmp_8_fu_1667_p3; + end else if ((1'b1 == ap_CS_fsm_state25)) begin + in1_loc_address1 = tmp_6_fu_1639_p3; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + in1_loc_address1 = tmp_4_fu_1611_p3; + end else if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_address1 = tmp_3_fu_1597_p3; + end else begin + in1_loc_address1 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state51) | (1'b1 == ap_CS_fsm_state50) | (1'b1 == ap_CS_fsm_state49) | (1'b1 == ap_CS_fsm_state48) | (1'b1 == ap_CS_fsm_state47) | (1'b1 == ap_CS_fsm_state46) | (1'b1 == ap_CS_fsm_state45) | (1'b1 == ap_CS_fsm_state44) | (1'b1 == ap_CS_fsm_state43) | (1'b1 == ap_CS_fsm_state42) | (1'b1 == ap_CS_fsm_state41) | (1'b1 == ap_CS_fsm_state40) | (1'b1 == ap_CS_fsm_state39) | (1'b1 == ap_CS_fsm_state38) | (1'b1 == ap_CS_fsm_state37) | (1'b1 == ap_CS_fsm_state36) | (1'b1 == ap_CS_fsm_state35) | (1'b1 == ap_CS_fsm_state34) | (1'b1 == ap_CS_fsm_state33) | (1'b1 == ap_CS_fsm_state32) | (1'b1 == ap_CS_fsm_state31) | (1'b1 == ap_CS_fsm_state30) | (1'b1 == ap_CS_fsm_state29) | (1'b1 == ap_CS_fsm_state28) | (1'b1 == ap_CS_fsm_state27) | (1'b1 == ap_CS_fsm_state26) | (1'b1 == ap_CS_fsm_state25) | (1'b1 == ap_CS_fsm_state24) | (1'b1 == ap_CS_fsm_state54) | (1'b1 == ap_CS_fsm_state53) | (1'b1 == ap_CS_fsm_state52) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_ce0 = 1'b1; + end else begin + in1_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state51) | (1'b1 == ap_CS_fsm_state50) | (1'b1 == ap_CS_fsm_state49) | (1'b1 == ap_CS_fsm_state48) | (1'b1 == ap_CS_fsm_state47) | (1'b1 == ap_CS_fsm_state46) | (1'b1 == ap_CS_fsm_state45) | (1'b1 == ap_CS_fsm_state44) | (1'b1 == ap_CS_fsm_state43) | (1'b1 == ap_CS_fsm_state42) | (1'b1 == ap_CS_fsm_state41) | (1'b1 == ap_CS_fsm_state40) | (1'b1 == ap_CS_fsm_state39) | (1'b1 == ap_CS_fsm_state38) | (1'b1 == ap_CS_fsm_state37) | (1'b1 == ap_CS_fsm_state36) | (1'b1 == ap_CS_fsm_state35) | (1'b1 == ap_CS_fsm_state34) | (1'b1 == ap_CS_fsm_state33) | (1'b1 == ap_CS_fsm_state32) | (1'b1 == ap_CS_fsm_state31) | (1'b1 == ap_CS_fsm_state30) | (1'b1 == ap_CS_fsm_state29) | (1'b1 == ap_CS_fsm_state28) | (1'b1 == ap_CS_fsm_state27) | (1'b1 == ap_CS_fsm_state26) | (1'b1 == ap_CS_fsm_state25) | (1'b1 == ap_CS_fsm_state24) | (1'b1 == ap_CS_fsm_state54) | (1'b1 == ap_CS_fsm_state53) | (1'b1 == ap_CS_fsm_state52) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_ce1 = 1'b1; + end else begin + in1_loc_ce1 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_3840_pp0_iter1_reg == 1'd0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_we0 = 1'b1; + end else begin + in1_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_reg_3840 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln27_reg_3840 == 1'd0) & (1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state87)) begin + in2_loc_address0 = sext_ln38_63_fu_3718_p1; + end else if ((1'b1 == ap_CS_fsm_state86)) begin + in2_loc_address0 = sext_ln38_61_fu_3678_p1; + end else if ((1'b1 == ap_CS_fsm_state85)) begin + in2_loc_address0 = sext_ln38_59_fu_3643_p1; + end else if ((1'b1 == ap_CS_fsm_state84)) begin + in2_loc_address0 = sext_ln38_57_fu_3598_p1; + end else if ((1'b1 == ap_CS_fsm_state83)) begin + in2_loc_address0 = sext_ln38_55_fu_3563_p1; + end else if ((1'b1 == ap_CS_fsm_state82)) begin + in2_loc_address0 = sext_ln38_53_fu_3523_p1; + end else if ((1'b1 == ap_CS_fsm_state81)) begin + in2_loc_address0 = sext_ln38_51_fu_3488_p1; + end else if ((1'b1 == ap_CS_fsm_state80)) begin + in2_loc_address0 = sext_ln38_49_fu_3438_p1; + end else if ((1'b1 == ap_CS_fsm_state79)) begin + in2_loc_address0 = sext_ln38_47_fu_3403_p1; + end else if ((1'b1 == ap_CS_fsm_state78)) begin + in2_loc_address0 = sext_ln38_45_fu_3363_p1; + end else if ((1'b1 == ap_CS_fsm_state77)) begin + in2_loc_address0 = sext_ln38_43_fu_3328_p1; + end else if ((1'b1 == ap_CS_fsm_state76)) begin + in2_loc_address0 = sext_ln38_41_fu_3283_p1; + end else if ((1'b1 == ap_CS_fsm_state75)) begin + in2_loc_address0 = sext_ln38_39_fu_3248_p1; + end else if ((1'b1 == ap_CS_fsm_state74)) begin + in2_loc_address0 = sext_ln38_37_fu_3208_p1; + end else if ((1'b1 == ap_CS_fsm_state73)) begin + in2_loc_address0 = sext_ln38_35_fu_3173_p1; + end else if ((1'b1 == ap_CS_fsm_state72)) begin + in2_loc_address0 = sext_ln38_33_fu_3118_p1; + end else if ((1'b1 == ap_CS_fsm_state71)) begin + in2_loc_address0 = sext_ln38_31_fu_3083_p1; + end else if ((1'b1 == ap_CS_fsm_state70)) begin + in2_loc_address0 = sext_ln38_29_fu_3043_p1; + end else if ((1'b1 == ap_CS_fsm_state69)) begin + in2_loc_address0 = sext_ln38_27_fu_3008_p1; + end else if ((1'b1 == ap_CS_fsm_state68)) begin + in2_loc_address0 = sext_ln38_25_fu_2963_p1; + end else if ((1'b1 == ap_CS_fsm_state67)) begin + in2_loc_address0 = sext_ln38_23_fu_2928_p1; + end else if ((1'b1 == ap_CS_fsm_state66)) begin + in2_loc_address0 = sext_ln38_21_fu_2888_p1; + end else if ((1'b1 == ap_CS_fsm_state65)) begin + in2_loc_address0 = sext_ln38_19_fu_2853_p1; + end else if ((1'b1 == ap_CS_fsm_state64)) begin + in2_loc_address0 = sext_ln38_17_fu_2803_p1; + end else if ((1'b1 == ap_CS_fsm_state63)) begin + in2_loc_address0 = sext_ln38_15_fu_2768_p1; + end else if ((1'b1 == ap_CS_fsm_state62)) begin + in2_loc_address0 = sext_ln38_13_fu_2728_p1; + end else if ((1'b1 == ap_CS_fsm_state61)) begin + in2_loc_address0 = sext_ln38_11_fu_2693_p1; + end else if ((1'b1 == ap_CS_fsm_state60)) begin + in2_loc_address0 = sext_ln38_9_fu_2648_p1; + end else if ((1'b1 == ap_CS_fsm_state59)) begin + in2_loc_address0 = sext_ln38_7_fu_2613_p1; + end else if ((1'b1 == ap_CS_fsm_state58)) begin + in2_loc_address0 = sext_ln38_5_fu_2567_p1; + end else if ((1'b1 == ap_CS_fsm_state57)) begin + in2_loc_address0 = sext_ln38_3_fu_2537_p1; + end else if ((1'b1 == ap_CS_fsm_state56)) begin + in2_loc_address0 = sext_ln38_fu_2492_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_address0 = zext_ln28_fu_1554_p1; + end else begin + in2_loc_address0 = 'bx; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state87)) begin + in2_loc_address1 = sext_ln38_62_fu_3708_p1; + end else if ((1'b1 == ap_CS_fsm_state86)) begin + in2_loc_address1 = sext_ln38_60_fu_3668_p1; + end else if ((1'b1 == ap_CS_fsm_state85)) begin + in2_loc_address1 = sext_ln38_58_fu_3633_p1; + end else if ((1'b1 == ap_CS_fsm_state84)) begin + in2_loc_address1 = sext_ln38_56_fu_3588_p1; + end else if ((1'b1 == ap_CS_fsm_state83)) begin + in2_loc_address1 = sext_ln38_54_fu_3553_p1; + end else if ((1'b1 == ap_CS_fsm_state82)) begin + in2_loc_address1 = sext_ln38_52_fu_3513_p1; + end else if ((1'b1 == ap_CS_fsm_state81)) begin + in2_loc_address1 = sext_ln38_50_fu_3478_p1; + end else if ((1'b1 == ap_CS_fsm_state80)) begin + in2_loc_address1 = sext_ln38_48_fu_3428_p1; + end else if ((1'b1 == ap_CS_fsm_state79)) begin + in2_loc_address1 = sext_ln38_46_fu_3393_p1; + end else if ((1'b1 == ap_CS_fsm_state78)) begin + in2_loc_address1 = sext_ln38_44_fu_3353_p1; + end else if ((1'b1 == ap_CS_fsm_state77)) begin + in2_loc_address1 = sext_ln38_42_fu_3318_p1; + end else if ((1'b1 == ap_CS_fsm_state76)) begin + in2_loc_address1 = sext_ln38_40_fu_3273_p1; + end else if ((1'b1 == ap_CS_fsm_state75)) begin + in2_loc_address1 = sext_ln38_38_fu_3238_p1; + end else if ((1'b1 == ap_CS_fsm_state74)) begin + in2_loc_address1 = sext_ln38_36_fu_3198_p1; + end else if ((1'b1 == ap_CS_fsm_state73)) begin + in2_loc_address1 = sext_ln38_34_fu_3163_p1; + end else if ((1'b1 == ap_CS_fsm_state72)) begin + in2_loc_address1 = sext_ln38_32_fu_3108_p1; + end else if ((1'b1 == ap_CS_fsm_state71)) begin + in2_loc_address1 = sext_ln38_30_fu_3073_p1; + end else if ((1'b1 == ap_CS_fsm_state70)) begin + in2_loc_address1 = sext_ln38_28_fu_3033_p1; + end else if ((1'b1 == ap_CS_fsm_state69)) begin + in2_loc_address1 = sext_ln38_26_fu_2998_p1; + end else if ((1'b1 == ap_CS_fsm_state68)) begin + in2_loc_address1 = sext_ln38_24_fu_2953_p1; + end else if ((1'b1 == ap_CS_fsm_state67)) begin + in2_loc_address1 = sext_ln38_22_fu_2918_p1; + end else if ((1'b1 == ap_CS_fsm_state66)) begin + in2_loc_address1 = sext_ln38_20_fu_2878_p1; + end else if ((1'b1 == ap_CS_fsm_state65)) begin + in2_loc_address1 = sext_ln38_18_fu_2843_p1; + end else if ((1'b1 == ap_CS_fsm_state64)) begin + in2_loc_address1 = sext_ln38_16_fu_2793_p1; + end else if ((1'b1 == ap_CS_fsm_state63)) begin + in2_loc_address1 = sext_ln38_14_fu_2758_p1; + end else if ((1'b1 == ap_CS_fsm_state62)) begin + in2_loc_address1 = sext_ln38_12_fu_2718_p1; + end else if ((1'b1 == ap_CS_fsm_state61)) begin + in2_loc_address1 = sext_ln38_10_fu_2683_p1; + end else if ((1'b1 == ap_CS_fsm_state60)) begin + in2_loc_address1 = sext_ln38_8_fu_2638_p1; + end else if ((1'b1 == ap_CS_fsm_state59)) begin + in2_loc_address1 = sext_ln38_6_fu_2603_p1; + end else if ((1'b1 == ap_CS_fsm_state58)) begin + in2_loc_address1 = sext_ln38_4_fu_2557_p1; + end else if ((1'b1 == ap_CS_fsm_state57)) begin + in2_loc_address1 = sext_ln38_2_fu_2527_p1; + end else if ((1'b1 == ap_CS_fsm_state56)) begin + in2_loc_address1 = sext_ln38_1_fu_2507_p1; + end else begin + in2_loc_address1 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state87) | (1'b1 == ap_CS_fsm_state86) | (1'b1 == ap_CS_fsm_state85) | (1'b1 == ap_CS_fsm_state84) | (1'b1 == ap_CS_fsm_state83) | (1'b1 == ap_CS_fsm_state82) | (1'b1 == ap_CS_fsm_state81) | (1'b1 == ap_CS_fsm_state80) | (1'b1 == ap_CS_fsm_state79) | (1'b1 == ap_CS_fsm_state78) | (1'b1 == ap_CS_fsm_state77) | (1'b1 == ap_CS_fsm_state76) | (1'b1 == ap_CS_fsm_state75) | (1'b1 == ap_CS_fsm_state74) | (1'b1 == ap_CS_fsm_state73) | (1'b1 == ap_CS_fsm_state72) | (1'b1 == ap_CS_fsm_state71) | (1'b1 == ap_CS_fsm_state70) | (1'b1 == ap_CS_fsm_state69) | (1'b1 == ap_CS_fsm_state68) | (1'b1 == ap_CS_fsm_state67) | (1'b1 == ap_CS_fsm_state66) | (1'b1 == ap_CS_fsm_state65) | (1'b1 == ap_CS_fsm_state64) | (1'b1 == ap_CS_fsm_state63) | (1'b1 == ap_CS_fsm_state62) | (1'b1 == ap_CS_fsm_state61) | (1'b1 == ap_CS_fsm_state60) | (1'b1 == ap_CS_fsm_state59) | (1'b1 == ap_CS_fsm_state58) | (1'b1 == ap_CS_fsm_state57) | (1'b1 == ap_CS_fsm_state56) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_ce0 = 1'b1; + end else begin + in2_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state87) | (1'b1 == ap_CS_fsm_state86) | (1'b1 == ap_CS_fsm_state85) | (1'b1 == ap_CS_fsm_state84) | (1'b1 == ap_CS_fsm_state83) | (1'b1 == ap_CS_fsm_state82) | (1'b1 == ap_CS_fsm_state81) | (1'b1 == ap_CS_fsm_state80) | (1'b1 == ap_CS_fsm_state79) | (1'b1 == ap_CS_fsm_state78) | (1'b1 == ap_CS_fsm_state77) | (1'b1 == ap_CS_fsm_state76) | (1'b1 == ap_CS_fsm_state75) | (1'b1 == ap_CS_fsm_state74) | (1'b1 == ap_CS_fsm_state73) | (1'b1 == ap_CS_fsm_state72) | (1'b1 == ap_CS_fsm_state71) | (1'b1 == ap_CS_fsm_state70) | (1'b1 == ap_CS_fsm_state69) | (1'b1 == ap_CS_fsm_state68) | (1'b1 == ap_CS_fsm_state67) | (1'b1 == ap_CS_fsm_state66) | (1'b1 == ap_CS_fsm_state65) | (1'b1 == ap_CS_fsm_state64) | (1'b1 == ap_CS_fsm_state63) | (1'b1 == ap_CS_fsm_state62) | (1'b1 == ap_CS_fsm_state61) | (1'b1 == ap_CS_fsm_state60) | (1'b1 == ap_CS_fsm_state59) | (1'b1 == ap_CS_fsm_state58) | (1'b1 == ap_CS_fsm_state57) | (1'b1 == ap_CS_fsm_state56))) begin + in2_loc_ce1 = 1'b1; + end else begin + in2_loc_ce1 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_3854_pp1_iter1_reg == 1'd0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_we0 = 1'b1; + end else begin + in2_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + out_loc_address0 = zext_ln42_fu_3796_p1; + end else if (((1'b1 == ap_CS_fsm_state89) | (1'b1 == ap_CS_fsm_state57))) begin + out_loc_address0 = out_loc_addr_reg_4677; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state89) | (1'b1 == ap_CS_fsm_state57) | ((ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state89)) begin + out_loc_we0 = 1'b1; + end else begin + out_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state97))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_5307_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_11001))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state97)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (icmp_ln42_reg_5307_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((icmp_ln27_fu_1525_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) & ~((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((icmp_ln27_fu_1525_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) | ((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((icmp_ln28_fu_1542_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) & ~((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((icmp_ln28_fu_1542_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) | ((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state23 : begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_1563_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state23))) begin + ap_NS_fsm = ap_ST_fsm_state24; + end else begin + ap_NS_fsm = ap_ST_fsm_state23; + end + end + ap_ST_fsm_state24 : begin + ap_NS_fsm = ap_ST_fsm_state25; + end + ap_ST_fsm_state25 : begin + ap_NS_fsm = ap_ST_fsm_state26; + end + ap_ST_fsm_state26 : begin + ap_NS_fsm = ap_ST_fsm_state27; + end + ap_ST_fsm_state27 : begin + ap_NS_fsm = ap_ST_fsm_state28; + end + ap_ST_fsm_state28 : begin + ap_NS_fsm = ap_ST_fsm_state29; + end + ap_ST_fsm_state29 : begin + ap_NS_fsm = ap_ST_fsm_state30; + end + ap_ST_fsm_state30 : begin + ap_NS_fsm = ap_ST_fsm_state31; + end + ap_ST_fsm_state31 : begin + ap_NS_fsm = ap_ST_fsm_state32; + end + ap_ST_fsm_state32 : begin + ap_NS_fsm = ap_ST_fsm_state33; + end + ap_ST_fsm_state33 : begin + ap_NS_fsm = ap_ST_fsm_state34; + end + ap_ST_fsm_state34 : begin + ap_NS_fsm = ap_ST_fsm_state35; + end + ap_ST_fsm_state35 : begin + ap_NS_fsm = ap_ST_fsm_state36; + end + ap_ST_fsm_state36 : begin + ap_NS_fsm = ap_ST_fsm_state37; + end + ap_ST_fsm_state37 : begin + ap_NS_fsm = ap_ST_fsm_state38; + end + ap_ST_fsm_state38 : begin + ap_NS_fsm = ap_ST_fsm_state39; + end + ap_ST_fsm_state39 : begin + ap_NS_fsm = ap_ST_fsm_state40; + end + ap_ST_fsm_state40 : begin + ap_NS_fsm = ap_ST_fsm_state41; + end + ap_ST_fsm_state41 : begin + ap_NS_fsm = ap_ST_fsm_state42; + end + ap_ST_fsm_state42 : begin + ap_NS_fsm = ap_ST_fsm_state43; + end + ap_ST_fsm_state43 : begin + ap_NS_fsm = ap_ST_fsm_state44; + end + ap_ST_fsm_state44 : begin + ap_NS_fsm = ap_ST_fsm_state45; + end + ap_ST_fsm_state45 : begin + ap_NS_fsm = ap_ST_fsm_state46; + end + ap_ST_fsm_state46 : begin + ap_NS_fsm = ap_ST_fsm_state47; + end + ap_ST_fsm_state47 : begin + ap_NS_fsm = ap_ST_fsm_state48; + end + ap_ST_fsm_state48 : begin + ap_NS_fsm = ap_ST_fsm_state49; + end + ap_ST_fsm_state49 : begin + ap_NS_fsm = ap_ST_fsm_state50; + end + ap_ST_fsm_state50 : begin + ap_NS_fsm = ap_ST_fsm_state51; + end + ap_ST_fsm_state51 : begin + ap_NS_fsm = ap_ST_fsm_state52; + end + ap_ST_fsm_state52 : begin + ap_NS_fsm = ap_ST_fsm_state53; + end + ap_ST_fsm_state53 : begin + ap_NS_fsm = ap_ST_fsm_state54; + end + ap_ST_fsm_state54 : begin + ap_NS_fsm = ap_ST_fsm_state55; + end + ap_ST_fsm_state55 : begin + ap_NS_fsm = ap_ST_fsm_state56; + end + ap_ST_fsm_state56 : begin + if (((icmp_ln33_fu_2481_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state56))) begin + ap_NS_fsm = ap_ST_fsm_state23; + end else begin + ap_NS_fsm = ap_ST_fsm_state57; + end + end + ap_ST_fsm_state57 : begin + ap_NS_fsm = ap_ST_fsm_state58; + end + ap_ST_fsm_state58 : begin + ap_NS_fsm = ap_ST_fsm_state59; + end + ap_ST_fsm_state59 : begin + ap_NS_fsm = ap_ST_fsm_state60; + end + ap_ST_fsm_state60 : begin + ap_NS_fsm = ap_ST_fsm_state61; + end + ap_ST_fsm_state61 : begin + ap_NS_fsm = ap_ST_fsm_state62; + end + ap_ST_fsm_state62 : begin + ap_NS_fsm = ap_ST_fsm_state63; + end + ap_ST_fsm_state63 : begin + ap_NS_fsm = ap_ST_fsm_state64; + end + ap_ST_fsm_state64 : begin + ap_NS_fsm = ap_ST_fsm_state65; + end + ap_ST_fsm_state65 : begin + ap_NS_fsm = ap_ST_fsm_state66; + end + ap_ST_fsm_state66 : begin + ap_NS_fsm = ap_ST_fsm_state67; + end + ap_ST_fsm_state67 : begin + ap_NS_fsm = ap_ST_fsm_state68; + end + ap_ST_fsm_state68 : begin + ap_NS_fsm = ap_ST_fsm_state69; + end + ap_ST_fsm_state69 : begin + ap_NS_fsm = ap_ST_fsm_state70; + end + ap_ST_fsm_state70 : begin + ap_NS_fsm = ap_ST_fsm_state71; + end + ap_ST_fsm_state71 : begin + ap_NS_fsm = ap_ST_fsm_state72; + end + ap_ST_fsm_state72 : begin + ap_NS_fsm = ap_ST_fsm_state73; + end + ap_ST_fsm_state73 : begin + ap_NS_fsm = ap_ST_fsm_state74; + end + ap_ST_fsm_state74 : begin + ap_NS_fsm = ap_ST_fsm_state75; + end + ap_ST_fsm_state75 : begin + ap_NS_fsm = ap_ST_fsm_state76; + end + ap_ST_fsm_state76 : begin + ap_NS_fsm = ap_ST_fsm_state77; + end + ap_ST_fsm_state77 : begin + ap_NS_fsm = ap_ST_fsm_state78; + end + ap_ST_fsm_state78 : begin + ap_NS_fsm = ap_ST_fsm_state79; + end + ap_ST_fsm_state79 : begin + ap_NS_fsm = ap_ST_fsm_state80; + end + ap_ST_fsm_state80 : begin + ap_NS_fsm = ap_ST_fsm_state81; + end + ap_ST_fsm_state81 : begin + ap_NS_fsm = ap_ST_fsm_state82; + end + ap_ST_fsm_state82 : begin + ap_NS_fsm = ap_ST_fsm_state83; + end + ap_ST_fsm_state83 : begin + ap_NS_fsm = ap_ST_fsm_state84; + end + ap_ST_fsm_state84 : begin + ap_NS_fsm = ap_ST_fsm_state85; + end + ap_ST_fsm_state85 : begin + ap_NS_fsm = ap_ST_fsm_state86; + end + ap_ST_fsm_state86 : begin + ap_NS_fsm = ap_ST_fsm_state87; + end + ap_ST_fsm_state87 : begin + ap_NS_fsm = ap_ST_fsm_state88; + end + ap_ST_fsm_state88 : begin + ap_NS_fsm = ap_ST_fsm_state89; + end + ap_ST_fsm_state89 : begin + ap_NS_fsm = ap_ST_fsm_state56; + end + ap_ST_fsm_pp2_stage0 : begin + if ((~((icmp_ln42_fu_3784_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)) & ~((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if ((((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)) | ((icmp_ln42_fu_3784_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)))) begin + ap_NS_fsm = ap_ST_fsm_state93; + end else begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + end + ap_ST_fsm_state93 : begin + ap_NS_fsm = ap_ST_fsm_state94; + end + ap_ST_fsm_state94 : begin + ap_NS_fsm = ap_ST_fsm_state95; + end + ap_ST_fsm_state95 : begin + ap_NS_fsm = ap_ST_fsm_state96; + end + ap_ST_fsm_state96 : begin + ap_NS_fsm = ap_ST_fsm_state97; + end + ap_ST_fsm_state97 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state97))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state97; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_1531_p2 = (ap_phi_mux_phi_ln27_phi_fu_1414_p4 + 13'd1); + +assign add_ln28_fu_1548_p2 = (ap_phi_mux_phi_ln28_phi_fu_1426_p4 + 13'd1); + +assign add_ln38_100_fu_3203_p2 = (14'd2368 + trunc_ln38_1_reg_4601); + +assign add_ln38_101_fu_3233_p2 = (14'd2432 + trunc_ln38_1_reg_4601); + +assign add_ln38_102_fu_3243_p2 = (14'd2496 + trunc_ln38_1_reg_4601); + +assign add_ln38_103_fu_3268_p2 = (14'd2560 + trunc_ln38_1_reg_4601); + +assign add_ln38_104_fu_3278_p2 = (14'd2624 + trunc_ln38_1_reg_4601); + +assign add_ln38_105_fu_3313_p2 = (14'd2688 + trunc_ln38_1_reg_4601); + +assign add_ln38_106_fu_3323_p2 = (14'd2752 + trunc_ln38_1_reg_4601); + +assign add_ln38_107_fu_3348_p2 = (14'd2816 + trunc_ln38_1_reg_4601); + +assign add_ln38_108_fu_3358_p2 = (14'd2880 + trunc_ln38_1_reg_4601); + +assign add_ln38_109_fu_3388_p2 = (14'd2944 + trunc_ln38_1_reg_4601); + +assign add_ln38_10_fu_2783_p2 = (mul_ln38_12_fu_2773_p2 + mul_ln38_11_reg_4792); + +assign add_ln38_110_fu_3398_p2 = (14'd3008 + trunc_ln38_1_reg_4601); + +assign add_ln38_111_fu_3423_p2 = (14'd3072 + trunc_ln38_1_reg_4601); + +assign add_ln38_112_fu_3433_p2 = (14'd3136 + trunc_ln38_1_reg_4601); + +assign add_ln38_113_fu_3473_p2 = (14'd3200 + trunc_ln38_1_reg_4601); + +assign add_ln38_114_fu_3483_p2 = (14'd3264 + trunc_ln38_1_reg_4601); + +assign add_ln38_115_fu_3508_p2 = (14'd3328 + trunc_ln38_1_reg_4601); + +assign add_ln38_116_fu_3518_p2 = (14'd3392 + trunc_ln38_1_reg_4601); + +assign add_ln38_117_fu_3548_p2 = (14'd3456 + trunc_ln38_1_reg_4601); + +assign add_ln38_118_fu_3558_p2 = (14'd3520 + trunc_ln38_1_reg_4601); + +assign add_ln38_119_fu_3583_p2 = (14'd3584 + trunc_ln38_1_reg_4601); + +assign add_ln38_11_fu_2818_p2 = (mul_ln38_14_fu_2808_p2 + mul_ln38_13_reg_4812); + +assign add_ln38_120_fu_3593_p2 = (14'd3648 + trunc_ln38_1_reg_4601); + +assign add_ln38_121_fu_3628_p2 = (14'd3712 + trunc_ln38_1_reg_4601); + +assign add_ln38_122_fu_3638_p2 = (14'd3776 + trunc_ln38_1_reg_4601); + +assign add_ln38_123_fu_3663_p2 = (14'd3840 + trunc_ln38_1_reg_4601); + +assign add_ln38_124_fu_3673_p2 = (14'd3904 + trunc_ln38_1_reg_4601); + +assign add_ln38_125_fu_3703_p2 = (14'd3968 + trunc_ln38_1_reg_4601); + +assign add_ln38_126_fu_3713_p2 = (14'd4032 + trunc_ln38_1_reg_4601); + +assign add_ln38_127_fu_2512_p2 = (zext_ln38_cast_reg_4578 + trunc_ln38_1_fu_2497_p1); + +assign add_ln38_12_fu_2823_p2 = (add_ln38_10_reg_4817 + add_ln38_11_fu_2818_p2); + +assign add_ln38_13_fu_2828_p2 = (add_ln38_9_reg_4797 + add_ln38_12_fu_2823_p2); + +assign add_ln38_14_fu_2833_p2 = (add_ln38_6_reg_4757 + add_ln38_13_fu_2828_p2); + +assign add_ln38_15_fu_2868_p2 = (mul_ln38_16_fu_2858_p2 + mul_ln38_15_reg_4832); + +assign add_ln38_16_fu_2903_p2 = (mul_ln38_18_fu_2893_p2 + mul_ln38_17_reg_4852); + +assign add_ln38_17_fu_2908_p2 = (add_ln38_15_reg_4857 + add_ln38_16_fu_2903_p2); + +assign add_ln38_18_fu_2943_p2 = (mul_ln38_20_fu_2933_p2 + mul_ln38_19_reg_4872); + +assign add_ln38_19_fu_2978_p2 = (mul_ln38_22_fu_2968_p2 + mul_ln38_21_reg_4892); + +assign add_ln38_1_fu_2587_p2 = (mul_ln38_2_fu_2572_p2 + mul_ln38_1_reg_4697); + +assign add_ln38_20_fu_2983_p2 = (add_ln38_18_reg_4897 + add_ln38_19_fu_2978_p2); + +assign add_ln38_21_fu_2988_p2 = (add_ln38_17_reg_4877 + add_ln38_20_fu_2983_p2); + +assign add_ln38_22_fu_3023_p2 = (mul_ln38_24_fu_3013_p2 + mul_ln38_23_reg_4912); + +assign add_ln38_23_fu_3058_p2 = (mul_ln38_26_fu_3048_p2 + mul_ln38_25_reg_4932); + +assign add_ln38_24_fu_3063_p2 = (add_ln38_22_reg_4937 + add_ln38_23_fu_3058_p2); + +assign add_ln38_25_fu_3098_p2 = (mul_ln38_28_fu_3088_p2 + mul_ln38_27_reg_4952); + +assign add_ln38_26_fu_3133_p2 = (mul_ln38_30_fu_3123_p2 + mul_ln38_29_reg_4972); + +assign add_ln38_27_fu_3138_p2 = (add_ln38_25_reg_4977 + add_ln38_26_fu_3133_p2); + +assign add_ln38_28_fu_3143_p2 = (add_ln38_24_reg_4957 + add_ln38_27_fu_3138_p2); + +assign add_ln38_29_fu_3148_p2 = (add_ln38_21_reg_4917 + add_ln38_28_fu_3143_p2); + +assign add_ln38_2_fu_2592_p2 = (add_ln38_fu_2582_p2 + add_ln38_1_fu_2587_p2); + +assign add_ln38_30_fu_3153_p2 = (add_ln38_14_reg_4837 + add_ln38_29_fu_3148_p2); + +assign add_ln38_31_fu_3188_p2 = (mul_ln38_32_fu_3178_p2 + mul_ln38_31_reg_4992); + +assign add_ln38_32_fu_3223_p2 = (mul_ln38_34_fu_3213_p2 + mul_ln38_33_reg_5012); + +assign add_ln38_33_fu_3228_p2 = (add_ln38_31_reg_5017 + add_ln38_32_fu_3223_p2); + +assign add_ln38_34_fu_3263_p2 = (mul_ln38_36_fu_3253_p2 + mul_ln38_35_reg_5032); + +assign add_ln38_35_fu_3298_p2 = (mul_ln38_38_fu_3288_p2 + mul_ln38_37_reg_5052); + +assign add_ln38_36_fu_3303_p2 = (add_ln38_34_reg_5057 + add_ln38_35_fu_3298_p2); + +assign add_ln38_37_fu_3308_p2 = (add_ln38_33_reg_5037 + add_ln38_36_fu_3303_p2); + +assign add_ln38_38_fu_3343_p2 = (mul_ln38_40_fu_3333_p2 + mul_ln38_39_reg_5072); + +assign add_ln38_39_fu_3378_p2 = (mul_ln38_42_fu_3368_p2 + mul_ln38_41_reg_5092); + +assign add_ln38_3_fu_2628_p2 = (mul_ln38_4_fu_2618_p2 + mul_ln38_3_reg_4712); + +assign add_ln38_40_fu_3383_p2 = (add_ln38_38_reg_5097 + add_ln38_39_fu_3378_p2); + +assign add_ln38_41_fu_3418_p2 = (mul_ln38_44_fu_3408_p2 + mul_ln38_43_reg_5112); + +assign add_ln38_42_fu_3453_p2 = (mul_ln38_46_fu_3443_p2 + mul_ln38_45_reg_5132); + +assign add_ln38_43_fu_3458_p2 = (add_ln38_41_reg_5137 + add_ln38_42_fu_3453_p2); + +assign add_ln38_44_fu_3463_p2 = (add_ln38_40_reg_5117 + add_ln38_43_fu_3458_p2); + +assign add_ln38_45_fu_3468_p2 = (add_ln38_37_reg_5077 + add_ln38_44_fu_3463_p2); + +assign add_ln38_46_fu_3503_p2 = (mul_ln38_48_fu_3493_p2 + mul_ln38_47_reg_5152); + +assign add_ln38_47_fu_3538_p2 = (mul_ln38_50_fu_3528_p2 + mul_ln38_49_reg_5172); + +assign add_ln38_48_fu_3543_p2 = (add_ln38_46_reg_5177 + add_ln38_47_fu_3538_p2); + +assign add_ln38_49_fu_3578_p2 = (mul_ln38_52_fu_3568_p2 + mul_ln38_51_reg_5192); + +assign add_ln38_4_fu_2663_p2 = (mul_ln38_6_fu_2653_p2 + mul_ln38_5_reg_4732); + +assign add_ln38_50_fu_3613_p2 = (mul_ln38_54_fu_3603_p2 + mul_ln38_53_reg_5212); + +assign add_ln38_51_fu_3618_p2 = (add_ln38_49_reg_5217 + add_ln38_50_fu_3613_p2); + +assign add_ln38_52_fu_3623_p2 = (add_ln38_48_reg_5197 + add_ln38_51_fu_3618_p2); + +assign add_ln38_53_fu_3658_p2 = (mul_ln38_56_fu_3648_p2 + mul_ln38_55_reg_5232); + +assign add_ln38_54_fu_3693_p2 = (mul_ln38_58_fu_3683_p2 + mul_ln38_57_reg_5252); + +assign add_ln38_55_fu_3698_p2 = (add_ln38_53_reg_5257 + add_ln38_54_fu_3693_p2); + +assign add_ln38_56_fu_3733_p2 = (mul_ln38_60_fu_3723_p2 + mul_ln38_59_reg_5272); + +assign add_ln38_57_fu_3748_p2 = (mul_ln38_63_fu_3743_p2 + mul_ln38_62_fu_3738_p2); + +assign add_ln38_58_fu_3754_p2 = (mul_ln38_61_reg_5292 + add_ln38_57_fu_3748_p2); + +assign add_ln38_59_fu_3759_p2 = (add_ln38_56_reg_5297 + add_ln38_58_fu_3754_p2); + +assign add_ln38_5_fu_2668_p2 = (add_ln38_3_reg_4737 + add_ln38_4_fu_2663_p2); + +assign add_ln38_60_fu_3764_p2 = (add_ln38_55_reg_5277 + add_ln38_59_fu_3759_p2); + +assign add_ln38_61_fu_3769_p2 = (add_ln38_52_reg_5237 + add_ln38_60_fu_3764_p2); + +assign add_ln38_62_fu_3774_p2 = (add_ln38_45_reg_5157 + add_ln38_61_reg_5302); + +assign add_ln38_64_fu_2501_p2 = (14'd64 + trunc_ln38_1_fu_2497_p1); + +assign add_ln38_65_fu_2522_p2 = (14'd128 + trunc_ln38_1_reg_4601); + +assign add_ln38_66_fu_2532_p2 = (14'd192 + trunc_ln38_1_reg_4601); + +assign add_ln38_67_fu_2552_p2 = (14'd256 + trunc_ln38_1_reg_4601); + +assign add_ln38_68_fu_2562_p2 = (14'd320 + trunc_ln38_1_reg_4601); + +assign add_ln38_69_fu_2598_p2 = (14'd384 + trunc_ln38_1_reg_4601); + +assign add_ln38_6_fu_2673_p2 = (add_ln38_2_reg_4717 + add_ln38_5_fu_2668_p2); + +assign add_ln38_70_fu_2608_p2 = (14'd448 + trunc_ln38_1_reg_4601); + +assign add_ln38_71_fu_2633_p2 = (14'd512 + trunc_ln38_1_reg_4601); + +assign add_ln38_72_fu_2643_p2 = (14'd576 + trunc_ln38_1_reg_4601); + +assign add_ln38_73_fu_2678_p2 = (14'd640 + trunc_ln38_1_reg_4601); + +assign add_ln38_74_fu_2688_p2 = (14'd704 + trunc_ln38_1_reg_4601); + +assign add_ln38_75_fu_2713_p2 = (14'd768 + trunc_ln38_1_reg_4601); + +assign add_ln38_76_fu_2723_p2 = (14'd832 + trunc_ln38_1_reg_4601); + +assign add_ln38_77_fu_2753_p2 = (14'd896 + trunc_ln38_1_reg_4601); + +assign add_ln38_78_fu_2763_p2 = (14'd960 + trunc_ln38_1_reg_4601); + +assign add_ln38_79_fu_2788_p2 = (14'd1024 + trunc_ln38_1_reg_4601); + +assign add_ln38_7_fu_2708_p2 = (mul_ln38_8_fu_2698_p2 + mul_ln38_7_reg_4752); + +assign add_ln38_80_fu_2798_p2 = (14'd1088 + trunc_ln38_1_reg_4601); + +assign add_ln38_81_fu_2838_p2 = (14'd1152 + trunc_ln38_1_reg_4601); + +assign add_ln38_82_fu_2848_p2 = (14'd1216 + trunc_ln38_1_reg_4601); + +assign add_ln38_83_fu_2873_p2 = (14'd1280 + trunc_ln38_1_reg_4601); + +assign add_ln38_84_fu_2883_p2 = (14'd1344 + trunc_ln38_1_reg_4601); + +assign add_ln38_85_fu_2913_p2 = (14'd1408 + trunc_ln38_1_reg_4601); + +assign add_ln38_86_fu_2923_p2 = (14'd1472 + trunc_ln38_1_reg_4601); + +assign add_ln38_87_fu_2948_p2 = (14'd1536 + trunc_ln38_1_reg_4601); + +assign add_ln38_88_fu_2958_p2 = (14'd1600 + trunc_ln38_1_reg_4601); + +assign add_ln38_89_fu_2993_p2 = (14'd1664 + trunc_ln38_1_reg_4601); + +assign add_ln38_8_fu_2743_p2 = (mul_ln38_10_fu_2733_p2 + mul_ln38_9_reg_4772); + +assign add_ln38_90_fu_3003_p2 = (14'd1728 + trunc_ln38_1_reg_4601); + +assign add_ln38_91_fu_3028_p2 = (14'd1792 + trunc_ln38_1_reg_4601); + +assign add_ln38_92_fu_3038_p2 = (14'd1856 + trunc_ln38_1_reg_4601); + +assign add_ln38_93_fu_3068_p2 = (14'd1920 + trunc_ln38_1_reg_4601); + +assign add_ln38_94_fu_3078_p2 = (14'd1984 + trunc_ln38_1_reg_4601); + +assign add_ln38_95_fu_3103_p2 = (14'd2048 + trunc_ln38_1_reg_4601); + +assign add_ln38_96_fu_3113_p2 = (14'd2112 + trunc_ln38_1_reg_4601); + +assign add_ln38_97_fu_3158_p2 = (14'd2176 + trunc_ln38_1_reg_4601); + +assign add_ln38_98_fu_3168_p2 = (14'd2240 + trunc_ln38_1_reg_4601); + +assign add_ln38_99_fu_3193_p2 = (14'd2304 + trunc_ln38_1_reg_4601); + +assign add_ln38_9_fu_2748_p2 = (add_ln38_7_reg_4777 + add_ln38_8_fu_2743_p2); + +assign add_ln38_fu_2582_p2 = (mul_ln38_reg_4692 + out_loc_q0); + +assign add_ln42_fu_3790_p2 = (phi_ln42_reg_1456 + 13'd1); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp2_stage0 = ap_CS_fsm[32'd85]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state23 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_state24 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state25 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_state26 = ap_CS_fsm[32'd21]; + +assign ap_CS_fsm_state27 = ap_CS_fsm[32'd22]; + +assign ap_CS_fsm_state28 = ap_CS_fsm[32'd23]; + +assign ap_CS_fsm_state29 = ap_CS_fsm[32'd24]; + +assign ap_CS_fsm_state30 = ap_CS_fsm[32'd25]; + +assign ap_CS_fsm_state31 = ap_CS_fsm[32'd26]; + +assign ap_CS_fsm_state32 = ap_CS_fsm[32'd27]; + +assign ap_CS_fsm_state33 = ap_CS_fsm[32'd28]; + +assign ap_CS_fsm_state34 = ap_CS_fsm[32'd29]; + +assign ap_CS_fsm_state35 = ap_CS_fsm[32'd30]; + +assign ap_CS_fsm_state36 = ap_CS_fsm[32'd31]; + +assign ap_CS_fsm_state37 = ap_CS_fsm[32'd32]; + +assign ap_CS_fsm_state38 = ap_CS_fsm[32'd33]; + +assign ap_CS_fsm_state39 = ap_CS_fsm[32'd34]; + +assign ap_CS_fsm_state40 = ap_CS_fsm[32'd35]; + +assign ap_CS_fsm_state41 = ap_CS_fsm[32'd36]; + +assign ap_CS_fsm_state42 = ap_CS_fsm[32'd37]; + +assign ap_CS_fsm_state43 = ap_CS_fsm[32'd38]; + +assign ap_CS_fsm_state44 = ap_CS_fsm[32'd39]; + +assign ap_CS_fsm_state45 = ap_CS_fsm[32'd40]; + +assign ap_CS_fsm_state46 = ap_CS_fsm[32'd41]; + +assign ap_CS_fsm_state47 = ap_CS_fsm[32'd42]; + +assign ap_CS_fsm_state48 = ap_CS_fsm[32'd43]; + +assign ap_CS_fsm_state49 = ap_CS_fsm[32'd44]; + +assign ap_CS_fsm_state50 = ap_CS_fsm[32'd45]; + +assign ap_CS_fsm_state51 = ap_CS_fsm[32'd46]; + +assign ap_CS_fsm_state52 = ap_CS_fsm[32'd47]; + +assign ap_CS_fsm_state53 = ap_CS_fsm[32'd48]; + +assign ap_CS_fsm_state54 = ap_CS_fsm[32'd49]; + +assign ap_CS_fsm_state55 = ap_CS_fsm[32'd50]; + +assign ap_CS_fsm_state56 = ap_CS_fsm[32'd51]; + +assign ap_CS_fsm_state57 = ap_CS_fsm[32'd52]; + +assign ap_CS_fsm_state58 = ap_CS_fsm[32'd53]; + +assign ap_CS_fsm_state59 = ap_CS_fsm[32'd54]; + +assign ap_CS_fsm_state60 = ap_CS_fsm[32'd55]; + +assign ap_CS_fsm_state61 = ap_CS_fsm[32'd56]; + +assign ap_CS_fsm_state62 = ap_CS_fsm[32'd57]; + +assign ap_CS_fsm_state63 = ap_CS_fsm[32'd58]; + +assign ap_CS_fsm_state64 = ap_CS_fsm[32'd59]; + +assign ap_CS_fsm_state65 = ap_CS_fsm[32'd60]; + +assign ap_CS_fsm_state66 = ap_CS_fsm[32'd61]; + +assign ap_CS_fsm_state67 = ap_CS_fsm[32'd62]; + +assign ap_CS_fsm_state68 = ap_CS_fsm[32'd63]; + +assign ap_CS_fsm_state69 = ap_CS_fsm[32'd64]; + +assign ap_CS_fsm_state70 = ap_CS_fsm[32'd65]; + +assign ap_CS_fsm_state71 = ap_CS_fsm[32'd66]; + +assign ap_CS_fsm_state72 = ap_CS_fsm[32'd67]; + +assign ap_CS_fsm_state73 = ap_CS_fsm[32'd68]; + +assign ap_CS_fsm_state74 = ap_CS_fsm[32'd69]; + +assign ap_CS_fsm_state75 = ap_CS_fsm[32'd70]; + +assign ap_CS_fsm_state76 = ap_CS_fsm[32'd71]; + +assign ap_CS_fsm_state77 = ap_CS_fsm[32'd72]; + +assign ap_CS_fsm_state78 = ap_CS_fsm[32'd73]; + +assign ap_CS_fsm_state79 = ap_CS_fsm[32'd74]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_CS_fsm_state80 = ap_CS_fsm[32'd75]; + +assign ap_CS_fsm_state81 = ap_CS_fsm[32'd76]; + +assign ap_CS_fsm_state82 = ap_CS_fsm[32'd77]; + +assign ap_CS_fsm_state83 = ap_CS_fsm[32'd78]; + +assign ap_CS_fsm_state84 = ap_CS_fsm[32'd79]; + +assign ap_CS_fsm_state85 = ap_CS_fsm[32'd80]; + +assign ap_CS_fsm_state86 = ap_CS_fsm[32'd81]; + +assign ap_CS_fsm_state87 = ap_CS_fsm[32'd82]; + +assign ap_CS_fsm_state88 = ap_CS_fsm[32'd83]; + +assign ap_CS_fsm_state89 = ap_CS_fsm[32'd84]; + +assign ap_CS_fsm_state97 = ap_CS_fsm[32'd90]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_3840 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_3840 == 1'd0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_3854 == 1'd0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp2_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp2_stage0_11001 = ((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b1 == ap_block_state92_io)); +end + +always @ (*) begin + ap_block_pp2_stage0_subdone = ((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b1 == ap_block_state92_io)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = ((in1_mem_RVALID == 1'b0) & (icmp_ln27_reg_3840 == 1'd0)); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = ((in2_mem_RVALID == 1'b0) & (icmp_ln28_reg_3854 == 1'd0)); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state23_io = ((out_mem_AWREADY == 1'b0) & (icmp_ln31_fu_1563_p2 == 1'd0)); +end + +assign ap_block_state90_pp2_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state91_pp2_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state92_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_5307_pp2_iter1_reg == 1'd0)); +end + +assign ap_block_state92_pp2_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp2 = (ap_idle_pp2 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_5_fu_1516_p1 = in_reg_3812; + +assign empty_6_fu_1497_p1 = in3_reg_3817; + +assign empty_fu_1507_p1 = out5_reg_3807; + +assign i_fu_1568_p2 = (i_0_reg_1434 + 31'd1); + +assign icmp_ln27_fu_1525_p2 = ((ap_phi_mux_phi_ln27_phi_fu_1414_p4 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_1542_p2 = ((ap_phi_mux_phi_ln28_phi_fu_1426_p4 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_1563_p2 = (($signed(zext_ln31_fu_1559_p1) < $signed(dim_read_reg_3801)) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_2481_p2 = ((j_0_reg_1445 == dim_read_reg_3801) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_3784_p2 = ((phi_ln42_reg_1456 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_6_fu_1497_p1; + +assign j_fu_2486_p2 = ($signed(j_0_reg_1445) + $signed(32'd1)); + +assign mul_ln38_10_fu_2733_p0 = in2_loc_q1; + +assign mul_ln38_10_fu_2733_p2 = ($signed(mul_ln38_10_fu_2733_p0) * $signed(in1_loc_load_10_reg_4068)); + +assign mul_ln38_11_fu_2738_p0 = in2_loc_q0; + +assign mul_ln38_11_fu_2738_p2 = ($signed(mul_ln38_11_fu_2738_p0) * $signed(in1_loc_load_11_reg_4073)); + +assign mul_ln38_12_fu_2773_p0 = in2_loc_q1; + +assign mul_ln38_12_fu_2773_p2 = ($signed(mul_ln38_12_fu_2773_p0) * $signed(in1_loc_load_12_reg_4088)); + +assign mul_ln38_13_fu_2778_p0 = in2_loc_q0; + +assign mul_ln38_13_fu_2778_p2 = ($signed(mul_ln38_13_fu_2778_p0) * $signed(in1_loc_load_13_reg_4093)); + +assign mul_ln38_14_fu_2808_p0 = in2_loc_q1; + +assign mul_ln38_14_fu_2808_p2 = ($signed(mul_ln38_14_fu_2808_p0) * $signed(in1_loc_load_14_reg_4108)); + +assign mul_ln38_15_fu_2813_p0 = in2_loc_q0; + +assign mul_ln38_15_fu_2813_p2 = ($signed(mul_ln38_15_fu_2813_p0) * $signed(in1_loc_load_15_reg_4113)); + +assign mul_ln38_16_fu_2858_p0 = in2_loc_q1; + +assign mul_ln38_16_fu_2858_p2 = ($signed(mul_ln38_16_fu_2858_p0) * $signed(in1_loc_load_16_reg_4128)); + +assign mul_ln38_17_fu_2863_p0 = in2_loc_q0; + +assign mul_ln38_17_fu_2863_p2 = ($signed(mul_ln38_17_fu_2863_p0) * $signed(in1_loc_load_17_reg_4133)); + +assign mul_ln38_18_fu_2893_p0 = in2_loc_q1; + +assign mul_ln38_18_fu_2893_p2 = ($signed(mul_ln38_18_fu_2893_p0) * $signed(in1_loc_load_18_reg_4148)); + +assign mul_ln38_19_fu_2898_p0 = in2_loc_q0; + +assign mul_ln38_19_fu_2898_p2 = ($signed(mul_ln38_19_fu_2898_p0) * $signed(in1_loc_load_19_reg_4153)); + +assign mul_ln38_1_fu_2547_p0 = in2_loc_q1; + +assign mul_ln38_1_fu_2547_p2 = ($signed(mul_ln38_1_fu_2547_p0) * $signed(in1_loc_load_1_reg_3973)); + +assign mul_ln38_20_fu_2933_p0 = in2_loc_q1; + +assign mul_ln38_20_fu_2933_p2 = ($signed(mul_ln38_20_fu_2933_p0) * $signed(in1_loc_load_20_reg_4168)); + +assign mul_ln38_21_fu_2938_p0 = in2_loc_q0; + +assign mul_ln38_21_fu_2938_p2 = ($signed(mul_ln38_21_fu_2938_p0) * $signed(in1_loc_load_21_reg_4173)); + +assign mul_ln38_22_fu_2968_p0 = in2_loc_q1; + +assign mul_ln38_22_fu_2968_p2 = ($signed(mul_ln38_22_fu_2968_p0) * $signed(in1_loc_load_22_reg_4188)); + +assign mul_ln38_23_fu_2973_p0 = in2_loc_q0; + +assign mul_ln38_23_fu_2973_p2 = ($signed(mul_ln38_23_fu_2973_p0) * $signed(in1_loc_load_23_reg_4193)); + +assign mul_ln38_24_fu_3013_p0 = in2_loc_q1; + +assign mul_ln38_24_fu_3013_p2 = ($signed(mul_ln38_24_fu_3013_p0) * $signed(in1_loc_load_24_reg_4208)); + +assign mul_ln38_25_fu_3018_p0 = in2_loc_q0; + +assign mul_ln38_25_fu_3018_p2 = ($signed(mul_ln38_25_fu_3018_p0) * $signed(in1_loc_load_25_reg_4213)); + +assign mul_ln38_26_fu_3048_p0 = in2_loc_q1; + +assign mul_ln38_26_fu_3048_p2 = ($signed(mul_ln38_26_fu_3048_p0) * $signed(in1_loc_load_26_reg_4228)); + +assign mul_ln38_27_fu_3053_p0 = in2_loc_q0; + +assign mul_ln38_27_fu_3053_p2 = ($signed(mul_ln38_27_fu_3053_p0) * $signed(in1_loc_load_27_reg_4233)); + +assign mul_ln38_28_fu_3088_p0 = in2_loc_q1; + +assign mul_ln38_28_fu_3088_p2 = ($signed(mul_ln38_28_fu_3088_p0) * $signed(in1_loc_load_28_reg_4248)); + +assign mul_ln38_29_fu_3093_p0 = in2_loc_q0; + +assign mul_ln38_29_fu_3093_p2 = ($signed(mul_ln38_29_fu_3093_p0) * $signed(in1_loc_load_29_reg_4253)); + +assign mul_ln38_2_fu_2572_p0 = in2_loc_q1; + +assign mul_ln38_2_fu_2572_p2 = ($signed(mul_ln38_2_fu_2572_p0) * $signed(in1_loc_load_2_reg_3988)); + +assign mul_ln38_30_fu_3123_p0 = in2_loc_q1; + +assign mul_ln38_30_fu_3123_p2 = ($signed(mul_ln38_30_fu_3123_p0) * $signed(in1_loc_load_30_reg_4268)); + +assign mul_ln38_31_fu_3128_p0 = in2_loc_q0; + +assign mul_ln38_31_fu_3128_p2 = ($signed(mul_ln38_31_fu_3128_p0) * $signed(in1_loc_load_31_reg_4273)); + +assign mul_ln38_32_fu_3178_p0 = in2_loc_q1; + +assign mul_ln38_32_fu_3178_p2 = ($signed(mul_ln38_32_fu_3178_p0) * $signed(in1_loc_load_32_reg_4288)); + +assign mul_ln38_33_fu_3183_p0 = in2_loc_q0; + +assign mul_ln38_33_fu_3183_p2 = ($signed(mul_ln38_33_fu_3183_p0) * $signed(in1_loc_load_33_reg_4293)); + +assign mul_ln38_34_fu_3213_p0 = in2_loc_q1; + +assign mul_ln38_34_fu_3213_p2 = ($signed(mul_ln38_34_fu_3213_p0) * $signed(in1_loc_load_34_reg_4308)); + +assign mul_ln38_35_fu_3218_p0 = in2_loc_q0; + +assign mul_ln38_35_fu_3218_p2 = ($signed(mul_ln38_35_fu_3218_p0) * $signed(in1_loc_load_35_reg_4313)); + +assign mul_ln38_36_fu_3253_p0 = in2_loc_q1; + +assign mul_ln38_36_fu_3253_p2 = ($signed(mul_ln38_36_fu_3253_p0) * $signed(in1_loc_load_36_reg_4328)); + +assign mul_ln38_37_fu_3258_p0 = in2_loc_q0; + +assign mul_ln38_37_fu_3258_p2 = ($signed(mul_ln38_37_fu_3258_p0) * $signed(in1_loc_load_37_reg_4333)); + +assign mul_ln38_38_fu_3288_p0 = in2_loc_q1; + +assign mul_ln38_38_fu_3288_p2 = ($signed(mul_ln38_38_fu_3288_p0) * $signed(in1_loc_load_38_reg_4348)); + +assign mul_ln38_39_fu_3293_p0 = in2_loc_q0; + +assign mul_ln38_39_fu_3293_p2 = ($signed(mul_ln38_39_fu_3293_p0) * $signed(in1_loc_load_39_reg_4353)); + +assign mul_ln38_3_fu_2577_p0 = in2_loc_q0; + +assign mul_ln38_3_fu_2577_p2 = ($signed(mul_ln38_3_fu_2577_p0) * $signed(in1_loc_load_3_reg_3993)); + +assign mul_ln38_40_fu_3333_p0 = in2_loc_q1; + +assign mul_ln38_40_fu_3333_p2 = ($signed(mul_ln38_40_fu_3333_p0) * $signed(in1_loc_load_40_reg_4368)); + +assign mul_ln38_41_fu_3338_p0 = in2_loc_q0; + +assign mul_ln38_41_fu_3338_p2 = ($signed(mul_ln38_41_fu_3338_p0) * $signed(in1_loc_load_41_reg_4373)); + +assign mul_ln38_42_fu_3368_p0 = in2_loc_q1; + +assign mul_ln38_42_fu_3368_p2 = ($signed(mul_ln38_42_fu_3368_p0) * $signed(in1_loc_load_42_reg_4388)); + +assign mul_ln38_43_fu_3373_p0 = in2_loc_q0; + +assign mul_ln38_43_fu_3373_p2 = ($signed(mul_ln38_43_fu_3373_p0) * $signed(in1_loc_load_43_reg_4393)); + +assign mul_ln38_44_fu_3408_p0 = in2_loc_q1; + +assign mul_ln38_44_fu_3408_p2 = ($signed(mul_ln38_44_fu_3408_p0) * $signed(in1_loc_load_44_reg_4408)); + +assign mul_ln38_45_fu_3413_p0 = in2_loc_q0; + +assign mul_ln38_45_fu_3413_p2 = ($signed(mul_ln38_45_fu_3413_p0) * $signed(in1_loc_load_45_reg_4413)); + +assign mul_ln38_46_fu_3443_p0 = in2_loc_q1; + +assign mul_ln38_46_fu_3443_p2 = ($signed(mul_ln38_46_fu_3443_p0) * $signed(in1_loc_load_46_reg_4428)); + +assign mul_ln38_47_fu_3448_p0 = in2_loc_q0; + +assign mul_ln38_47_fu_3448_p2 = ($signed(mul_ln38_47_fu_3448_p0) * $signed(in1_loc_load_47_reg_4433)); + +assign mul_ln38_48_fu_3493_p0 = in2_loc_q1; + +assign mul_ln38_48_fu_3493_p2 = ($signed(mul_ln38_48_fu_3493_p0) * $signed(in1_loc_load_48_reg_4448)); + +assign mul_ln38_49_fu_3498_p0 = in2_loc_q0; + +assign mul_ln38_49_fu_3498_p2 = ($signed(mul_ln38_49_fu_3498_p0) * $signed(in1_loc_load_49_reg_4453)); + +assign mul_ln38_4_fu_2618_p0 = in2_loc_q1; + +assign mul_ln38_4_fu_2618_p2 = ($signed(mul_ln38_4_fu_2618_p0) * $signed(in1_loc_load_4_reg_4008)); + +assign mul_ln38_50_fu_3528_p0 = in2_loc_q1; + +assign mul_ln38_50_fu_3528_p2 = ($signed(mul_ln38_50_fu_3528_p0) * $signed(in1_loc_load_50_reg_4468)); + +assign mul_ln38_51_fu_3533_p0 = in2_loc_q0; + +assign mul_ln38_51_fu_3533_p2 = ($signed(mul_ln38_51_fu_3533_p0) * $signed(in1_loc_load_51_reg_4473)); + +assign mul_ln38_52_fu_3568_p0 = in2_loc_q1; + +assign mul_ln38_52_fu_3568_p2 = ($signed(mul_ln38_52_fu_3568_p0) * $signed(in1_loc_load_52_reg_4488)); + +assign mul_ln38_53_fu_3573_p0 = in2_loc_q0; + +assign mul_ln38_53_fu_3573_p2 = ($signed(mul_ln38_53_fu_3573_p0) * $signed(in1_loc_load_53_reg_4493)); + +assign mul_ln38_54_fu_3603_p0 = in2_loc_q1; + +assign mul_ln38_54_fu_3603_p2 = ($signed(mul_ln38_54_fu_3603_p0) * $signed(in1_loc_load_54_reg_4508)); + +assign mul_ln38_55_fu_3608_p0 = in2_loc_q0; + +assign mul_ln38_55_fu_3608_p2 = ($signed(mul_ln38_55_fu_3608_p0) * $signed(in1_loc_load_55_reg_4513)); + +assign mul_ln38_56_fu_3648_p0 = in2_loc_q1; + +assign mul_ln38_56_fu_3648_p2 = ($signed(mul_ln38_56_fu_3648_p0) * $signed(in1_loc_load_56_reg_4528)); + +assign mul_ln38_57_fu_3653_p0 = in2_loc_q0; + +assign mul_ln38_57_fu_3653_p2 = ($signed(mul_ln38_57_fu_3653_p0) * $signed(in1_loc_load_57_reg_4533)); + +assign mul_ln38_58_fu_3683_p0 = in2_loc_q1; + +assign mul_ln38_58_fu_3683_p2 = ($signed(mul_ln38_58_fu_3683_p0) * $signed(in1_loc_load_58_reg_4548)); + +assign mul_ln38_59_fu_3688_p0 = in2_loc_q0; + +assign mul_ln38_59_fu_3688_p2 = ($signed(mul_ln38_59_fu_3688_p0) * $signed(in1_loc_load_59_reg_4553)); + +assign mul_ln38_5_fu_2623_p0 = in2_loc_q0; + +assign mul_ln38_5_fu_2623_p2 = ($signed(mul_ln38_5_fu_2623_p0) * $signed(in1_loc_load_5_reg_4013)); + +assign mul_ln38_60_fu_3723_p0 = in2_loc_q1; + +assign mul_ln38_60_fu_3723_p2 = ($signed(mul_ln38_60_fu_3723_p0) * $signed(in1_loc_load_60_reg_4568)); + +assign mul_ln38_61_fu_3728_p0 = in2_loc_q0; + +assign mul_ln38_61_fu_3728_p2 = ($signed(mul_ln38_61_fu_3728_p0) * $signed(in1_loc_load_61_reg_4573)); + +assign mul_ln38_62_fu_3738_p0 = in2_loc_q1; + +assign mul_ln38_62_fu_3738_p2 = ($signed(mul_ln38_62_fu_3738_p0) * $signed(in1_loc_load_62_reg_4583)); + +assign mul_ln38_63_fu_3743_p0 = in2_loc_q0; + +assign mul_ln38_63_fu_3743_p2 = ($signed(mul_ln38_63_fu_3743_p0) * $signed(in1_loc_load_63_reg_4588)); + +assign mul_ln38_6_fu_2653_p0 = in2_loc_q1; + +assign mul_ln38_6_fu_2653_p2 = ($signed(mul_ln38_6_fu_2653_p0) * $signed(in1_loc_load_6_reg_4028)); + +assign mul_ln38_7_fu_2658_p0 = in2_loc_q0; + +assign mul_ln38_7_fu_2658_p2 = ($signed(mul_ln38_7_fu_2658_p0) * $signed(in1_loc_load_7_reg_4033)); + +assign mul_ln38_8_fu_2698_p0 = in2_loc_q1; + +assign mul_ln38_8_fu_2698_p2 = ($signed(mul_ln38_8_fu_2698_p0) * $signed(in1_loc_load_8_reg_4048)); + +assign mul_ln38_9_fu_2703_p0 = in2_loc_q0; + +assign mul_ln38_9_fu_2703_p2 = ($signed(mul_ln38_9_fu_2703_p0) * $signed(in1_loc_load_9_reg_4053)); + +assign mul_ln38_fu_2542_p0 = in2_loc_q0; + +assign mul_ln38_fu_2542_p2 = ($signed(mul_ln38_fu_2542_p0) * $signed(in1_loc_load_reg_3968)); + +assign or_ln38_10_fu_1732_p2 = (tmp_2_reg_3877 | 37'd11); + +assign or_ln38_11_fu_1746_p2 = (tmp_2_reg_3877 | 37'd12); + +assign or_ln38_12_fu_1760_p2 = (tmp_2_reg_3877 | 37'd13); + +assign or_ln38_13_fu_1774_p2 = (tmp_2_reg_3877 | 37'd14); + +assign or_ln38_14_fu_1788_p2 = (tmp_2_reg_3877 | 37'd15); + +assign or_ln38_15_fu_1802_p2 = (tmp_2_reg_3877 | 37'd16); + +assign or_ln38_16_fu_1816_p2 = (tmp_2_reg_3877 | 37'd17); + +assign or_ln38_17_fu_1830_p2 = (tmp_2_reg_3877 | 37'd18); + +assign or_ln38_18_fu_1844_p2 = (tmp_2_reg_3877 | 37'd19); + +assign or_ln38_19_fu_1858_p2 = (tmp_2_reg_3877 | 37'd20); + +assign or_ln38_1_fu_1606_p2 = (tmp_2_reg_3877 | 37'd2); + +assign or_ln38_20_fu_1872_p2 = (tmp_2_reg_3877 | 37'd21); + +assign or_ln38_21_fu_1886_p2 = (tmp_2_reg_3877 | 37'd22); + +assign or_ln38_22_fu_1900_p2 = (tmp_2_reg_3877 | 37'd23); + +assign or_ln38_23_fu_1914_p2 = (tmp_2_reg_3877 | 37'd24); + +assign or_ln38_24_fu_1928_p2 = (tmp_2_reg_3877 | 37'd25); + +assign or_ln38_25_fu_1942_p2 = (tmp_2_reg_3877 | 37'd26); + +assign or_ln38_26_fu_1956_p2 = (tmp_2_reg_3877 | 37'd27); + +assign or_ln38_27_fu_1970_p2 = (tmp_2_reg_3877 | 37'd28); + +assign or_ln38_28_fu_1984_p2 = (tmp_2_reg_3877 | 37'd29); + +assign or_ln38_29_fu_1998_p2 = (tmp_2_reg_3877 | 37'd30); + +assign or_ln38_2_fu_1620_p2 = (tmp_2_reg_3877 | 37'd3); + +assign or_ln38_30_fu_2012_p2 = (tmp_2_reg_3877 | 37'd31); + +assign or_ln38_31_fu_2026_p2 = (tmp_2_reg_3877 | 37'd32); + +assign or_ln38_32_fu_2040_p2 = (tmp_2_reg_3877 | 37'd33); + +assign or_ln38_33_fu_2054_p2 = (tmp_2_reg_3877 | 37'd34); + +assign or_ln38_34_fu_2068_p2 = (tmp_2_reg_3877 | 37'd35); + +assign or_ln38_35_fu_2082_p2 = (tmp_2_reg_3877 | 37'd36); + +assign or_ln38_36_fu_2096_p2 = (tmp_2_reg_3877 | 37'd37); + +assign or_ln38_37_fu_2110_p2 = (tmp_2_reg_3877 | 37'd38); + +assign or_ln38_38_fu_2124_p2 = (tmp_2_reg_3877 | 37'd39); + +assign or_ln38_39_fu_2138_p2 = (tmp_2_reg_3877 | 37'd40); + +assign or_ln38_3_fu_1634_p2 = (tmp_2_reg_3877 | 37'd4); + +assign or_ln38_40_fu_2152_p2 = (tmp_2_reg_3877 | 37'd41); + +assign or_ln38_41_fu_2166_p2 = (tmp_2_reg_3877 | 37'd42); + +assign or_ln38_42_fu_2180_p2 = (tmp_2_reg_3877 | 37'd43); + +assign or_ln38_43_fu_2194_p2 = (tmp_2_reg_3877 | 37'd44); + +assign or_ln38_44_fu_2208_p2 = (tmp_2_reg_3877 | 37'd45); + +assign or_ln38_45_fu_2222_p2 = (tmp_2_reg_3877 | 37'd46); + +assign or_ln38_46_fu_2236_p2 = (tmp_2_reg_3877 | 37'd47); + +assign or_ln38_47_fu_2250_p2 = (tmp_2_reg_3877 | 37'd48); + +assign or_ln38_48_fu_2264_p2 = (tmp_2_reg_3877 | 37'd49); + +assign or_ln38_49_fu_2278_p2 = (tmp_2_reg_3877 | 37'd50); + +assign or_ln38_4_fu_1648_p2 = (tmp_2_reg_3877 | 37'd5); + +assign or_ln38_50_fu_2292_p2 = (tmp_2_reg_3877 | 37'd51); + +assign or_ln38_51_fu_2306_p2 = (tmp_2_reg_3877 | 37'd52); + +assign or_ln38_52_fu_2320_p2 = (tmp_2_reg_3877 | 37'd53); + +assign or_ln38_53_fu_2334_p2 = (tmp_2_reg_3877 | 37'd54); + +assign or_ln38_54_fu_2348_p2 = (tmp_2_reg_3877 | 37'd55); + +assign or_ln38_55_fu_2362_p2 = (tmp_2_reg_3877 | 37'd56); + +assign or_ln38_56_fu_2376_p2 = (tmp_2_reg_3877 | 37'd57); + +assign or_ln38_57_fu_2390_p2 = (tmp_2_reg_3877 | 37'd58); + +assign or_ln38_58_fu_2404_p2 = (tmp_2_reg_3877 | 37'd59); + +assign or_ln38_59_fu_2418_p2 = (tmp_2_reg_3877 | 37'd60); + +assign or_ln38_5_fu_1662_p2 = (tmp_2_reg_3877 | 37'd6); + +assign or_ln38_60_fu_2432_p2 = (tmp_2_reg_3877 | 37'd61); + +assign or_ln38_61_fu_2446_p2 = (tmp_2_reg_3877 | 37'd62); + +assign or_ln38_62_fu_2460_p2 = (tmp_2_reg_3877 | 37'd63); + +assign or_ln38_6_fu_1676_p2 = (tmp_2_reg_3877 | 37'd7); + +assign or_ln38_7_fu_1690_p2 = (tmp_2_reg_3877 | 37'd8); + +assign or_ln38_8_fu_1704_p2 = (tmp_2_reg_3877 | 37'd9); + +assign or_ln38_9_fu_1718_p2 = (tmp_2_reg_3877 | 37'd10); + +assign or_ln38_fu_1591_p2 = (tmp_2_fu_1574_p3 | 37'd1); + +assign out_loc_d0 = (add_ln38_30_reg_4997 + add_ln38_62_fu_3774_p2); + +assign sext_ln38_10_fu_2683_p1 = $signed(add_ln38_73_fu_2678_p2); + +assign sext_ln38_11_fu_2693_p1 = $signed(add_ln38_74_fu_2688_p2); + +assign sext_ln38_12_fu_2718_p1 = $signed(add_ln38_75_fu_2713_p2); + +assign sext_ln38_13_fu_2728_p1 = $signed(add_ln38_76_fu_2723_p2); + +assign sext_ln38_14_fu_2758_p1 = $signed(add_ln38_77_fu_2753_p2); + +assign sext_ln38_15_fu_2768_p1 = $signed(add_ln38_78_fu_2763_p2); + +assign sext_ln38_16_fu_2793_p1 = $signed(add_ln38_79_fu_2788_p2); + +assign sext_ln38_17_fu_2803_p1 = $signed(add_ln38_80_fu_2798_p2); + +assign sext_ln38_18_fu_2843_p1 = $signed(add_ln38_81_fu_2838_p2); + +assign sext_ln38_19_fu_2853_p1 = $signed(add_ln38_82_fu_2848_p2); + +assign sext_ln38_1_fu_2507_p1 = $signed(add_ln38_64_fu_2501_p2); + +assign sext_ln38_20_fu_2878_p1 = $signed(add_ln38_83_fu_2873_p2); + +assign sext_ln38_21_fu_2888_p1 = $signed(add_ln38_84_fu_2883_p2); + +assign sext_ln38_22_fu_2918_p1 = $signed(add_ln38_85_fu_2913_p2); + +assign sext_ln38_23_fu_2928_p1 = $signed(add_ln38_86_fu_2923_p2); + +assign sext_ln38_24_fu_2953_p1 = $signed(add_ln38_87_fu_2948_p2); + +assign sext_ln38_25_fu_2963_p1 = $signed(add_ln38_88_fu_2958_p2); + +assign sext_ln38_26_fu_2998_p1 = $signed(add_ln38_89_fu_2993_p2); + +assign sext_ln38_27_fu_3008_p1 = $signed(add_ln38_90_fu_3003_p2); + +assign sext_ln38_28_fu_3033_p1 = $signed(add_ln38_91_fu_3028_p2); + +assign sext_ln38_29_fu_3043_p1 = $signed(add_ln38_92_fu_3038_p2); + +assign sext_ln38_2_fu_2527_p1 = $signed(add_ln38_65_fu_2522_p2); + +assign sext_ln38_30_fu_3073_p1 = $signed(add_ln38_93_fu_3068_p2); + +assign sext_ln38_31_fu_3083_p1 = $signed(add_ln38_94_fu_3078_p2); + +assign sext_ln38_32_fu_3108_p1 = $signed(add_ln38_95_fu_3103_p2); + +assign sext_ln38_33_fu_3118_p1 = $signed(add_ln38_96_fu_3113_p2); + +assign sext_ln38_34_fu_3163_p1 = $signed(add_ln38_97_fu_3158_p2); + +assign sext_ln38_35_fu_3173_p1 = $signed(add_ln38_98_fu_3168_p2); + +assign sext_ln38_36_fu_3198_p1 = $signed(add_ln38_99_fu_3193_p2); + +assign sext_ln38_37_fu_3208_p1 = $signed(add_ln38_100_fu_3203_p2); + +assign sext_ln38_38_fu_3238_p1 = $signed(add_ln38_101_fu_3233_p2); + +assign sext_ln38_39_fu_3248_p1 = $signed(add_ln38_102_fu_3243_p2); + +assign sext_ln38_3_fu_2537_p1 = $signed(add_ln38_66_fu_2532_p2); + +assign sext_ln38_40_fu_3273_p1 = $signed(add_ln38_103_fu_3268_p2); + +assign sext_ln38_41_fu_3283_p1 = $signed(add_ln38_104_fu_3278_p2); + +assign sext_ln38_42_fu_3318_p1 = $signed(add_ln38_105_fu_3313_p2); + +assign sext_ln38_43_fu_3328_p1 = $signed(add_ln38_106_fu_3323_p2); + +assign sext_ln38_44_fu_3353_p1 = $signed(add_ln38_107_fu_3348_p2); + +assign sext_ln38_45_fu_3363_p1 = $signed(add_ln38_108_fu_3358_p2); + +assign sext_ln38_46_fu_3393_p1 = $signed(add_ln38_109_fu_3388_p2); + +assign sext_ln38_47_fu_3403_p1 = $signed(add_ln38_110_fu_3398_p2); + +assign sext_ln38_48_fu_3428_p1 = $signed(add_ln38_111_fu_3423_p2); + +assign sext_ln38_49_fu_3438_p1 = $signed(add_ln38_112_fu_3433_p2); + +assign sext_ln38_4_fu_2557_p1 = $signed(add_ln38_67_fu_2552_p2); + +assign sext_ln38_50_fu_3478_p1 = $signed(add_ln38_113_fu_3473_p2); + +assign sext_ln38_51_fu_3488_p1 = $signed(add_ln38_114_fu_3483_p2); + +assign sext_ln38_52_fu_3513_p1 = $signed(add_ln38_115_fu_3508_p2); + +assign sext_ln38_53_fu_3523_p1 = $signed(add_ln38_116_fu_3518_p2); + +assign sext_ln38_54_fu_3553_p1 = $signed(add_ln38_117_fu_3548_p2); + +assign sext_ln38_55_fu_3563_p1 = $signed(add_ln38_118_fu_3558_p2); + +assign sext_ln38_56_fu_3588_p1 = $signed(add_ln38_119_fu_3583_p2); + +assign sext_ln38_57_fu_3598_p1 = $signed(add_ln38_120_fu_3593_p2); + +assign sext_ln38_58_fu_3633_p1 = $signed(add_ln38_121_fu_3628_p2); + +assign sext_ln38_59_fu_3643_p1 = $signed(add_ln38_122_fu_3638_p2); + +assign sext_ln38_5_fu_2567_p1 = $signed(add_ln38_68_fu_2562_p2); + +assign sext_ln38_60_fu_3668_p1 = $signed(add_ln38_123_fu_3663_p2); + +assign sext_ln38_61_fu_3678_p1 = $signed(add_ln38_124_fu_3673_p2); + +assign sext_ln38_62_fu_3708_p1 = $signed(add_ln38_125_fu_3703_p2); + +assign sext_ln38_63_fu_3718_p1 = $signed(add_ln38_126_fu_3713_p2); + +assign sext_ln38_64_fu_2517_p1 = $signed(add_ln38_127_fu_2512_p2); + +assign sext_ln38_6_fu_2603_p1 = $signed(add_ln38_69_fu_2598_p2); + +assign sext_ln38_7_fu_2613_p1 = $signed(add_ln38_70_fu_2608_p2); + +assign sext_ln38_8_fu_2638_p1 = $signed(add_ln38_71_fu_2633_p2); + +assign sext_ln38_9_fu_2648_p1 = $signed(add_ln38_72_fu_2643_p2); + +assign sext_ln38_fu_2492_p1 = j_0_reg_1445; + +assign tmp_10_fu_1709_p3 = {{27'd0}, {or_ln38_8_fu_1704_p2}}; + +assign tmp_11_fu_1723_p3 = {{27'd0}, {or_ln38_9_fu_1718_p2}}; + +assign tmp_12_fu_1737_p3 = {{27'd0}, {or_ln38_10_fu_1732_p2}}; + +assign tmp_13_fu_1751_p3 = {{27'd0}, {or_ln38_11_fu_1746_p2}}; + +assign tmp_14_fu_1765_p3 = {{27'd0}, {or_ln38_12_fu_1760_p2}}; + +assign tmp_15_fu_1779_p3 = {{27'd0}, {or_ln38_13_fu_1774_p2}}; + +assign tmp_16_fu_1793_p3 = {{27'd0}, {or_ln38_14_fu_1788_p2}}; + +assign tmp_17_fu_1807_p3 = {{27'd0}, {or_ln38_15_fu_1802_p2}}; + +assign tmp_18_fu_1821_p3 = {{27'd0}, {or_ln38_16_fu_1816_p2}}; + +assign tmp_19_fu_1835_p3 = {{27'd0}, {or_ln38_17_fu_1830_p2}}; + +assign tmp_20_fu_1849_p3 = {{27'd0}, {or_ln38_18_fu_1844_p2}}; + +assign tmp_21_fu_1863_p3 = {{27'd0}, {or_ln38_19_fu_1858_p2}}; + +assign tmp_22_fu_1877_p3 = {{27'd0}, {or_ln38_20_fu_1872_p2}}; + +assign tmp_23_fu_1891_p3 = {{27'd0}, {or_ln38_21_fu_1886_p2}}; + +assign tmp_24_fu_1905_p3 = {{27'd0}, {or_ln38_22_fu_1900_p2}}; + +assign tmp_25_fu_1919_p3 = {{27'd0}, {or_ln38_23_fu_1914_p2}}; + +assign tmp_26_fu_1933_p3 = {{27'd0}, {or_ln38_24_fu_1928_p2}}; + +assign tmp_27_fu_1947_p3 = {{27'd0}, {or_ln38_25_fu_1942_p2}}; + +assign tmp_28_fu_1961_p3 = {{27'd0}, {or_ln38_26_fu_1956_p2}}; + +assign tmp_29_fu_1975_p3 = {{27'd0}, {or_ln38_27_fu_1970_p2}}; + +assign tmp_2_fu_1574_p3 = {{i_0_reg_1434}, {6'd0}}; + +assign tmp_30_fu_1989_p3 = {{27'd0}, {or_ln38_28_fu_1984_p2}}; + +assign tmp_31_fu_2003_p3 = {{27'd0}, {or_ln38_29_fu_1998_p2}}; + +assign tmp_32_fu_2017_p3 = {{27'd0}, {or_ln38_30_fu_2012_p2}}; + +assign tmp_33_fu_2031_p3 = {{27'd0}, {or_ln38_31_fu_2026_p2}}; + +assign tmp_34_fu_2045_p3 = {{27'd0}, {or_ln38_32_fu_2040_p2}}; + +assign tmp_35_fu_2059_p3 = {{27'd0}, {or_ln38_33_fu_2054_p2}}; + +assign tmp_36_fu_2073_p3 = {{27'd0}, {or_ln38_34_fu_2068_p2}}; + +assign tmp_37_fu_2087_p3 = {{27'd0}, {or_ln38_35_fu_2082_p2}}; + +assign tmp_38_fu_2101_p3 = {{27'd0}, {or_ln38_36_fu_2096_p2}}; + +assign tmp_39_fu_2115_p3 = {{27'd0}, {or_ln38_37_fu_2110_p2}}; + +assign tmp_3_fu_1597_p3 = {{27'd0}, {or_ln38_fu_1591_p2}}; + +assign tmp_40_fu_2129_p3 = {{27'd0}, {or_ln38_38_fu_2124_p2}}; + +assign tmp_41_fu_2143_p3 = {{27'd0}, {or_ln38_39_fu_2138_p2}}; + +assign tmp_42_fu_2157_p3 = {{27'd0}, {or_ln38_40_fu_2152_p2}}; + +assign tmp_43_fu_2171_p3 = {{27'd0}, {or_ln38_41_fu_2166_p2}}; + +assign tmp_44_fu_2185_p3 = {{27'd0}, {or_ln38_42_fu_2180_p2}}; + +assign tmp_45_fu_2199_p3 = {{27'd0}, {or_ln38_43_fu_2194_p2}}; + +assign tmp_46_fu_2213_p3 = {{27'd0}, {or_ln38_44_fu_2208_p2}}; + +assign tmp_47_fu_2227_p3 = {{27'd0}, {or_ln38_45_fu_2222_p2}}; + +assign tmp_48_fu_2241_p3 = {{27'd0}, {or_ln38_46_fu_2236_p2}}; + +assign tmp_49_fu_2255_p3 = {{27'd0}, {or_ln38_47_fu_2250_p2}}; + +assign tmp_4_fu_1611_p3 = {{27'd0}, {or_ln38_1_fu_1606_p2}}; + +assign tmp_50_fu_2269_p3 = {{27'd0}, {or_ln38_48_fu_2264_p2}}; + +assign tmp_51_fu_2283_p3 = {{27'd0}, {or_ln38_49_fu_2278_p2}}; + +assign tmp_52_fu_2297_p3 = {{27'd0}, {or_ln38_50_fu_2292_p2}}; + +assign tmp_53_fu_2311_p3 = {{27'd0}, {or_ln38_51_fu_2306_p2}}; + +assign tmp_54_fu_2325_p3 = {{27'd0}, {or_ln38_52_fu_2320_p2}}; + +assign tmp_55_fu_2339_p3 = {{27'd0}, {or_ln38_53_fu_2334_p2}}; + +assign tmp_56_fu_2353_p3 = {{27'd0}, {or_ln38_54_fu_2348_p2}}; + +assign tmp_57_fu_2367_p3 = {{27'd0}, {or_ln38_55_fu_2362_p2}}; + +assign tmp_58_fu_2381_p3 = {{27'd0}, {or_ln38_56_fu_2376_p2}}; + +assign tmp_59_fu_2395_p3 = {{27'd0}, {or_ln38_57_fu_2390_p2}}; + +assign tmp_5_fu_1625_p3 = {{27'd0}, {or_ln38_2_fu_1620_p2}}; + +assign tmp_60_fu_2409_p3 = {{27'd0}, {or_ln38_58_fu_2404_p2}}; + +assign tmp_61_fu_2423_p3 = {{27'd0}, {or_ln38_59_fu_2418_p2}}; + +assign tmp_62_fu_2437_p3 = {{27'd0}, {or_ln38_60_fu_2432_p2}}; + +assign tmp_63_fu_2451_p3 = {{27'd0}, {or_ln38_61_fu_2446_p2}}; + +assign tmp_64_fu_2465_p3 = {{27'd0}, {or_ln38_62_fu_2460_p2}}; + +assign tmp_6_fu_1639_p3 = {{27'd0}, {or_ln38_3_fu_1634_p2}}; + +assign tmp_7_fu_1653_p3 = {{27'd0}, {or_ln38_4_fu_1648_p2}}; + +assign tmp_8_fu_1667_p3 = {{27'd0}, {or_ln38_5_fu_1662_p2}}; + +assign tmp_9_fu_1681_p3 = {{27'd0}, {or_ln38_6_fu_1676_p2}}; + +assign tmp_s_fu_1695_p3 = {{27'd0}, {or_ln38_7_fu_1690_p2}}; + +assign trunc_ln38_1_fu_2497_p1 = j_0_reg_1445[13:0]; + +assign trunc_ln38_fu_1587_p1 = i_0_reg_1434[7:0]; + +assign zext_ln27_fu_1537_p1 = phi_ln27_reg_1410_pp0_iter1_reg; + +assign zext_ln28_fu_1554_p1 = phi_ln28_reg_1422_pp1_iter1_reg; + +assign zext_ln31_fu_1559_p1 = i_0_reg_1434; + +assign zext_ln38_cast_fu_2474_p3 = {{trunc_ln38_reg_3943}, {6'd0}}; + +assign zext_ln38_fu_1582_p1 = tmp_2_fu_1574_p3; + +assign zext_ln42_fu_3796_p1 = phi_ln42_reg_1456; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_3828[31:30] <= 2'b00; + in2_mem_addr_reg_3834[31:30] <= 2'b00; + tmp_2_reg_3877[5:0] <= 6'b000000; + zext_ln38_cast_reg_4578[5:0] <= 6'b000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_loc.v new file mode 100755 index 0000000..d6b9c3d --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_loc.v @@ -0,0 +1,88 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_ram (addr0, ce0, d0, we0, q0, addr1, ce1, q1, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input[AWIDTH-1:0] addr1; +input ce1; +output reg[DWIDTH-1:0] q1; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +always @(posedge clk) +begin + if (ce1) begin + q1 <= ram[addr1]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc( + reset, + clk, + address0, + ce0, + we0, + d0, + q0, + address1, + ce1, + q1); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; +input[AddressWidth - 1:0] address1; +input ce1; +output[DataWidth - 1:0] q1; + + + +mmult_in1_loc_ram mmult_in1_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 ), + .addr1( address1 ), + .ce1( ce1 ), + .q1( q1 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_loc.v new file mode 100755 index 0000000..dedfa23 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_loc.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_out_loc_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_out_loc( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_out_loc_ram mmult_out_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..991a8c2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult.vhd @@ -0,0 +1,4778 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=153755,HLS_SYN_TPT=none,HLS_SYN_MEM=30,HLS_SYN_DSP=192,HLS_SYN_FF=6462,HLS_SYN_LUT=10635,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000"; + constant ap_ST_fsm_state23 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000"; + constant ap_ST_fsm_state24 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000"; + constant ap_ST_fsm_state25 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000"; + constant ap_ST_fsm_state26 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000"; + constant ap_ST_fsm_state27 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000"; + constant ap_ST_fsm_state28 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000"; + constant ap_ST_fsm_state29 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000"; + constant ap_ST_fsm_state30 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000"; + constant ap_ST_fsm_state31 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000"; + constant ap_ST_fsm_state32 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000"; + constant ap_ST_fsm_state33 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000"; + constant ap_ST_fsm_state34 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000"; + constant ap_ST_fsm_state35 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000"; + constant ap_ST_fsm_state36 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000"; + constant ap_ST_fsm_state37 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000"; + constant ap_ST_fsm_state38 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000"; + constant ap_ST_fsm_state39 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000"; + constant ap_ST_fsm_state40 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000"; + constant ap_ST_fsm_state41 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000"; + constant ap_ST_fsm_state42 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000"; + constant ap_ST_fsm_state43 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000"; + constant ap_ST_fsm_state44 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000"; + constant ap_ST_fsm_state45 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000"; + constant ap_ST_fsm_state46 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000"; + constant ap_ST_fsm_state47 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state48 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state49 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state50 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state51 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state52 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state53 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state54 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state55 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state56 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state57 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state58 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state59 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state60 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state61 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state62 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state63 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state64 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state65 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state66 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state67 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state68 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state69 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state70 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state71 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state72 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state73 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state74 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state75 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state76 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state77 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state78 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state79 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state80 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state81 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state82 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state83 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state84 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state85 : STD_LOGIC_VECTOR (90 downto 0) := "0000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state86 : STD_LOGIC_VECTOR (90 downto 0) := "0000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state87 : STD_LOGIC_VECTOR (90 downto 0) := "0000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state88 : STD_LOGIC_VECTOR (90 downto 0) := "0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state89 : STD_LOGIC_VECTOR (90 downto 0) := "0000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_pp2_stage0 : STD_LOGIC_VECTOR (90 downto 0) := "0000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state93 : STD_LOGIC_VECTOR (90 downto 0) := "0000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state94 : STD_LOGIC_VECTOR (90 downto 0) := "0001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state95 : STD_LOGIC_VECTOR (90 downto 0) := "0010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state96 : STD_LOGIC_VECTOR (90 downto 0) := "0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_ST_fsm_state97 : STD_LOGIC_VECTOR (90 downto 0) := "1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv32_5A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001011010"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv32_15 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010101"; + constant ap_const_lv32_16 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010110"; + constant ap_const_lv32_17 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010111"; + constant ap_const_lv32_18 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011000"; + constant ap_const_lv32_19 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011001"; + constant ap_const_lv32_1A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011010"; + constant ap_const_lv32_1B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011011"; + constant ap_const_lv32_1C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011100"; + constant ap_const_lv32_1D : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011101"; + constant ap_const_lv32_1E : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011110"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv32_20 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100000"; + constant ap_const_lv32_21 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100001"; + constant ap_const_lv32_22 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100010"; + constant ap_const_lv32_23 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100011"; + constant ap_const_lv32_24 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100100"; + constant ap_const_lv32_25 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100101"; + constant ap_const_lv32_26 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100110"; + constant ap_const_lv32_27 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000100111"; + constant ap_const_lv32_28 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101000"; + constant ap_const_lv32_29 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101001"; + constant ap_const_lv32_2A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101010"; + constant ap_const_lv32_2B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101011"; + constant ap_const_lv32_2C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101100"; + constant ap_const_lv32_2D : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101101"; + constant ap_const_lv32_2E : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101110"; + constant ap_const_lv32_2F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000101111"; + constant ap_const_lv32_30 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110000"; + constant ap_const_lv32_31 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110001"; + constant ap_const_lv32_32 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110010"; + constant ap_const_lv32_33 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110011"; + constant ap_const_lv32_34 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110100"; + constant ap_const_lv32_35 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110101"; + constant ap_const_lv32_36 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110110"; + constant ap_const_lv32_37 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000110111"; + constant ap_const_lv32_38 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111000"; + constant ap_const_lv32_39 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111001"; + constant ap_const_lv32_3A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111010"; + constant ap_const_lv32_3B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111011"; + constant ap_const_lv32_3C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111100"; + constant ap_const_lv32_3D : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111101"; + constant ap_const_lv32_3E : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111110"; + constant ap_const_lv32_3F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000111111"; + constant ap_const_lv32_40 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000000"; + constant ap_const_lv32_41 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000001"; + constant ap_const_lv32_42 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000010"; + constant ap_const_lv32_43 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000011"; + constant ap_const_lv32_44 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000100"; + constant ap_const_lv32_45 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000101"; + constant ap_const_lv32_46 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000110"; + constant ap_const_lv32_47 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001000111"; + constant ap_const_lv32_48 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001000"; + constant ap_const_lv32_49 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001001"; + constant ap_const_lv32_4A : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001010"; + constant ap_const_lv32_4B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001011"; + constant ap_const_lv32_4C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001100"; + constant ap_const_lv32_4D : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001101"; + constant ap_const_lv32_4E : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001110"; + constant ap_const_lv32_4F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001001111"; + constant ap_const_lv32_50 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010000"; + constant ap_const_lv32_51 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010001"; + constant ap_const_lv32_52 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010010"; + constant ap_const_lv32_53 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010011"; + constant ap_const_lv32_55 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010101"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_54 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000001010100"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv37_1 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000001"; + constant ap_const_lv27_0 : STD_LOGIC_VECTOR (26 downto 0) := "000000000000000000000000000"; + constant ap_const_lv37_2 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000010"; + constant ap_const_lv37_3 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000011"; + constant ap_const_lv37_4 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000100"; + constant ap_const_lv37_5 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000101"; + constant ap_const_lv37_6 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000110"; + constant ap_const_lv37_7 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000000111"; + constant ap_const_lv37_8 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001000"; + constant ap_const_lv37_9 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001001"; + constant ap_const_lv37_A : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001010"; + constant ap_const_lv37_B : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001011"; + constant ap_const_lv37_C : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001100"; + constant ap_const_lv37_D : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001101"; + constant ap_const_lv37_E : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001110"; + constant ap_const_lv37_F : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000001111"; + constant ap_const_lv37_10 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010000"; + constant ap_const_lv37_11 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010001"; + constant ap_const_lv37_12 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010010"; + constant ap_const_lv37_13 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010011"; + constant ap_const_lv37_14 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010100"; + constant ap_const_lv37_15 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010101"; + constant ap_const_lv37_16 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010110"; + constant ap_const_lv37_17 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000010111"; + constant ap_const_lv37_18 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011000"; + constant ap_const_lv37_19 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011001"; + constant ap_const_lv37_1A : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011010"; + constant ap_const_lv37_1B : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011011"; + constant ap_const_lv37_1C : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011100"; + constant ap_const_lv37_1D : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011101"; + constant ap_const_lv37_1E : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011110"; + constant ap_const_lv37_1F : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000011111"; + constant ap_const_lv37_20 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100000"; + constant ap_const_lv37_21 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100001"; + constant ap_const_lv37_22 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100010"; + constant ap_const_lv37_23 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100011"; + constant ap_const_lv37_24 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100100"; + constant ap_const_lv37_25 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100101"; + constant ap_const_lv37_26 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100110"; + constant ap_const_lv37_27 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000100111"; + constant ap_const_lv37_28 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101000"; + constant ap_const_lv37_29 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101001"; + constant ap_const_lv37_2A : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101010"; + constant ap_const_lv37_2B : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101011"; + constant ap_const_lv37_2C : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101100"; + constant ap_const_lv37_2D : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101101"; + constant ap_const_lv37_2E : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101110"; + constant ap_const_lv37_2F : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000101111"; + constant ap_const_lv37_30 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110000"; + constant ap_const_lv37_31 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110001"; + constant ap_const_lv37_32 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110010"; + constant ap_const_lv37_33 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110011"; + constant ap_const_lv37_34 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110100"; + constant ap_const_lv37_35 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110101"; + constant ap_const_lv37_36 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110110"; + constant ap_const_lv37_37 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000110111"; + constant ap_const_lv37_38 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111000"; + constant ap_const_lv37_39 : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111001"; + constant ap_const_lv37_3A : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111010"; + constant ap_const_lv37_3B : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111011"; + constant ap_const_lv37_3C : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111100"; + constant ap_const_lv37_3D : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111101"; + constant ap_const_lv37_3E : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111110"; + constant ap_const_lv37_3F : STD_LOGIC_VECTOR (36 downto 0) := "0000000000000000000000000000000111111"; + constant ap_const_lv14_40 : STD_LOGIC_VECTOR (13 downto 0) := "00000001000000"; + constant ap_const_lv14_80 : STD_LOGIC_VECTOR (13 downto 0) := "00000010000000"; + constant ap_const_lv14_C0 : STD_LOGIC_VECTOR (13 downto 0) := "00000011000000"; + constant ap_const_lv14_100 : STD_LOGIC_VECTOR (13 downto 0) := "00000100000000"; + constant ap_const_lv14_140 : STD_LOGIC_VECTOR (13 downto 0) := "00000101000000"; + constant ap_const_lv14_180 : STD_LOGIC_VECTOR (13 downto 0) := "00000110000000"; + constant ap_const_lv14_1C0 : STD_LOGIC_VECTOR (13 downto 0) := "00000111000000"; + constant ap_const_lv14_200 : STD_LOGIC_VECTOR (13 downto 0) := "00001000000000"; + constant ap_const_lv14_240 : STD_LOGIC_VECTOR (13 downto 0) := "00001001000000"; + constant ap_const_lv14_280 : STD_LOGIC_VECTOR (13 downto 0) := "00001010000000"; + constant ap_const_lv14_2C0 : STD_LOGIC_VECTOR (13 downto 0) := "00001011000000"; + constant ap_const_lv14_300 : STD_LOGIC_VECTOR (13 downto 0) := "00001100000000"; + constant ap_const_lv14_340 : STD_LOGIC_VECTOR (13 downto 0) := "00001101000000"; + constant ap_const_lv14_380 : STD_LOGIC_VECTOR (13 downto 0) := "00001110000000"; + constant ap_const_lv14_3C0 : STD_LOGIC_VECTOR (13 downto 0) := "00001111000000"; + constant ap_const_lv14_400 : STD_LOGIC_VECTOR (13 downto 0) := "00010000000000"; + constant ap_const_lv14_440 : STD_LOGIC_VECTOR (13 downto 0) := "00010001000000"; + constant ap_const_lv14_480 : STD_LOGIC_VECTOR (13 downto 0) := "00010010000000"; + constant ap_const_lv14_4C0 : STD_LOGIC_VECTOR (13 downto 0) := "00010011000000"; + constant ap_const_lv14_500 : STD_LOGIC_VECTOR (13 downto 0) := "00010100000000"; + constant ap_const_lv14_540 : STD_LOGIC_VECTOR (13 downto 0) := "00010101000000"; + constant ap_const_lv14_580 : STD_LOGIC_VECTOR (13 downto 0) := "00010110000000"; + constant ap_const_lv14_5C0 : STD_LOGIC_VECTOR (13 downto 0) := "00010111000000"; + constant ap_const_lv14_600 : STD_LOGIC_VECTOR (13 downto 0) := "00011000000000"; + constant ap_const_lv14_640 : STD_LOGIC_VECTOR (13 downto 0) := "00011001000000"; + constant ap_const_lv14_680 : STD_LOGIC_VECTOR (13 downto 0) := "00011010000000"; + constant ap_const_lv14_6C0 : STD_LOGIC_VECTOR (13 downto 0) := "00011011000000"; + constant ap_const_lv14_700 : STD_LOGIC_VECTOR (13 downto 0) := "00011100000000"; + constant ap_const_lv14_740 : STD_LOGIC_VECTOR (13 downto 0) := "00011101000000"; + constant ap_const_lv14_780 : STD_LOGIC_VECTOR (13 downto 0) := "00011110000000"; + constant ap_const_lv14_7C0 : STD_LOGIC_VECTOR (13 downto 0) := "00011111000000"; + constant ap_const_lv14_800 : STD_LOGIC_VECTOR (13 downto 0) := "00100000000000"; + constant ap_const_lv14_840 : STD_LOGIC_VECTOR (13 downto 0) := "00100001000000"; + constant ap_const_lv14_880 : STD_LOGIC_VECTOR (13 downto 0) := "00100010000000"; + constant ap_const_lv14_8C0 : STD_LOGIC_VECTOR (13 downto 0) := "00100011000000"; + constant ap_const_lv14_900 : STD_LOGIC_VECTOR (13 downto 0) := "00100100000000"; + constant ap_const_lv14_940 : STD_LOGIC_VECTOR (13 downto 0) := "00100101000000"; + constant ap_const_lv14_980 : STD_LOGIC_VECTOR (13 downto 0) := "00100110000000"; + constant ap_const_lv14_9C0 : STD_LOGIC_VECTOR (13 downto 0) := "00100111000000"; + constant ap_const_lv14_A00 : STD_LOGIC_VECTOR (13 downto 0) := "00101000000000"; + constant ap_const_lv14_A40 : STD_LOGIC_VECTOR (13 downto 0) := "00101001000000"; + constant ap_const_lv14_A80 : STD_LOGIC_VECTOR (13 downto 0) := "00101010000000"; + constant ap_const_lv14_AC0 : STD_LOGIC_VECTOR (13 downto 0) := "00101011000000"; + constant ap_const_lv14_B00 : STD_LOGIC_VECTOR (13 downto 0) := "00101100000000"; + constant ap_const_lv14_B40 : STD_LOGIC_VECTOR (13 downto 0) := "00101101000000"; + constant ap_const_lv14_B80 : STD_LOGIC_VECTOR (13 downto 0) := "00101110000000"; + constant ap_const_lv14_BC0 : STD_LOGIC_VECTOR (13 downto 0) := "00101111000000"; + constant ap_const_lv14_C00 : STD_LOGIC_VECTOR (13 downto 0) := "00110000000000"; + constant ap_const_lv14_C40 : STD_LOGIC_VECTOR (13 downto 0) := "00110001000000"; + constant ap_const_lv14_C80 : STD_LOGIC_VECTOR (13 downto 0) := "00110010000000"; + constant ap_const_lv14_CC0 : STD_LOGIC_VECTOR (13 downto 0) := "00110011000000"; + constant ap_const_lv14_D00 : STD_LOGIC_VECTOR (13 downto 0) := "00110100000000"; + constant ap_const_lv14_D40 : STD_LOGIC_VECTOR (13 downto 0) := "00110101000000"; + constant ap_const_lv14_D80 : STD_LOGIC_VECTOR (13 downto 0) := "00110110000000"; + constant ap_const_lv14_DC0 : STD_LOGIC_VECTOR (13 downto 0) := "00110111000000"; + constant ap_const_lv14_E00 : STD_LOGIC_VECTOR (13 downto 0) := "00111000000000"; + constant ap_const_lv14_E40 : STD_LOGIC_VECTOR (13 downto 0) := "00111001000000"; + constant ap_const_lv14_E80 : STD_LOGIC_VECTOR (13 downto 0) := "00111010000000"; + constant ap_const_lv14_EC0 : STD_LOGIC_VECTOR (13 downto 0) := "00111011000000"; + constant ap_const_lv14_F00 : STD_LOGIC_VECTOR (13 downto 0) := "00111100000000"; + constant ap_const_lv14_F40 : STD_LOGIC_VECTOR (13 downto 0) := "00111101000000"; + constant ap_const_lv14_F80 : STD_LOGIC_VECTOR (13 downto 0) := "00111110000000"; + constant ap_const_lv14_FC0 : STD_LOGIC_VECTOR (13 downto 0) := "00111111000000"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (90 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal icmp_ln27_reg_3840 : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal icmp_ln28_reg_3854 : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state23 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state23 : signal is "none"; + signal icmp_ln31_fu_1563_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp2_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0 : BOOLEAN; + signal icmp_ln42_reg_5307 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_5307_pp2_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state97 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state97 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_1410 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln27_reg_1410_pp0_iter1_reg : STD_LOGIC_VECTOR (12 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal phi_ln28_reg_1422 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_1422_pp1_iter1_reg : STD_LOGIC_VECTOR (12 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal phi_ln42_reg_1456 : STD_LOGIC_VECTOR (12 downto 0); + signal dim_read_reg_3801 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_3807 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_3812 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_3817 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_3828 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_3834 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_1525_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln27_reg_3840_pp0_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln27_fu_1531_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal add_ln27_reg_3844 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal in1_mem_addr_read_reg_3849 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_1542_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln28_reg_3854_pp1_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln28_fu_1548_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal add_ln28_reg_3858 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal in2_mem_addr_read_reg_3863 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state23_io : BOOLEAN; + signal i_fu_1568_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal i_reg_3872 : STD_LOGIC_VECTOR (30 downto 0); + signal tmp_2_fu_1574_p3 : STD_LOGIC_VECTOR (36 downto 0); + signal tmp_2_reg_3877 : STD_LOGIC_VECTOR (36 downto 0); + signal trunc_ln38_fu_1587_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal trunc_ln38_reg_3943 : STD_LOGIC_VECTOR (7 downto 0); + signal ap_CS_fsm_state24 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state24 : signal is "none"; + signal in1_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_reg_3968 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_q1 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_1_reg_3973 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state25 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state25 : signal is "none"; + signal in1_loc_load_2_reg_3988 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_3_reg_3993 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state26 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state26 : signal is "none"; + signal in1_loc_load_4_reg_4008 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_5_reg_4013 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state27 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state27 : signal is "none"; + signal in1_loc_load_6_reg_4028 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_7_reg_4033 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state28 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state28 : signal is "none"; + signal in1_loc_load_8_reg_4048 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_9_reg_4053 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state29 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state29 : signal is "none"; + signal in1_loc_load_10_reg_4068 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_11_reg_4073 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state30 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state30 : signal is "none"; + signal in1_loc_load_12_reg_4088 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_13_reg_4093 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state31 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state31 : signal is "none"; + signal in1_loc_load_14_reg_4108 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_15_reg_4113 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state32 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state32 : signal is "none"; + signal in1_loc_load_16_reg_4128 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_17_reg_4133 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state33 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state33 : signal is "none"; + signal in1_loc_load_18_reg_4148 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_19_reg_4153 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state34 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state34 : signal is "none"; + signal in1_loc_load_20_reg_4168 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_21_reg_4173 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state35 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state35 : signal is "none"; + signal in1_loc_load_22_reg_4188 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_23_reg_4193 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state36 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state36 : signal is "none"; + signal in1_loc_load_24_reg_4208 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_25_reg_4213 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state37 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state37 : signal is "none"; + signal in1_loc_load_26_reg_4228 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_27_reg_4233 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state38 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state38 : signal is "none"; + signal in1_loc_load_28_reg_4248 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_29_reg_4253 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state39 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state39 : signal is "none"; + signal in1_loc_load_30_reg_4268 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_31_reg_4273 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state40 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state40 : signal is "none"; + signal in1_loc_load_32_reg_4288 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_33_reg_4293 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state41 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state41 : signal is "none"; + signal in1_loc_load_34_reg_4308 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_35_reg_4313 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state42 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state42 : signal is "none"; + signal in1_loc_load_36_reg_4328 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_37_reg_4333 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state43 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state43 : signal is "none"; + signal in1_loc_load_38_reg_4348 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_39_reg_4353 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state44 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state44 : signal is "none"; + signal in1_loc_load_40_reg_4368 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_41_reg_4373 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state45 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state45 : signal is "none"; + signal in1_loc_load_42_reg_4388 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_43_reg_4393 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state46 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state46 : signal is "none"; + signal in1_loc_load_44_reg_4408 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_45_reg_4413 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state47 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state47 : signal is "none"; + signal in1_loc_load_46_reg_4428 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_47_reg_4433 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state48 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state48 : signal is "none"; + signal in1_loc_load_48_reg_4448 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_49_reg_4453 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state49 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state49 : signal is "none"; + signal in1_loc_load_50_reg_4468 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_51_reg_4473 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state50 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state50 : signal is "none"; + signal in1_loc_load_52_reg_4488 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_53_reg_4493 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state51 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state51 : signal is "none"; + signal in1_loc_load_54_reg_4508 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_55_reg_4513 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state52 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state52 : signal is "none"; + signal in1_loc_load_56_reg_4528 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_57_reg_4533 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state53 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state53 : signal is "none"; + signal in1_loc_load_58_reg_4548 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_59_reg_4553 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state54 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state54 : signal is "none"; + signal in1_loc_load_60_reg_4568 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_61_reg_4573 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln38_cast_fu_2474_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal zext_ln38_cast_reg_4578 : STD_LOGIC_VECTOR (13 downto 0); + signal ap_CS_fsm_state55 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state55 : signal is "none"; + signal in1_loc_load_62_reg_4583 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_load_63_reg_4588 : STD_LOGIC_VECTOR (31 downto 0); + signal j_fu_2486_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal j_reg_4596 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state56 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state56 : signal is "none"; + signal trunc_ln38_1_fu_2497_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal trunc_ln38_1_reg_4601 : STD_LOGIC_VECTOR (13 downto 0); + signal icmp_ln33_fu_2481_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal out_loc_addr_reg_4677 : STD_LOGIC_VECTOR (11 downto 0); + signal ap_CS_fsm_state57 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state57 : signal is "none"; + signal mul_ln38_fu_2542_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_reg_4692 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_2547_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_reg_4697 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state58 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state58 : signal is "none"; + signal mul_ln38_3_fu_2577_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_reg_4712 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_fu_2592_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_reg_4717 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state59 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state59 : signal is "none"; + signal mul_ln38_5_fu_2623_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_reg_4732 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_fu_2628_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_reg_4737 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state60 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state60 : signal is "none"; + signal mul_ln38_7_fu_2658_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_reg_4752 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_fu_2673_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_reg_4757 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state61 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state61 : signal is "none"; + signal mul_ln38_9_fu_2703_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_reg_4772 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_fu_2708_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_reg_4777 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state62 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state62 : signal is "none"; + signal mul_ln38_11_fu_2738_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_reg_4792 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_fu_2748_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_reg_4797 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state63 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state63 : signal is "none"; + signal mul_ln38_13_fu_2778_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_reg_4812 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_fu_2783_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_reg_4817 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state64 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state64 : signal is "none"; + signal mul_ln38_15_fu_2813_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_reg_4832 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_fu_2833_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_reg_4837 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state65 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state65 : signal is "none"; + signal mul_ln38_17_fu_2863_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_reg_4852 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_fu_2868_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_reg_4857 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state66 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state66 : signal is "none"; + signal mul_ln38_19_fu_2898_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_reg_4872 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_fu_2908_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_reg_4877 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state67 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state67 : signal is "none"; + signal mul_ln38_21_fu_2938_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_reg_4892 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_fu_2943_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_reg_4897 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state68 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state68 : signal is "none"; + signal mul_ln38_23_fu_2973_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_reg_4912 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_fu_2988_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_reg_4917 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state69 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state69 : signal is "none"; + signal mul_ln38_25_fu_3018_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_reg_4932 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_fu_3023_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_reg_4937 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state70 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state70 : signal is "none"; + signal mul_ln38_27_fu_3053_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_reg_4952 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_fu_3063_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_reg_4957 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state71 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state71 : signal is "none"; + signal mul_ln38_29_fu_3093_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_reg_4972 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_fu_3098_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_reg_4977 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state72 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state72 : signal is "none"; + signal mul_ln38_31_fu_3128_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_reg_4992 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_fu_3153_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_reg_4997 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state73 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state73 : signal is "none"; + signal mul_ln38_33_fu_3183_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_reg_5012 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_fu_3188_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_reg_5017 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state74 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state74 : signal is "none"; + signal mul_ln38_35_fu_3218_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_reg_5032 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_fu_3228_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_reg_5037 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state75 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state75 : signal is "none"; + signal mul_ln38_37_fu_3258_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_reg_5052 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_fu_3263_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_reg_5057 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state76 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state76 : signal is "none"; + signal mul_ln38_39_fu_3293_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_reg_5072 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_fu_3308_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_reg_5077 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state77 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state77 : signal is "none"; + signal mul_ln38_41_fu_3338_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_reg_5092 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_fu_3343_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_reg_5097 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state78 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state78 : signal is "none"; + signal mul_ln38_43_fu_3373_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_reg_5112 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_fu_3383_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_reg_5117 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state79 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state79 : signal is "none"; + signal mul_ln38_45_fu_3413_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_reg_5132 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_fu_3418_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_reg_5137 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state80 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state80 : signal is "none"; + signal mul_ln38_47_fu_3448_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_reg_5152 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_fu_3468_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_reg_5157 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state81 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state81 : signal is "none"; + signal mul_ln38_49_fu_3498_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_reg_5172 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_fu_3503_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_reg_5177 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state82 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state82 : signal is "none"; + signal mul_ln38_51_fu_3533_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_reg_5192 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_fu_3543_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_reg_5197 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state83 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state83 : signal is "none"; + signal mul_ln38_53_fu_3573_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_reg_5212 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_fu_3578_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_reg_5217 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state84 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state84 : signal is "none"; + signal mul_ln38_55_fu_3608_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_reg_5232 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_fu_3623_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_reg_5237 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state85 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state85 : signal is "none"; + signal mul_ln38_57_fu_3653_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_reg_5252 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_fu_3658_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_reg_5257 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state86 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state86 : signal is "none"; + signal mul_ln38_59_fu_3688_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_reg_5272 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_fu_3698_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_reg_5277 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state87 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state87 : signal is "none"; + signal mul_ln38_61_fu_3728_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_reg_5292 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_fu_3733_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_reg_5297 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_fu_3769_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_reg_5302 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state88 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state88 : signal is "none"; + signal icmp_ln42_fu_3784_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp2_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp2_stage0 : signal is "none"; + signal ap_block_state90_pp2_stage0_iter0 : BOOLEAN; + signal ap_block_state91_pp2_stage0_iter1 : BOOLEAN; + signal ap_block_state92_pp2_stage0_iter2 : BOOLEAN; + signal ap_block_state92_io : BOOLEAN; + signal ap_block_pp2_stage0_11001 : BOOLEAN; + signal add_ln42_fu_3790_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp2_iter0 : STD_LOGIC := '0'; + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_load_reg_5321 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0_subdone : BOOLEAN; + signal ap_condition_pp2_exit_iter0_state90 : STD_LOGIC; + signal in1_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal in1_loc_ce0 : STD_LOGIC; + signal in1_loc_we0 : STD_LOGIC; + signal in1_loc_address1 : STD_LOGIC_VECTOR (11 downto 0); + signal in1_loc_ce1 : STD_LOGIC; + signal in2_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal in2_loc_ce0 : STD_LOGIC; + signal in2_loc_we0 : STD_LOGIC; + signal in2_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_address1 : STD_LOGIC_VECTOR (11 downto 0); + signal in2_loc_ce1 : STD_LOGIC; + signal in2_loc_q1 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_we0 : STD_LOGIC; + signal out_loc_d0 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_phi_ln27_phi_fu_1414_p4 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_phi_mux_phi_ln28_phi_fu_1426_p4 : STD_LOGIC_VECTOR (12 downto 0); + signal i_0_reg_1434 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal j_0_reg_1445 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state89 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state89 : signal is "none"; + signal zext_ln27_fu_1537_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_1554_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_fu_1582_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_3_fu_1597_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_4_fu_1611_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_5_fu_1625_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_6_fu_1639_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_7_fu_1653_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_8_fu_1667_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_9_fu_1681_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_s_fu_1695_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_10_fu_1709_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_11_fu_1723_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_12_fu_1737_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_13_fu_1751_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_14_fu_1765_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_15_fu_1779_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_16_fu_1793_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_17_fu_1807_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_18_fu_1821_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_19_fu_1835_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_20_fu_1849_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_21_fu_1863_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_22_fu_1877_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_23_fu_1891_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_24_fu_1905_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_25_fu_1919_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_26_fu_1933_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_27_fu_1947_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_28_fu_1961_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_29_fu_1975_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_30_fu_1989_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_31_fu_2003_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_32_fu_2017_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_33_fu_2031_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_34_fu_2045_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_35_fu_2059_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_36_fu_2073_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_37_fu_2087_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_38_fu_2101_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_39_fu_2115_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_40_fu_2129_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_41_fu_2143_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_42_fu_2157_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_43_fu_2171_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_44_fu_2185_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_45_fu_2199_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_46_fu_2213_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_47_fu_2227_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_48_fu_2241_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_49_fu_2255_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_50_fu_2269_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_51_fu_2283_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_52_fu_2297_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_53_fu_2311_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_54_fu_2325_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_55_fu_2339_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_56_fu_2353_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_57_fu_2367_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_58_fu_2381_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_59_fu_2395_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_60_fu_2409_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_61_fu_2423_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_62_fu_2437_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_63_fu_2451_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal tmp_64_fu_2465_p3 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_2492_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_1_fu_2507_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_64_fu_2517_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_2_fu_2527_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_3_fu_2537_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_4_fu_2557_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_5_fu_2567_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_6_fu_2603_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_7_fu_2613_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_8_fu_2638_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_9_fu_2648_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_10_fu_2683_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_11_fu_2693_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_12_fu_2718_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_13_fu_2728_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_14_fu_2758_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_15_fu_2768_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_16_fu_2793_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_17_fu_2803_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_18_fu_2843_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_19_fu_2853_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_20_fu_2878_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_21_fu_2888_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_22_fu_2918_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_23_fu_2928_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_24_fu_2953_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_25_fu_2963_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_26_fu_2998_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_27_fu_3008_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_28_fu_3033_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_29_fu_3043_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_30_fu_3073_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_31_fu_3083_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_32_fu_3108_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_33_fu_3118_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_34_fu_3163_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_35_fu_3173_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_36_fu_3198_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_37_fu_3208_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_38_fu_3238_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_39_fu_3248_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_40_fu_3273_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_41_fu_3283_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_42_fu_3318_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_43_fu_3328_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_44_fu_3353_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_45_fu_3363_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_46_fu_3393_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_47_fu_3403_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_48_fu_3428_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_49_fu_3438_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_50_fu_3478_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_51_fu_3488_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_52_fu_3513_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_53_fu_3523_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_54_fu_3553_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_55_fu_3563_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_56_fu_3588_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_57_fu_3598_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_58_fu_3633_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_59_fu_3643_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_60_fu_3668_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_61_fu_3678_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_62_fu_3708_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_63_fu_3718_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_3796_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_6_fu_1497_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_1507_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_5_fu_1516_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp2_stage0_01001 : BOOLEAN; + signal zext_ln31_fu_1559_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal or_ln38_fu_1591_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_1_fu_1606_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_2_fu_1620_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_3_fu_1634_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_4_fu_1648_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_5_fu_1662_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_6_fu_1676_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_7_fu_1690_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_8_fu_1704_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_9_fu_1718_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_10_fu_1732_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_11_fu_1746_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_12_fu_1760_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_13_fu_1774_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_14_fu_1788_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_15_fu_1802_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_16_fu_1816_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_17_fu_1830_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_18_fu_1844_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_19_fu_1858_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_20_fu_1872_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_21_fu_1886_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_22_fu_1900_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_23_fu_1914_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_24_fu_1928_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_25_fu_1942_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_26_fu_1956_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_27_fu_1970_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_28_fu_1984_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_29_fu_1998_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_30_fu_2012_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_31_fu_2026_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_32_fu_2040_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_33_fu_2054_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_34_fu_2068_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_35_fu_2082_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_36_fu_2096_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_37_fu_2110_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_38_fu_2124_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_39_fu_2138_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_40_fu_2152_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_41_fu_2166_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_42_fu_2180_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_43_fu_2194_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_44_fu_2208_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_45_fu_2222_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_46_fu_2236_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_47_fu_2250_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_48_fu_2264_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_49_fu_2278_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_50_fu_2292_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_51_fu_2306_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_52_fu_2320_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_53_fu_2334_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_54_fu_2348_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_55_fu_2362_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_56_fu_2376_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_57_fu_2390_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_58_fu_2404_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_59_fu_2418_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_60_fu_2432_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_61_fu_2446_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal or_ln38_62_fu_2460_p2 : STD_LOGIC_VECTOR (36 downto 0); + signal add_ln38_64_fu_2501_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_127_fu_2512_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_65_fu_2522_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_66_fu_2532_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_fu_2542_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_2547_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_67_fu_2552_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_68_fu_2562_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_2_fu_2572_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_2577_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_2572_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_fu_2582_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_1_fu_2587_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_69_fu_2598_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_70_fu_2608_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_4_fu_2618_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_2623_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_2618_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_71_fu_2633_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_72_fu_2643_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_6_fu_2653_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_2658_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_2653_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_fu_2663_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_5_fu_2668_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_73_fu_2678_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_74_fu_2688_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_8_fu_2698_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_2703_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_2698_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_75_fu_2713_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_76_fu_2723_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_10_fu_2733_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_2738_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_2733_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_8_fu_2743_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_77_fu_2753_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_78_fu_2763_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_12_fu_2773_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_2778_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_2773_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_79_fu_2788_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_80_fu_2798_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_14_fu_2808_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_2813_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_2808_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_11_fu_2818_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_fu_2823_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_13_fu_2828_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_81_fu_2838_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_82_fu_2848_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_16_fu_2858_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_2863_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_2858_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_83_fu_2873_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_84_fu_2883_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_18_fu_2893_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_2898_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_2893_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_16_fu_2903_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_85_fu_2913_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_86_fu_2923_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_20_fu_2933_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_2938_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_2933_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_87_fu_2948_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_88_fu_2958_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_22_fu_2968_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_2973_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_2968_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_fu_2978_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_20_fu_2983_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_89_fu_2993_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_90_fu_3003_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_24_fu_3013_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3018_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3013_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_91_fu_3028_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_92_fu_3038_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_26_fu_3048_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3053_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3048_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_23_fu_3058_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_93_fu_3068_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_94_fu_3078_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_28_fu_3088_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3093_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3088_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_95_fu_3103_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_96_fu_3113_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_30_fu_3123_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_3128_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_3123_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_fu_3133_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_27_fu_3138_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_fu_3143_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_29_fu_3148_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_97_fu_3158_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_98_fu_3168_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_32_fu_3178_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_3183_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_3178_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_99_fu_3193_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_100_fu_3203_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_34_fu_3213_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_3218_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_3213_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_32_fu_3223_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_101_fu_3233_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_102_fu_3243_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_36_fu_3253_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_3258_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_3253_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_103_fu_3268_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_104_fu_3278_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_38_fu_3288_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_3293_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_3288_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_fu_3298_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_36_fu_3303_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_105_fu_3313_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_106_fu_3323_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_40_fu_3333_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_3338_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_3333_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_107_fu_3348_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_108_fu_3358_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_42_fu_3368_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_3373_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_3368_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_39_fu_3378_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_109_fu_3388_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_110_fu_3398_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_44_fu_3408_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_3413_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_3408_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_111_fu_3423_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_112_fu_3433_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_46_fu_3443_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_3448_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_3443_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_42_fu_3453_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_fu_3458_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_44_fu_3463_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_113_fu_3473_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_114_fu_3483_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_48_fu_3493_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_3498_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_3493_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_115_fu_3508_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_116_fu_3518_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_50_fu_3528_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_3533_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_3528_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_47_fu_3538_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_117_fu_3548_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_118_fu_3558_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_52_fu_3568_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_3573_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_3568_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_119_fu_3583_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_120_fu_3593_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_54_fu_3603_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_3608_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_3603_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_fu_3613_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_51_fu_3618_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_121_fu_3628_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_122_fu_3638_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_56_fu_3648_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_3653_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_3648_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_123_fu_3663_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_124_fu_3673_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_58_fu_3683_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_3688_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_3683_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_54_fu_3693_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_125_fu_3703_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_126_fu_3713_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_60_fu_3723_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_3728_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_3723_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_3738_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_3743_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_3743_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_3738_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_fu_3748_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_58_fu_3754_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_fu_3759_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_60_fu_3764_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_62_fu_3774_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (90 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp2 : STD_LOGIC; + signal ap_enable_pp2 : STD_LOGIC; + + component mmult_in1_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0); + address1 : IN STD_LOGIC_VECTOR (11 downto 0); + ce1 : IN STD_LOGIC; + q1 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_out_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_3834, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_3828, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => out_loc_load_reg_5321, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_U : component mmult_in1_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_address0, + ce0 => in1_loc_ce0, + we0 => in1_loc_we0, + d0 => in1_mem_addr_read_reg_3849, + q0 => in1_loc_q0, + address1 => in1_loc_address1, + ce1 => in1_loc_ce1, + q1 => in1_loc_q1); + + in2_loc_U : component mmult_in1_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_address0, + ce0 => in2_loc_ce0, + we0 => in2_loc_we0, + d0 => in2_mem_addr_read_reg_3863, + q0 => in2_loc_q0, + address1 => in2_loc_address1, + ce1 => in2_loc_ce1, + q1 => in2_loc_q1); + + out_loc_U : component mmult_out_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + we0 => out_loc_we0, + d0 => out_loc_d0, + q0 => out_loc_q0); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp0_stage0) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp1_stage0) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state90) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state90)) then + ap_enable_reg_pp2_iter1 <= (ap_const_logic_1 xor ap_condition_pp2_exit_iter0_state90); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_1434_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state22)) then + i_0_reg_1434 <= ap_const_lv31_0; + elsif (((icmp_ln33_fu_2481_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state56))) then + i_0_reg_1434 <= i_reg_3872; + end if; + end if; + end process; + + j_0_reg_1445_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state89)) then + j_0_reg_1445 <= j_reg_4596; + elsif ((ap_const_logic_1 = ap_CS_fsm_state55)) then + j_0_reg_1445 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_ln27_reg_1410_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_1410 <= add_ln27_reg_3844; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_1410 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_1422_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_1422 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_1422 <= add_ln28_reg_3858; + end if; + end if; + end process; + + phi_ln42_reg_1456_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + phi_ln42_reg_1456 <= ap_const_lv13_0; + elsif (((icmp_ln42_fu_3784_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + phi_ln42_reg_1456 <= add_ln42_fu_3790_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + add_ln27_reg_3844 <= add_ln27_fu_1531_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + add_ln28_reg_3858 <= add_ln28_fu_1548_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state63)) then + add_ln38_10_reg_4817 <= add_ln38_10_fu_2783_p2; + mul_ln38_13_reg_4812 <= mul_ln38_13_fu_2778_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state64)) then + add_ln38_14_reg_4837 <= add_ln38_14_fu_2833_p2; + mul_ln38_15_reg_4832 <= mul_ln38_15_fu_2813_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state65)) then + add_ln38_15_reg_4857 <= add_ln38_15_fu_2868_p2; + mul_ln38_17_reg_4852 <= mul_ln38_17_fu_2863_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state66)) then + add_ln38_17_reg_4877 <= add_ln38_17_fu_2908_p2; + mul_ln38_19_reg_4872 <= mul_ln38_19_fu_2898_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state67)) then + add_ln38_18_reg_4897 <= add_ln38_18_fu_2943_p2; + mul_ln38_21_reg_4892 <= mul_ln38_21_fu_2938_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state68)) then + add_ln38_21_reg_4917 <= add_ln38_21_fu_2988_p2; + mul_ln38_23_reg_4912 <= mul_ln38_23_fu_2973_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state69)) then + add_ln38_22_reg_4937 <= add_ln38_22_fu_3023_p2; + mul_ln38_25_reg_4932 <= mul_ln38_25_fu_3018_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state70)) then + add_ln38_24_reg_4957 <= add_ln38_24_fu_3063_p2; + mul_ln38_27_reg_4952 <= mul_ln38_27_fu_3053_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state71)) then + add_ln38_25_reg_4977 <= add_ln38_25_fu_3098_p2; + mul_ln38_29_reg_4972 <= mul_ln38_29_fu_3093_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state58)) then + add_ln38_2_reg_4717 <= add_ln38_2_fu_2592_p2; + mul_ln38_3_reg_4712 <= mul_ln38_3_fu_2577_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state72)) then + add_ln38_30_reg_4997 <= add_ln38_30_fu_3153_p2; + mul_ln38_31_reg_4992 <= mul_ln38_31_fu_3128_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state73)) then + add_ln38_31_reg_5017 <= add_ln38_31_fu_3188_p2; + mul_ln38_33_reg_5012 <= mul_ln38_33_fu_3183_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state74)) then + add_ln38_33_reg_5037 <= add_ln38_33_fu_3228_p2; + mul_ln38_35_reg_5032 <= mul_ln38_35_fu_3218_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state75)) then + add_ln38_34_reg_5057 <= add_ln38_34_fu_3263_p2; + mul_ln38_37_reg_5052 <= mul_ln38_37_fu_3258_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state76)) then + add_ln38_37_reg_5077 <= add_ln38_37_fu_3308_p2; + mul_ln38_39_reg_5072 <= mul_ln38_39_fu_3293_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state77)) then + add_ln38_38_reg_5097 <= add_ln38_38_fu_3343_p2; + mul_ln38_41_reg_5092 <= mul_ln38_41_fu_3338_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state59)) then + add_ln38_3_reg_4737 <= add_ln38_3_fu_2628_p2; + mul_ln38_5_reg_4732 <= mul_ln38_5_fu_2623_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state78)) then + add_ln38_40_reg_5117 <= add_ln38_40_fu_3383_p2; + mul_ln38_43_reg_5112 <= mul_ln38_43_fu_3373_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state79)) then + add_ln38_41_reg_5137 <= add_ln38_41_fu_3418_p2; + mul_ln38_45_reg_5132 <= mul_ln38_45_fu_3413_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state80)) then + add_ln38_45_reg_5157 <= add_ln38_45_fu_3468_p2; + mul_ln38_47_reg_5152 <= mul_ln38_47_fu_3448_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state81)) then + add_ln38_46_reg_5177 <= add_ln38_46_fu_3503_p2; + mul_ln38_49_reg_5172 <= mul_ln38_49_fu_3498_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state82)) then + add_ln38_48_reg_5197 <= add_ln38_48_fu_3543_p2; + mul_ln38_51_reg_5192 <= mul_ln38_51_fu_3533_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state83)) then + add_ln38_49_reg_5217 <= add_ln38_49_fu_3578_p2; + mul_ln38_53_reg_5212 <= mul_ln38_53_fu_3573_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state84)) then + add_ln38_52_reg_5237 <= add_ln38_52_fu_3623_p2; + mul_ln38_55_reg_5232 <= mul_ln38_55_fu_3608_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state85)) then + add_ln38_53_reg_5257 <= add_ln38_53_fu_3658_p2; + mul_ln38_57_reg_5252 <= mul_ln38_57_fu_3653_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state86)) then + add_ln38_55_reg_5277 <= add_ln38_55_fu_3698_p2; + mul_ln38_59_reg_5272 <= mul_ln38_59_fu_3688_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state87)) then + add_ln38_56_reg_5297 <= add_ln38_56_fu_3733_p2; + mul_ln38_61_reg_5292 <= mul_ln38_61_fu_3728_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state88)) then + add_ln38_61_reg_5302 <= add_ln38_61_fu_3769_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state60)) then + add_ln38_6_reg_4757 <= add_ln38_6_fu_2673_p2; + mul_ln38_7_reg_4752 <= mul_ln38_7_fu_2658_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state61)) then + add_ln38_7_reg_4777 <= add_ln38_7_fu_2708_p2; + mul_ln38_9_reg_4772 <= mul_ln38_9_fu_2703_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state62)) then + add_ln38_9_reg_4797 <= add_ln38_9_fu_2748_p2; + mul_ln38_11_reg_4792 <= mul_ln38_11_fu_2738_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_3801 <= dim; + in3_reg_3817 <= in1(31 downto 2); + in_reg_3812 <= in2(31 downto 2); + out5_reg_3807 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + i_reg_3872 <= i_fu_1568_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + icmp_ln27_reg_3840 <= icmp_ln27_fu_1525_p2; + icmp_ln27_reg_3840_pp0_iter1_reg <= icmp_ln27_reg_3840; + phi_ln27_reg_1410_pp0_iter1_reg <= phi_ln27_reg_1410; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + icmp_ln28_reg_3854 <= icmp_ln28_fu_1542_p2; + icmp_ln28_reg_3854_pp1_iter1_reg <= icmp_ln28_reg_3854; + phi_ln28_reg_1422_pp1_iter1_reg <= phi_ln28_reg_1422; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + icmp_ln42_reg_5307 <= icmp_ln42_fu_3784_p2; + icmp_ln42_reg_5307_pp2_iter1_reg <= icmp_ln42_reg_5307; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state29)) then + in1_loc_load_10_reg_4068 <= in1_loc_q1; + in1_loc_load_11_reg_4073 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state30)) then + in1_loc_load_12_reg_4088 <= in1_loc_q1; + in1_loc_load_13_reg_4093 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state31)) then + in1_loc_load_14_reg_4108 <= in1_loc_q1; + in1_loc_load_15_reg_4113 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state32)) then + in1_loc_load_16_reg_4128 <= in1_loc_q1; + in1_loc_load_17_reg_4133 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state33)) then + in1_loc_load_18_reg_4148 <= in1_loc_q1; + in1_loc_load_19_reg_4153 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + in1_loc_load_1_reg_3973 <= in1_loc_q1; + in1_loc_load_reg_3968 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state34)) then + in1_loc_load_20_reg_4168 <= in1_loc_q1; + in1_loc_load_21_reg_4173 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state35)) then + in1_loc_load_22_reg_4188 <= in1_loc_q1; + in1_loc_load_23_reg_4193 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state36)) then + in1_loc_load_24_reg_4208 <= in1_loc_q1; + in1_loc_load_25_reg_4213 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state37)) then + in1_loc_load_26_reg_4228 <= in1_loc_q1; + in1_loc_load_27_reg_4233 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state38)) then + in1_loc_load_28_reg_4248 <= in1_loc_q1; + in1_loc_load_29_reg_4253 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in1_loc_load_2_reg_3988 <= in1_loc_q1; + in1_loc_load_3_reg_3993 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state39)) then + in1_loc_load_30_reg_4268 <= in1_loc_q1; + in1_loc_load_31_reg_4273 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state40)) then + in1_loc_load_32_reg_4288 <= in1_loc_q1; + in1_loc_load_33_reg_4293 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state41)) then + in1_loc_load_34_reg_4308 <= in1_loc_q1; + in1_loc_load_35_reg_4313 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state42)) then + in1_loc_load_36_reg_4328 <= in1_loc_q1; + in1_loc_load_37_reg_4333 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state43)) then + in1_loc_load_38_reg_4348 <= in1_loc_q1; + in1_loc_load_39_reg_4353 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state44)) then + in1_loc_load_40_reg_4368 <= in1_loc_q1; + in1_loc_load_41_reg_4373 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state45)) then + in1_loc_load_42_reg_4388 <= in1_loc_q1; + in1_loc_load_43_reg_4393 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state46)) then + in1_loc_load_44_reg_4408 <= in1_loc_q1; + in1_loc_load_45_reg_4413 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state47)) then + in1_loc_load_46_reg_4428 <= in1_loc_q1; + in1_loc_load_47_reg_4433 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state48)) then + in1_loc_load_48_reg_4448 <= in1_loc_q1; + in1_loc_load_49_reg_4453 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state26)) then + in1_loc_load_4_reg_4008 <= in1_loc_q1; + in1_loc_load_5_reg_4013 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state49)) then + in1_loc_load_50_reg_4468 <= in1_loc_q1; + in1_loc_load_51_reg_4473 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state50)) then + in1_loc_load_52_reg_4488 <= in1_loc_q1; + in1_loc_load_53_reg_4493 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state51)) then + in1_loc_load_54_reg_4508 <= in1_loc_q1; + in1_loc_load_55_reg_4513 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state52)) then + in1_loc_load_56_reg_4528 <= in1_loc_q1; + in1_loc_load_57_reg_4533 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state53)) then + in1_loc_load_58_reg_4548 <= in1_loc_q1; + in1_loc_load_59_reg_4553 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state54)) then + in1_loc_load_60_reg_4568 <= in1_loc_q1; + in1_loc_load_61_reg_4573 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state55)) then + in1_loc_load_62_reg_4583 <= in1_loc_q1; + in1_loc_load_63_reg_4588 <= in1_loc_q0; + zext_ln38_cast_reg_4578(13 downto 6) <= zext_ln38_cast_fu_2474_p3(13 downto 6); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state27)) then + in1_loc_load_6_reg_4028 <= in1_loc_q1; + in1_loc_load_7_reg_4033 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state28)) then + in1_loc_load_8_reg_4048 <= in1_loc_q1; + in1_loc_load_9_reg_4053 <= in1_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_3849 <= in1_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_3863 <= in2_mem_RDATA; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_3834(29 downto 0) <= empty_5_fu_1516_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_3828(29 downto 0) <= empty_fu_1507_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state56)) then + j_reg_4596 <= j_fu_2486_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state57)) then + mul_ln38_1_reg_4697 <= mul_ln38_1_fu_2547_p2; + mul_ln38_reg_4692 <= mul_ln38_fu_2542_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln33_fu_2481_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state56))) then + out_loc_addr_reg_4677 <= sext_ln38_64_fu_2517_p1(12 - 1 downto 0); + trunc_ln38_1_reg_4601 <= trunc_ln38_1_fu_2497_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln42_reg_5307 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + out_loc_load_reg_5321 <= out_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + tmp_2_reg_3877(36 downto 6) <= tmp_2_fu_1574_p3(36 downto 6); + trunc_ln38_reg_3943 <= trunc_ln38_fu_1587_p1; + end if; + end if; + end process; + out_mem_addr_reg_3828(31 downto 30) <= "00"; + in2_mem_addr_reg_3834(31 downto 30) <= "00"; + tmp_2_reg_3877(5 downto 0) <= "000000"; + zext_ln38_cast_reg_4578(5 downto 0) <= "000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state23, icmp_ln31_fu_1563_p2, ap_enable_reg_pp2_iter2, ap_CS_fsm_state97, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_BVALID, icmp_ln27_fu_1525_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_1542_p2, ap_enable_reg_pp1_iter0, ap_block_state23_io, ap_CS_fsm_state56, icmp_ln33_fu_2481_p2, icmp_ln42_fu_3784_p2, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((icmp_ln27_fu_1525_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) and not(((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((icmp_ln27_fu_1525_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) or ((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((icmp_ln28_fu_1542_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) and not(((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((icmp_ln28_fu_1542_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) or ((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state23 => + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_NS_fsm <= ap_ST_fsm_state24; + else + ap_NS_fsm <= ap_ST_fsm_state23; + end if; + when ap_ST_fsm_state24 => + ap_NS_fsm <= ap_ST_fsm_state25; + when ap_ST_fsm_state25 => + ap_NS_fsm <= ap_ST_fsm_state26; + when ap_ST_fsm_state26 => + ap_NS_fsm <= ap_ST_fsm_state27; + when ap_ST_fsm_state27 => + ap_NS_fsm <= ap_ST_fsm_state28; + when ap_ST_fsm_state28 => + ap_NS_fsm <= ap_ST_fsm_state29; + when ap_ST_fsm_state29 => + ap_NS_fsm <= ap_ST_fsm_state30; + when ap_ST_fsm_state30 => + ap_NS_fsm <= ap_ST_fsm_state31; + when ap_ST_fsm_state31 => + ap_NS_fsm <= ap_ST_fsm_state32; + when ap_ST_fsm_state32 => + ap_NS_fsm <= ap_ST_fsm_state33; + when ap_ST_fsm_state33 => + ap_NS_fsm <= ap_ST_fsm_state34; + when ap_ST_fsm_state34 => + ap_NS_fsm <= ap_ST_fsm_state35; + when ap_ST_fsm_state35 => + ap_NS_fsm <= ap_ST_fsm_state36; + when ap_ST_fsm_state36 => + ap_NS_fsm <= ap_ST_fsm_state37; + when ap_ST_fsm_state37 => + ap_NS_fsm <= ap_ST_fsm_state38; + when ap_ST_fsm_state38 => + ap_NS_fsm <= ap_ST_fsm_state39; + when ap_ST_fsm_state39 => + ap_NS_fsm <= ap_ST_fsm_state40; + when ap_ST_fsm_state40 => + ap_NS_fsm <= ap_ST_fsm_state41; + when ap_ST_fsm_state41 => + ap_NS_fsm <= ap_ST_fsm_state42; + when ap_ST_fsm_state42 => + ap_NS_fsm <= ap_ST_fsm_state43; + when ap_ST_fsm_state43 => + ap_NS_fsm <= ap_ST_fsm_state44; + when ap_ST_fsm_state44 => + ap_NS_fsm <= ap_ST_fsm_state45; + when ap_ST_fsm_state45 => + ap_NS_fsm <= ap_ST_fsm_state46; + when ap_ST_fsm_state46 => + ap_NS_fsm <= ap_ST_fsm_state47; + when ap_ST_fsm_state47 => + ap_NS_fsm <= ap_ST_fsm_state48; + when ap_ST_fsm_state48 => + ap_NS_fsm <= ap_ST_fsm_state49; + when ap_ST_fsm_state49 => + ap_NS_fsm <= ap_ST_fsm_state50; + when ap_ST_fsm_state50 => + ap_NS_fsm <= ap_ST_fsm_state51; + when ap_ST_fsm_state51 => + ap_NS_fsm <= ap_ST_fsm_state52; + when ap_ST_fsm_state52 => + ap_NS_fsm <= ap_ST_fsm_state53; + when ap_ST_fsm_state53 => + ap_NS_fsm <= ap_ST_fsm_state54; + when ap_ST_fsm_state54 => + ap_NS_fsm <= ap_ST_fsm_state55; + when ap_ST_fsm_state55 => + ap_NS_fsm <= ap_ST_fsm_state56; + when ap_ST_fsm_state56 => + if (((icmp_ln33_fu_2481_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state56))) then + ap_NS_fsm <= ap_ST_fsm_state23; + else + ap_NS_fsm <= ap_ST_fsm_state57; + end if; + when ap_ST_fsm_state57 => + ap_NS_fsm <= ap_ST_fsm_state58; + when ap_ST_fsm_state58 => + ap_NS_fsm <= ap_ST_fsm_state59; + when ap_ST_fsm_state59 => + ap_NS_fsm <= ap_ST_fsm_state60; + when ap_ST_fsm_state60 => + ap_NS_fsm <= ap_ST_fsm_state61; + when ap_ST_fsm_state61 => + ap_NS_fsm <= ap_ST_fsm_state62; + when ap_ST_fsm_state62 => + ap_NS_fsm <= ap_ST_fsm_state63; + when ap_ST_fsm_state63 => + ap_NS_fsm <= ap_ST_fsm_state64; + when ap_ST_fsm_state64 => + ap_NS_fsm <= ap_ST_fsm_state65; + when ap_ST_fsm_state65 => + ap_NS_fsm <= ap_ST_fsm_state66; + when ap_ST_fsm_state66 => + ap_NS_fsm <= ap_ST_fsm_state67; + when ap_ST_fsm_state67 => + ap_NS_fsm <= ap_ST_fsm_state68; + when ap_ST_fsm_state68 => + ap_NS_fsm <= ap_ST_fsm_state69; + when ap_ST_fsm_state69 => + ap_NS_fsm <= ap_ST_fsm_state70; + when ap_ST_fsm_state70 => + ap_NS_fsm <= ap_ST_fsm_state71; + when ap_ST_fsm_state71 => + ap_NS_fsm <= ap_ST_fsm_state72; + when ap_ST_fsm_state72 => + ap_NS_fsm <= ap_ST_fsm_state73; + when ap_ST_fsm_state73 => + ap_NS_fsm <= ap_ST_fsm_state74; + when ap_ST_fsm_state74 => + ap_NS_fsm <= ap_ST_fsm_state75; + when ap_ST_fsm_state75 => + ap_NS_fsm <= ap_ST_fsm_state76; + when ap_ST_fsm_state76 => + ap_NS_fsm <= ap_ST_fsm_state77; + when ap_ST_fsm_state77 => + ap_NS_fsm <= ap_ST_fsm_state78; + when ap_ST_fsm_state78 => + ap_NS_fsm <= ap_ST_fsm_state79; + when ap_ST_fsm_state79 => + ap_NS_fsm <= ap_ST_fsm_state80; + when ap_ST_fsm_state80 => + ap_NS_fsm <= ap_ST_fsm_state81; + when ap_ST_fsm_state81 => + ap_NS_fsm <= ap_ST_fsm_state82; + when ap_ST_fsm_state82 => + ap_NS_fsm <= ap_ST_fsm_state83; + when ap_ST_fsm_state83 => + ap_NS_fsm <= ap_ST_fsm_state84; + when ap_ST_fsm_state84 => + ap_NS_fsm <= ap_ST_fsm_state85; + when ap_ST_fsm_state85 => + ap_NS_fsm <= ap_ST_fsm_state86; + when ap_ST_fsm_state86 => + ap_NS_fsm <= ap_ST_fsm_state87; + when ap_ST_fsm_state87 => + ap_NS_fsm <= ap_ST_fsm_state88; + when ap_ST_fsm_state88 => + ap_NS_fsm <= ap_ST_fsm_state89; + when ap_ST_fsm_state89 => + ap_NS_fsm <= ap_ST_fsm_state56; + when ap_ST_fsm_pp2_stage0 => + if ((not(((icmp_ln42_fu_3784_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0))) and not(((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0))))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif ((((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0)) or ((icmp_ln42_fu_3784_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0)))) then + ap_NS_fsm <= ap_ST_fsm_state93; + else + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + end if; + when ap_ST_fsm_state93 => + ap_NS_fsm <= ap_ST_fsm_state94; + when ap_ST_fsm_state94 => + ap_NS_fsm <= ap_ST_fsm_state95; + when ap_ST_fsm_state95 => + ap_NS_fsm <= ap_ST_fsm_state96; + when ap_ST_fsm_state96 => + ap_NS_fsm <= ap_ST_fsm_state97; + when ap_ST_fsm_state97 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state97))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state97; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_1531_p2 <= std_logic_vector(unsigned(ap_phi_mux_phi_ln27_phi_fu_1414_p4) + unsigned(ap_const_lv13_1)); + add_ln28_fu_1548_p2 <= std_logic_vector(unsigned(ap_phi_mux_phi_ln28_phi_fu_1426_p4) + unsigned(ap_const_lv13_1)); + add_ln38_100_fu_3203_p2 <= std_logic_vector(unsigned(ap_const_lv14_940) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_101_fu_3233_p2 <= std_logic_vector(unsigned(ap_const_lv14_980) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_102_fu_3243_p2 <= std_logic_vector(unsigned(ap_const_lv14_9C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_103_fu_3268_p2 <= std_logic_vector(unsigned(ap_const_lv14_A00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_104_fu_3278_p2 <= std_logic_vector(unsigned(ap_const_lv14_A40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_105_fu_3313_p2 <= std_logic_vector(unsigned(ap_const_lv14_A80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_106_fu_3323_p2 <= std_logic_vector(unsigned(ap_const_lv14_AC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_107_fu_3348_p2 <= std_logic_vector(unsigned(ap_const_lv14_B00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_108_fu_3358_p2 <= std_logic_vector(unsigned(ap_const_lv14_B40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_109_fu_3388_p2 <= std_logic_vector(unsigned(ap_const_lv14_B80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_10_fu_2783_p2 <= std_logic_vector(unsigned(mul_ln38_12_fu_2773_p2) + unsigned(mul_ln38_11_reg_4792)); + add_ln38_110_fu_3398_p2 <= std_logic_vector(unsigned(ap_const_lv14_BC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_111_fu_3423_p2 <= std_logic_vector(unsigned(ap_const_lv14_C00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_112_fu_3433_p2 <= std_logic_vector(unsigned(ap_const_lv14_C40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_113_fu_3473_p2 <= std_logic_vector(unsigned(ap_const_lv14_C80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_114_fu_3483_p2 <= std_logic_vector(unsigned(ap_const_lv14_CC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_115_fu_3508_p2 <= std_logic_vector(unsigned(ap_const_lv14_D00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_116_fu_3518_p2 <= std_logic_vector(unsigned(ap_const_lv14_D40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_117_fu_3548_p2 <= std_logic_vector(unsigned(ap_const_lv14_D80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_118_fu_3558_p2 <= std_logic_vector(unsigned(ap_const_lv14_DC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_119_fu_3583_p2 <= std_logic_vector(unsigned(ap_const_lv14_E00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_11_fu_2818_p2 <= std_logic_vector(unsigned(mul_ln38_14_fu_2808_p2) + unsigned(mul_ln38_13_reg_4812)); + add_ln38_120_fu_3593_p2 <= std_logic_vector(unsigned(ap_const_lv14_E40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_121_fu_3628_p2 <= std_logic_vector(unsigned(ap_const_lv14_E80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_122_fu_3638_p2 <= std_logic_vector(unsigned(ap_const_lv14_EC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_123_fu_3663_p2 <= std_logic_vector(unsigned(ap_const_lv14_F00) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_124_fu_3673_p2 <= std_logic_vector(unsigned(ap_const_lv14_F40) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_125_fu_3703_p2 <= std_logic_vector(unsigned(ap_const_lv14_F80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_126_fu_3713_p2 <= std_logic_vector(unsigned(ap_const_lv14_FC0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_127_fu_2512_p2 <= std_logic_vector(unsigned(zext_ln38_cast_reg_4578) + unsigned(trunc_ln38_1_fu_2497_p1)); + add_ln38_12_fu_2823_p2 <= std_logic_vector(unsigned(add_ln38_10_reg_4817) + unsigned(add_ln38_11_fu_2818_p2)); + add_ln38_13_fu_2828_p2 <= std_logic_vector(unsigned(add_ln38_9_reg_4797) + unsigned(add_ln38_12_fu_2823_p2)); + add_ln38_14_fu_2833_p2 <= std_logic_vector(unsigned(add_ln38_6_reg_4757) + unsigned(add_ln38_13_fu_2828_p2)); + add_ln38_15_fu_2868_p2 <= std_logic_vector(unsigned(mul_ln38_16_fu_2858_p2) + unsigned(mul_ln38_15_reg_4832)); + add_ln38_16_fu_2903_p2 <= std_logic_vector(unsigned(mul_ln38_18_fu_2893_p2) + unsigned(mul_ln38_17_reg_4852)); + add_ln38_17_fu_2908_p2 <= std_logic_vector(unsigned(add_ln38_15_reg_4857) + unsigned(add_ln38_16_fu_2903_p2)); + add_ln38_18_fu_2943_p2 <= std_logic_vector(unsigned(mul_ln38_20_fu_2933_p2) + unsigned(mul_ln38_19_reg_4872)); + add_ln38_19_fu_2978_p2 <= std_logic_vector(unsigned(mul_ln38_22_fu_2968_p2) + unsigned(mul_ln38_21_reg_4892)); + add_ln38_1_fu_2587_p2 <= std_logic_vector(unsigned(mul_ln38_2_fu_2572_p2) + unsigned(mul_ln38_1_reg_4697)); + add_ln38_20_fu_2983_p2 <= std_logic_vector(unsigned(add_ln38_18_reg_4897) + unsigned(add_ln38_19_fu_2978_p2)); + add_ln38_21_fu_2988_p2 <= std_logic_vector(unsigned(add_ln38_17_reg_4877) + unsigned(add_ln38_20_fu_2983_p2)); + add_ln38_22_fu_3023_p2 <= std_logic_vector(unsigned(mul_ln38_24_fu_3013_p2) + unsigned(mul_ln38_23_reg_4912)); + add_ln38_23_fu_3058_p2 <= std_logic_vector(unsigned(mul_ln38_26_fu_3048_p2) + unsigned(mul_ln38_25_reg_4932)); + add_ln38_24_fu_3063_p2 <= std_logic_vector(unsigned(add_ln38_22_reg_4937) + unsigned(add_ln38_23_fu_3058_p2)); + add_ln38_25_fu_3098_p2 <= std_logic_vector(unsigned(mul_ln38_28_fu_3088_p2) + unsigned(mul_ln38_27_reg_4952)); + add_ln38_26_fu_3133_p2 <= std_logic_vector(unsigned(mul_ln38_30_fu_3123_p2) + unsigned(mul_ln38_29_reg_4972)); + add_ln38_27_fu_3138_p2 <= std_logic_vector(unsigned(add_ln38_25_reg_4977) + unsigned(add_ln38_26_fu_3133_p2)); + add_ln38_28_fu_3143_p2 <= std_logic_vector(unsigned(add_ln38_24_reg_4957) + unsigned(add_ln38_27_fu_3138_p2)); + add_ln38_29_fu_3148_p2 <= std_logic_vector(unsigned(add_ln38_21_reg_4917) + unsigned(add_ln38_28_fu_3143_p2)); + add_ln38_2_fu_2592_p2 <= std_logic_vector(unsigned(add_ln38_fu_2582_p2) + unsigned(add_ln38_1_fu_2587_p2)); + add_ln38_30_fu_3153_p2 <= std_logic_vector(unsigned(add_ln38_14_reg_4837) + unsigned(add_ln38_29_fu_3148_p2)); + add_ln38_31_fu_3188_p2 <= std_logic_vector(unsigned(mul_ln38_32_fu_3178_p2) + unsigned(mul_ln38_31_reg_4992)); + add_ln38_32_fu_3223_p2 <= std_logic_vector(unsigned(mul_ln38_34_fu_3213_p2) + unsigned(mul_ln38_33_reg_5012)); + add_ln38_33_fu_3228_p2 <= std_logic_vector(unsigned(add_ln38_31_reg_5017) + unsigned(add_ln38_32_fu_3223_p2)); + add_ln38_34_fu_3263_p2 <= std_logic_vector(unsigned(mul_ln38_36_fu_3253_p2) + unsigned(mul_ln38_35_reg_5032)); + add_ln38_35_fu_3298_p2 <= std_logic_vector(unsigned(mul_ln38_38_fu_3288_p2) + unsigned(mul_ln38_37_reg_5052)); + add_ln38_36_fu_3303_p2 <= std_logic_vector(unsigned(add_ln38_34_reg_5057) + unsigned(add_ln38_35_fu_3298_p2)); + add_ln38_37_fu_3308_p2 <= std_logic_vector(unsigned(add_ln38_33_reg_5037) + unsigned(add_ln38_36_fu_3303_p2)); + add_ln38_38_fu_3343_p2 <= std_logic_vector(unsigned(mul_ln38_40_fu_3333_p2) + unsigned(mul_ln38_39_reg_5072)); + add_ln38_39_fu_3378_p2 <= std_logic_vector(unsigned(mul_ln38_42_fu_3368_p2) + unsigned(mul_ln38_41_reg_5092)); + add_ln38_3_fu_2628_p2 <= std_logic_vector(unsigned(mul_ln38_4_fu_2618_p2) + unsigned(mul_ln38_3_reg_4712)); + add_ln38_40_fu_3383_p2 <= std_logic_vector(unsigned(add_ln38_38_reg_5097) + unsigned(add_ln38_39_fu_3378_p2)); + add_ln38_41_fu_3418_p2 <= std_logic_vector(unsigned(mul_ln38_44_fu_3408_p2) + unsigned(mul_ln38_43_reg_5112)); + add_ln38_42_fu_3453_p2 <= std_logic_vector(unsigned(mul_ln38_46_fu_3443_p2) + unsigned(mul_ln38_45_reg_5132)); + add_ln38_43_fu_3458_p2 <= std_logic_vector(unsigned(add_ln38_41_reg_5137) + unsigned(add_ln38_42_fu_3453_p2)); + add_ln38_44_fu_3463_p2 <= std_logic_vector(unsigned(add_ln38_40_reg_5117) + unsigned(add_ln38_43_fu_3458_p2)); + add_ln38_45_fu_3468_p2 <= std_logic_vector(unsigned(add_ln38_37_reg_5077) + unsigned(add_ln38_44_fu_3463_p2)); + add_ln38_46_fu_3503_p2 <= std_logic_vector(unsigned(mul_ln38_48_fu_3493_p2) + unsigned(mul_ln38_47_reg_5152)); + add_ln38_47_fu_3538_p2 <= std_logic_vector(unsigned(mul_ln38_50_fu_3528_p2) + unsigned(mul_ln38_49_reg_5172)); + add_ln38_48_fu_3543_p2 <= std_logic_vector(unsigned(add_ln38_46_reg_5177) + unsigned(add_ln38_47_fu_3538_p2)); + add_ln38_49_fu_3578_p2 <= std_logic_vector(unsigned(mul_ln38_52_fu_3568_p2) + unsigned(mul_ln38_51_reg_5192)); + add_ln38_4_fu_2663_p2 <= std_logic_vector(unsigned(mul_ln38_6_fu_2653_p2) + unsigned(mul_ln38_5_reg_4732)); + add_ln38_50_fu_3613_p2 <= std_logic_vector(unsigned(mul_ln38_54_fu_3603_p2) + unsigned(mul_ln38_53_reg_5212)); + add_ln38_51_fu_3618_p2 <= std_logic_vector(unsigned(add_ln38_49_reg_5217) + unsigned(add_ln38_50_fu_3613_p2)); + add_ln38_52_fu_3623_p2 <= std_logic_vector(unsigned(add_ln38_48_reg_5197) + unsigned(add_ln38_51_fu_3618_p2)); + add_ln38_53_fu_3658_p2 <= std_logic_vector(unsigned(mul_ln38_56_fu_3648_p2) + unsigned(mul_ln38_55_reg_5232)); + add_ln38_54_fu_3693_p2 <= std_logic_vector(unsigned(mul_ln38_58_fu_3683_p2) + unsigned(mul_ln38_57_reg_5252)); + add_ln38_55_fu_3698_p2 <= std_logic_vector(unsigned(add_ln38_53_reg_5257) + unsigned(add_ln38_54_fu_3693_p2)); + add_ln38_56_fu_3733_p2 <= std_logic_vector(unsigned(mul_ln38_60_fu_3723_p2) + unsigned(mul_ln38_59_reg_5272)); + add_ln38_57_fu_3748_p2 <= std_logic_vector(unsigned(mul_ln38_63_fu_3743_p2) + unsigned(mul_ln38_62_fu_3738_p2)); + add_ln38_58_fu_3754_p2 <= std_logic_vector(unsigned(mul_ln38_61_reg_5292) + unsigned(add_ln38_57_fu_3748_p2)); + add_ln38_59_fu_3759_p2 <= std_logic_vector(unsigned(add_ln38_56_reg_5297) + unsigned(add_ln38_58_fu_3754_p2)); + add_ln38_5_fu_2668_p2 <= std_logic_vector(unsigned(add_ln38_3_reg_4737) + unsigned(add_ln38_4_fu_2663_p2)); + add_ln38_60_fu_3764_p2 <= std_logic_vector(unsigned(add_ln38_55_reg_5277) + unsigned(add_ln38_59_fu_3759_p2)); + add_ln38_61_fu_3769_p2 <= std_logic_vector(unsigned(add_ln38_52_reg_5237) + unsigned(add_ln38_60_fu_3764_p2)); + add_ln38_62_fu_3774_p2 <= std_logic_vector(unsigned(add_ln38_45_reg_5157) + unsigned(add_ln38_61_reg_5302)); + add_ln38_64_fu_2501_p2 <= std_logic_vector(unsigned(ap_const_lv14_40) + unsigned(trunc_ln38_1_fu_2497_p1)); + add_ln38_65_fu_2522_p2 <= std_logic_vector(unsigned(ap_const_lv14_80) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_66_fu_2532_p2 <= std_logic_vector(unsigned(ap_const_lv14_C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_67_fu_2552_p2 <= std_logic_vector(unsigned(ap_const_lv14_100) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_68_fu_2562_p2 <= std_logic_vector(unsigned(ap_const_lv14_140) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_69_fu_2598_p2 <= std_logic_vector(unsigned(ap_const_lv14_180) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_6_fu_2673_p2 <= std_logic_vector(unsigned(add_ln38_2_reg_4717) + unsigned(add_ln38_5_fu_2668_p2)); + add_ln38_70_fu_2608_p2 <= std_logic_vector(unsigned(ap_const_lv14_1C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_71_fu_2633_p2 <= std_logic_vector(unsigned(ap_const_lv14_200) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_72_fu_2643_p2 <= std_logic_vector(unsigned(ap_const_lv14_240) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_73_fu_2678_p2 <= std_logic_vector(unsigned(ap_const_lv14_280) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_74_fu_2688_p2 <= std_logic_vector(unsigned(ap_const_lv14_2C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_75_fu_2713_p2 <= std_logic_vector(unsigned(ap_const_lv14_300) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_76_fu_2723_p2 <= std_logic_vector(unsigned(ap_const_lv14_340) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_77_fu_2753_p2 <= std_logic_vector(unsigned(ap_const_lv14_380) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_78_fu_2763_p2 <= std_logic_vector(unsigned(ap_const_lv14_3C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_79_fu_2788_p2 <= std_logic_vector(unsigned(ap_const_lv14_400) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_7_fu_2708_p2 <= std_logic_vector(unsigned(mul_ln38_8_fu_2698_p2) + unsigned(mul_ln38_7_reg_4752)); + add_ln38_80_fu_2798_p2 <= std_logic_vector(unsigned(ap_const_lv14_440) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_81_fu_2838_p2 <= std_logic_vector(unsigned(ap_const_lv14_480) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_82_fu_2848_p2 <= std_logic_vector(unsigned(ap_const_lv14_4C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_83_fu_2873_p2 <= std_logic_vector(unsigned(ap_const_lv14_500) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_84_fu_2883_p2 <= std_logic_vector(unsigned(ap_const_lv14_540) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_85_fu_2913_p2 <= std_logic_vector(unsigned(ap_const_lv14_580) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_86_fu_2923_p2 <= std_logic_vector(unsigned(ap_const_lv14_5C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_87_fu_2948_p2 <= std_logic_vector(unsigned(ap_const_lv14_600) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_88_fu_2958_p2 <= std_logic_vector(unsigned(ap_const_lv14_640) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_89_fu_2993_p2 <= std_logic_vector(unsigned(ap_const_lv14_680) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_8_fu_2743_p2 <= std_logic_vector(unsigned(mul_ln38_10_fu_2733_p2) + unsigned(mul_ln38_9_reg_4772)); + add_ln38_90_fu_3003_p2 <= std_logic_vector(unsigned(ap_const_lv14_6C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_91_fu_3028_p2 <= std_logic_vector(unsigned(ap_const_lv14_700) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_92_fu_3038_p2 <= std_logic_vector(unsigned(ap_const_lv14_740) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_93_fu_3068_p2 <= std_logic_vector(unsigned(ap_const_lv14_780) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_94_fu_3078_p2 <= std_logic_vector(unsigned(ap_const_lv14_7C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_95_fu_3103_p2 <= std_logic_vector(unsigned(ap_const_lv14_800) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_96_fu_3113_p2 <= std_logic_vector(unsigned(ap_const_lv14_840) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_97_fu_3158_p2 <= std_logic_vector(unsigned(ap_const_lv14_880) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_98_fu_3168_p2 <= std_logic_vector(unsigned(ap_const_lv14_8C0) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_99_fu_3193_p2 <= std_logic_vector(unsigned(ap_const_lv14_900) + unsigned(trunc_ln38_1_reg_4601)); + add_ln38_9_fu_2748_p2 <= std_logic_vector(unsigned(add_ln38_7_reg_4777) + unsigned(add_ln38_8_fu_2743_p2)); + add_ln38_fu_2582_p2 <= std_logic_vector(unsigned(mul_ln38_reg_4692) + unsigned(out_loc_q0)); + add_ln42_fu_3790_p2 <= std_logic_vector(unsigned(phi_ln42_reg_1456) + unsigned(ap_const_lv13_1)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp2_stage0 <= ap_CS_fsm(85); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state23 <= ap_CS_fsm(18); + ap_CS_fsm_state24 <= ap_CS_fsm(19); + ap_CS_fsm_state25 <= ap_CS_fsm(20); + ap_CS_fsm_state26 <= ap_CS_fsm(21); + ap_CS_fsm_state27 <= ap_CS_fsm(22); + ap_CS_fsm_state28 <= ap_CS_fsm(23); + ap_CS_fsm_state29 <= ap_CS_fsm(24); + ap_CS_fsm_state30 <= ap_CS_fsm(25); + ap_CS_fsm_state31 <= ap_CS_fsm(26); + ap_CS_fsm_state32 <= ap_CS_fsm(27); + ap_CS_fsm_state33 <= ap_CS_fsm(28); + ap_CS_fsm_state34 <= ap_CS_fsm(29); + ap_CS_fsm_state35 <= ap_CS_fsm(30); + ap_CS_fsm_state36 <= ap_CS_fsm(31); + ap_CS_fsm_state37 <= ap_CS_fsm(32); + ap_CS_fsm_state38 <= ap_CS_fsm(33); + ap_CS_fsm_state39 <= ap_CS_fsm(34); + ap_CS_fsm_state40 <= ap_CS_fsm(35); + ap_CS_fsm_state41 <= ap_CS_fsm(36); + ap_CS_fsm_state42 <= ap_CS_fsm(37); + ap_CS_fsm_state43 <= ap_CS_fsm(38); + ap_CS_fsm_state44 <= ap_CS_fsm(39); + ap_CS_fsm_state45 <= ap_CS_fsm(40); + ap_CS_fsm_state46 <= ap_CS_fsm(41); + ap_CS_fsm_state47 <= ap_CS_fsm(42); + ap_CS_fsm_state48 <= ap_CS_fsm(43); + ap_CS_fsm_state49 <= ap_CS_fsm(44); + ap_CS_fsm_state50 <= ap_CS_fsm(45); + ap_CS_fsm_state51 <= ap_CS_fsm(46); + ap_CS_fsm_state52 <= ap_CS_fsm(47); + ap_CS_fsm_state53 <= ap_CS_fsm(48); + ap_CS_fsm_state54 <= ap_CS_fsm(49); + ap_CS_fsm_state55 <= ap_CS_fsm(50); + ap_CS_fsm_state56 <= ap_CS_fsm(51); + ap_CS_fsm_state57 <= ap_CS_fsm(52); + ap_CS_fsm_state58 <= ap_CS_fsm(53); + ap_CS_fsm_state59 <= ap_CS_fsm(54); + ap_CS_fsm_state60 <= ap_CS_fsm(55); + ap_CS_fsm_state61 <= ap_CS_fsm(56); + ap_CS_fsm_state62 <= ap_CS_fsm(57); + ap_CS_fsm_state63 <= ap_CS_fsm(58); + ap_CS_fsm_state64 <= ap_CS_fsm(59); + ap_CS_fsm_state65 <= ap_CS_fsm(60); + ap_CS_fsm_state66 <= ap_CS_fsm(61); + ap_CS_fsm_state67 <= ap_CS_fsm(62); + ap_CS_fsm_state68 <= ap_CS_fsm(63); + ap_CS_fsm_state69 <= ap_CS_fsm(64); + ap_CS_fsm_state70 <= ap_CS_fsm(65); + ap_CS_fsm_state71 <= ap_CS_fsm(66); + ap_CS_fsm_state72 <= ap_CS_fsm(67); + ap_CS_fsm_state73 <= ap_CS_fsm(68); + ap_CS_fsm_state74 <= ap_CS_fsm(69); + ap_CS_fsm_state75 <= ap_CS_fsm(70); + ap_CS_fsm_state76 <= ap_CS_fsm(71); + ap_CS_fsm_state77 <= ap_CS_fsm(72); + ap_CS_fsm_state78 <= ap_CS_fsm(73); + ap_CS_fsm_state79 <= ap_CS_fsm(74); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_CS_fsm_state80 <= ap_CS_fsm(75); + ap_CS_fsm_state81 <= ap_CS_fsm(76); + ap_CS_fsm_state82 <= ap_CS_fsm(77); + ap_CS_fsm_state83 <= ap_CS_fsm(78); + ap_CS_fsm_state84 <= ap_CS_fsm(79); + ap_CS_fsm_state85 <= ap_CS_fsm(80); + ap_CS_fsm_state86 <= ap_CS_fsm(81); + ap_CS_fsm_state87 <= ap_CS_fsm(82); + ap_CS_fsm_state88 <= ap_CS_fsm(83); + ap_CS_fsm_state89 <= ap_CS_fsm(84); + ap_CS_fsm_state97 <= ap_CS_fsm(90); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, icmp_ln27_reg_3840, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, icmp_ln27_reg_3840, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, icmp_ln28_reg_3854, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, icmp_ln28_reg_3854, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp2_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp2_stage0_11001_assign_proc : process(ap_enable_reg_pp2_iter2, ap_block_state92_io) + begin + ap_block_pp2_stage0_11001 <= ((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_1 = ap_block_state92_io)); + end process; + + + ap_block_pp2_stage0_subdone_assign_proc : process(ap_enable_reg_pp2_iter2, ap_block_state92_io) + begin + ap_block_pp2_stage0_subdone <= ((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_1 = ap_block_state92_io)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(icmp_ln27_reg_3840, in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= ((in1_mem_RVALID = ap_const_logic_0) and (icmp_ln27_reg_3840 = ap_const_lv1_0)); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(icmp_ln28_reg_3854, in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= ((in2_mem_RVALID = ap_const_logic_0) and (icmp_ln28_reg_3854 = ap_const_lv1_0)); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state23_io_assign_proc : process(icmp_ln31_fu_1563_p2, out_mem_AWREADY) + begin + ap_block_state23_io <= ((out_mem_AWREADY = ap_const_logic_0) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0)); + end process; + + ap_block_state90_pp2_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state91_pp2_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state92_io_assign_proc : process(icmp_ln42_reg_5307_pp2_iter1_reg, out_mem_WREADY) + begin + ap_block_state92_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_5307_pp2_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state92_pp2_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_1525_p2) + begin + if ((icmp_ln27_fu_1525_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_1542_p2) + begin + if ((icmp_ln28_fu_1542_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp2_exit_iter0_state90_assign_proc : process(icmp_ln42_fu_3784_p2) + begin + if ((icmp_ln42_fu_3784_p2 = ap_const_lv1_1)) then + ap_condition_pp2_exit_iter0_state90 <= ap_const_logic_1; + else + ap_condition_pp2_exit_iter0_state90 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state97, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state97))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp2 <= (ap_idle_pp2 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp2_assign_proc : process(ap_enable_reg_pp2_iter2, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1) + begin + if (((ap_enable_reg_pp2_iter2 = ap_const_logic_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_0))) then + ap_idle_pp2 <= ap_const_logic_1; + else + ap_idle_pp2 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_phi_ln27_phi_fu_1414_p4_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0, icmp_ln27_reg_3840, phi_ln27_reg_1410, add_ln27_reg_3844) + begin + if (((icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_phi_mux_phi_ln27_phi_fu_1414_p4 <= add_ln27_reg_3844; + else + ap_phi_mux_phi_ln27_phi_fu_1414_p4 <= phi_ln27_reg_1410; + end if; + end process; + + + ap_phi_mux_phi_ln28_phi_fu_1426_p4_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0, icmp_ln28_reg_3854, phi_ln28_reg_1422, add_ln28_reg_3858) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + ap_phi_mux_phi_ln28_phi_fu_1426_p4 <= add_ln28_reg_3858; + else + ap_phi_mux_phi_ln28_phi_fu_1426_p4 <= phi_ln28_reg_1422; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state97, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state97))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_5_fu_1516_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_3812),64)); + empty_6_fu_1497_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_3817),64)); + empty_fu_1507_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_3807),64)); + i_fu_1568_p2 <= std_logic_vector(unsigned(i_0_reg_1434) + unsigned(ap_const_lv31_1)); + icmp_ln27_fu_1525_p2 <= "1" when (ap_phi_mux_phi_ln27_phi_fu_1414_p4 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_1542_p2 <= "1" when (ap_phi_mux_phi_ln28_phi_fu_1426_p4 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_1563_p2 <= "1" when (signed(zext_ln31_fu_1559_p1) < signed(dim_read_reg_3801)) else "0"; + icmp_ln33_fu_2481_p2 <= "1" when (j_0_reg_1445 = dim_read_reg_3801) else "0"; + icmp_ln42_fu_3784_p2 <= "1" when (phi_ln42_reg_1456 = ap_const_lv13_1000) else "0"; + + in1_loc_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_CS_fsm_state24, ap_CS_fsm_state25, ap_CS_fsm_state26, ap_CS_fsm_state27, ap_CS_fsm_state28, ap_CS_fsm_state29, ap_CS_fsm_state30, ap_CS_fsm_state31, ap_CS_fsm_state32, ap_CS_fsm_state33, ap_CS_fsm_state34, ap_CS_fsm_state35, ap_CS_fsm_state36, ap_CS_fsm_state37, ap_CS_fsm_state38, ap_CS_fsm_state39, ap_CS_fsm_state40, ap_CS_fsm_state41, ap_CS_fsm_state42, ap_CS_fsm_state43, ap_CS_fsm_state44, ap_CS_fsm_state45, ap_CS_fsm_state46, ap_CS_fsm_state47, ap_CS_fsm_state48, ap_CS_fsm_state49, ap_CS_fsm_state50, ap_CS_fsm_state51, ap_CS_fsm_state52, ap_CS_fsm_state53, ap_CS_fsm_state54, ap_enable_reg_pp0_iter2, zext_ln27_fu_1537_p1, zext_ln38_fu_1582_p1, tmp_5_fu_1625_p3, tmp_7_fu_1653_p3, tmp_9_fu_1681_p3, tmp_10_fu_1709_p3, tmp_12_fu_1737_p3, tmp_14_fu_1765_p3, tmp_16_fu_1793_p3, tmp_18_fu_1821_p3, tmp_20_fu_1849_p3, tmp_22_fu_1877_p3, tmp_24_fu_1905_p3, tmp_26_fu_1933_p3, tmp_28_fu_1961_p3, tmp_30_fu_1989_p3, tmp_32_fu_2017_p3, tmp_34_fu_2045_p3, tmp_36_fu_2073_p3, tmp_38_fu_2101_p3, tmp_40_fu_2129_p3, tmp_42_fu_2157_p3, tmp_44_fu_2185_p3, tmp_46_fu_2213_p3, tmp_48_fu_2241_p3, tmp_50_fu_2269_p3, tmp_52_fu_2297_p3, tmp_54_fu_2325_p3, tmp_56_fu_2353_p3, tmp_58_fu_2381_p3, tmp_60_fu_2409_p3, tmp_62_fu_2437_p3, tmp_64_fu_2465_p3) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state54)) then + in1_loc_address0 <= tmp_64_fu_2465_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state53)) then + in1_loc_address0 <= tmp_62_fu_2437_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state52)) then + in1_loc_address0 <= tmp_60_fu_2409_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state51)) then + in1_loc_address0 <= tmp_58_fu_2381_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state50)) then + in1_loc_address0 <= tmp_56_fu_2353_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state49)) then + in1_loc_address0 <= tmp_54_fu_2325_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state48)) then + in1_loc_address0 <= tmp_52_fu_2297_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state47)) then + in1_loc_address0 <= tmp_50_fu_2269_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state46)) then + in1_loc_address0 <= tmp_48_fu_2241_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state45)) then + in1_loc_address0 <= tmp_46_fu_2213_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state44)) then + in1_loc_address0 <= tmp_44_fu_2185_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state43)) then + in1_loc_address0 <= tmp_42_fu_2157_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state42)) then + in1_loc_address0 <= tmp_40_fu_2129_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state41)) then + in1_loc_address0 <= tmp_38_fu_2101_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state40)) then + in1_loc_address0 <= tmp_36_fu_2073_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state39)) then + in1_loc_address0 <= tmp_34_fu_2045_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state38)) then + in1_loc_address0 <= tmp_32_fu_2017_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state37)) then + in1_loc_address0 <= tmp_30_fu_1989_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state36)) then + in1_loc_address0 <= tmp_28_fu_1961_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state35)) then + in1_loc_address0 <= tmp_26_fu_1933_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state34)) then + in1_loc_address0 <= tmp_24_fu_1905_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state33)) then + in1_loc_address0 <= tmp_22_fu_1877_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state32)) then + in1_loc_address0 <= tmp_20_fu_1849_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state31)) then + in1_loc_address0 <= tmp_18_fu_1821_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state30)) then + in1_loc_address0 <= tmp_16_fu_1793_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state29)) then + in1_loc_address0 <= tmp_14_fu_1765_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state28)) then + in1_loc_address0 <= tmp_12_fu_1737_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state27)) then + in1_loc_address0 <= tmp_10_fu_1709_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state26)) then + in1_loc_address0 <= tmp_9_fu_1681_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in1_loc_address0 <= tmp_7_fu_1653_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + in1_loc_address0 <= tmp_5_fu_1625_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_address0 <= zext_ln38_fu_1582_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_address0 <= zext_ln27_fu_1537_p1(12 - 1 downto 0); + else + in1_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in1_loc_address1_assign_proc : process(ap_CS_fsm_state23, ap_CS_fsm_state24, ap_CS_fsm_state25, ap_CS_fsm_state26, ap_CS_fsm_state27, ap_CS_fsm_state28, ap_CS_fsm_state29, ap_CS_fsm_state30, ap_CS_fsm_state31, ap_CS_fsm_state32, ap_CS_fsm_state33, ap_CS_fsm_state34, ap_CS_fsm_state35, ap_CS_fsm_state36, ap_CS_fsm_state37, ap_CS_fsm_state38, ap_CS_fsm_state39, ap_CS_fsm_state40, ap_CS_fsm_state41, ap_CS_fsm_state42, ap_CS_fsm_state43, ap_CS_fsm_state44, ap_CS_fsm_state45, ap_CS_fsm_state46, ap_CS_fsm_state47, ap_CS_fsm_state48, ap_CS_fsm_state49, ap_CS_fsm_state50, ap_CS_fsm_state51, ap_CS_fsm_state52, ap_CS_fsm_state53, ap_CS_fsm_state54, tmp_3_fu_1597_p3, tmp_4_fu_1611_p3, tmp_6_fu_1639_p3, tmp_8_fu_1667_p3, tmp_s_fu_1695_p3, tmp_11_fu_1723_p3, tmp_13_fu_1751_p3, tmp_15_fu_1779_p3, tmp_17_fu_1807_p3, tmp_19_fu_1835_p3, tmp_21_fu_1863_p3, tmp_23_fu_1891_p3, tmp_25_fu_1919_p3, tmp_27_fu_1947_p3, tmp_29_fu_1975_p3, tmp_31_fu_2003_p3, tmp_33_fu_2031_p3, tmp_35_fu_2059_p3, tmp_37_fu_2087_p3, tmp_39_fu_2115_p3, tmp_41_fu_2143_p3, tmp_43_fu_2171_p3, tmp_45_fu_2199_p3, tmp_47_fu_2227_p3, tmp_49_fu_2255_p3, tmp_51_fu_2283_p3, tmp_53_fu_2311_p3, tmp_55_fu_2339_p3, tmp_57_fu_2367_p3, tmp_59_fu_2395_p3, tmp_61_fu_2423_p3, tmp_63_fu_2451_p3) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state54)) then + in1_loc_address1 <= tmp_63_fu_2451_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state53)) then + in1_loc_address1 <= tmp_61_fu_2423_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state52)) then + in1_loc_address1 <= tmp_59_fu_2395_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state51)) then + in1_loc_address1 <= tmp_57_fu_2367_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state50)) then + in1_loc_address1 <= tmp_55_fu_2339_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state49)) then + in1_loc_address1 <= tmp_53_fu_2311_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state48)) then + in1_loc_address1 <= tmp_51_fu_2283_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state47)) then + in1_loc_address1 <= tmp_49_fu_2255_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state46)) then + in1_loc_address1 <= tmp_47_fu_2227_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state45)) then + in1_loc_address1 <= tmp_45_fu_2199_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state44)) then + in1_loc_address1 <= tmp_43_fu_2171_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state43)) then + in1_loc_address1 <= tmp_41_fu_2143_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state42)) then + in1_loc_address1 <= tmp_39_fu_2115_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state41)) then + in1_loc_address1 <= tmp_37_fu_2087_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state40)) then + in1_loc_address1 <= tmp_35_fu_2059_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state39)) then + in1_loc_address1 <= tmp_33_fu_2031_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state38)) then + in1_loc_address1 <= tmp_31_fu_2003_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state37)) then + in1_loc_address1 <= tmp_29_fu_1975_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state36)) then + in1_loc_address1 <= tmp_27_fu_1947_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state35)) then + in1_loc_address1 <= tmp_25_fu_1919_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state34)) then + in1_loc_address1 <= tmp_23_fu_1891_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state33)) then + in1_loc_address1 <= tmp_21_fu_1863_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state32)) then + in1_loc_address1 <= tmp_19_fu_1835_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state31)) then + in1_loc_address1 <= tmp_17_fu_1807_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state30)) then + in1_loc_address1 <= tmp_15_fu_1779_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state29)) then + in1_loc_address1 <= tmp_13_fu_1751_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state28)) then + in1_loc_address1 <= tmp_11_fu_1723_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state27)) then + in1_loc_address1 <= tmp_s_fu_1695_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state26)) then + in1_loc_address1 <= tmp_8_fu_1667_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in1_loc_address1 <= tmp_6_fu_1639_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + in1_loc_address1 <= tmp_4_fu_1611_p3(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_address1 <= tmp_3_fu_1597_p3(12 - 1 downto 0); + else + in1_loc_address1 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in1_loc_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_CS_fsm_state24, ap_CS_fsm_state25, ap_CS_fsm_state26, ap_CS_fsm_state27, ap_CS_fsm_state28, ap_CS_fsm_state29, ap_CS_fsm_state30, ap_CS_fsm_state31, ap_CS_fsm_state32, ap_CS_fsm_state33, ap_CS_fsm_state34, ap_CS_fsm_state35, ap_CS_fsm_state36, ap_CS_fsm_state37, ap_CS_fsm_state38, ap_CS_fsm_state39, ap_CS_fsm_state40, ap_CS_fsm_state41, ap_CS_fsm_state42, ap_CS_fsm_state43, ap_CS_fsm_state44, ap_CS_fsm_state45, ap_CS_fsm_state46, ap_CS_fsm_state47, ap_CS_fsm_state48, ap_CS_fsm_state49, ap_CS_fsm_state50, ap_CS_fsm_state51, ap_CS_fsm_state52, ap_CS_fsm_state53, ap_CS_fsm_state54, ap_enable_reg_pp0_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state51) or (ap_const_logic_1 = ap_CS_fsm_state50) or (ap_const_logic_1 = ap_CS_fsm_state49) or (ap_const_logic_1 = ap_CS_fsm_state48) or (ap_const_logic_1 = ap_CS_fsm_state47) or (ap_const_logic_1 = ap_CS_fsm_state46) or (ap_const_logic_1 = ap_CS_fsm_state45) or (ap_const_logic_1 = ap_CS_fsm_state44) or (ap_const_logic_1 = ap_CS_fsm_state43) or (ap_const_logic_1 = ap_CS_fsm_state42) or (ap_const_logic_1 = ap_CS_fsm_state41) or (ap_const_logic_1 = ap_CS_fsm_state40) or (ap_const_logic_1 = ap_CS_fsm_state39) or (ap_const_logic_1 = ap_CS_fsm_state38) or (ap_const_logic_1 = ap_CS_fsm_state37) or (ap_const_logic_1 = ap_CS_fsm_state36) or (ap_const_logic_1 = ap_CS_fsm_state35) or (ap_const_logic_1 = ap_CS_fsm_state34) or (ap_const_logic_1 = ap_CS_fsm_state33) or (ap_const_logic_1 = ap_CS_fsm_state32) or (ap_const_logic_1 = ap_CS_fsm_state31) or (ap_const_logic_1 = ap_CS_fsm_state30) or (ap_const_logic_1 = ap_CS_fsm_state29) or (ap_const_logic_1 = ap_CS_fsm_state28) or (ap_const_logic_1 = ap_CS_fsm_state27) or (ap_const_logic_1 = ap_CS_fsm_state26) or (ap_const_logic_1 = ap_CS_fsm_state25) or (ap_const_logic_1 = ap_CS_fsm_state24) or (ap_const_logic_1 = ap_CS_fsm_state54) or (ap_const_logic_1 = ap_CS_fsm_state53) or (ap_const_logic_1 = ap_CS_fsm_state52) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_ce0 <= ap_const_logic_1; + else + in1_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_ce1_assign_proc : process(ap_CS_fsm_state23, ap_block_state23_io, ap_CS_fsm_state24, ap_CS_fsm_state25, ap_CS_fsm_state26, ap_CS_fsm_state27, ap_CS_fsm_state28, ap_CS_fsm_state29, ap_CS_fsm_state30, ap_CS_fsm_state31, ap_CS_fsm_state32, ap_CS_fsm_state33, ap_CS_fsm_state34, ap_CS_fsm_state35, ap_CS_fsm_state36, ap_CS_fsm_state37, ap_CS_fsm_state38, ap_CS_fsm_state39, ap_CS_fsm_state40, ap_CS_fsm_state41, ap_CS_fsm_state42, ap_CS_fsm_state43, ap_CS_fsm_state44, ap_CS_fsm_state45, ap_CS_fsm_state46, ap_CS_fsm_state47, ap_CS_fsm_state48, ap_CS_fsm_state49, ap_CS_fsm_state50, ap_CS_fsm_state51, ap_CS_fsm_state52, ap_CS_fsm_state53, ap_CS_fsm_state54) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state51) or (ap_const_logic_1 = ap_CS_fsm_state50) or (ap_const_logic_1 = ap_CS_fsm_state49) or (ap_const_logic_1 = ap_CS_fsm_state48) or (ap_const_logic_1 = ap_CS_fsm_state47) or (ap_const_logic_1 = ap_CS_fsm_state46) or (ap_const_logic_1 = ap_CS_fsm_state45) or (ap_const_logic_1 = ap_CS_fsm_state44) or (ap_const_logic_1 = ap_CS_fsm_state43) or (ap_const_logic_1 = ap_CS_fsm_state42) or (ap_const_logic_1 = ap_CS_fsm_state41) or (ap_const_logic_1 = ap_CS_fsm_state40) or (ap_const_logic_1 = ap_CS_fsm_state39) or (ap_const_logic_1 = ap_CS_fsm_state38) or (ap_const_logic_1 = ap_CS_fsm_state37) or (ap_const_logic_1 = ap_CS_fsm_state36) or (ap_const_logic_1 = ap_CS_fsm_state35) or (ap_const_logic_1 = ap_CS_fsm_state34) or (ap_const_logic_1 = ap_CS_fsm_state33) or (ap_const_logic_1 = ap_CS_fsm_state32) or (ap_const_logic_1 = ap_CS_fsm_state31) or (ap_const_logic_1 = ap_CS_fsm_state30) or (ap_const_logic_1 = ap_CS_fsm_state29) or (ap_const_logic_1 = ap_CS_fsm_state28) or (ap_const_logic_1 = ap_CS_fsm_state27) or (ap_const_logic_1 = ap_CS_fsm_state26) or (ap_const_logic_1 = ap_CS_fsm_state25) or (ap_const_logic_1 = ap_CS_fsm_state24) or (ap_const_logic_1 = ap_CS_fsm_state54) or (ap_const_logic_1 = ap_CS_fsm_state53) or (ap_const_logic_1 = ap_CS_fsm_state52) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_ce1 <= ap_const_logic_1; + else + in1_loc_ce1 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_we0_assign_proc : process(ap_block_pp0_stage0_11001, icmp_ln27_reg_3840_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_3840_pp0_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_we0 <= ap_const_logic_1; + else + in1_loc_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_6_fu_1497_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, icmp_ln27_reg_3840, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0, icmp_ln27_reg_3840) + begin + if (((icmp_ln27_reg_3840 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state56, ap_CS_fsm_state57, ap_CS_fsm_state58, ap_CS_fsm_state59, ap_CS_fsm_state60, ap_CS_fsm_state61, ap_CS_fsm_state62, ap_CS_fsm_state63, ap_CS_fsm_state64, ap_CS_fsm_state65, ap_CS_fsm_state66, ap_CS_fsm_state67, ap_CS_fsm_state68, ap_CS_fsm_state69, ap_CS_fsm_state70, ap_CS_fsm_state71, ap_CS_fsm_state72, ap_CS_fsm_state73, ap_CS_fsm_state74, ap_CS_fsm_state75, ap_CS_fsm_state76, ap_CS_fsm_state77, ap_CS_fsm_state78, ap_CS_fsm_state79, ap_CS_fsm_state80, ap_CS_fsm_state81, ap_CS_fsm_state82, ap_CS_fsm_state83, ap_CS_fsm_state84, ap_CS_fsm_state85, ap_CS_fsm_state86, ap_CS_fsm_state87, ap_enable_reg_pp1_iter2, zext_ln28_fu_1554_p1, sext_ln38_fu_2492_p1, sext_ln38_3_fu_2537_p1, sext_ln38_5_fu_2567_p1, sext_ln38_7_fu_2613_p1, sext_ln38_9_fu_2648_p1, sext_ln38_11_fu_2693_p1, sext_ln38_13_fu_2728_p1, sext_ln38_15_fu_2768_p1, sext_ln38_17_fu_2803_p1, sext_ln38_19_fu_2853_p1, sext_ln38_21_fu_2888_p1, sext_ln38_23_fu_2928_p1, sext_ln38_25_fu_2963_p1, sext_ln38_27_fu_3008_p1, sext_ln38_29_fu_3043_p1, sext_ln38_31_fu_3083_p1, sext_ln38_33_fu_3118_p1, sext_ln38_35_fu_3173_p1, sext_ln38_37_fu_3208_p1, sext_ln38_39_fu_3248_p1, sext_ln38_41_fu_3283_p1, sext_ln38_43_fu_3328_p1, sext_ln38_45_fu_3363_p1, sext_ln38_47_fu_3403_p1, sext_ln38_49_fu_3438_p1, sext_ln38_51_fu_3488_p1, sext_ln38_53_fu_3523_p1, sext_ln38_55_fu_3563_p1, sext_ln38_57_fu_3598_p1, sext_ln38_59_fu_3643_p1, sext_ln38_61_fu_3678_p1, sext_ln38_63_fu_3718_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state87)) then + in2_loc_address0 <= sext_ln38_63_fu_3718_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state86)) then + in2_loc_address0 <= sext_ln38_61_fu_3678_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state85)) then + in2_loc_address0 <= sext_ln38_59_fu_3643_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state84)) then + in2_loc_address0 <= sext_ln38_57_fu_3598_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state83)) then + in2_loc_address0 <= sext_ln38_55_fu_3563_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state82)) then + in2_loc_address0 <= sext_ln38_53_fu_3523_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state81)) then + in2_loc_address0 <= sext_ln38_51_fu_3488_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state80)) then + in2_loc_address0 <= sext_ln38_49_fu_3438_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state79)) then + in2_loc_address0 <= sext_ln38_47_fu_3403_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state78)) then + in2_loc_address0 <= sext_ln38_45_fu_3363_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state77)) then + in2_loc_address0 <= sext_ln38_43_fu_3328_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state76)) then + in2_loc_address0 <= sext_ln38_41_fu_3283_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state75)) then + in2_loc_address0 <= sext_ln38_39_fu_3248_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state74)) then + in2_loc_address0 <= sext_ln38_37_fu_3208_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state73)) then + in2_loc_address0 <= sext_ln38_35_fu_3173_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state72)) then + in2_loc_address0 <= sext_ln38_33_fu_3118_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state71)) then + in2_loc_address0 <= sext_ln38_31_fu_3083_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state70)) then + in2_loc_address0 <= sext_ln38_29_fu_3043_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state69)) then + in2_loc_address0 <= sext_ln38_27_fu_3008_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state68)) then + in2_loc_address0 <= sext_ln38_25_fu_2963_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state67)) then + in2_loc_address0 <= sext_ln38_23_fu_2928_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state66)) then + in2_loc_address0 <= sext_ln38_21_fu_2888_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state65)) then + in2_loc_address0 <= sext_ln38_19_fu_2853_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state64)) then + in2_loc_address0 <= sext_ln38_17_fu_2803_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state63)) then + in2_loc_address0 <= sext_ln38_15_fu_2768_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state62)) then + in2_loc_address0 <= sext_ln38_13_fu_2728_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state61)) then + in2_loc_address0 <= sext_ln38_11_fu_2693_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state60)) then + in2_loc_address0 <= sext_ln38_9_fu_2648_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state59)) then + in2_loc_address0 <= sext_ln38_7_fu_2613_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state58)) then + in2_loc_address0 <= sext_ln38_5_fu_2567_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state57)) then + in2_loc_address0 <= sext_ln38_3_fu_2537_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state56)) then + in2_loc_address0 <= sext_ln38_fu_2492_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_address0 <= zext_ln28_fu_1554_p1(12 - 1 downto 0); + else + in2_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in2_loc_address1_assign_proc : process(ap_CS_fsm_state56, ap_CS_fsm_state57, ap_CS_fsm_state58, ap_CS_fsm_state59, ap_CS_fsm_state60, ap_CS_fsm_state61, ap_CS_fsm_state62, ap_CS_fsm_state63, ap_CS_fsm_state64, ap_CS_fsm_state65, ap_CS_fsm_state66, ap_CS_fsm_state67, ap_CS_fsm_state68, ap_CS_fsm_state69, ap_CS_fsm_state70, ap_CS_fsm_state71, ap_CS_fsm_state72, ap_CS_fsm_state73, ap_CS_fsm_state74, ap_CS_fsm_state75, ap_CS_fsm_state76, ap_CS_fsm_state77, ap_CS_fsm_state78, ap_CS_fsm_state79, ap_CS_fsm_state80, ap_CS_fsm_state81, ap_CS_fsm_state82, ap_CS_fsm_state83, ap_CS_fsm_state84, ap_CS_fsm_state85, ap_CS_fsm_state86, ap_CS_fsm_state87, sext_ln38_1_fu_2507_p1, sext_ln38_2_fu_2527_p1, sext_ln38_4_fu_2557_p1, sext_ln38_6_fu_2603_p1, sext_ln38_8_fu_2638_p1, sext_ln38_10_fu_2683_p1, sext_ln38_12_fu_2718_p1, sext_ln38_14_fu_2758_p1, sext_ln38_16_fu_2793_p1, sext_ln38_18_fu_2843_p1, sext_ln38_20_fu_2878_p1, sext_ln38_22_fu_2918_p1, sext_ln38_24_fu_2953_p1, sext_ln38_26_fu_2998_p1, sext_ln38_28_fu_3033_p1, sext_ln38_30_fu_3073_p1, sext_ln38_32_fu_3108_p1, sext_ln38_34_fu_3163_p1, sext_ln38_36_fu_3198_p1, sext_ln38_38_fu_3238_p1, sext_ln38_40_fu_3273_p1, sext_ln38_42_fu_3318_p1, sext_ln38_44_fu_3353_p1, sext_ln38_46_fu_3393_p1, sext_ln38_48_fu_3428_p1, sext_ln38_50_fu_3478_p1, sext_ln38_52_fu_3513_p1, sext_ln38_54_fu_3553_p1, sext_ln38_56_fu_3588_p1, sext_ln38_58_fu_3633_p1, sext_ln38_60_fu_3668_p1, sext_ln38_62_fu_3708_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state87)) then + in2_loc_address1 <= sext_ln38_62_fu_3708_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state86)) then + in2_loc_address1 <= sext_ln38_60_fu_3668_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state85)) then + in2_loc_address1 <= sext_ln38_58_fu_3633_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state84)) then + in2_loc_address1 <= sext_ln38_56_fu_3588_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state83)) then + in2_loc_address1 <= sext_ln38_54_fu_3553_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state82)) then + in2_loc_address1 <= sext_ln38_52_fu_3513_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state81)) then + in2_loc_address1 <= sext_ln38_50_fu_3478_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state80)) then + in2_loc_address1 <= sext_ln38_48_fu_3428_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state79)) then + in2_loc_address1 <= sext_ln38_46_fu_3393_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state78)) then + in2_loc_address1 <= sext_ln38_44_fu_3353_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state77)) then + in2_loc_address1 <= sext_ln38_42_fu_3318_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state76)) then + in2_loc_address1 <= sext_ln38_40_fu_3273_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state75)) then + in2_loc_address1 <= sext_ln38_38_fu_3238_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state74)) then + in2_loc_address1 <= sext_ln38_36_fu_3198_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state73)) then + in2_loc_address1 <= sext_ln38_34_fu_3163_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state72)) then + in2_loc_address1 <= sext_ln38_32_fu_3108_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state71)) then + in2_loc_address1 <= sext_ln38_30_fu_3073_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state70)) then + in2_loc_address1 <= sext_ln38_28_fu_3033_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state69)) then + in2_loc_address1 <= sext_ln38_26_fu_2998_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state68)) then + in2_loc_address1 <= sext_ln38_24_fu_2953_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state67)) then + in2_loc_address1 <= sext_ln38_22_fu_2918_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state66)) then + in2_loc_address1 <= sext_ln38_20_fu_2878_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state65)) then + in2_loc_address1 <= sext_ln38_18_fu_2843_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state64)) then + in2_loc_address1 <= sext_ln38_16_fu_2793_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state63)) then + in2_loc_address1 <= sext_ln38_14_fu_2758_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state62)) then + in2_loc_address1 <= sext_ln38_12_fu_2718_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state61)) then + in2_loc_address1 <= sext_ln38_10_fu_2683_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state60)) then + in2_loc_address1 <= sext_ln38_8_fu_2638_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state59)) then + in2_loc_address1 <= sext_ln38_6_fu_2603_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state58)) then + in2_loc_address1 <= sext_ln38_4_fu_2557_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state57)) then + in2_loc_address1 <= sext_ln38_2_fu_2527_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state56)) then + in2_loc_address1 <= sext_ln38_1_fu_2507_p1(12 - 1 downto 0); + else + in2_loc_address1 <= "XXXXXXXXXXXX"; + end if; + end process; + + + in2_loc_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state56, ap_CS_fsm_state57, ap_CS_fsm_state58, ap_CS_fsm_state59, ap_CS_fsm_state60, ap_CS_fsm_state61, ap_CS_fsm_state62, ap_CS_fsm_state63, ap_CS_fsm_state64, ap_CS_fsm_state65, ap_CS_fsm_state66, ap_CS_fsm_state67, ap_CS_fsm_state68, ap_CS_fsm_state69, ap_CS_fsm_state70, ap_CS_fsm_state71, ap_CS_fsm_state72, ap_CS_fsm_state73, ap_CS_fsm_state74, ap_CS_fsm_state75, ap_CS_fsm_state76, ap_CS_fsm_state77, ap_CS_fsm_state78, ap_CS_fsm_state79, ap_CS_fsm_state80, ap_CS_fsm_state81, ap_CS_fsm_state82, ap_CS_fsm_state83, ap_CS_fsm_state84, ap_CS_fsm_state85, ap_CS_fsm_state86, ap_CS_fsm_state87, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state87) or (ap_const_logic_1 = ap_CS_fsm_state86) or (ap_const_logic_1 = ap_CS_fsm_state85) or (ap_const_logic_1 = ap_CS_fsm_state84) or (ap_const_logic_1 = ap_CS_fsm_state83) or (ap_const_logic_1 = ap_CS_fsm_state82) or (ap_const_logic_1 = ap_CS_fsm_state81) or (ap_const_logic_1 = ap_CS_fsm_state80) or (ap_const_logic_1 = ap_CS_fsm_state79) or (ap_const_logic_1 = ap_CS_fsm_state78) or (ap_const_logic_1 = ap_CS_fsm_state77) or (ap_const_logic_1 = ap_CS_fsm_state76) or (ap_const_logic_1 = ap_CS_fsm_state75) or (ap_const_logic_1 = ap_CS_fsm_state74) or (ap_const_logic_1 = ap_CS_fsm_state73) or (ap_const_logic_1 = ap_CS_fsm_state72) or (ap_const_logic_1 = ap_CS_fsm_state71) or (ap_const_logic_1 = ap_CS_fsm_state70) or (ap_const_logic_1 = ap_CS_fsm_state69) or (ap_const_logic_1 = ap_CS_fsm_state68) or (ap_const_logic_1 = ap_CS_fsm_state67) or (ap_const_logic_1 = ap_CS_fsm_state66) or (ap_const_logic_1 = ap_CS_fsm_state65) or (ap_const_logic_1 = ap_CS_fsm_state64) or (ap_const_logic_1 = ap_CS_fsm_state63) or (ap_const_logic_1 = ap_CS_fsm_state62) or (ap_const_logic_1 = ap_CS_fsm_state61) or (ap_const_logic_1 = ap_CS_fsm_state60) or (ap_const_logic_1 = ap_CS_fsm_state59) or (ap_const_logic_1 = ap_CS_fsm_state58) or (ap_const_logic_1 = ap_CS_fsm_state57) or (ap_const_logic_1 = ap_CS_fsm_state56) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_ce0 <= ap_const_logic_1; + else + in2_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_ce1_assign_proc : process(ap_CS_fsm_state56, ap_CS_fsm_state57, ap_CS_fsm_state58, ap_CS_fsm_state59, ap_CS_fsm_state60, ap_CS_fsm_state61, ap_CS_fsm_state62, ap_CS_fsm_state63, ap_CS_fsm_state64, ap_CS_fsm_state65, ap_CS_fsm_state66, ap_CS_fsm_state67, ap_CS_fsm_state68, ap_CS_fsm_state69, ap_CS_fsm_state70, ap_CS_fsm_state71, ap_CS_fsm_state72, ap_CS_fsm_state73, ap_CS_fsm_state74, ap_CS_fsm_state75, ap_CS_fsm_state76, ap_CS_fsm_state77, ap_CS_fsm_state78, ap_CS_fsm_state79, ap_CS_fsm_state80, ap_CS_fsm_state81, ap_CS_fsm_state82, ap_CS_fsm_state83, ap_CS_fsm_state84, ap_CS_fsm_state85, ap_CS_fsm_state86, ap_CS_fsm_state87) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state87) or (ap_const_logic_1 = ap_CS_fsm_state86) or (ap_const_logic_1 = ap_CS_fsm_state85) or (ap_const_logic_1 = ap_CS_fsm_state84) or (ap_const_logic_1 = ap_CS_fsm_state83) or (ap_const_logic_1 = ap_CS_fsm_state82) or (ap_const_logic_1 = ap_CS_fsm_state81) or (ap_const_logic_1 = ap_CS_fsm_state80) or (ap_const_logic_1 = ap_CS_fsm_state79) or (ap_const_logic_1 = ap_CS_fsm_state78) or (ap_const_logic_1 = ap_CS_fsm_state77) or (ap_const_logic_1 = ap_CS_fsm_state76) or (ap_const_logic_1 = ap_CS_fsm_state75) or (ap_const_logic_1 = ap_CS_fsm_state74) or (ap_const_logic_1 = ap_CS_fsm_state73) or (ap_const_logic_1 = ap_CS_fsm_state72) or (ap_const_logic_1 = ap_CS_fsm_state71) or (ap_const_logic_1 = ap_CS_fsm_state70) or (ap_const_logic_1 = ap_CS_fsm_state69) or (ap_const_logic_1 = ap_CS_fsm_state68) or (ap_const_logic_1 = ap_CS_fsm_state67) or (ap_const_logic_1 = ap_CS_fsm_state66) or (ap_const_logic_1 = ap_CS_fsm_state65) or (ap_const_logic_1 = ap_CS_fsm_state64) or (ap_const_logic_1 = ap_CS_fsm_state63) or (ap_const_logic_1 = ap_CS_fsm_state62) or (ap_const_logic_1 = ap_CS_fsm_state61) or (ap_const_logic_1 = ap_CS_fsm_state60) or (ap_const_logic_1 = ap_CS_fsm_state59) or (ap_const_logic_1 = ap_CS_fsm_state58) or (ap_const_logic_1 = ap_CS_fsm_state57) or (ap_const_logic_1 = ap_CS_fsm_state56))) then + in2_loc_ce1 <= ap_const_logic_1; + else + in2_loc_ce1 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_we0_assign_proc : process(ap_block_pp1_stage0_11001, icmp_ln28_reg_3854_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_3854_pp1_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_we0 <= ap_const_logic_1; + else + in2_loc_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, icmp_ln28_reg_3854, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0, icmp_ln28_reg_3854) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (icmp_ln28_reg_3854 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_2486_p2 <= std_logic_vector(signed(j_0_reg_1445) + signed(ap_const_lv32_1)); + mul_ln38_10_fu_2733_p0 <= in2_loc_q1; + mul_ln38_10_fu_2733_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_10_fu_2733_p0) * signed(in1_loc_load_10_reg_4068))), 32)); + mul_ln38_11_fu_2738_p0 <= in2_loc_q0; + mul_ln38_11_fu_2738_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_11_fu_2738_p0) * signed(in1_loc_load_11_reg_4073))), 32)); + mul_ln38_12_fu_2773_p0 <= in2_loc_q1; + mul_ln38_12_fu_2773_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_12_fu_2773_p0) * signed(in1_loc_load_12_reg_4088))), 32)); + mul_ln38_13_fu_2778_p0 <= in2_loc_q0; + mul_ln38_13_fu_2778_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_13_fu_2778_p0) * signed(in1_loc_load_13_reg_4093))), 32)); + mul_ln38_14_fu_2808_p0 <= in2_loc_q1; + mul_ln38_14_fu_2808_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_14_fu_2808_p0) * signed(in1_loc_load_14_reg_4108))), 32)); + mul_ln38_15_fu_2813_p0 <= in2_loc_q0; + mul_ln38_15_fu_2813_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_15_fu_2813_p0) * signed(in1_loc_load_15_reg_4113))), 32)); + mul_ln38_16_fu_2858_p0 <= in2_loc_q1; + mul_ln38_16_fu_2858_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_16_fu_2858_p0) * signed(in1_loc_load_16_reg_4128))), 32)); + mul_ln38_17_fu_2863_p0 <= in2_loc_q0; + mul_ln38_17_fu_2863_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_17_fu_2863_p0) * signed(in1_loc_load_17_reg_4133))), 32)); + mul_ln38_18_fu_2893_p0 <= in2_loc_q1; + mul_ln38_18_fu_2893_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_18_fu_2893_p0) * signed(in1_loc_load_18_reg_4148))), 32)); + mul_ln38_19_fu_2898_p0 <= in2_loc_q0; + mul_ln38_19_fu_2898_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_19_fu_2898_p0) * signed(in1_loc_load_19_reg_4153))), 32)); + mul_ln38_1_fu_2547_p0 <= in2_loc_q1; + mul_ln38_1_fu_2547_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_1_fu_2547_p0) * signed(in1_loc_load_1_reg_3973))), 32)); + mul_ln38_20_fu_2933_p0 <= in2_loc_q1; + mul_ln38_20_fu_2933_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_20_fu_2933_p0) * signed(in1_loc_load_20_reg_4168))), 32)); + mul_ln38_21_fu_2938_p0 <= in2_loc_q0; + mul_ln38_21_fu_2938_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_21_fu_2938_p0) * signed(in1_loc_load_21_reg_4173))), 32)); + mul_ln38_22_fu_2968_p0 <= in2_loc_q1; + mul_ln38_22_fu_2968_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_22_fu_2968_p0) * signed(in1_loc_load_22_reg_4188))), 32)); + mul_ln38_23_fu_2973_p0 <= in2_loc_q0; + mul_ln38_23_fu_2973_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_23_fu_2973_p0) * signed(in1_loc_load_23_reg_4193))), 32)); + mul_ln38_24_fu_3013_p0 <= in2_loc_q1; + mul_ln38_24_fu_3013_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_24_fu_3013_p0) * signed(in1_loc_load_24_reg_4208))), 32)); + mul_ln38_25_fu_3018_p0 <= in2_loc_q0; + mul_ln38_25_fu_3018_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_25_fu_3018_p0) * signed(in1_loc_load_25_reg_4213))), 32)); + mul_ln38_26_fu_3048_p0 <= in2_loc_q1; + mul_ln38_26_fu_3048_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_26_fu_3048_p0) * signed(in1_loc_load_26_reg_4228))), 32)); + mul_ln38_27_fu_3053_p0 <= in2_loc_q0; + mul_ln38_27_fu_3053_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_27_fu_3053_p0) * signed(in1_loc_load_27_reg_4233))), 32)); + mul_ln38_28_fu_3088_p0 <= in2_loc_q1; + mul_ln38_28_fu_3088_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_28_fu_3088_p0) * signed(in1_loc_load_28_reg_4248))), 32)); + mul_ln38_29_fu_3093_p0 <= in2_loc_q0; + mul_ln38_29_fu_3093_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_29_fu_3093_p0) * signed(in1_loc_load_29_reg_4253))), 32)); + mul_ln38_2_fu_2572_p0 <= in2_loc_q1; + mul_ln38_2_fu_2572_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_2_fu_2572_p0) * signed(in1_loc_load_2_reg_3988))), 32)); + mul_ln38_30_fu_3123_p0 <= in2_loc_q1; + mul_ln38_30_fu_3123_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_30_fu_3123_p0) * signed(in1_loc_load_30_reg_4268))), 32)); + mul_ln38_31_fu_3128_p0 <= in2_loc_q0; + mul_ln38_31_fu_3128_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_31_fu_3128_p0) * signed(in1_loc_load_31_reg_4273))), 32)); + mul_ln38_32_fu_3178_p0 <= in2_loc_q1; + mul_ln38_32_fu_3178_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_32_fu_3178_p0) * signed(in1_loc_load_32_reg_4288))), 32)); + mul_ln38_33_fu_3183_p0 <= in2_loc_q0; + mul_ln38_33_fu_3183_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_33_fu_3183_p0) * signed(in1_loc_load_33_reg_4293))), 32)); + mul_ln38_34_fu_3213_p0 <= in2_loc_q1; + mul_ln38_34_fu_3213_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_34_fu_3213_p0) * signed(in1_loc_load_34_reg_4308))), 32)); + mul_ln38_35_fu_3218_p0 <= in2_loc_q0; + mul_ln38_35_fu_3218_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_35_fu_3218_p0) * signed(in1_loc_load_35_reg_4313))), 32)); + mul_ln38_36_fu_3253_p0 <= in2_loc_q1; + mul_ln38_36_fu_3253_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_36_fu_3253_p0) * signed(in1_loc_load_36_reg_4328))), 32)); + mul_ln38_37_fu_3258_p0 <= in2_loc_q0; + mul_ln38_37_fu_3258_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_37_fu_3258_p0) * signed(in1_loc_load_37_reg_4333))), 32)); + mul_ln38_38_fu_3288_p0 <= in2_loc_q1; + mul_ln38_38_fu_3288_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_38_fu_3288_p0) * signed(in1_loc_load_38_reg_4348))), 32)); + mul_ln38_39_fu_3293_p0 <= in2_loc_q0; + mul_ln38_39_fu_3293_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_39_fu_3293_p0) * signed(in1_loc_load_39_reg_4353))), 32)); + mul_ln38_3_fu_2577_p0 <= in2_loc_q0; + mul_ln38_3_fu_2577_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_3_fu_2577_p0) * signed(in1_loc_load_3_reg_3993))), 32)); + mul_ln38_40_fu_3333_p0 <= in2_loc_q1; + mul_ln38_40_fu_3333_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_40_fu_3333_p0) * signed(in1_loc_load_40_reg_4368))), 32)); + mul_ln38_41_fu_3338_p0 <= in2_loc_q0; + mul_ln38_41_fu_3338_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_41_fu_3338_p0) * signed(in1_loc_load_41_reg_4373))), 32)); + mul_ln38_42_fu_3368_p0 <= in2_loc_q1; + mul_ln38_42_fu_3368_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_42_fu_3368_p0) * signed(in1_loc_load_42_reg_4388))), 32)); + mul_ln38_43_fu_3373_p0 <= in2_loc_q0; + mul_ln38_43_fu_3373_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_43_fu_3373_p0) * signed(in1_loc_load_43_reg_4393))), 32)); + mul_ln38_44_fu_3408_p0 <= in2_loc_q1; + mul_ln38_44_fu_3408_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_44_fu_3408_p0) * signed(in1_loc_load_44_reg_4408))), 32)); + mul_ln38_45_fu_3413_p0 <= in2_loc_q0; + mul_ln38_45_fu_3413_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_45_fu_3413_p0) * signed(in1_loc_load_45_reg_4413))), 32)); + mul_ln38_46_fu_3443_p0 <= in2_loc_q1; + mul_ln38_46_fu_3443_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_46_fu_3443_p0) * signed(in1_loc_load_46_reg_4428))), 32)); + mul_ln38_47_fu_3448_p0 <= in2_loc_q0; + mul_ln38_47_fu_3448_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_47_fu_3448_p0) * signed(in1_loc_load_47_reg_4433))), 32)); + mul_ln38_48_fu_3493_p0 <= in2_loc_q1; + mul_ln38_48_fu_3493_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_48_fu_3493_p0) * signed(in1_loc_load_48_reg_4448))), 32)); + mul_ln38_49_fu_3498_p0 <= in2_loc_q0; + mul_ln38_49_fu_3498_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_49_fu_3498_p0) * signed(in1_loc_load_49_reg_4453))), 32)); + mul_ln38_4_fu_2618_p0 <= in2_loc_q1; + mul_ln38_4_fu_2618_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_4_fu_2618_p0) * signed(in1_loc_load_4_reg_4008))), 32)); + mul_ln38_50_fu_3528_p0 <= in2_loc_q1; + mul_ln38_50_fu_3528_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_50_fu_3528_p0) * signed(in1_loc_load_50_reg_4468))), 32)); + mul_ln38_51_fu_3533_p0 <= in2_loc_q0; + mul_ln38_51_fu_3533_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_51_fu_3533_p0) * signed(in1_loc_load_51_reg_4473))), 32)); + mul_ln38_52_fu_3568_p0 <= in2_loc_q1; + mul_ln38_52_fu_3568_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_52_fu_3568_p0) * signed(in1_loc_load_52_reg_4488))), 32)); + mul_ln38_53_fu_3573_p0 <= in2_loc_q0; + mul_ln38_53_fu_3573_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_53_fu_3573_p0) * signed(in1_loc_load_53_reg_4493))), 32)); + mul_ln38_54_fu_3603_p0 <= in2_loc_q1; + mul_ln38_54_fu_3603_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_54_fu_3603_p0) * signed(in1_loc_load_54_reg_4508))), 32)); + mul_ln38_55_fu_3608_p0 <= in2_loc_q0; + mul_ln38_55_fu_3608_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_55_fu_3608_p0) * signed(in1_loc_load_55_reg_4513))), 32)); + mul_ln38_56_fu_3648_p0 <= in2_loc_q1; + mul_ln38_56_fu_3648_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_56_fu_3648_p0) * signed(in1_loc_load_56_reg_4528))), 32)); + mul_ln38_57_fu_3653_p0 <= in2_loc_q0; + mul_ln38_57_fu_3653_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_57_fu_3653_p0) * signed(in1_loc_load_57_reg_4533))), 32)); + mul_ln38_58_fu_3683_p0 <= in2_loc_q1; + mul_ln38_58_fu_3683_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_58_fu_3683_p0) * signed(in1_loc_load_58_reg_4548))), 32)); + mul_ln38_59_fu_3688_p0 <= in2_loc_q0; + mul_ln38_59_fu_3688_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_59_fu_3688_p0) * signed(in1_loc_load_59_reg_4553))), 32)); + mul_ln38_5_fu_2623_p0 <= in2_loc_q0; + mul_ln38_5_fu_2623_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_5_fu_2623_p0) * signed(in1_loc_load_5_reg_4013))), 32)); + mul_ln38_60_fu_3723_p0 <= in2_loc_q1; + mul_ln38_60_fu_3723_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_60_fu_3723_p0) * signed(in1_loc_load_60_reg_4568))), 32)); + mul_ln38_61_fu_3728_p0 <= in2_loc_q0; + mul_ln38_61_fu_3728_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_61_fu_3728_p0) * signed(in1_loc_load_61_reg_4573))), 32)); + mul_ln38_62_fu_3738_p0 <= in2_loc_q1; + mul_ln38_62_fu_3738_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_62_fu_3738_p0) * signed(in1_loc_load_62_reg_4583))), 32)); + mul_ln38_63_fu_3743_p0 <= in2_loc_q0; + mul_ln38_63_fu_3743_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_63_fu_3743_p0) * signed(in1_loc_load_63_reg_4588))), 32)); + mul_ln38_6_fu_2653_p0 <= in2_loc_q1; + mul_ln38_6_fu_2653_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_6_fu_2653_p0) * signed(in1_loc_load_6_reg_4028))), 32)); + mul_ln38_7_fu_2658_p0 <= in2_loc_q0; + mul_ln38_7_fu_2658_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_7_fu_2658_p0) * signed(in1_loc_load_7_reg_4033))), 32)); + mul_ln38_8_fu_2698_p0 <= in2_loc_q1; + mul_ln38_8_fu_2698_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_8_fu_2698_p0) * signed(in1_loc_load_8_reg_4048))), 32)); + mul_ln38_9_fu_2703_p0 <= in2_loc_q0; + mul_ln38_9_fu_2703_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_9_fu_2703_p0) * signed(in1_loc_load_9_reg_4053))), 32)); + mul_ln38_fu_2542_p0 <= in2_loc_q0; + mul_ln38_fu_2542_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_fu_2542_p0) * signed(in1_loc_load_reg_3968))), 32)); + or_ln38_10_fu_1732_p2 <= (tmp_2_reg_3877 or ap_const_lv37_B); + or_ln38_11_fu_1746_p2 <= (tmp_2_reg_3877 or ap_const_lv37_C); + or_ln38_12_fu_1760_p2 <= (tmp_2_reg_3877 or ap_const_lv37_D); + or_ln38_13_fu_1774_p2 <= (tmp_2_reg_3877 or ap_const_lv37_E); + or_ln38_14_fu_1788_p2 <= (tmp_2_reg_3877 or ap_const_lv37_F); + or_ln38_15_fu_1802_p2 <= (tmp_2_reg_3877 or ap_const_lv37_10); + or_ln38_16_fu_1816_p2 <= (tmp_2_reg_3877 or ap_const_lv37_11); + or_ln38_17_fu_1830_p2 <= (tmp_2_reg_3877 or ap_const_lv37_12); + or_ln38_18_fu_1844_p2 <= (tmp_2_reg_3877 or ap_const_lv37_13); + or_ln38_19_fu_1858_p2 <= (tmp_2_reg_3877 or ap_const_lv37_14); + or_ln38_1_fu_1606_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2); + or_ln38_20_fu_1872_p2 <= (tmp_2_reg_3877 or ap_const_lv37_15); + or_ln38_21_fu_1886_p2 <= (tmp_2_reg_3877 or ap_const_lv37_16); + or_ln38_22_fu_1900_p2 <= (tmp_2_reg_3877 or ap_const_lv37_17); + or_ln38_23_fu_1914_p2 <= (tmp_2_reg_3877 or ap_const_lv37_18); + or_ln38_24_fu_1928_p2 <= (tmp_2_reg_3877 or ap_const_lv37_19); + or_ln38_25_fu_1942_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1A); + or_ln38_26_fu_1956_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1B); + or_ln38_27_fu_1970_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1C); + or_ln38_28_fu_1984_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1D); + or_ln38_29_fu_1998_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1E); + or_ln38_2_fu_1620_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3); + or_ln38_30_fu_2012_p2 <= (tmp_2_reg_3877 or ap_const_lv37_1F); + or_ln38_31_fu_2026_p2 <= (tmp_2_reg_3877 or ap_const_lv37_20); + or_ln38_32_fu_2040_p2 <= (tmp_2_reg_3877 or ap_const_lv37_21); + or_ln38_33_fu_2054_p2 <= (tmp_2_reg_3877 or ap_const_lv37_22); + or_ln38_34_fu_2068_p2 <= (tmp_2_reg_3877 or ap_const_lv37_23); + or_ln38_35_fu_2082_p2 <= (tmp_2_reg_3877 or ap_const_lv37_24); + or_ln38_36_fu_2096_p2 <= (tmp_2_reg_3877 or ap_const_lv37_25); + or_ln38_37_fu_2110_p2 <= (tmp_2_reg_3877 or ap_const_lv37_26); + or_ln38_38_fu_2124_p2 <= (tmp_2_reg_3877 or ap_const_lv37_27); + or_ln38_39_fu_2138_p2 <= (tmp_2_reg_3877 or ap_const_lv37_28); + or_ln38_3_fu_1634_p2 <= (tmp_2_reg_3877 or ap_const_lv37_4); + or_ln38_40_fu_2152_p2 <= (tmp_2_reg_3877 or ap_const_lv37_29); + or_ln38_41_fu_2166_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2A); + or_ln38_42_fu_2180_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2B); + or_ln38_43_fu_2194_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2C); + or_ln38_44_fu_2208_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2D); + or_ln38_45_fu_2222_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2E); + or_ln38_46_fu_2236_p2 <= (tmp_2_reg_3877 or ap_const_lv37_2F); + or_ln38_47_fu_2250_p2 <= (tmp_2_reg_3877 or ap_const_lv37_30); + or_ln38_48_fu_2264_p2 <= (tmp_2_reg_3877 or ap_const_lv37_31); + or_ln38_49_fu_2278_p2 <= (tmp_2_reg_3877 or ap_const_lv37_32); + or_ln38_4_fu_1648_p2 <= (tmp_2_reg_3877 or ap_const_lv37_5); + or_ln38_50_fu_2292_p2 <= (tmp_2_reg_3877 or ap_const_lv37_33); + or_ln38_51_fu_2306_p2 <= (tmp_2_reg_3877 or ap_const_lv37_34); + or_ln38_52_fu_2320_p2 <= (tmp_2_reg_3877 or ap_const_lv37_35); + or_ln38_53_fu_2334_p2 <= (tmp_2_reg_3877 or ap_const_lv37_36); + or_ln38_54_fu_2348_p2 <= (tmp_2_reg_3877 or ap_const_lv37_37); + or_ln38_55_fu_2362_p2 <= (tmp_2_reg_3877 or ap_const_lv37_38); + or_ln38_56_fu_2376_p2 <= (tmp_2_reg_3877 or ap_const_lv37_39); + or_ln38_57_fu_2390_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3A); + or_ln38_58_fu_2404_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3B); + or_ln38_59_fu_2418_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3C); + or_ln38_5_fu_1662_p2 <= (tmp_2_reg_3877 or ap_const_lv37_6); + or_ln38_60_fu_2432_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3D); + or_ln38_61_fu_2446_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3E); + or_ln38_62_fu_2460_p2 <= (tmp_2_reg_3877 or ap_const_lv37_3F); + or_ln38_6_fu_1676_p2 <= (tmp_2_reg_3877 or ap_const_lv37_7); + or_ln38_7_fu_1690_p2 <= (tmp_2_reg_3877 or ap_const_lv37_8); + or_ln38_8_fu_1704_p2 <= (tmp_2_reg_3877 or ap_const_lv37_9); + or_ln38_9_fu_1718_p2 <= (tmp_2_reg_3877 or ap_const_lv37_A); + or_ln38_fu_1591_p2 <= (tmp_2_fu_1574_p3 or ap_const_lv37_1); + + out_loc_address0_assign_proc : process(ap_block_pp2_stage0, out_loc_addr_reg_4677, ap_CS_fsm_state57, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_CS_fsm_state89, zext_ln42_fu_3796_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + out_loc_address0 <= zext_ln42_fu_3796_p1(12 - 1 downto 0); + elsif (((ap_const_logic_1 = ap_CS_fsm_state89) or (ap_const_logic_1 = ap_CS_fsm_state57))) then + out_loc_address0 <= out_loc_addr_reg_4677; + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_CS_fsm_state57, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_CS_fsm_state89) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state89) or (ap_const_logic_1 = ap_CS_fsm_state57) or ((ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + out_loc_d0 <= std_logic_vector(unsigned(add_ln38_30_reg_4997) + unsigned(add_ln38_62_fu_3774_p2)); + + out_loc_we0_assign_proc : process(ap_CS_fsm_state89) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state89)) then + out_loc_we0 <= ap_const_logic_1; + else + out_loc_we0 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state23, icmp_ln31_fu_1563_p2, ap_block_state23_io) + begin + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state97, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state97))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp2_iter2, icmp_ln42_reg_5307_pp2_iter1_reg, ap_block_pp2_stage0_11001) + begin + if (((icmp_ln42_reg_5307_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state23, icmp_ln31_fu_1563_p2) + begin + if (((icmp_ln31_fu_1563_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state97) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state97)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp2_iter2, ap_block_pp2_stage0, icmp_ln42_reg_5307_pp2_iter1_reg) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (icmp_ln42_reg_5307_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + sext_ln38_10_fu_2683_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_73_fu_2678_p2),64)); + + sext_ln38_11_fu_2693_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_74_fu_2688_p2),64)); + + sext_ln38_12_fu_2718_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_75_fu_2713_p2),64)); + + sext_ln38_13_fu_2728_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_76_fu_2723_p2),64)); + + sext_ln38_14_fu_2758_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_77_fu_2753_p2),64)); + + sext_ln38_15_fu_2768_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_78_fu_2763_p2),64)); + + sext_ln38_16_fu_2793_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_79_fu_2788_p2),64)); + + sext_ln38_17_fu_2803_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_80_fu_2798_p2),64)); + + sext_ln38_18_fu_2843_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_81_fu_2838_p2),64)); + + sext_ln38_19_fu_2853_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_82_fu_2848_p2),64)); + + sext_ln38_1_fu_2507_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_64_fu_2501_p2),64)); + + sext_ln38_20_fu_2878_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_83_fu_2873_p2),64)); + + sext_ln38_21_fu_2888_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_84_fu_2883_p2),64)); + + sext_ln38_22_fu_2918_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_85_fu_2913_p2),64)); + + sext_ln38_23_fu_2928_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_86_fu_2923_p2),64)); + + sext_ln38_24_fu_2953_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_87_fu_2948_p2),64)); + + sext_ln38_25_fu_2963_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_88_fu_2958_p2),64)); + + sext_ln38_26_fu_2998_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_89_fu_2993_p2),64)); + + sext_ln38_27_fu_3008_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_90_fu_3003_p2),64)); + + sext_ln38_28_fu_3033_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_91_fu_3028_p2),64)); + + sext_ln38_29_fu_3043_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_92_fu_3038_p2),64)); + + sext_ln38_2_fu_2527_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_65_fu_2522_p2),64)); + + sext_ln38_30_fu_3073_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_93_fu_3068_p2),64)); + + sext_ln38_31_fu_3083_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_94_fu_3078_p2),64)); + + sext_ln38_32_fu_3108_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_95_fu_3103_p2),64)); + + sext_ln38_33_fu_3118_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_96_fu_3113_p2),64)); + + sext_ln38_34_fu_3163_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_97_fu_3158_p2),64)); + + sext_ln38_35_fu_3173_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_98_fu_3168_p2),64)); + + sext_ln38_36_fu_3198_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_99_fu_3193_p2),64)); + + sext_ln38_37_fu_3208_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_100_fu_3203_p2),64)); + + sext_ln38_38_fu_3238_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_101_fu_3233_p2),64)); + + sext_ln38_39_fu_3248_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_102_fu_3243_p2),64)); + + sext_ln38_3_fu_2537_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_66_fu_2532_p2),64)); + + sext_ln38_40_fu_3273_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_103_fu_3268_p2),64)); + + sext_ln38_41_fu_3283_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_104_fu_3278_p2),64)); + + sext_ln38_42_fu_3318_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_105_fu_3313_p2),64)); + + sext_ln38_43_fu_3328_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_106_fu_3323_p2),64)); + + sext_ln38_44_fu_3353_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_107_fu_3348_p2),64)); + + sext_ln38_45_fu_3363_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_108_fu_3358_p2),64)); + + sext_ln38_46_fu_3393_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_109_fu_3388_p2),64)); + + sext_ln38_47_fu_3403_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_110_fu_3398_p2),64)); + + sext_ln38_48_fu_3428_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_111_fu_3423_p2),64)); + + sext_ln38_49_fu_3438_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_112_fu_3433_p2),64)); + + sext_ln38_4_fu_2557_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_67_fu_2552_p2),64)); + + sext_ln38_50_fu_3478_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_113_fu_3473_p2),64)); + + sext_ln38_51_fu_3488_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_114_fu_3483_p2),64)); + + sext_ln38_52_fu_3513_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_115_fu_3508_p2),64)); + + sext_ln38_53_fu_3523_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_116_fu_3518_p2),64)); + + sext_ln38_54_fu_3553_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_117_fu_3548_p2),64)); + + sext_ln38_55_fu_3563_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_118_fu_3558_p2),64)); + + sext_ln38_56_fu_3588_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_119_fu_3583_p2),64)); + + sext_ln38_57_fu_3598_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_120_fu_3593_p2),64)); + + sext_ln38_58_fu_3633_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_121_fu_3628_p2),64)); + + sext_ln38_59_fu_3643_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_122_fu_3638_p2),64)); + + sext_ln38_5_fu_2567_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_68_fu_2562_p2),64)); + + sext_ln38_60_fu_3668_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_123_fu_3663_p2),64)); + + sext_ln38_61_fu_3678_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_124_fu_3673_p2),64)); + + sext_ln38_62_fu_3708_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_125_fu_3703_p2),64)); + + sext_ln38_63_fu_3718_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_126_fu_3713_p2),64)); + + sext_ln38_64_fu_2517_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_127_fu_2512_p2),64)); + + sext_ln38_6_fu_2603_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_69_fu_2598_p2),64)); + + sext_ln38_7_fu_2613_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_70_fu_2608_p2),64)); + + sext_ln38_8_fu_2638_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_71_fu_2633_p2),64)); + + sext_ln38_9_fu_2648_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_72_fu_2643_p2),64)); + + sext_ln38_fu_2492_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(j_0_reg_1445),64)); + + tmp_10_fu_1709_p3 <= (ap_const_lv27_0 & or_ln38_8_fu_1704_p2); + tmp_11_fu_1723_p3 <= (ap_const_lv27_0 & or_ln38_9_fu_1718_p2); + tmp_12_fu_1737_p3 <= (ap_const_lv27_0 & or_ln38_10_fu_1732_p2); + tmp_13_fu_1751_p3 <= (ap_const_lv27_0 & or_ln38_11_fu_1746_p2); + tmp_14_fu_1765_p3 <= (ap_const_lv27_0 & or_ln38_12_fu_1760_p2); + tmp_15_fu_1779_p3 <= (ap_const_lv27_0 & or_ln38_13_fu_1774_p2); + tmp_16_fu_1793_p3 <= (ap_const_lv27_0 & or_ln38_14_fu_1788_p2); + tmp_17_fu_1807_p3 <= (ap_const_lv27_0 & or_ln38_15_fu_1802_p2); + tmp_18_fu_1821_p3 <= (ap_const_lv27_0 & or_ln38_16_fu_1816_p2); + tmp_19_fu_1835_p3 <= (ap_const_lv27_0 & or_ln38_17_fu_1830_p2); + tmp_20_fu_1849_p3 <= (ap_const_lv27_0 & or_ln38_18_fu_1844_p2); + tmp_21_fu_1863_p3 <= (ap_const_lv27_0 & or_ln38_19_fu_1858_p2); + tmp_22_fu_1877_p3 <= (ap_const_lv27_0 & or_ln38_20_fu_1872_p2); + tmp_23_fu_1891_p3 <= (ap_const_lv27_0 & or_ln38_21_fu_1886_p2); + tmp_24_fu_1905_p3 <= (ap_const_lv27_0 & or_ln38_22_fu_1900_p2); + tmp_25_fu_1919_p3 <= (ap_const_lv27_0 & or_ln38_23_fu_1914_p2); + tmp_26_fu_1933_p3 <= (ap_const_lv27_0 & or_ln38_24_fu_1928_p2); + tmp_27_fu_1947_p3 <= (ap_const_lv27_0 & or_ln38_25_fu_1942_p2); + tmp_28_fu_1961_p3 <= (ap_const_lv27_0 & or_ln38_26_fu_1956_p2); + tmp_29_fu_1975_p3 <= (ap_const_lv27_0 & or_ln38_27_fu_1970_p2); + tmp_2_fu_1574_p3 <= (i_0_reg_1434 & ap_const_lv6_0); + tmp_30_fu_1989_p3 <= (ap_const_lv27_0 & or_ln38_28_fu_1984_p2); + tmp_31_fu_2003_p3 <= (ap_const_lv27_0 & or_ln38_29_fu_1998_p2); + tmp_32_fu_2017_p3 <= (ap_const_lv27_0 & or_ln38_30_fu_2012_p2); + tmp_33_fu_2031_p3 <= (ap_const_lv27_0 & or_ln38_31_fu_2026_p2); + tmp_34_fu_2045_p3 <= (ap_const_lv27_0 & or_ln38_32_fu_2040_p2); + tmp_35_fu_2059_p3 <= (ap_const_lv27_0 & or_ln38_33_fu_2054_p2); + tmp_36_fu_2073_p3 <= (ap_const_lv27_0 & or_ln38_34_fu_2068_p2); + tmp_37_fu_2087_p3 <= (ap_const_lv27_0 & or_ln38_35_fu_2082_p2); + tmp_38_fu_2101_p3 <= (ap_const_lv27_0 & or_ln38_36_fu_2096_p2); + tmp_39_fu_2115_p3 <= (ap_const_lv27_0 & or_ln38_37_fu_2110_p2); + tmp_3_fu_1597_p3 <= (ap_const_lv27_0 & or_ln38_fu_1591_p2); + tmp_40_fu_2129_p3 <= (ap_const_lv27_0 & or_ln38_38_fu_2124_p2); + tmp_41_fu_2143_p3 <= (ap_const_lv27_0 & or_ln38_39_fu_2138_p2); + tmp_42_fu_2157_p3 <= (ap_const_lv27_0 & or_ln38_40_fu_2152_p2); + tmp_43_fu_2171_p3 <= (ap_const_lv27_0 & or_ln38_41_fu_2166_p2); + tmp_44_fu_2185_p3 <= (ap_const_lv27_0 & or_ln38_42_fu_2180_p2); + tmp_45_fu_2199_p3 <= (ap_const_lv27_0 & or_ln38_43_fu_2194_p2); + tmp_46_fu_2213_p3 <= (ap_const_lv27_0 & or_ln38_44_fu_2208_p2); + tmp_47_fu_2227_p3 <= (ap_const_lv27_0 & or_ln38_45_fu_2222_p2); + tmp_48_fu_2241_p3 <= (ap_const_lv27_0 & or_ln38_46_fu_2236_p2); + tmp_49_fu_2255_p3 <= (ap_const_lv27_0 & or_ln38_47_fu_2250_p2); + tmp_4_fu_1611_p3 <= (ap_const_lv27_0 & or_ln38_1_fu_1606_p2); + tmp_50_fu_2269_p3 <= (ap_const_lv27_0 & or_ln38_48_fu_2264_p2); + tmp_51_fu_2283_p3 <= (ap_const_lv27_0 & or_ln38_49_fu_2278_p2); + tmp_52_fu_2297_p3 <= (ap_const_lv27_0 & or_ln38_50_fu_2292_p2); + tmp_53_fu_2311_p3 <= (ap_const_lv27_0 & or_ln38_51_fu_2306_p2); + tmp_54_fu_2325_p3 <= (ap_const_lv27_0 & or_ln38_52_fu_2320_p2); + tmp_55_fu_2339_p3 <= (ap_const_lv27_0 & or_ln38_53_fu_2334_p2); + tmp_56_fu_2353_p3 <= (ap_const_lv27_0 & or_ln38_54_fu_2348_p2); + tmp_57_fu_2367_p3 <= (ap_const_lv27_0 & or_ln38_55_fu_2362_p2); + tmp_58_fu_2381_p3 <= (ap_const_lv27_0 & or_ln38_56_fu_2376_p2); + tmp_59_fu_2395_p3 <= (ap_const_lv27_0 & or_ln38_57_fu_2390_p2); + tmp_5_fu_1625_p3 <= (ap_const_lv27_0 & or_ln38_2_fu_1620_p2); + tmp_60_fu_2409_p3 <= (ap_const_lv27_0 & or_ln38_58_fu_2404_p2); + tmp_61_fu_2423_p3 <= (ap_const_lv27_0 & or_ln38_59_fu_2418_p2); + tmp_62_fu_2437_p3 <= (ap_const_lv27_0 & or_ln38_60_fu_2432_p2); + tmp_63_fu_2451_p3 <= (ap_const_lv27_0 & or_ln38_61_fu_2446_p2); + tmp_64_fu_2465_p3 <= (ap_const_lv27_0 & or_ln38_62_fu_2460_p2); + tmp_6_fu_1639_p3 <= (ap_const_lv27_0 & or_ln38_3_fu_1634_p2); + tmp_7_fu_1653_p3 <= (ap_const_lv27_0 & or_ln38_4_fu_1648_p2); + tmp_8_fu_1667_p3 <= (ap_const_lv27_0 & or_ln38_5_fu_1662_p2); + tmp_9_fu_1681_p3 <= (ap_const_lv27_0 & or_ln38_6_fu_1676_p2); + tmp_s_fu_1695_p3 <= (ap_const_lv27_0 & or_ln38_7_fu_1690_p2); + trunc_ln38_1_fu_2497_p1 <= j_0_reg_1445(14 - 1 downto 0); + trunc_ln38_fu_1587_p1 <= i_0_reg_1434(8 - 1 downto 0); + zext_ln27_fu_1537_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln27_reg_1410_pp0_iter1_reg),64)); + zext_ln28_fu_1554_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln28_reg_1422_pp1_iter1_reg),64)); + zext_ln31_fu_1559_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(i_0_reg_1434),32)); + zext_ln38_cast_fu_2474_p3 <= (trunc_ln38_reg_3943 & ap_const_lv6_0); + zext_ln38_fu_1582_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(tmp_2_fu_1574_p3),64)); + zext_ln42_fu_3796_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_1456),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_loc.vhd new file mode 100755 index 0000000..5825c9a --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_loc.vhd @@ -0,0 +1,146 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + addr1 : in std_logic_vector(AWIDTH-1 downto 0); + ce1 : in std_logic; + q1 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +signal addr1_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + +memory_access_guard_1: process (addr1) +begin + addr1_tmp <= addr1; +--synthesis translate_off + if (CONV_INTEGER(addr1) > mem_size-1) then + addr1_tmp <= (others => '0'); + else + addr1_tmp <= addr1; + end if; +--synthesis translate_on +end process; + +p_memory_access_1: process (clk) +begin + if (clk'event and clk = '1') then + if (ce1 = '1') then + q1 <= ram(CONV_INTEGER(addr1_tmp)); + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + address1 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce1 : IN STD_LOGIC; + q1 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc is + component mmult_in1_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR; + addr1 : IN STD_LOGIC_VECTOR; + ce1 : IN STD_LOGIC; + q1 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_ram_U : component mmult_in1_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0, + addr1 => address1, + ce1 => ce1, + q1 => q1); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_loc.vhd new file mode 100755 index 0000000..ec49d88 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_loc.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_out_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_out_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_out_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_out_loc is + component mmult_out_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_out_loc_ram_U : component mmult_out_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/xgui/mmult_v4_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/xgui/mmult_v4_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_5/xgui/mmult_v4_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/component.xml new file mode 100755 index 0000000..1769670 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/component.xml @@ -0,0 +1,5578 @@ + + + xilinx.com + hls + mmult + 6.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + f8a406a6 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + b8c40ff5 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 7d93b095 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + e62d17c7 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 826c22ce + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_loc.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_493c5c78 + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v6_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v6_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v6_0/src/Makefile + driver_src + + + drivers/mmult_v6_0/src/xmmult.c + driver_src + + + drivers/mmult_v6_0/src/xmmult.h + driver_src + + + drivers/mmult_v6_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v6_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v6_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v6_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v6_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 24795 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141710 + 2021-05-14T15:10:43Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/doc/ReleaseNotes.txt new file mode 100755 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.mdd new file mode 100755 index 0000000..a8aa677 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v6_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 6.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/drivers/mmult_v6_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult.v new file mode 100755 index 0000000..228e881 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult.v @@ -0,0 +1,8117 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=24795,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=192,HLS_SYN_FF=4685,HLS_SYN_LUT=8017,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 29'd1; +parameter ap_ST_fsm_state2 = 29'd2; +parameter ap_ST_fsm_state3 = 29'd4; +parameter ap_ST_fsm_state4 = 29'd8; +parameter ap_ST_fsm_state5 = 29'd16; +parameter ap_ST_fsm_state6 = 29'd32; +parameter ap_ST_fsm_state7 = 29'd64; +parameter ap_ST_fsm_state8 = 29'd128; +parameter ap_ST_fsm_pp0_stage0 = 29'd256; +parameter ap_ST_fsm_state12 = 29'd512; +parameter ap_ST_fsm_state13 = 29'd1024; +parameter ap_ST_fsm_state14 = 29'd2048; +parameter ap_ST_fsm_state15 = 29'd4096; +parameter ap_ST_fsm_state16 = 29'd8192; +parameter ap_ST_fsm_state17 = 29'd16384; +parameter ap_ST_fsm_state18 = 29'd32768; +parameter ap_ST_fsm_pp1_stage0 = 29'd65536; +parameter ap_ST_fsm_state22 = 29'd131072; +parameter ap_ST_fsm_state23 = 29'd262144; +parameter ap_ST_fsm_state24 = 29'd524288; +parameter ap_ST_fsm_state25 = 29'd1048576; +parameter ap_ST_fsm_state26 = 29'd2097152; +parameter ap_ST_fsm_state27 = 29'd4194304; +parameter ap_ST_fsm_pp2_stage0 = 29'd8388608; +parameter ap_ST_fsm_state31 = 29'd16777216; +parameter ap_ST_fsm_state32 = 29'd33554432; +parameter ap_ST_fsm_state33 = 29'd67108864; +parameter ap_ST_fsm_state34 = 29'd134217728; +parameter ap_ST_fsm_state35 = 29'd268435456; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [28:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state23; +wire [0:0] icmp_ln31_fu_3598_p2; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp2_iter2; +wire ap_block_pp2_stage0; +reg [0:0] icmp_ln42_reg_5750; +reg [0:0] icmp_ln42_reg_5750_pp2_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state35; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_3295; +reg [12:0] phi_ln28_reg_3306; +reg [12:0] phi_ln42_reg_3339; +reg [31:0] dim_read_reg_4492; +reg [29:0] out5_reg_4498; +reg [29:0] in_reg_4503; +reg [29:0] in3_reg_4508; +reg [31:0] out_mem_addr_reg_4519; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_4525; +wire [0:0] icmp_ln27_fu_3408_p2; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +wire [12:0] add_ln27_fu_3414_p2; +reg ap_enable_reg_pp0_iter0; +reg [6:0] lshr_ln_reg_4540; +reg [6:0] lshr_ln_reg_4540_pp0_iter1_reg; +wire [5:0] trunc_ln27_fu_3430_p1; +reg [5:0] trunc_ln27_reg_4545; +reg [5:0] trunc_ln27_reg_4545_pp0_iter1_reg; +reg [31:0] in1_mem_addr_read_reg_4549; +wire [0:0] icmp_ln28_fu_3501_p2; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +wire [12:0] add_ln28_fu_3507_p2; +reg ap_enable_reg_pp1_iter0; +wire [5:0] trunc_ln28_fu_3513_p1; +reg [5:0] trunc_ln28_reg_4626; +reg [5:0] trunc_ln28_reg_4626_pp1_iter1_reg; +reg [5:0] trunc_ln1_reg_4631; +reg [5:0] trunc_ln1_reg_4631_pp1_iter1_reg; +reg [31:0] in2_mem_addr_read_reg_4635; +reg ap_block_state23_io; +wire [30:0] i_fu_3603_p2; +reg [30:0] i_reg_4707; +wire [7:0] trunc_ln38_fu_3677_p1; +reg [7:0] trunc_ln38_reg_4712; +wire [13:0] zext_ln38_1_cast_fu_3681_p3; +reg [13:0] zext_ln38_1_cast_reg_5037; +wire ap_CS_fsm_state24; +wire [31:0] in1_loc_0_q0; +reg signed [31:0] in1_loc_0_load_reg_5042; +wire [31:0] in1_loc_1_q0; +reg signed [31:0] in1_loc_1_load_reg_5047; +wire [31:0] in1_loc_2_q0; +reg signed [31:0] in1_loc_2_load_reg_5052; +wire [31:0] in1_loc_3_q0; +reg signed [31:0] in1_loc_3_load_reg_5057; +wire [31:0] in1_loc_4_q0; +reg signed [31:0] in1_loc_4_load_reg_5062; +wire [31:0] in1_loc_5_q0; +reg signed [31:0] in1_loc_5_load_reg_5067; +wire [31:0] in1_loc_6_q0; +reg signed [31:0] in1_loc_6_load_reg_5072; +wire [31:0] in1_loc_7_q0; +reg signed [31:0] in1_loc_7_load_reg_5077; +wire [31:0] in1_loc_8_q0; +reg signed [31:0] in1_loc_8_load_reg_5082; +wire [31:0] in1_loc_9_q0; +reg signed [31:0] in1_loc_9_load_reg_5087; +wire [31:0] in1_loc_10_q0; +reg signed [31:0] in1_loc_10_load_reg_5092; +wire [31:0] in1_loc_11_q0; +reg signed [31:0] in1_loc_11_load_reg_5097; +wire [31:0] in1_loc_12_q0; +reg signed [31:0] in1_loc_12_load_reg_5102; +wire [31:0] in1_loc_13_q0; +reg signed [31:0] in1_loc_13_load_reg_5107; +wire [31:0] in1_loc_14_q0; +reg signed [31:0] in1_loc_14_load_reg_5112; +wire [31:0] in1_loc_15_q0; +reg signed [31:0] in1_loc_15_load_reg_5117; +wire [31:0] in1_loc_16_q0; +reg signed [31:0] in1_loc_16_load_reg_5122; +wire [31:0] in1_loc_17_q0; +reg signed [31:0] in1_loc_17_load_reg_5127; +wire [31:0] in1_loc_18_q0; +reg signed [31:0] in1_loc_18_load_reg_5132; +wire [31:0] in1_loc_19_q0; +reg signed [31:0] in1_loc_19_load_reg_5137; +wire [31:0] in1_loc_20_q0; +reg signed [31:0] in1_loc_20_load_reg_5142; +wire [31:0] in1_loc_21_q0; +reg signed [31:0] in1_loc_21_load_reg_5147; +wire [31:0] in1_loc_22_q0; +reg signed [31:0] in1_loc_22_load_reg_5152; +wire [31:0] in1_loc_23_q0; +reg signed [31:0] in1_loc_23_load_reg_5157; +wire [31:0] in1_loc_24_q0; +reg signed [31:0] in1_loc_24_load_reg_5162; +wire [31:0] in1_loc_25_q0; +reg signed [31:0] in1_loc_25_load_reg_5167; +wire [31:0] in1_loc_26_q0; +reg signed [31:0] in1_loc_26_load_reg_5172; +wire [31:0] in1_loc_27_q0; +reg signed [31:0] in1_loc_27_load_reg_5177; +wire [31:0] in1_loc_28_q0; +reg signed [31:0] in1_loc_28_load_reg_5182; +wire [31:0] in1_loc_29_q0; +reg signed [31:0] in1_loc_29_load_reg_5187; +wire [31:0] in1_loc_30_q0; +reg signed [31:0] in1_loc_30_load_reg_5192; +wire [31:0] in1_loc_31_q0; +reg signed [31:0] in1_loc_31_load_reg_5197; +wire [31:0] in1_loc_32_q0; +reg signed [31:0] in1_loc_32_load_reg_5202; +wire [31:0] in1_loc_33_q0; +reg signed [31:0] in1_loc_33_load_reg_5207; +wire [31:0] in1_loc_34_q0; +reg signed [31:0] in1_loc_34_load_reg_5212; +wire [31:0] in1_loc_35_q0; +reg signed [31:0] in1_loc_35_load_reg_5217; +wire [31:0] in1_loc_36_q0; +reg signed [31:0] in1_loc_36_load_reg_5222; +wire [31:0] in1_loc_37_q0; +reg signed [31:0] in1_loc_37_load_reg_5227; +wire [31:0] in1_loc_38_q0; +reg signed [31:0] in1_loc_38_load_reg_5232; +wire [31:0] in1_loc_39_q0; +reg signed [31:0] in1_loc_39_load_reg_5237; +wire [31:0] in1_loc_40_q0; +reg signed [31:0] in1_loc_40_load_reg_5242; +wire [31:0] in1_loc_41_q0; +reg signed [31:0] in1_loc_41_load_reg_5247; +wire [31:0] in1_loc_42_q0; +reg signed [31:0] in1_loc_42_load_reg_5252; +wire [31:0] in1_loc_43_q0; +reg signed [31:0] in1_loc_43_load_reg_5257; +wire [31:0] in1_loc_44_q0; +reg signed [31:0] in1_loc_44_load_reg_5262; +wire [31:0] in1_loc_45_q0; +reg signed [31:0] in1_loc_45_load_reg_5267; +wire [31:0] in1_loc_46_q0; +reg signed [31:0] in1_loc_46_load_reg_5272; +wire [31:0] in1_loc_47_q0; +reg signed [31:0] in1_loc_47_load_reg_5277; +wire [31:0] in1_loc_48_q0; +reg signed [31:0] in1_loc_48_load_reg_5282; +wire [31:0] in1_loc_49_q0; +reg signed [31:0] in1_loc_49_load_reg_5287; +wire [31:0] in1_loc_50_q0; +reg signed [31:0] in1_loc_50_load_reg_5292; +wire [31:0] in1_loc_51_q0; +reg signed [31:0] in1_loc_51_load_reg_5297; +wire [31:0] in1_loc_52_q0; +reg signed [31:0] in1_loc_52_load_reg_5302; +wire [31:0] in1_loc_53_q0; +reg signed [31:0] in1_loc_53_load_reg_5307; +wire [31:0] in1_loc_54_q0; +reg signed [31:0] in1_loc_54_load_reg_5312; +wire [31:0] in1_loc_55_q0; +reg signed [31:0] in1_loc_55_load_reg_5317; +wire [31:0] in1_loc_56_q0; +reg signed [31:0] in1_loc_56_load_reg_5322; +wire [31:0] in1_loc_57_q0; +reg signed [31:0] in1_loc_57_load_reg_5327; +wire [31:0] in1_loc_58_q0; +reg signed [31:0] in1_loc_58_load_reg_5332; +wire [31:0] in1_loc_59_q0; +reg signed [31:0] in1_loc_59_load_reg_5337; +wire [31:0] in1_loc_60_q0; +reg signed [31:0] in1_loc_60_load_reg_5342; +wire [31:0] in1_loc_61_q0; +reg signed [31:0] in1_loc_61_load_reg_5347; +wire [31:0] in1_loc_62_q0; +reg signed [31:0] in1_loc_62_load_reg_5352; +wire [31:0] in1_loc_63_q0; +reg signed [31:0] in1_loc_63_load_reg_5357; +wire [31:0] j_fu_3693_p2; +reg [31:0] j_reg_5365; +wire ap_CS_fsm_state25; +reg [11:0] out_loc_addr_reg_5370; +wire [0:0] icmp_ln33_fu_3688_p2; +wire [31:0] add_ln38_6_fu_4137_p2; +reg [31:0] add_ln38_6_reg_5695; +wire ap_CS_fsm_state26; +wire [31:0] add_ln38_9_fu_4155_p2; +reg [31:0] add_ln38_9_reg_5700; +wire [31:0] add_ln38_12_fu_4173_p2; +reg [31:0] add_ln38_12_reg_5705; +wire [31:0] add_ln38_21_fu_4215_p2; +reg [31:0] add_ln38_21_reg_5710; +wire [31:0] add_ln38_28_fu_4257_p2; +reg [31:0] add_ln38_28_reg_5715; +wire [31:0] add_ln38_37_fu_4299_p2; +reg [31:0] add_ln38_37_reg_5720; +wire [31:0] add_ln38_40_fu_4317_p2; +reg [31:0] add_ln38_40_reg_5725; +wire [31:0] add_ln38_43_fu_4335_p2; +reg [31:0] add_ln38_43_reg_5730; +wire [31:0] add_ln38_52_fu_4377_p2; +reg [31:0] add_ln38_52_reg_5735; +wire [31:0] add_ln38_55_fu_4395_p2; +reg [31:0] add_ln38_55_reg_5740; +wire [31:0] add_ln38_59_fu_4419_p2; +reg [31:0] add_ln38_59_reg_5745; +wire [0:0] icmp_ln42_fu_4475_p2; +wire ap_CS_fsm_pp2_stage0; +wire ap_block_state28_pp2_stage0_iter0; +wire ap_block_state29_pp2_stage0_iter1; +wire ap_block_state30_pp2_stage0_iter2; +reg ap_block_state30_io; +reg ap_block_pp2_stage0_11001; +wire [12:0] add_ln42_fu_4481_p2; +reg ap_enable_reg_pp2_iter0; +wire [31:0] out_loc_q0; +reg [31:0] out_loc_load_reg_5764; +reg ap_enable_reg_pp2_iter1; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +reg ap_block_pp2_stage0_subdone; +reg ap_condition_pp2_exit_iter0_state28; +reg [5:0] in1_loc_0_address0; +reg in1_loc_0_ce0; +reg in1_loc_0_we0; +reg [5:0] in1_loc_1_address0; +reg in1_loc_1_ce0; +reg in1_loc_1_we0; +reg [5:0] in1_loc_2_address0; +reg in1_loc_2_ce0; +reg in1_loc_2_we0; +reg [5:0] in1_loc_3_address0; +reg in1_loc_3_ce0; +reg in1_loc_3_we0; +reg [5:0] in1_loc_4_address0; +reg in1_loc_4_ce0; +reg in1_loc_4_we0; +reg [5:0] in1_loc_5_address0; +reg in1_loc_5_ce0; +reg in1_loc_5_we0; +reg [5:0] in1_loc_6_address0; +reg in1_loc_6_ce0; +reg in1_loc_6_we0; +reg [5:0] in1_loc_7_address0; +reg in1_loc_7_ce0; +reg in1_loc_7_we0; +reg [5:0] in1_loc_8_address0; +reg in1_loc_8_ce0; +reg in1_loc_8_we0; +reg [5:0] in1_loc_9_address0; +reg in1_loc_9_ce0; +reg in1_loc_9_we0; +reg [5:0] in1_loc_10_address0; +reg in1_loc_10_ce0; +reg in1_loc_10_we0; +reg [5:0] in1_loc_11_address0; +reg in1_loc_11_ce0; +reg in1_loc_11_we0; +reg [5:0] in1_loc_12_address0; +reg in1_loc_12_ce0; +reg in1_loc_12_we0; +reg [5:0] in1_loc_13_address0; +reg in1_loc_13_ce0; +reg in1_loc_13_we0; +reg [5:0] in1_loc_14_address0; +reg in1_loc_14_ce0; +reg in1_loc_14_we0; +reg [5:0] in1_loc_15_address0; +reg in1_loc_15_ce0; +reg in1_loc_15_we0; +reg [5:0] in1_loc_16_address0; +reg in1_loc_16_ce0; +reg in1_loc_16_we0; +reg [5:0] in1_loc_17_address0; +reg in1_loc_17_ce0; +reg in1_loc_17_we0; +reg [5:0] in1_loc_18_address0; +reg in1_loc_18_ce0; +reg in1_loc_18_we0; +reg [5:0] in1_loc_19_address0; +reg in1_loc_19_ce0; +reg in1_loc_19_we0; +reg [5:0] in1_loc_20_address0; +reg in1_loc_20_ce0; +reg in1_loc_20_we0; +reg [5:0] in1_loc_21_address0; +reg in1_loc_21_ce0; +reg in1_loc_21_we0; +reg [5:0] in1_loc_22_address0; +reg in1_loc_22_ce0; +reg in1_loc_22_we0; +reg [5:0] in1_loc_23_address0; +reg in1_loc_23_ce0; +reg in1_loc_23_we0; +reg [5:0] in1_loc_24_address0; +reg in1_loc_24_ce0; +reg in1_loc_24_we0; +reg [5:0] in1_loc_25_address0; +reg in1_loc_25_ce0; +reg in1_loc_25_we0; +reg [5:0] in1_loc_26_address0; +reg in1_loc_26_ce0; +reg in1_loc_26_we0; +reg [5:0] in1_loc_27_address0; +reg in1_loc_27_ce0; +reg in1_loc_27_we0; +reg [5:0] in1_loc_28_address0; +reg in1_loc_28_ce0; +reg in1_loc_28_we0; +reg [5:0] in1_loc_29_address0; +reg in1_loc_29_ce0; +reg in1_loc_29_we0; +reg [5:0] in1_loc_30_address0; +reg in1_loc_30_ce0; +reg in1_loc_30_we0; +reg [5:0] in1_loc_31_address0; +reg in1_loc_31_ce0; +reg in1_loc_31_we0; +reg [5:0] in1_loc_32_address0; +reg in1_loc_32_ce0; +reg in1_loc_32_we0; +reg [5:0] in1_loc_33_address0; +reg in1_loc_33_ce0; +reg in1_loc_33_we0; +reg [5:0] in1_loc_34_address0; +reg in1_loc_34_ce0; +reg in1_loc_34_we0; +reg [5:0] in1_loc_35_address0; +reg in1_loc_35_ce0; +reg in1_loc_35_we0; +reg [5:0] in1_loc_36_address0; +reg in1_loc_36_ce0; +reg in1_loc_36_we0; +reg [5:0] in1_loc_37_address0; +reg in1_loc_37_ce0; +reg in1_loc_37_we0; +reg [5:0] in1_loc_38_address0; +reg in1_loc_38_ce0; +reg in1_loc_38_we0; +reg [5:0] in1_loc_39_address0; +reg in1_loc_39_ce0; +reg in1_loc_39_we0; +reg [5:0] in1_loc_40_address0; +reg in1_loc_40_ce0; +reg in1_loc_40_we0; +reg [5:0] in1_loc_41_address0; +reg in1_loc_41_ce0; +reg in1_loc_41_we0; +reg [5:0] in1_loc_42_address0; +reg in1_loc_42_ce0; +reg in1_loc_42_we0; +reg [5:0] in1_loc_43_address0; +reg in1_loc_43_ce0; +reg in1_loc_43_we0; +reg [5:0] in1_loc_44_address0; +reg in1_loc_44_ce0; +reg in1_loc_44_we0; +reg [5:0] in1_loc_45_address0; +reg in1_loc_45_ce0; +reg in1_loc_45_we0; +reg [5:0] in1_loc_46_address0; +reg in1_loc_46_ce0; +reg in1_loc_46_we0; +reg [5:0] in1_loc_47_address0; +reg in1_loc_47_ce0; +reg in1_loc_47_we0; +reg [5:0] in1_loc_48_address0; +reg in1_loc_48_ce0; +reg in1_loc_48_we0; +reg [5:0] in1_loc_49_address0; +reg in1_loc_49_ce0; +reg in1_loc_49_we0; +reg [5:0] in1_loc_50_address0; +reg in1_loc_50_ce0; +reg in1_loc_50_we0; +reg [5:0] in1_loc_51_address0; +reg in1_loc_51_ce0; +reg in1_loc_51_we0; +reg [5:0] in1_loc_52_address0; +reg in1_loc_52_ce0; +reg in1_loc_52_we0; +reg [5:0] in1_loc_53_address0; +reg in1_loc_53_ce0; +reg in1_loc_53_we0; +reg [5:0] in1_loc_54_address0; +reg in1_loc_54_ce0; +reg in1_loc_54_we0; +reg [5:0] in1_loc_55_address0; +reg in1_loc_55_ce0; +reg in1_loc_55_we0; +reg [5:0] in1_loc_56_address0; +reg in1_loc_56_ce0; +reg in1_loc_56_we0; +reg [5:0] in1_loc_57_address0; +reg in1_loc_57_ce0; +reg in1_loc_57_we0; +reg [5:0] in1_loc_58_address0; +reg in1_loc_58_ce0; +reg in1_loc_58_we0; +reg [5:0] in1_loc_59_address0; +reg in1_loc_59_ce0; +reg in1_loc_59_we0; +reg [5:0] in1_loc_60_address0; +reg in1_loc_60_ce0; +reg in1_loc_60_we0; +reg [5:0] in1_loc_61_address0; +reg in1_loc_61_ce0; +reg in1_loc_61_we0; +reg [5:0] in1_loc_62_address0; +reg in1_loc_62_ce0; +reg in1_loc_62_we0; +reg [5:0] in1_loc_63_address0; +reg in1_loc_63_ce0; +reg in1_loc_63_we0; +reg [5:0] in2_loc_0_address0; +reg in2_loc_0_ce0; +reg in2_loc_0_we0; +wire [31:0] in2_loc_0_q0; +reg [5:0] in2_loc_1_address0; +reg in2_loc_1_ce0; +reg in2_loc_1_we0; +wire [31:0] in2_loc_1_q0; +reg [5:0] in2_loc_2_address0; +reg in2_loc_2_ce0; +reg in2_loc_2_we0; +wire [31:0] in2_loc_2_q0; +reg [5:0] in2_loc_3_address0; +reg in2_loc_3_ce0; +reg in2_loc_3_we0; +wire [31:0] in2_loc_3_q0; +reg [5:0] in2_loc_4_address0; +reg in2_loc_4_ce0; +reg in2_loc_4_we0; +wire [31:0] in2_loc_4_q0; +reg [5:0] in2_loc_5_address0; +reg in2_loc_5_ce0; +reg in2_loc_5_we0; +wire [31:0] in2_loc_5_q0; +reg [5:0] in2_loc_6_address0; +reg in2_loc_6_ce0; +reg in2_loc_6_we0; +wire [31:0] in2_loc_6_q0; +reg [5:0] in2_loc_7_address0; +reg in2_loc_7_ce0; +reg in2_loc_7_we0; +wire [31:0] in2_loc_7_q0; +reg [5:0] in2_loc_8_address0; +reg in2_loc_8_ce0; +reg in2_loc_8_we0; +wire [31:0] in2_loc_8_q0; +reg [5:0] in2_loc_9_address0; +reg in2_loc_9_ce0; +reg in2_loc_9_we0; +wire [31:0] in2_loc_9_q0; +reg [5:0] in2_loc_10_address0; +reg in2_loc_10_ce0; +reg in2_loc_10_we0; +wire [31:0] in2_loc_10_q0; +reg [5:0] in2_loc_11_address0; +reg in2_loc_11_ce0; +reg in2_loc_11_we0; +wire [31:0] in2_loc_11_q0; +reg [5:0] in2_loc_12_address0; +reg in2_loc_12_ce0; +reg in2_loc_12_we0; +wire [31:0] in2_loc_12_q0; +reg [5:0] in2_loc_13_address0; +reg in2_loc_13_ce0; +reg in2_loc_13_we0; +wire [31:0] in2_loc_13_q0; +reg [5:0] in2_loc_14_address0; +reg in2_loc_14_ce0; +reg in2_loc_14_we0; +wire [31:0] in2_loc_14_q0; +reg [5:0] in2_loc_15_address0; +reg in2_loc_15_ce0; +reg in2_loc_15_we0; +wire [31:0] in2_loc_15_q0; +reg [5:0] in2_loc_16_address0; +reg in2_loc_16_ce0; +reg in2_loc_16_we0; +wire [31:0] in2_loc_16_q0; +reg [5:0] in2_loc_17_address0; +reg in2_loc_17_ce0; +reg in2_loc_17_we0; +wire [31:0] in2_loc_17_q0; +reg [5:0] in2_loc_18_address0; +reg in2_loc_18_ce0; +reg in2_loc_18_we0; +wire [31:0] in2_loc_18_q0; +reg [5:0] in2_loc_19_address0; +reg in2_loc_19_ce0; +reg in2_loc_19_we0; +wire [31:0] in2_loc_19_q0; +reg [5:0] in2_loc_20_address0; +reg in2_loc_20_ce0; +reg in2_loc_20_we0; +wire [31:0] in2_loc_20_q0; +reg [5:0] in2_loc_21_address0; +reg in2_loc_21_ce0; +reg in2_loc_21_we0; +wire [31:0] in2_loc_21_q0; +reg [5:0] in2_loc_22_address0; +reg in2_loc_22_ce0; +reg in2_loc_22_we0; +wire [31:0] in2_loc_22_q0; +reg [5:0] in2_loc_23_address0; +reg in2_loc_23_ce0; +reg in2_loc_23_we0; +wire [31:0] in2_loc_23_q0; +reg [5:0] in2_loc_24_address0; +reg in2_loc_24_ce0; +reg in2_loc_24_we0; +wire [31:0] in2_loc_24_q0; +reg [5:0] in2_loc_25_address0; +reg in2_loc_25_ce0; +reg in2_loc_25_we0; +wire [31:0] in2_loc_25_q0; +reg [5:0] in2_loc_26_address0; +reg in2_loc_26_ce0; +reg in2_loc_26_we0; +wire [31:0] in2_loc_26_q0; +reg [5:0] in2_loc_27_address0; +reg in2_loc_27_ce0; +reg in2_loc_27_we0; +wire [31:0] in2_loc_27_q0; +reg [5:0] in2_loc_28_address0; +reg in2_loc_28_ce0; +reg in2_loc_28_we0; +wire [31:0] in2_loc_28_q0; +reg [5:0] in2_loc_29_address0; +reg in2_loc_29_ce0; +reg in2_loc_29_we0; +wire [31:0] in2_loc_29_q0; +reg [5:0] in2_loc_30_address0; +reg in2_loc_30_ce0; +reg in2_loc_30_we0; +wire [31:0] in2_loc_30_q0; +reg [5:0] in2_loc_31_address0; +reg in2_loc_31_ce0; +reg in2_loc_31_we0; +wire [31:0] in2_loc_31_q0; +reg [5:0] in2_loc_32_address0; +reg in2_loc_32_ce0; +reg in2_loc_32_we0; +wire [31:0] in2_loc_32_q0; +reg [5:0] in2_loc_33_address0; +reg in2_loc_33_ce0; +reg in2_loc_33_we0; +wire [31:0] in2_loc_33_q0; +reg [5:0] in2_loc_34_address0; +reg in2_loc_34_ce0; +reg in2_loc_34_we0; +wire [31:0] in2_loc_34_q0; +reg [5:0] in2_loc_35_address0; +reg in2_loc_35_ce0; +reg in2_loc_35_we0; +wire [31:0] in2_loc_35_q0; +reg [5:0] in2_loc_36_address0; +reg in2_loc_36_ce0; +reg in2_loc_36_we0; +wire [31:0] in2_loc_36_q0; +reg [5:0] in2_loc_37_address0; +reg in2_loc_37_ce0; +reg in2_loc_37_we0; +wire [31:0] in2_loc_37_q0; +reg [5:0] in2_loc_38_address0; +reg in2_loc_38_ce0; +reg in2_loc_38_we0; +wire [31:0] in2_loc_38_q0; +reg [5:0] in2_loc_39_address0; +reg in2_loc_39_ce0; +reg in2_loc_39_we0; +wire [31:0] in2_loc_39_q0; +reg [5:0] in2_loc_40_address0; +reg in2_loc_40_ce0; +reg in2_loc_40_we0; +wire [31:0] in2_loc_40_q0; +reg [5:0] in2_loc_41_address0; +reg in2_loc_41_ce0; +reg in2_loc_41_we0; +wire [31:0] in2_loc_41_q0; +reg [5:0] in2_loc_42_address0; +reg in2_loc_42_ce0; +reg in2_loc_42_we0; +wire [31:0] in2_loc_42_q0; +reg [5:0] in2_loc_43_address0; +reg in2_loc_43_ce0; +reg in2_loc_43_we0; +wire [31:0] in2_loc_43_q0; +reg [5:0] in2_loc_44_address0; +reg in2_loc_44_ce0; +reg in2_loc_44_we0; +wire [31:0] in2_loc_44_q0; +reg [5:0] in2_loc_45_address0; +reg in2_loc_45_ce0; +reg in2_loc_45_we0; +wire [31:0] in2_loc_45_q0; +reg [5:0] in2_loc_46_address0; +reg in2_loc_46_ce0; +reg in2_loc_46_we0; +wire [31:0] in2_loc_46_q0; +reg [5:0] in2_loc_47_address0; +reg in2_loc_47_ce0; +reg in2_loc_47_we0; +wire [31:0] in2_loc_47_q0; +reg [5:0] in2_loc_48_address0; +reg in2_loc_48_ce0; +reg in2_loc_48_we0; +wire [31:0] in2_loc_48_q0; +reg [5:0] in2_loc_49_address0; +reg in2_loc_49_ce0; +reg in2_loc_49_we0; +wire [31:0] in2_loc_49_q0; +reg [5:0] in2_loc_50_address0; +reg in2_loc_50_ce0; +reg in2_loc_50_we0; +wire [31:0] in2_loc_50_q0; +reg [5:0] in2_loc_51_address0; +reg in2_loc_51_ce0; +reg in2_loc_51_we0; +wire [31:0] in2_loc_51_q0; +reg [5:0] in2_loc_52_address0; +reg in2_loc_52_ce0; +reg in2_loc_52_we0; +wire [31:0] in2_loc_52_q0; +reg [5:0] in2_loc_53_address0; +reg in2_loc_53_ce0; +reg in2_loc_53_we0; +wire [31:0] in2_loc_53_q0; +reg [5:0] in2_loc_54_address0; +reg in2_loc_54_ce0; +reg in2_loc_54_we0; +wire [31:0] in2_loc_54_q0; +reg [5:0] in2_loc_55_address0; +reg in2_loc_55_ce0; +reg in2_loc_55_we0; +wire [31:0] in2_loc_55_q0; +reg [5:0] in2_loc_56_address0; +reg in2_loc_56_ce0; +reg in2_loc_56_we0; +wire [31:0] in2_loc_56_q0; +reg [5:0] in2_loc_57_address0; +reg in2_loc_57_ce0; +reg in2_loc_57_we0; +wire [31:0] in2_loc_57_q0; +reg [5:0] in2_loc_58_address0; +reg in2_loc_58_ce0; +reg in2_loc_58_we0; +wire [31:0] in2_loc_58_q0; +reg [5:0] in2_loc_59_address0; +reg in2_loc_59_ce0; +reg in2_loc_59_we0; +wire [31:0] in2_loc_59_q0; +reg [5:0] in2_loc_60_address0; +reg in2_loc_60_ce0; +reg in2_loc_60_we0; +wire [31:0] in2_loc_60_q0; +reg [5:0] in2_loc_61_address0; +reg in2_loc_61_ce0; +reg in2_loc_61_we0; +wire [31:0] in2_loc_61_q0; +reg [5:0] in2_loc_62_address0; +reg in2_loc_62_ce0; +reg in2_loc_62_we0; +wire [31:0] in2_loc_62_q0; +reg [5:0] in2_loc_63_address0; +reg in2_loc_63_ce0; +reg in2_loc_63_we0; +wire [31:0] in2_loc_63_q0; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_we0; +wire [31:0] out_loc_d0; +reg [30:0] i_0_reg_3317; +wire ap_CS_fsm_state22; +reg signed [31:0] j_0_reg_3328; +wire ap_CS_fsm_state27; +wire [63:0] zext_ln27_fu_3434_p1; +wire [63:0] zext_ln28_fu_3527_p1; +wire [63:0] zext_ln38_fu_3609_p1; +wire signed [63:0] sext_ln38_1_fu_3776_p1; +wire signed [63:0] sext_ln38_fu_3699_p1; +wire [63:0] zext_ln42_fu_4487_p1; +wire [63:0] empty_8_fu_3380_p1; +wire [63:0] empty_fu_3390_p1; +wire [63:0] empty_7_fu_3399_p1; +wire ap_block_pp2_stage0_01001; +wire [31:0] zext_ln31_fu_3594_p1; +wire [13:0] trunc_ln38_1_fu_3767_p1; +wire [13:0] add_ln38_64_fu_3771_p2; +wire signed [31:0] mul_ln38_fu_3781_p0; +wire signed [31:0] mul_ln38_1_fu_3786_p0; +wire signed [31:0] mul_ln38_2_fu_3791_p0; +wire signed [31:0] mul_ln38_3_fu_3796_p0; +wire signed [31:0] mul_ln38_4_fu_3801_p0; +wire signed [31:0] mul_ln38_5_fu_3806_p0; +wire signed [31:0] mul_ln38_6_fu_3811_p0; +wire signed [31:0] mul_ln38_7_fu_3816_p0; +wire signed [31:0] mul_ln38_8_fu_3821_p0; +wire signed [31:0] mul_ln38_9_fu_3826_p0; +wire signed [31:0] mul_ln38_10_fu_3831_p0; +wire signed [31:0] mul_ln38_11_fu_3836_p0; +wire signed [31:0] mul_ln38_12_fu_3841_p0; +wire signed [31:0] mul_ln38_13_fu_3846_p0; +wire signed [31:0] mul_ln38_14_fu_3851_p0; +wire signed [31:0] mul_ln38_15_fu_3856_p0; +wire signed [31:0] mul_ln38_16_fu_3861_p0; +wire signed [31:0] mul_ln38_17_fu_3866_p0; +wire signed [31:0] mul_ln38_18_fu_3871_p0; +wire signed [31:0] mul_ln38_19_fu_3876_p0; +wire signed [31:0] mul_ln38_20_fu_3881_p0; +wire signed [31:0] mul_ln38_21_fu_3886_p0; +wire signed [31:0] mul_ln38_22_fu_3891_p0; +wire signed [31:0] mul_ln38_23_fu_3896_p0; +wire signed [31:0] mul_ln38_24_fu_3901_p0; +wire signed [31:0] mul_ln38_25_fu_3906_p0; +wire signed [31:0] mul_ln38_26_fu_3911_p0; +wire signed [31:0] mul_ln38_27_fu_3916_p0; +wire signed [31:0] mul_ln38_28_fu_3921_p0; +wire signed [31:0] mul_ln38_29_fu_3926_p0; +wire signed [31:0] mul_ln38_30_fu_3931_p0; +wire signed [31:0] mul_ln38_31_fu_3936_p0; +wire signed [31:0] mul_ln38_32_fu_3941_p0; +wire signed [31:0] mul_ln38_33_fu_3946_p0; +wire signed [31:0] mul_ln38_34_fu_3951_p0; +wire signed [31:0] mul_ln38_35_fu_3956_p0; +wire signed [31:0] mul_ln38_36_fu_3961_p0; +wire signed [31:0] mul_ln38_37_fu_3966_p0; +wire signed [31:0] mul_ln38_38_fu_3971_p0; +wire signed [31:0] mul_ln38_39_fu_3976_p0; +wire signed [31:0] mul_ln38_40_fu_3981_p0; +wire signed [31:0] mul_ln38_41_fu_3986_p0; +wire signed [31:0] mul_ln38_42_fu_3991_p0; +wire signed [31:0] mul_ln38_43_fu_3996_p0; +wire signed [31:0] mul_ln38_44_fu_4001_p0; +wire signed [31:0] mul_ln38_45_fu_4006_p0; +wire signed [31:0] mul_ln38_46_fu_4011_p0; +wire signed [31:0] mul_ln38_47_fu_4016_p0; +wire signed [31:0] mul_ln38_48_fu_4021_p0; +wire signed [31:0] mul_ln38_49_fu_4026_p0; +wire signed [31:0] mul_ln38_50_fu_4031_p0; +wire signed [31:0] mul_ln38_51_fu_4036_p0; +wire signed [31:0] mul_ln38_52_fu_4041_p0; +wire signed [31:0] mul_ln38_53_fu_4046_p0; +wire signed [31:0] mul_ln38_54_fu_4051_p0; +wire signed [31:0] mul_ln38_55_fu_4056_p0; +wire signed [31:0] mul_ln38_56_fu_4061_p0; +wire signed [31:0] mul_ln38_57_fu_4066_p0; +wire signed [31:0] mul_ln38_58_fu_4071_p0; +wire signed [31:0] mul_ln38_59_fu_4076_p0; +wire signed [31:0] mul_ln38_60_fu_4081_p0; +wire signed [31:0] mul_ln38_61_fu_4086_p0; +wire signed [31:0] mul_ln38_62_fu_4091_p0; +wire signed [31:0] mul_ln38_63_fu_4096_p0; +wire [31:0] mul_ln38_fu_3781_p2; +wire [31:0] mul_ln38_2_fu_3791_p2; +wire [31:0] mul_ln38_1_fu_3786_p2; +wire [31:0] add_ln38_fu_4101_p2; +wire [31:0] add_ln38_1_fu_4107_p2; +wire [31:0] mul_ln38_4_fu_3801_p2; +wire [31:0] mul_ln38_3_fu_3796_p2; +wire [31:0] mul_ln38_6_fu_3811_p2; +wire [31:0] mul_ln38_5_fu_3806_p2; +wire [31:0] add_ln38_3_fu_4119_p2; +wire [31:0] add_ln38_4_fu_4125_p2; +wire [31:0] add_ln38_2_fu_4113_p2; +wire [31:0] add_ln38_5_fu_4131_p2; +wire [31:0] mul_ln38_8_fu_3821_p2; +wire [31:0] mul_ln38_7_fu_3816_p2; +wire [31:0] mul_ln38_10_fu_3831_p2; +wire [31:0] mul_ln38_9_fu_3826_p2; +wire [31:0] add_ln38_7_fu_4143_p2; +wire [31:0] add_ln38_8_fu_4149_p2; +wire [31:0] mul_ln38_12_fu_3841_p2; +wire [31:0] mul_ln38_11_fu_3836_p2; +wire [31:0] mul_ln38_14_fu_3851_p2; +wire [31:0] mul_ln38_13_fu_3846_p2; +wire [31:0] add_ln38_10_fu_4161_p2; +wire [31:0] add_ln38_11_fu_4167_p2; +wire [31:0] mul_ln38_16_fu_3861_p2; +wire [31:0] mul_ln38_15_fu_3856_p2; +wire [31:0] mul_ln38_18_fu_3871_p2; +wire [31:0] mul_ln38_17_fu_3866_p2; +wire [31:0] add_ln38_15_fu_4179_p2; +wire [31:0] add_ln38_16_fu_4185_p2; +wire [31:0] mul_ln38_20_fu_3881_p2; +wire [31:0] mul_ln38_19_fu_3876_p2; +wire [31:0] mul_ln38_22_fu_3891_p2; +wire [31:0] mul_ln38_21_fu_3886_p2; +wire [31:0] add_ln38_18_fu_4197_p2; +wire [31:0] add_ln38_19_fu_4203_p2; +wire [31:0] add_ln38_17_fu_4191_p2; +wire [31:0] add_ln38_20_fu_4209_p2; +wire [31:0] mul_ln38_24_fu_3901_p2; +wire [31:0] mul_ln38_23_fu_3896_p2; +wire [31:0] mul_ln38_26_fu_3911_p2; +wire [31:0] mul_ln38_25_fu_3906_p2; +wire [31:0] add_ln38_22_fu_4221_p2; +wire [31:0] add_ln38_23_fu_4227_p2; +wire [31:0] mul_ln38_28_fu_3921_p2; +wire [31:0] mul_ln38_27_fu_3916_p2; +wire [31:0] mul_ln38_30_fu_3931_p2; +wire [31:0] mul_ln38_29_fu_3926_p2; +wire [31:0] add_ln38_25_fu_4239_p2; +wire [31:0] add_ln38_26_fu_4245_p2; +wire [31:0] add_ln38_24_fu_4233_p2; +wire [31:0] add_ln38_27_fu_4251_p2; +wire [31:0] mul_ln38_32_fu_3941_p2; +wire [31:0] mul_ln38_31_fu_3936_p2; +wire [31:0] mul_ln38_34_fu_3951_p2; +wire [31:0] mul_ln38_33_fu_3946_p2; +wire [31:0] add_ln38_31_fu_4263_p2; +wire [31:0] add_ln38_32_fu_4269_p2; +wire [31:0] mul_ln38_36_fu_3961_p2; +wire [31:0] mul_ln38_35_fu_3956_p2; +wire [31:0] mul_ln38_38_fu_3971_p2; +wire [31:0] mul_ln38_37_fu_3966_p2; +wire [31:0] add_ln38_34_fu_4281_p2; +wire [31:0] add_ln38_35_fu_4287_p2; +wire [31:0] add_ln38_33_fu_4275_p2; +wire [31:0] add_ln38_36_fu_4293_p2; +wire [31:0] mul_ln38_40_fu_3981_p2; +wire [31:0] mul_ln38_39_fu_3976_p2; +wire [31:0] mul_ln38_42_fu_3991_p2; +wire [31:0] mul_ln38_41_fu_3986_p2; +wire [31:0] add_ln38_38_fu_4305_p2; +wire [31:0] add_ln38_39_fu_4311_p2; +wire [31:0] mul_ln38_44_fu_4001_p2; +wire [31:0] mul_ln38_43_fu_3996_p2; +wire [31:0] mul_ln38_46_fu_4011_p2; +wire [31:0] mul_ln38_45_fu_4006_p2; +wire [31:0] add_ln38_41_fu_4323_p2; +wire [31:0] add_ln38_42_fu_4329_p2; +wire [31:0] mul_ln38_48_fu_4021_p2; +wire [31:0] mul_ln38_47_fu_4016_p2; +wire [31:0] mul_ln38_50_fu_4031_p2; +wire [31:0] mul_ln38_49_fu_4026_p2; +wire [31:0] add_ln38_46_fu_4341_p2; +wire [31:0] add_ln38_47_fu_4347_p2; +wire [31:0] mul_ln38_52_fu_4041_p2; +wire [31:0] mul_ln38_51_fu_4036_p2; +wire [31:0] mul_ln38_54_fu_4051_p2; +wire [31:0] mul_ln38_53_fu_4046_p2; +wire [31:0] add_ln38_49_fu_4359_p2; +wire [31:0] add_ln38_50_fu_4365_p2; +wire [31:0] add_ln38_48_fu_4353_p2; +wire [31:0] add_ln38_51_fu_4371_p2; +wire [31:0] mul_ln38_56_fu_4061_p2; +wire [31:0] mul_ln38_55_fu_4056_p2; +wire [31:0] mul_ln38_58_fu_4071_p2; +wire [31:0] mul_ln38_57_fu_4066_p2; +wire [31:0] add_ln38_53_fu_4383_p2; +wire [31:0] add_ln38_54_fu_4389_p2; +wire [31:0] mul_ln38_60_fu_4081_p2; +wire [31:0] mul_ln38_59_fu_4076_p2; +wire [31:0] mul_ln38_63_fu_4096_p2; +wire [31:0] mul_ln38_62_fu_4091_p2; +wire [31:0] mul_ln38_61_fu_4086_p2; +wire [31:0] add_ln38_57_fu_4407_p2; +wire [31:0] add_ln38_56_fu_4401_p2; +wire [31:0] add_ln38_58_fu_4413_p2; +wire [31:0] add_ln38_13_fu_4425_p2; +wire [31:0] add_ln38_14_fu_4429_p2; +wire [31:0] add_ln38_29_fu_4434_p2; +wire [31:0] add_ln38_44_fu_4444_p2; +wire [31:0] add_ln38_60_fu_4453_p2; +wire [31:0] add_ln38_45_fu_4448_p2; +wire [31:0] add_ln38_61_fu_4457_p2; +wire [31:0] add_ln38_30_fu_4438_p2; +wire [31:0] add_ln38_62_fu_4462_p2; +reg [28:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp2; +wire ap_enable_pp2; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 29'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp2_iter2 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_4525), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_4519), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(out_loc_load_reg_5764), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_0_address0), + .ce0(in1_loc_0_ce0), + .we0(in1_loc_0_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_1_address0), + .ce0(in1_loc_1_ce0), + .we0(in1_loc_1_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_2_address0), + .ce0(in1_loc_2_ce0), + .we0(in1_loc_2_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_3_address0), + .ce0(in1_loc_3_ce0), + .we0(in1_loc_3_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_4_address0), + .ce0(in1_loc_4_ce0), + .we0(in1_loc_4_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_5_address0), + .ce0(in1_loc_5_ce0), + .we0(in1_loc_5_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_6_address0), + .ce0(in1_loc_6_ce0), + .we0(in1_loc_6_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_7_address0), + .ce0(in1_loc_7_ce0), + .we0(in1_loc_7_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_8_address0), + .ce0(in1_loc_8_ce0), + .we0(in1_loc_8_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_9_address0), + .ce0(in1_loc_9_ce0), + .we0(in1_loc_9_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_10_address0), + .ce0(in1_loc_10_ce0), + .we0(in1_loc_10_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_11_address0), + .ce0(in1_loc_11_ce0), + .we0(in1_loc_11_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_12_address0), + .ce0(in1_loc_12_ce0), + .we0(in1_loc_12_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_13_address0), + .ce0(in1_loc_13_ce0), + .we0(in1_loc_13_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_14_address0), + .ce0(in1_loc_14_ce0), + .we0(in1_loc_14_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_15_address0), + .ce0(in1_loc_15_ce0), + .we0(in1_loc_15_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_16_address0), + .ce0(in1_loc_16_ce0), + .we0(in1_loc_16_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_17_address0), + .ce0(in1_loc_17_ce0), + .we0(in1_loc_17_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_18_address0), + .ce0(in1_loc_18_ce0), + .we0(in1_loc_18_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_19_address0), + .ce0(in1_loc_19_ce0), + .we0(in1_loc_19_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_20_address0), + .ce0(in1_loc_20_ce0), + .we0(in1_loc_20_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_21_address0), + .ce0(in1_loc_21_ce0), + .we0(in1_loc_21_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_22_address0), + .ce0(in1_loc_22_ce0), + .we0(in1_loc_22_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_23_address0), + .ce0(in1_loc_23_ce0), + .we0(in1_loc_23_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_24_address0), + .ce0(in1_loc_24_ce0), + .we0(in1_loc_24_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_25_address0), + .ce0(in1_loc_25_ce0), + .we0(in1_loc_25_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_26_address0), + .ce0(in1_loc_26_ce0), + .we0(in1_loc_26_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_27_address0), + .ce0(in1_loc_27_ce0), + .we0(in1_loc_27_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_28_address0), + .ce0(in1_loc_28_ce0), + .we0(in1_loc_28_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_29_address0), + .ce0(in1_loc_29_ce0), + .we0(in1_loc_29_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_30_address0), + .ce0(in1_loc_30_ce0), + .we0(in1_loc_30_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_31_address0), + .ce0(in1_loc_31_ce0), + .we0(in1_loc_31_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_32_address0), + .ce0(in1_loc_32_ce0), + .we0(in1_loc_32_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_33_address0), + .ce0(in1_loc_33_ce0), + .we0(in1_loc_33_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_34_address0), + .ce0(in1_loc_34_ce0), + .we0(in1_loc_34_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_35_address0), + .ce0(in1_loc_35_ce0), + .we0(in1_loc_35_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_36_address0), + .ce0(in1_loc_36_ce0), + .we0(in1_loc_36_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_37_address0), + .ce0(in1_loc_37_ce0), + .we0(in1_loc_37_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_38_address0), + .ce0(in1_loc_38_ce0), + .we0(in1_loc_38_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_39_address0), + .ce0(in1_loc_39_ce0), + .we0(in1_loc_39_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_40_address0), + .ce0(in1_loc_40_ce0), + .we0(in1_loc_40_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_41_address0), + .ce0(in1_loc_41_ce0), + .we0(in1_loc_41_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_42_address0), + .ce0(in1_loc_42_ce0), + .we0(in1_loc_42_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_43_address0), + .ce0(in1_loc_43_ce0), + .we0(in1_loc_43_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_44_address0), + .ce0(in1_loc_44_ce0), + .we0(in1_loc_44_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_45_address0), + .ce0(in1_loc_45_ce0), + .we0(in1_loc_45_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_46_address0), + .ce0(in1_loc_46_ce0), + .we0(in1_loc_46_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_47_address0), + .ce0(in1_loc_47_ce0), + .we0(in1_loc_47_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_48_address0), + .ce0(in1_loc_48_ce0), + .we0(in1_loc_48_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_49_address0), + .ce0(in1_loc_49_ce0), + .we0(in1_loc_49_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_50_address0), + .ce0(in1_loc_50_ce0), + .we0(in1_loc_50_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_51_address0), + .ce0(in1_loc_51_ce0), + .we0(in1_loc_51_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_52_address0), + .ce0(in1_loc_52_ce0), + .we0(in1_loc_52_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_53_address0), + .ce0(in1_loc_53_ce0), + .we0(in1_loc_53_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_54_address0), + .ce0(in1_loc_54_ce0), + .we0(in1_loc_54_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_55_address0), + .ce0(in1_loc_55_ce0), + .we0(in1_loc_55_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_56_address0), + .ce0(in1_loc_56_ce0), + .we0(in1_loc_56_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_57_address0), + .ce0(in1_loc_57_ce0), + .we0(in1_loc_57_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_58_address0), + .ce0(in1_loc_58_ce0), + .we0(in1_loc_58_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_59_address0), + .ce0(in1_loc_59_ce0), + .we0(in1_loc_59_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_60_address0), + .ce0(in1_loc_60_ce0), + .we0(in1_loc_60_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_61_address0), + .ce0(in1_loc_61_ce0), + .we0(in1_loc_61_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_62_address0), + .ce0(in1_loc_62_ce0), + .we0(in1_loc_62_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_63_address0), + .ce0(in1_loc_63_ce0), + .we0(in1_loc_63_we0), + .d0(in1_mem_addr_read_reg_4549), + .q0(in1_loc_63_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_0_address0), + .ce0(in2_loc_0_ce0), + .we0(in2_loc_0_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_1_address0), + .ce0(in2_loc_1_ce0), + .we0(in2_loc_1_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_2_address0), + .ce0(in2_loc_2_ce0), + .we0(in2_loc_2_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_3_address0), + .ce0(in2_loc_3_ce0), + .we0(in2_loc_3_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_4_address0), + .ce0(in2_loc_4_ce0), + .we0(in2_loc_4_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_5_address0), + .ce0(in2_loc_5_ce0), + .we0(in2_loc_5_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_6_address0), + .ce0(in2_loc_6_ce0), + .we0(in2_loc_6_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_7_address0), + .ce0(in2_loc_7_ce0), + .we0(in2_loc_7_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_8_address0), + .ce0(in2_loc_8_ce0), + .we0(in2_loc_8_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_9_address0), + .ce0(in2_loc_9_ce0), + .we0(in2_loc_9_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_10_address0), + .ce0(in2_loc_10_ce0), + .we0(in2_loc_10_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_11_address0), + .ce0(in2_loc_11_ce0), + .we0(in2_loc_11_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_12_address0), + .ce0(in2_loc_12_ce0), + .we0(in2_loc_12_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_13_address0), + .ce0(in2_loc_13_ce0), + .we0(in2_loc_13_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_14_address0), + .ce0(in2_loc_14_ce0), + .we0(in2_loc_14_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_15_address0), + .ce0(in2_loc_15_ce0), + .we0(in2_loc_15_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_16_address0), + .ce0(in2_loc_16_ce0), + .we0(in2_loc_16_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_17_address0), + .ce0(in2_loc_17_ce0), + .we0(in2_loc_17_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_18_address0), + .ce0(in2_loc_18_ce0), + .we0(in2_loc_18_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_19_address0), + .ce0(in2_loc_19_ce0), + .we0(in2_loc_19_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_20_address0), + .ce0(in2_loc_20_ce0), + .we0(in2_loc_20_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_21_address0), + .ce0(in2_loc_21_ce0), + .we0(in2_loc_21_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_22_address0), + .ce0(in2_loc_22_ce0), + .we0(in2_loc_22_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_23_address0), + .ce0(in2_loc_23_ce0), + .we0(in2_loc_23_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_24_address0), + .ce0(in2_loc_24_ce0), + .we0(in2_loc_24_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_25_address0), + .ce0(in2_loc_25_ce0), + .we0(in2_loc_25_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_26_address0), + .ce0(in2_loc_26_ce0), + .we0(in2_loc_26_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_27_address0), + .ce0(in2_loc_27_ce0), + .we0(in2_loc_27_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_28_address0), + .ce0(in2_loc_28_ce0), + .we0(in2_loc_28_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_29_address0), + .ce0(in2_loc_29_ce0), + .we0(in2_loc_29_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_30_address0), + .ce0(in2_loc_30_ce0), + .we0(in2_loc_30_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_31_address0), + .ce0(in2_loc_31_ce0), + .we0(in2_loc_31_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_32_address0), + .ce0(in2_loc_32_ce0), + .we0(in2_loc_32_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_33_address0), + .ce0(in2_loc_33_ce0), + .we0(in2_loc_33_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_34_address0), + .ce0(in2_loc_34_ce0), + .we0(in2_loc_34_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_35_address0), + .ce0(in2_loc_35_ce0), + .we0(in2_loc_35_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_36_address0), + .ce0(in2_loc_36_ce0), + .we0(in2_loc_36_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_37_address0), + .ce0(in2_loc_37_ce0), + .we0(in2_loc_37_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_38_address0), + .ce0(in2_loc_38_ce0), + .we0(in2_loc_38_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_39_address0), + .ce0(in2_loc_39_ce0), + .we0(in2_loc_39_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_40_address0), + .ce0(in2_loc_40_ce0), + .we0(in2_loc_40_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_41_address0), + .ce0(in2_loc_41_ce0), + .we0(in2_loc_41_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_42_address0), + .ce0(in2_loc_42_ce0), + .we0(in2_loc_42_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_43_address0), + .ce0(in2_loc_43_ce0), + .we0(in2_loc_43_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_44_address0), + .ce0(in2_loc_44_ce0), + .we0(in2_loc_44_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_45_address0), + .ce0(in2_loc_45_ce0), + .we0(in2_loc_45_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_46_address0), + .ce0(in2_loc_46_ce0), + .we0(in2_loc_46_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_47_address0), + .ce0(in2_loc_47_ce0), + .we0(in2_loc_47_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_48_address0), + .ce0(in2_loc_48_ce0), + .we0(in2_loc_48_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_49_address0), + .ce0(in2_loc_49_ce0), + .we0(in2_loc_49_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_50_address0), + .ce0(in2_loc_50_ce0), + .we0(in2_loc_50_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_51_address0), + .ce0(in2_loc_51_ce0), + .we0(in2_loc_51_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_52_address0), + .ce0(in2_loc_52_ce0), + .we0(in2_loc_52_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_53_address0), + .ce0(in2_loc_53_ce0), + .we0(in2_loc_53_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_54_address0), + .ce0(in2_loc_54_ce0), + .we0(in2_loc_54_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_55_address0), + .ce0(in2_loc_55_ce0), + .we0(in2_loc_55_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_56_address0), + .ce0(in2_loc_56_ce0), + .we0(in2_loc_56_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_57_address0), + .ce0(in2_loc_57_ce0), + .we0(in2_loc_57_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_58_address0), + .ce0(in2_loc_58_ce0), + .we0(in2_loc_58_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_59_address0), + .ce0(in2_loc_59_ce0), + .we0(in2_loc_59_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_60_address0), + .ce0(in2_loc_60_ce0), + .we0(in2_loc_60_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_61_address0), + .ce0(in2_loc_61_ce0), + .we0(in2_loc_61_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_62_address0), + .ce0(in2_loc_62_ce0), + .we0(in2_loc_62_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_63_address0), + .ce0(in2_loc_63_ce0), + .we0(in2_loc_63_we0), + .d0(in2_mem_addr_read_reg_4635), + .q0(in2_loc_63_q0) +); + +mmult_out_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .we0(out_loc_we0), + .d0(out_loc_d0), + .q0(out_loc_q0) +); + +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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp0_stage0) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b0 == ap_block_pp0_stage0_subdone))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp1_stage0) & (1'b1 == ap_condition_pp1_exit_iter0_state19) & (1'b0 == ap_block_pp1_stage0_subdone))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_condition_pp2_exit_iter0_state28) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_subdone))) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_enable_reg_pp2_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp2_exit_iter0_state28)) begin + ap_enable_reg_pp2_iter1 <= (1'b1 ^ ap_condition_pp2_exit_iter0_state28); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state22)) begin + i_0_reg_3317 <= 31'd0; + end else if (((icmp_ln33_fu_3688_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state25))) begin + i_0_reg_3317 <= i_reg_4707; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state27)) begin + j_0_reg_3328 <= j_reg_5365; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + j_0_reg_3328 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3408_p2 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_3295 <= add_ln27_fu_3414_p2; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_3295 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_3306 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3501_p2 == 1'd0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_3306 <= add_ln28_fu_3507_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + phi_ln42_reg_3339 <= 13'd0; + end else if (((icmp_ln42_fu_4475_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + phi_ln42_reg_3339 <= add_ln42_fu_4481_p2; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state26)) begin + add_ln38_12_reg_5705 <= add_ln38_12_fu_4173_p2; + add_ln38_21_reg_5710 <= add_ln38_21_fu_4215_p2; + add_ln38_28_reg_5715 <= add_ln38_28_fu_4257_p2; + add_ln38_37_reg_5720 <= add_ln38_37_fu_4299_p2; + add_ln38_40_reg_5725 <= add_ln38_40_fu_4317_p2; + add_ln38_43_reg_5730 <= add_ln38_43_fu_4335_p2; + add_ln38_52_reg_5735 <= add_ln38_52_fu_4377_p2; + add_ln38_55_reg_5740 <= add_ln38_55_fu_4395_p2; + add_ln38_59_reg_5745 <= add_ln38_59_fu_4419_p2; + add_ln38_6_reg_5695 <= add_ln38_6_fu_4137_p2; + add_ln38_9_reg_5700 <= add_ln38_9_fu_4155_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_4492 <= dim; + in3_reg_4508 <= {{in1[31:2]}}; + in_reg_4503 <= {{in2[31:2]}}; + out5_reg_4498 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23))) begin + i_reg_4707 <= i_fu_3603_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + icmp_ln42_reg_5750 <= icmp_ln42_fu_4475_p2; + icmp_ln42_reg_5750_pp2_iter1_reg <= icmp_ln42_reg_5750; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + in1_loc_0_load_reg_5042 <= in1_loc_0_q0; + in1_loc_10_load_reg_5092 <= in1_loc_10_q0; + in1_loc_11_load_reg_5097 <= in1_loc_11_q0; + in1_loc_12_load_reg_5102 <= in1_loc_12_q0; + in1_loc_13_load_reg_5107 <= in1_loc_13_q0; + in1_loc_14_load_reg_5112 <= in1_loc_14_q0; + in1_loc_15_load_reg_5117 <= in1_loc_15_q0; + in1_loc_16_load_reg_5122 <= in1_loc_16_q0; + in1_loc_17_load_reg_5127 <= in1_loc_17_q0; + in1_loc_18_load_reg_5132 <= in1_loc_18_q0; + in1_loc_19_load_reg_5137 <= in1_loc_19_q0; + in1_loc_1_load_reg_5047 <= in1_loc_1_q0; + in1_loc_20_load_reg_5142 <= in1_loc_20_q0; + in1_loc_21_load_reg_5147 <= in1_loc_21_q0; + in1_loc_22_load_reg_5152 <= in1_loc_22_q0; + in1_loc_23_load_reg_5157 <= in1_loc_23_q0; + in1_loc_24_load_reg_5162 <= in1_loc_24_q0; + in1_loc_25_load_reg_5167 <= in1_loc_25_q0; + in1_loc_26_load_reg_5172 <= in1_loc_26_q0; + in1_loc_27_load_reg_5177 <= in1_loc_27_q0; + in1_loc_28_load_reg_5182 <= in1_loc_28_q0; + in1_loc_29_load_reg_5187 <= in1_loc_29_q0; + in1_loc_2_load_reg_5052 <= in1_loc_2_q0; + in1_loc_30_load_reg_5192 <= in1_loc_30_q0; + in1_loc_31_load_reg_5197 <= in1_loc_31_q0; + in1_loc_32_load_reg_5202 <= in1_loc_32_q0; + in1_loc_33_load_reg_5207 <= in1_loc_33_q0; + in1_loc_34_load_reg_5212 <= in1_loc_34_q0; + in1_loc_35_load_reg_5217 <= in1_loc_35_q0; + in1_loc_36_load_reg_5222 <= in1_loc_36_q0; + in1_loc_37_load_reg_5227 <= in1_loc_37_q0; + in1_loc_38_load_reg_5232 <= in1_loc_38_q0; + in1_loc_39_load_reg_5237 <= in1_loc_39_q0; + in1_loc_3_load_reg_5057 <= in1_loc_3_q0; + in1_loc_40_load_reg_5242 <= in1_loc_40_q0; + in1_loc_41_load_reg_5247 <= in1_loc_41_q0; + in1_loc_42_load_reg_5252 <= in1_loc_42_q0; + in1_loc_43_load_reg_5257 <= in1_loc_43_q0; + in1_loc_44_load_reg_5262 <= in1_loc_44_q0; + in1_loc_45_load_reg_5267 <= in1_loc_45_q0; + in1_loc_46_load_reg_5272 <= in1_loc_46_q0; + in1_loc_47_load_reg_5277 <= in1_loc_47_q0; + in1_loc_48_load_reg_5282 <= in1_loc_48_q0; + in1_loc_49_load_reg_5287 <= in1_loc_49_q0; + in1_loc_4_load_reg_5062 <= in1_loc_4_q0; + in1_loc_50_load_reg_5292 <= in1_loc_50_q0; + in1_loc_51_load_reg_5297 <= in1_loc_51_q0; + in1_loc_52_load_reg_5302 <= in1_loc_52_q0; + in1_loc_53_load_reg_5307 <= in1_loc_53_q0; + in1_loc_54_load_reg_5312 <= in1_loc_54_q0; + in1_loc_55_load_reg_5317 <= in1_loc_55_q0; + in1_loc_56_load_reg_5322 <= in1_loc_56_q0; + in1_loc_57_load_reg_5327 <= in1_loc_57_q0; + in1_loc_58_load_reg_5332 <= in1_loc_58_q0; + in1_loc_59_load_reg_5337 <= in1_loc_59_q0; + in1_loc_5_load_reg_5067 <= in1_loc_5_q0; + in1_loc_60_load_reg_5342 <= in1_loc_60_q0; + in1_loc_61_load_reg_5347 <= in1_loc_61_q0; + in1_loc_62_load_reg_5352 <= in1_loc_62_q0; + in1_loc_63_load_reg_5357 <= in1_loc_63_q0; + in1_loc_6_load_reg_5072 <= in1_loc_6_q0; + in1_loc_7_load_reg_5077 <= in1_loc_7_q0; + in1_loc_8_load_reg_5082 <= in1_loc_8_q0; + in1_loc_9_load_reg_5087 <= in1_loc_9_q0; + zext_ln38_1_cast_reg_5037[13 : 6] <= zext_ln38_1_cast_fu_3681_p3[13 : 6]; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_4549 <= in1_mem_RDATA; + lshr_ln_reg_4540_pp0_iter1_reg <= lshr_ln_reg_4540; + trunc_ln27_reg_4545_pp0_iter1_reg <= trunc_ln27_reg_4545; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_4635 <= in2_mem_RDATA; + trunc_ln1_reg_4631_pp1_iter1_reg <= trunc_ln1_reg_4631; + trunc_ln28_reg_4626_pp1_iter1_reg <= trunc_ln28_reg_4626; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_4525[29 : 0] <= empty_7_fu_3399_p1[29 : 0]; + out_mem_addr_reg_4519[29 : 0] <= empty_fu_3390_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + j_reg_5365 <= j_fu_3693_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3408_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + lshr_ln_reg_4540 <= {{phi_ln27_reg_3295[12:6]}}; + trunc_ln27_reg_4545 <= trunc_ln27_fu_3430_p1; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln33_fu_3688_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state25))) begin + out_loc_addr_reg_5370 <= sext_ln38_1_fu_3776_p1; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln42_reg_5750 == 1'd0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001))) begin + out_loc_load_reg_5764 <= out_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3501_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + trunc_ln1_reg_4631 <= {{phi_ln28_reg_3306[11:6]}}; + trunc_ln28_reg_4626 <= trunc_ln28_fu_3513_p1; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state23))) begin + trunc_ln38_reg_4712 <= trunc_ln38_fu_3677_p1; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_3408_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_3501_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_4475_p2 == 1'd1)) begin + ap_condition_pp2_exit_iter0_state28 = 1'b1; + end else begin + ap_condition_pp2_exit_iter0_state28 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state35))) 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_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp2_iter2 == 1'b0) & (ap_enable_reg_pp2_iter1 == 1'b0) & (ap_enable_reg_pp2_iter0 == 1'b0))) begin + ap_idle_pp2 = 1'b1; + end else begin + ap_idle_pp2 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state35))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_0_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_0_ce0 = 1'b1; + end else begin + in1_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_we0 = 1'b1; + end else begin + in1_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_10_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_10_ce0 = 1'b1; + end else begin + in1_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd10) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_we0 = 1'b1; + end else begin + in1_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_11_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_11_ce0 = 1'b1; + end else begin + in1_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd11) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_we0 = 1'b1; + end else begin + in1_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_12_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_12_ce0 = 1'b1; + end else begin + in1_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd12) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_we0 = 1'b1; + end else begin + in1_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_13_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_13_ce0 = 1'b1; + end else begin + in1_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd13) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_we0 = 1'b1; + end else begin + in1_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_14_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_14_ce0 = 1'b1; + end else begin + in1_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd14) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_we0 = 1'b1; + end else begin + in1_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_15_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_15_ce0 = 1'b1; + end else begin + in1_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd15) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_we0 = 1'b1; + end else begin + in1_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_16_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_16_ce0 = 1'b1; + end else begin + in1_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd16) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_we0 = 1'b1; + end else begin + in1_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_17_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_17_ce0 = 1'b1; + end else begin + in1_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd17) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_we0 = 1'b1; + end else begin + in1_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_18_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_18_ce0 = 1'b1; + end else begin + in1_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd18) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_we0 = 1'b1; + end else begin + in1_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_19_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_19_ce0 = 1'b1; + end else begin + in1_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd19) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_we0 = 1'b1; + end else begin + in1_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_1_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_1_ce0 = 1'b1; + end else begin + in1_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_we0 = 1'b1; + end else begin + in1_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_20_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_20_ce0 = 1'b1; + end else begin + in1_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd20) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_we0 = 1'b1; + end else begin + in1_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_21_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_21_ce0 = 1'b1; + end else begin + in1_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd21) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_we0 = 1'b1; + end else begin + in1_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_22_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_22_ce0 = 1'b1; + end else begin + in1_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd22) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_we0 = 1'b1; + end else begin + in1_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_23_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_23_ce0 = 1'b1; + end else begin + in1_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd23) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_we0 = 1'b1; + end else begin + in1_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_24_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_24_ce0 = 1'b1; + end else begin + in1_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd24) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_we0 = 1'b1; + end else begin + in1_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_25_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_25_ce0 = 1'b1; + end else begin + in1_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd25) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_we0 = 1'b1; + end else begin + in1_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_26_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_26_ce0 = 1'b1; + end else begin + in1_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd26) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_we0 = 1'b1; + end else begin + in1_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_27_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_27_ce0 = 1'b1; + end else begin + in1_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd27) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_we0 = 1'b1; + end else begin + in1_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_28_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_28_ce0 = 1'b1; + end else begin + in1_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd28) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_we0 = 1'b1; + end else begin + in1_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_29_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_29_ce0 = 1'b1; + end else begin + in1_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd29) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_we0 = 1'b1; + end else begin + in1_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_2_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_2_ce0 = 1'b1; + end else begin + in1_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd2) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_we0 = 1'b1; + end else begin + in1_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_30_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_30_ce0 = 1'b1; + end else begin + in1_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd30) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_we0 = 1'b1; + end else begin + in1_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_31_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_31_ce0 = 1'b1; + end else begin + in1_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd31) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_we0 = 1'b1; + end else begin + in1_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_32_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_32_ce0 = 1'b1; + end else begin + in1_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd32) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_we0 = 1'b1; + end else begin + in1_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_33_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_33_ce0 = 1'b1; + end else begin + in1_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd33) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_we0 = 1'b1; + end else begin + in1_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_34_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_34_ce0 = 1'b1; + end else begin + in1_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd34) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_we0 = 1'b1; + end else begin + in1_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_35_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_35_ce0 = 1'b1; + end else begin + in1_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd35) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_we0 = 1'b1; + end else begin + in1_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_36_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_36_ce0 = 1'b1; + end else begin + in1_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd36) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_we0 = 1'b1; + end else begin + in1_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_37_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_37_ce0 = 1'b1; + end else begin + in1_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd37) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_we0 = 1'b1; + end else begin + in1_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_38_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_38_ce0 = 1'b1; + end else begin + in1_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd38) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_we0 = 1'b1; + end else begin + in1_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_39_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_39_ce0 = 1'b1; + end else begin + in1_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd39) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_we0 = 1'b1; + end else begin + in1_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_3_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_3_ce0 = 1'b1; + end else begin + in1_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd3) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_we0 = 1'b1; + end else begin + in1_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_40_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_40_ce0 = 1'b1; + end else begin + in1_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd40) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_we0 = 1'b1; + end else begin + in1_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_41_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_41_ce0 = 1'b1; + end else begin + in1_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd41) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_we0 = 1'b1; + end else begin + in1_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_42_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_42_ce0 = 1'b1; + end else begin + in1_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd42) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_we0 = 1'b1; + end else begin + in1_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_43_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_43_ce0 = 1'b1; + end else begin + in1_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd43) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_we0 = 1'b1; + end else begin + in1_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_44_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_44_ce0 = 1'b1; + end else begin + in1_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd44) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_we0 = 1'b1; + end else begin + in1_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_45_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_45_ce0 = 1'b1; + end else begin + in1_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd45) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_we0 = 1'b1; + end else begin + in1_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_46_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_46_ce0 = 1'b1; + end else begin + in1_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd46) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_we0 = 1'b1; + end else begin + in1_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_47_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_47_ce0 = 1'b1; + end else begin + in1_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd47) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_we0 = 1'b1; + end else begin + in1_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_48_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_48_ce0 = 1'b1; + end else begin + in1_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd48) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_we0 = 1'b1; + end else begin + in1_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_49_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_49_ce0 = 1'b1; + end else begin + in1_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd49) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_we0 = 1'b1; + end else begin + in1_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_4_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_4_ce0 = 1'b1; + end else begin + in1_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd4) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_we0 = 1'b1; + end else begin + in1_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_50_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_50_ce0 = 1'b1; + end else begin + in1_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd50) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_we0 = 1'b1; + end else begin + in1_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_51_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_51_ce0 = 1'b1; + end else begin + in1_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd51) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_we0 = 1'b1; + end else begin + in1_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_52_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_52_ce0 = 1'b1; + end else begin + in1_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd52) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_we0 = 1'b1; + end else begin + in1_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_53_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_53_ce0 = 1'b1; + end else begin + in1_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd53) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_we0 = 1'b1; + end else begin + in1_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_54_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_54_ce0 = 1'b1; + end else begin + in1_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd54) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_we0 = 1'b1; + end else begin + in1_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_55_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_55_ce0 = 1'b1; + end else begin + in1_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd55) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_we0 = 1'b1; + end else begin + in1_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_56_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_56_ce0 = 1'b1; + end else begin + in1_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd56) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_we0 = 1'b1; + end else begin + in1_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_57_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_57_ce0 = 1'b1; + end else begin + in1_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd57) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_we0 = 1'b1; + end else begin + in1_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_58_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_58_ce0 = 1'b1; + end else begin + in1_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd58) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_we0 = 1'b1; + end else begin + in1_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_59_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_59_ce0 = 1'b1; + end else begin + in1_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd59) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_we0 = 1'b1; + end else begin + in1_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_5_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_5_ce0 = 1'b1; + end else begin + in1_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd5) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_we0 = 1'b1; + end else begin + in1_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_60_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_60_ce0 = 1'b1; + end else begin + in1_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd60) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_we0 = 1'b1; + end else begin + in1_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_61_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_61_ce0 = 1'b1; + end else begin + in1_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd61) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_we0 = 1'b1; + end else begin + in1_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_62_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_62_ce0 = 1'b1; + end else begin + in1_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd62) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_we0 = 1'b1; + end else begin + in1_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_63_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_63_ce0 = 1'b1; + end else begin + in1_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd63) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_we0 = 1'b1; + end else begin + in1_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_6_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_6_ce0 = 1'b1; + end else begin + in1_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd6) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_we0 = 1'b1; + end else begin + in1_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_7_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_7_ce0 = 1'b1; + end else begin + in1_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd7) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_we0 = 1'b1; + end else begin + in1_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_8_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_8_ce0 = 1'b1; + end else begin + in1_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd8) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_we0 = 1'b1; + end else begin + in1_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state23)) begin + in1_loc_9_address0 = zext_ln38_fu_3609_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_address0 = zext_ln27_fu_3434_p1; + end else begin + in1_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_state23_io) & (1'b1 == ap_CS_fsm_state23)))) begin + in1_loc_9_ce0 = 1'b1; + end else begin + in1_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg == 6'd9) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_we0 = 1'b1; + end else begin + in1_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 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 + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_0_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_0_ce0 = 1'b1; + end else begin + in2_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd0) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_we0 = 1'b1; + end else begin + in2_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_10_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_10_ce0 = 1'b1; + end else begin + in2_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd10) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_we0 = 1'b1; + end else begin + in2_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_11_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_11_ce0 = 1'b1; + end else begin + in2_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd11) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_we0 = 1'b1; + end else begin + in2_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_12_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_12_ce0 = 1'b1; + end else begin + in2_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd12) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_we0 = 1'b1; + end else begin + in2_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_13_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_13_ce0 = 1'b1; + end else begin + in2_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd13) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_we0 = 1'b1; + end else begin + in2_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_14_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_14_ce0 = 1'b1; + end else begin + in2_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd14) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_we0 = 1'b1; + end else begin + in2_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_15_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_15_ce0 = 1'b1; + end else begin + in2_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd15) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_we0 = 1'b1; + end else begin + in2_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_16_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_16_ce0 = 1'b1; + end else begin + in2_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd16) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_we0 = 1'b1; + end else begin + in2_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_17_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_17_ce0 = 1'b1; + end else begin + in2_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd17) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_we0 = 1'b1; + end else begin + in2_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_18_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_18_ce0 = 1'b1; + end else begin + in2_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd18) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_we0 = 1'b1; + end else begin + in2_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_19_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_19_ce0 = 1'b1; + end else begin + in2_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd19) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_we0 = 1'b1; + end else begin + in2_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_1_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_1_ce0 = 1'b1; + end else begin + in2_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd1) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_we0 = 1'b1; + end else begin + in2_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_20_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_20_ce0 = 1'b1; + end else begin + in2_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd20) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_we0 = 1'b1; + end else begin + in2_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_21_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_21_ce0 = 1'b1; + end else begin + in2_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd21) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_we0 = 1'b1; + end else begin + in2_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_22_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_22_ce0 = 1'b1; + end else begin + in2_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd22) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_we0 = 1'b1; + end else begin + in2_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_23_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_23_ce0 = 1'b1; + end else begin + in2_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd23) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_we0 = 1'b1; + end else begin + in2_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_24_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_24_ce0 = 1'b1; + end else begin + in2_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd24) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_we0 = 1'b1; + end else begin + in2_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_25_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_25_ce0 = 1'b1; + end else begin + in2_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd25) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_we0 = 1'b1; + end else begin + in2_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_26_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_26_ce0 = 1'b1; + end else begin + in2_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd26) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_we0 = 1'b1; + end else begin + in2_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_27_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_27_ce0 = 1'b1; + end else begin + in2_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd27) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_we0 = 1'b1; + end else begin + in2_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_28_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_28_ce0 = 1'b1; + end else begin + in2_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd28) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_we0 = 1'b1; + end else begin + in2_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_29_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_29_ce0 = 1'b1; + end else begin + in2_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd29) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_we0 = 1'b1; + end else begin + in2_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_2_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_2_ce0 = 1'b1; + end else begin + in2_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd2) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_we0 = 1'b1; + end else begin + in2_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_30_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_30_ce0 = 1'b1; + end else begin + in2_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd30) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_we0 = 1'b1; + end else begin + in2_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_31_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_31_ce0 = 1'b1; + end else begin + in2_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd31) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_we0 = 1'b1; + end else begin + in2_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_32_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_32_ce0 = 1'b1; + end else begin + in2_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd32) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_we0 = 1'b1; + end else begin + in2_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_33_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_33_ce0 = 1'b1; + end else begin + in2_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd33) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_we0 = 1'b1; + end else begin + in2_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_34_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_34_ce0 = 1'b1; + end else begin + in2_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd34) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_we0 = 1'b1; + end else begin + in2_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_35_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_35_ce0 = 1'b1; + end else begin + in2_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd35) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_we0 = 1'b1; + end else begin + in2_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_36_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_36_ce0 = 1'b1; + end else begin + in2_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd36) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_we0 = 1'b1; + end else begin + in2_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_37_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_37_ce0 = 1'b1; + end else begin + in2_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd37) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_we0 = 1'b1; + end else begin + in2_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_38_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_38_ce0 = 1'b1; + end else begin + in2_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd38) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_we0 = 1'b1; + end else begin + in2_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_39_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_39_ce0 = 1'b1; + end else begin + in2_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd39) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_we0 = 1'b1; + end else begin + in2_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_3_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_3_ce0 = 1'b1; + end else begin + in2_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd3) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_we0 = 1'b1; + end else begin + in2_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_40_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_40_ce0 = 1'b1; + end else begin + in2_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd40) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_we0 = 1'b1; + end else begin + in2_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_41_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_41_ce0 = 1'b1; + end else begin + in2_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd41) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_we0 = 1'b1; + end else begin + in2_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_42_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_42_ce0 = 1'b1; + end else begin + in2_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd42) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_we0 = 1'b1; + end else begin + in2_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_43_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_43_ce0 = 1'b1; + end else begin + in2_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd43) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_we0 = 1'b1; + end else begin + in2_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_44_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_44_ce0 = 1'b1; + end else begin + in2_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd44) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_we0 = 1'b1; + end else begin + in2_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_45_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_45_ce0 = 1'b1; + end else begin + in2_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd45) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_we0 = 1'b1; + end else begin + in2_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_46_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_46_ce0 = 1'b1; + end else begin + in2_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd46) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_we0 = 1'b1; + end else begin + in2_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_47_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_47_ce0 = 1'b1; + end else begin + in2_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd47) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_we0 = 1'b1; + end else begin + in2_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_48_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_48_ce0 = 1'b1; + end else begin + in2_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd48) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_we0 = 1'b1; + end else begin + in2_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_49_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_49_ce0 = 1'b1; + end else begin + in2_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd49) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_we0 = 1'b1; + end else begin + in2_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_4_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_4_ce0 = 1'b1; + end else begin + in2_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd4) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_we0 = 1'b1; + end else begin + in2_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_50_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_50_ce0 = 1'b1; + end else begin + in2_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd50) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_we0 = 1'b1; + end else begin + in2_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_51_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_51_ce0 = 1'b1; + end else begin + in2_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd51) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_we0 = 1'b1; + end else begin + in2_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_52_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_52_ce0 = 1'b1; + end else begin + in2_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd52) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_we0 = 1'b1; + end else begin + in2_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_53_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_53_ce0 = 1'b1; + end else begin + in2_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd53) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_we0 = 1'b1; + end else begin + in2_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_54_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_54_ce0 = 1'b1; + end else begin + in2_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd54) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_we0 = 1'b1; + end else begin + in2_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_55_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_55_ce0 = 1'b1; + end else begin + in2_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd55) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_we0 = 1'b1; + end else begin + in2_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_56_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_56_ce0 = 1'b1; + end else begin + in2_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd56) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_we0 = 1'b1; + end else begin + in2_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_57_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_57_ce0 = 1'b1; + end else begin + in2_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd57) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_we0 = 1'b1; + end else begin + in2_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_58_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_58_ce0 = 1'b1; + end else begin + in2_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd58) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_we0 = 1'b1; + end else begin + in2_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_59_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_59_ce0 = 1'b1; + end else begin + in2_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd59) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_we0 = 1'b1; + end else begin + in2_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_5_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_5_ce0 = 1'b1; + end else begin + in2_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd5) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_we0 = 1'b1; + end else begin + in2_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_60_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_60_ce0 = 1'b1; + end else begin + in2_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd60) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_we0 = 1'b1; + end else begin + in2_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_61_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_61_ce0 = 1'b1; + end else begin + in2_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd61) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_we0 = 1'b1; + end else begin + in2_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_62_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_62_ce0 = 1'b1; + end else begin + in2_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd62) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_we0 = 1'b1; + end else begin + in2_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_63_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_63_ce0 = 1'b1; + end else begin + in2_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd63) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_we0 = 1'b1; + end else begin + in2_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_6_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_6_ce0 = 1'b1; + end else begin + in2_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd6) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_we0 = 1'b1; + end else begin + in2_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_7_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_7_ce0 = 1'b1; + end else begin + in2_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd7) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_we0 = 1'b1; + end else begin + in2_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_8_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_8_ce0 = 1'b1; + end else begin + in2_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd8) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_we0 = 1'b1; + end else begin + in2_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state25)) begin + in2_loc_9_address0 = sext_ln38_fu_3699_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_address0 = zext_ln28_fu_3527_p1; + end else begin + in2_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_9_ce0 = 1'b1; + end else begin + in2_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg == 6'd9) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_we0 = 1'b1; + end else begin + in2_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + out_loc_address0 = zext_ln42_fu_4487_p1; + end else if ((1'b1 == ap_CS_fsm_state27)) begin + out_loc_address0 = out_loc_addr_reg_5370; + end else if ((1'b1 == ap_CS_fsm_state25)) begin + out_loc_address0 = sext_ln38_1_fu_3776_p1; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if (((1'b1 == ap_CS_fsm_state25) | (1'b1 == ap_CS_fsm_state27) | ((ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0) & (1'b0 == ap_block_pp2_stage0_11001)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state27)) begin + out_loc_we0 = 1'b1; + end else begin + out_loc_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state35))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_5750_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_11001))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state35)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (icmp_ln42_reg_5750_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((icmp_ln27_fu_3408_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) & ~((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((icmp_ln27_fu_3408_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) | ((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((icmp_ln28_fu_3501_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) & ~((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((icmp_ln28_fu_3501_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) | ((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state23 : begin + if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd0) & (1'b1 == ap_CS_fsm_state23))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if (((1'b0 == ap_block_state23_io) & (icmp_ln31_fu_3598_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state23))) begin + ap_NS_fsm = ap_ST_fsm_state24; + end else begin + ap_NS_fsm = ap_ST_fsm_state23; + end + end + ap_ST_fsm_state24 : begin + ap_NS_fsm = ap_ST_fsm_state25; + end + ap_ST_fsm_state25 : begin + if (((icmp_ln33_fu_3688_p2 == 1'd1) & (1'b1 == ap_CS_fsm_state25))) begin + ap_NS_fsm = ap_ST_fsm_state23; + end else begin + ap_NS_fsm = ap_ST_fsm_state26; + end + end + ap_ST_fsm_state26 : begin + ap_NS_fsm = ap_ST_fsm_state27; + end + ap_ST_fsm_state27 : begin + ap_NS_fsm = ap_ST_fsm_state25; + end + ap_ST_fsm_pp2_stage0 : begin + if ((~((icmp_ln42_fu_4475_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)) & ~((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if ((((ap_enable_reg_pp2_iter2 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)) | ((icmp_ln42_fu_4475_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone) & (ap_enable_reg_pp2_iter1 == 1'b0)))) begin + ap_NS_fsm = ap_ST_fsm_state31; + end else begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + end + ap_ST_fsm_state31 : begin + ap_NS_fsm = ap_ST_fsm_state32; + end + ap_ST_fsm_state32 : begin + ap_NS_fsm = ap_ST_fsm_state33; + end + ap_ST_fsm_state33 : begin + ap_NS_fsm = ap_ST_fsm_state34; + end + ap_ST_fsm_state34 : begin + ap_NS_fsm = ap_ST_fsm_state35; + end + ap_ST_fsm_state35 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state35))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state35; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_3414_p2 = (phi_ln27_reg_3295 + 13'd1); + +assign add_ln28_fu_3507_p2 = (phi_ln28_reg_3306 + 13'd1); + +assign add_ln38_10_fu_4161_p2 = (mul_ln38_12_fu_3841_p2 + mul_ln38_11_fu_3836_p2); + +assign add_ln38_11_fu_4167_p2 = (mul_ln38_14_fu_3851_p2 + mul_ln38_13_fu_3846_p2); + +assign add_ln38_12_fu_4173_p2 = (add_ln38_10_fu_4161_p2 + add_ln38_11_fu_4167_p2); + +assign add_ln38_13_fu_4425_p2 = (add_ln38_9_reg_5700 + add_ln38_12_reg_5705); + +assign add_ln38_14_fu_4429_p2 = (add_ln38_6_reg_5695 + add_ln38_13_fu_4425_p2); + +assign add_ln38_15_fu_4179_p2 = (mul_ln38_16_fu_3861_p2 + mul_ln38_15_fu_3856_p2); + +assign add_ln38_16_fu_4185_p2 = (mul_ln38_18_fu_3871_p2 + mul_ln38_17_fu_3866_p2); + +assign add_ln38_17_fu_4191_p2 = (add_ln38_15_fu_4179_p2 + add_ln38_16_fu_4185_p2); + +assign add_ln38_18_fu_4197_p2 = (mul_ln38_20_fu_3881_p2 + mul_ln38_19_fu_3876_p2); + +assign add_ln38_19_fu_4203_p2 = (mul_ln38_22_fu_3891_p2 + mul_ln38_21_fu_3886_p2); + +assign add_ln38_1_fu_4107_p2 = (mul_ln38_2_fu_3791_p2 + mul_ln38_1_fu_3786_p2); + +assign add_ln38_20_fu_4209_p2 = (add_ln38_18_fu_4197_p2 + add_ln38_19_fu_4203_p2); + +assign add_ln38_21_fu_4215_p2 = (add_ln38_17_fu_4191_p2 + add_ln38_20_fu_4209_p2); + +assign add_ln38_22_fu_4221_p2 = (mul_ln38_24_fu_3901_p2 + mul_ln38_23_fu_3896_p2); + +assign add_ln38_23_fu_4227_p2 = (mul_ln38_26_fu_3911_p2 + mul_ln38_25_fu_3906_p2); + +assign add_ln38_24_fu_4233_p2 = (add_ln38_22_fu_4221_p2 + add_ln38_23_fu_4227_p2); + +assign add_ln38_25_fu_4239_p2 = (mul_ln38_28_fu_3921_p2 + mul_ln38_27_fu_3916_p2); + +assign add_ln38_26_fu_4245_p2 = (mul_ln38_30_fu_3931_p2 + mul_ln38_29_fu_3926_p2); + +assign add_ln38_27_fu_4251_p2 = (add_ln38_25_fu_4239_p2 + add_ln38_26_fu_4245_p2); + +assign add_ln38_28_fu_4257_p2 = (add_ln38_24_fu_4233_p2 + add_ln38_27_fu_4251_p2); + +assign add_ln38_29_fu_4434_p2 = (add_ln38_21_reg_5710 + add_ln38_28_reg_5715); + +assign add_ln38_2_fu_4113_p2 = (add_ln38_fu_4101_p2 + add_ln38_1_fu_4107_p2); + +assign add_ln38_30_fu_4438_p2 = (add_ln38_14_fu_4429_p2 + add_ln38_29_fu_4434_p2); + +assign add_ln38_31_fu_4263_p2 = (mul_ln38_32_fu_3941_p2 + mul_ln38_31_fu_3936_p2); + +assign add_ln38_32_fu_4269_p2 = (mul_ln38_34_fu_3951_p2 + mul_ln38_33_fu_3946_p2); + +assign add_ln38_33_fu_4275_p2 = (add_ln38_31_fu_4263_p2 + add_ln38_32_fu_4269_p2); + +assign add_ln38_34_fu_4281_p2 = (mul_ln38_36_fu_3961_p2 + mul_ln38_35_fu_3956_p2); + +assign add_ln38_35_fu_4287_p2 = (mul_ln38_38_fu_3971_p2 + mul_ln38_37_fu_3966_p2); + +assign add_ln38_36_fu_4293_p2 = (add_ln38_34_fu_4281_p2 + add_ln38_35_fu_4287_p2); + +assign add_ln38_37_fu_4299_p2 = (add_ln38_33_fu_4275_p2 + add_ln38_36_fu_4293_p2); + +assign add_ln38_38_fu_4305_p2 = (mul_ln38_40_fu_3981_p2 + mul_ln38_39_fu_3976_p2); + +assign add_ln38_39_fu_4311_p2 = (mul_ln38_42_fu_3991_p2 + mul_ln38_41_fu_3986_p2); + +assign add_ln38_3_fu_4119_p2 = (mul_ln38_4_fu_3801_p2 + mul_ln38_3_fu_3796_p2); + +assign add_ln38_40_fu_4317_p2 = (add_ln38_38_fu_4305_p2 + add_ln38_39_fu_4311_p2); + +assign add_ln38_41_fu_4323_p2 = (mul_ln38_44_fu_4001_p2 + mul_ln38_43_fu_3996_p2); + +assign add_ln38_42_fu_4329_p2 = (mul_ln38_46_fu_4011_p2 + mul_ln38_45_fu_4006_p2); + +assign add_ln38_43_fu_4335_p2 = (add_ln38_41_fu_4323_p2 + add_ln38_42_fu_4329_p2); + +assign add_ln38_44_fu_4444_p2 = (add_ln38_40_reg_5725 + add_ln38_43_reg_5730); + +assign add_ln38_45_fu_4448_p2 = (add_ln38_37_reg_5720 + add_ln38_44_fu_4444_p2); + +assign add_ln38_46_fu_4341_p2 = (mul_ln38_48_fu_4021_p2 + mul_ln38_47_fu_4016_p2); + +assign add_ln38_47_fu_4347_p2 = (mul_ln38_50_fu_4031_p2 + mul_ln38_49_fu_4026_p2); + +assign add_ln38_48_fu_4353_p2 = (add_ln38_46_fu_4341_p2 + add_ln38_47_fu_4347_p2); + +assign add_ln38_49_fu_4359_p2 = (mul_ln38_52_fu_4041_p2 + mul_ln38_51_fu_4036_p2); + +assign add_ln38_4_fu_4125_p2 = (mul_ln38_6_fu_3811_p2 + mul_ln38_5_fu_3806_p2); + +assign add_ln38_50_fu_4365_p2 = (mul_ln38_54_fu_4051_p2 + mul_ln38_53_fu_4046_p2); + +assign add_ln38_51_fu_4371_p2 = (add_ln38_49_fu_4359_p2 + add_ln38_50_fu_4365_p2); + +assign add_ln38_52_fu_4377_p2 = (add_ln38_48_fu_4353_p2 + add_ln38_51_fu_4371_p2); + +assign add_ln38_53_fu_4383_p2 = (mul_ln38_56_fu_4061_p2 + mul_ln38_55_fu_4056_p2); + +assign add_ln38_54_fu_4389_p2 = (mul_ln38_58_fu_4071_p2 + mul_ln38_57_fu_4066_p2); + +assign add_ln38_55_fu_4395_p2 = (add_ln38_53_fu_4383_p2 + add_ln38_54_fu_4389_p2); + +assign add_ln38_56_fu_4401_p2 = (mul_ln38_60_fu_4081_p2 + mul_ln38_59_fu_4076_p2); + +assign add_ln38_57_fu_4407_p2 = (mul_ln38_63_fu_4096_p2 + mul_ln38_62_fu_4091_p2); + +assign add_ln38_58_fu_4413_p2 = (mul_ln38_61_fu_4086_p2 + add_ln38_57_fu_4407_p2); + +assign add_ln38_59_fu_4419_p2 = (add_ln38_56_fu_4401_p2 + add_ln38_58_fu_4413_p2); + +assign add_ln38_5_fu_4131_p2 = (add_ln38_3_fu_4119_p2 + add_ln38_4_fu_4125_p2); + +assign add_ln38_60_fu_4453_p2 = (add_ln38_55_reg_5740 + add_ln38_59_reg_5745); + +assign add_ln38_61_fu_4457_p2 = (add_ln38_52_reg_5735 + add_ln38_60_fu_4453_p2); + +assign add_ln38_62_fu_4462_p2 = (add_ln38_45_fu_4448_p2 + add_ln38_61_fu_4457_p2); + +assign add_ln38_64_fu_3771_p2 = (zext_ln38_1_cast_reg_5037 + trunc_ln38_1_fu_3767_p1); + +assign add_ln38_6_fu_4137_p2 = (add_ln38_2_fu_4113_p2 + add_ln38_5_fu_4131_p2); + +assign add_ln38_7_fu_4143_p2 = (mul_ln38_8_fu_3821_p2 + mul_ln38_7_fu_3816_p2); + +assign add_ln38_8_fu_4149_p2 = (mul_ln38_10_fu_3831_p2 + mul_ln38_9_fu_3826_p2); + +assign add_ln38_9_fu_4155_p2 = (add_ln38_7_fu_4143_p2 + add_ln38_8_fu_4149_p2); + +assign add_ln38_fu_4101_p2 = (mul_ln38_fu_3781_p2 + out_loc_q0); + +assign add_ln42_fu_4481_p2 = (phi_ln42_reg_3339 + 13'd1); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp2_stage0 = ap_CS_fsm[32'd23]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state23 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_state24 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state25 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_state26 = ap_CS_fsm[32'd21]; + +assign ap_CS_fsm_state27 = ap_CS_fsm[32'd22]; + +assign ap_CS_fsm_state35 = ap_CS_fsm[32'd28]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp2_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp2_stage0_11001 = ((1'b1 == ap_block_state30_io) & (ap_enable_reg_pp2_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_pp2_stage0_subdone = ((1'b1 == ap_block_state30_io) & (ap_enable_reg_pp2_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = (in1_mem_RVALID == 1'b0); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = (in2_mem_RVALID == 1'b0); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state23_io = ((out_mem_AWREADY == 1'b0) & (icmp_ln31_fu_3598_p2 == 1'd0)); +end + +assign ap_block_state28_pp2_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state29_pp2_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state30_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_5750_pp2_iter1_reg == 1'd0)); +end + +assign ap_block_state30_pp2_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp2 = (ap_idle_pp2 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_7_fu_3399_p1 = in_reg_4503; + +assign empty_8_fu_3380_p1 = in3_reg_4508; + +assign empty_fu_3390_p1 = out5_reg_4498; + +assign i_fu_3603_p2 = (i_0_reg_3317 + 31'd1); + +assign icmp_ln27_fu_3408_p2 = ((phi_ln27_reg_3295 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_3501_p2 = ((phi_ln28_reg_3306 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_3598_p2 = (($signed(zext_ln31_fu_3594_p1) < $signed(dim_read_reg_4492)) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_3688_p2 = ((j_0_reg_3328 == dim_read_reg_4492) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_4475_p2 = ((phi_ln42_reg_3339 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_8_fu_3380_p1; + +assign j_fu_3693_p2 = ($signed(j_0_reg_3328) + $signed(32'd1)); + +assign mul_ln38_10_fu_3831_p0 = in2_loc_10_q0; + +assign mul_ln38_10_fu_3831_p2 = ($signed(mul_ln38_10_fu_3831_p0) * $signed(in1_loc_10_load_reg_5092)); + +assign mul_ln38_11_fu_3836_p0 = in2_loc_11_q0; + +assign mul_ln38_11_fu_3836_p2 = ($signed(mul_ln38_11_fu_3836_p0) * $signed(in1_loc_11_load_reg_5097)); + +assign mul_ln38_12_fu_3841_p0 = in2_loc_12_q0; + +assign mul_ln38_12_fu_3841_p2 = ($signed(mul_ln38_12_fu_3841_p0) * $signed(in1_loc_12_load_reg_5102)); + +assign mul_ln38_13_fu_3846_p0 = in2_loc_13_q0; + +assign mul_ln38_13_fu_3846_p2 = ($signed(mul_ln38_13_fu_3846_p0) * $signed(in1_loc_13_load_reg_5107)); + +assign mul_ln38_14_fu_3851_p0 = in2_loc_14_q0; + +assign mul_ln38_14_fu_3851_p2 = ($signed(mul_ln38_14_fu_3851_p0) * $signed(in1_loc_14_load_reg_5112)); + +assign mul_ln38_15_fu_3856_p0 = in2_loc_15_q0; + +assign mul_ln38_15_fu_3856_p2 = ($signed(mul_ln38_15_fu_3856_p0) * $signed(in1_loc_15_load_reg_5117)); + +assign mul_ln38_16_fu_3861_p0 = in2_loc_16_q0; + +assign mul_ln38_16_fu_3861_p2 = ($signed(mul_ln38_16_fu_3861_p0) * $signed(in1_loc_16_load_reg_5122)); + +assign mul_ln38_17_fu_3866_p0 = in2_loc_17_q0; + +assign mul_ln38_17_fu_3866_p2 = ($signed(mul_ln38_17_fu_3866_p0) * $signed(in1_loc_17_load_reg_5127)); + +assign mul_ln38_18_fu_3871_p0 = in2_loc_18_q0; + +assign mul_ln38_18_fu_3871_p2 = ($signed(mul_ln38_18_fu_3871_p0) * $signed(in1_loc_18_load_reg_5132)); + +assign mul_ln38_19_fu_3876_p0 = in2_loc_19_q0; + +assign mul_ln38_19_fu_3876_p2 = ($signed(mul_ln38_19_fu_3876_p0) * $signed(in1_loc_19_load_reg_5137)); + +assign mul_ln38_1_fu_3786_p0 = in2_loc_1_q0; + +assign mul_ln38_1_fu_3786_p2 = ($signed(mul_ln38_1_fu_3786_p0) * $signed(in1_loc_1_load_reg_5047)); + +assign mul_ln38_20_fu_3881_p0 = in2_loc_20_q0; + +assign mul_ln38_20_fu_3881_p2 = ($signed(mul_ln38_20_fu_3881_p0) * $signed(in1_loc_20_load_reg_5142)); + +assign mul_ln38_21_fu_3886_p0 = in2_loc_21_q0; + +assign mul_ln38_21_fu_3886_p2 = ($signed(mul_ln38_21_fu_3886_p0) * $signed(in1_loc_21_load_reg_5147)); + +assign mul_ln38_22_fu_3891_p0 = in2_loc_22_q0; + +assign mul_ln38_22_fu_3891_p2 = ($signed(mul_ln38_22_fu_3891_p0) * $signed(in1_loc_22_load_reg_5152)); + +assign mul_ln38_23_fu_3896_p0 = in2_loc_23_q0; + +assign mul_ln38_23_fu_3896_p2 = ($signed(mul_ln38_23_fu_3896_p0) * $signed(in1_loc_23_load_reg_5157)); + +assign mul_ln38_24_fu_3901_p0 = in2_loc_24_q0; + +assign mul_ln38_24_fu_3901_p2 = ($signed(mul_ln38_24_fu_3901_p0) * $signed(in1_loc_24_load_reg_5162)); + +assign mul_ln38_25_fu_3906_p0 = in2_loc_25_q0; + +assign mul_ln38_25_fu_3906_p2 = ($signed(mul_ln38_25_fu_3906_p0) * $signed(in1_loc_25_load_reg_5167)); + +assign mul_ln38_26_fu_3911_p0 = in2_loc_26_q0; + +assign mul_ln38_26_fu_3911_p2 = ($signed(mul_ln38_26_fu_3911_p0) * $signed(in1_loc_26_load_reg_5172)); + +assign mul_ln38_27_fu_3916_p0 = in2_loc_27_q0; + +assign mul_ln38_27_fu_3916_p2 = ($signed(mul_ln38_27_fu_3916_p0) * $signed(in1_loc_27_load_reg_5177)); + +assign mul_ln38_28_fu_3921_p0 = in2_loc_28_q0; + +assign mul_ln38_28_fu_3921_p2 = ($signed(mul_ln38_28_fu_3921_p0) * $signed(in1_loc_28_load_reg_5182)); + +assign mul_ln38_29_fu_3926_p0 = in2_loc_29_q0; + +assign mul_ln38_29_fu_3926_p2 = ($signed(mul_ln38_29_fu_3926_p0) * $signed(in1_loc_29_load_reg_5187)); + +assign mul_ln38_2_fu_3791_p0 = in2_loc_2_q0; + +assign mul_ln38_2_fu_3791_p2 = ($signed(mul_ln38_2_fu_3791_p0) * $signed(in1_loc_2_load_reg_5052)); + +assign mul_ln38_30_fu_3931_p0 = in2_loc_30_q0; + +assign mul_ln38_30_fu_3931_p2 = ($signed(mul_ln38_30_fu_3931_p0) * $signed(in1_loc_30_load_reg_5192)); + +assign mul_ln38_31_fu_3936_p0 = in2_loc_31_q0; + +assign mul_ln38_31_fu_3936_p2 = ($signed(mul_ln38_31_fu_3936_p0) * $signed(in1_loc_31_load_reg_5197)); + +assign mul_ln38_32_fu_3941_p0 = in2_loc_32_q0; + +assign mul_ln38_32_fu_3941_p2 = ($signed(mul_ln38_32_fu_3941_p0) * $signed(in1_loc_32_load_reg_5202)); + +assign mul_ln38_33_fu_3946_p0 = in2_loc_33_q0; + +assign mul_ln38_33_fu_3946_p2 = ($signed(mul_ln38_33_fu_3946_p0) * $signed(in1_loc_33_load_reg_5207)); + +assign mul_ln38_34_fu_3951_p0 = in2_loc_34_q0; + +assign mul_ln38_34_fu_3951_p2 = ($signed(mul_ln38_34_fu_3951_p0) * $signed(in1_loc_34_load_reg_5212)); + +assign mul_ln38_35_fu_3956_p0 = in2_loc_35_q0; + +assign mul_ln38_35_fu_3956_p2 = ($signed(mul_ln38_35_fu_3956_p0) * $signed(in1_loc_35_load_reg_5217)); + +assign mul_ln38_36_fu_3961_p0 = in2_loc_36_q0; + +assign mul_ln38_36_fu_3961_p2 = ($signed(mul_ln38_36_fu_3961_p0) * $signed(in1_loc_36_load_reg_5222)); + +assign mul_ln38_37_fu_3966_p0 = in2_loc_37_q0; + +assign mul_ln38_37_fu_3966_p2 = ($signed(mul_ln38_37_fu_3966_p0) * $signed(in1_loc_37_load_reg_5227)); + +assign mul_ln38_38_fu_3971_p0 = in2_loc_38_q0; + +assign mul_ln38_38_fu_3971_p2 = ($signed(mul_ln38_38_fu_3971_p0) * $signed(in1_loc_38_load_reg_5232)); + +assign mul_ln38_39_fu_3976_p0 = in2_loc_39_q0; + +assign mul_ln38_39_fu_3976_p2 = ($signed(mul_ln38_39_fu_3976_p0) * $signed(in1_loc_39_load_reg_5237)); + +assign mul_ln38_3_fu_3796_p0 = in2_loc_3_q0; + +assign mul_ln38_3_fu_3796_p2 = ($signed(mul_ln38_3_fu_3796_p0) * $signed(in1_loc_3_load_reg_5057)); + +assign mul_ln38_40_fu_3981_p0 = in2_loc_40_q0; + +assign mul_ln38_40_fu_3981_p2 = ($signed(mul_ln38_40_fu_3981_p0) * $signed(in1_loc_40_load_reg_5242)); + +assign mul_ln38_41_fu_3986_p0 = in2_loc_41_q0; + +assign mul_ln38_41_fu_3986_p2 = ($signed(mul_ln38_41_fu_3986_p0) * $signed(in1_loc_41_load_reg_5247)); + +assign mul_ln38_42_fu_3991_p0 = in2_loc_42_q0; + +assign mul_ln38_42_fu_3991_p2 = ($signed(mul_ln38_42_fu_3991_p0) * $signed(in1_loc_42_load_reg_5252)); + +assign mul_ln38_43_fu_3996_p0 = in2_loc_43_q0; + +assign mul_ln38_43_fu_3996_p2 = ($signed(mul_ln38_43_fu_3996_p0) * $signed(in1_loc_43_load_reg_5257)); + +assign mul_ln38_44_fu_4001_p0 = in2_loc_44_q0; + +assign mul_ln38_44_fu_4001_p2 = ($signed(mul_ln38_44_fu_4001_p0) * $signed(in1_loc_44_load_reg_5262)); + +assign mul_ln38_45_fu_4006_p0 = in2_loc_45_q0; + +assign mul_ln38_45_fu_4006_p2 = ($signed(mul_ln38_45_fu_4006_p0) * $signed(in1_loc_45_load_reg_5267)); + +assign mul_ln38_46_fu_4011_p0 = in2_loc_46_q0; + +assign mul_ln38_46_fu_4011_p2 = ($signed(mul_ln38_46_fu_4011_p0) * $signed(in1_loc_46_load_reg_5272)); + +assign mul_ln38_47_fu_4016_p0 = in2_loc_47_q0; + +assign mul_ln38_47_fu_4016_p2 = ($signed(mul_ln38_47_fu_4016_p0) * $signed(in1_loc_47_load_reg_5277)); + +assign mul_ln38_48_fu_4021_p0 = in2_loc_48_q0; + +assign mul_ln38_48_fu_4021_p2 = ($signed(mul_ln38_48_fu_4021_p0) * $signed(in1_loc_48_load_reg_5282)); + +assign mul_ln38_49_fu_4026_p0 = in2_loc_49_q0; + +assign mul_ln38_49_fu_4026_p2 = ($signed(mul_ln38_49_fu_4026_p0) * $signed(in1_loc_49_load_reg_5287)); + +assign mul_ln38_4_fu_3801_p0 = in2_loc_4_q0; + +assign mul_ln38_4_fu_3801_p2 = ($signed(mul_ln38_4_fu_3801_p0) * $signed(in1_loc_4_load_reg_5062)); + +assign mul_ln38_50_fu_4031_p0 = in2_loc_50_q0; + +assign mul_ln38_50_fu_4031_p2 = ($signed(mul_ln38_50_fu_4031_p0) * $signed(in1_loc_50_load_reg_5292)); + +assign mul_ln38_51_fu_4036_p0 = in2_loc_51_q0; + +assign mul_ln38_51_fu_4036_p2 = ($signed(mul_ln38_51_fu_4036_p0) * $signed(in1_loc_51_load_reg_5297)); + +assign mul_ln38_52_fu_4041_p0 = in2_loc_52_q0; + +assign mul_ln38_52_fu_4041_p2 = ($signed(mul_ln38_52_fu_4041_p0) * $signed(in1_loc_52_load_reg_5302)); + +assign mul_ln38_53_fu_4046_p0 = in2_loc_53_q0; + +assign mul_ln38_53_fu_4046_p2 = ($signed(mul_ln38_53_fu_4046_p0) * $signed(in1_loc_53_load_reg_5307)); + +assign mul_ln38_54_fu_4051_p0 = in2_loc_54_q0; + +assign mul_ln38_54_fu_4051_p2 = ($signed(mul_ln38_54_fu_4051_p0) * $signed(in1_loc_54_load_reg_5312)); + +assign mul_ln38_55_fu_4056_p0 = in2_loc_55_q0; + +assign mul_ln38_55_fu_4056_p2 = ($signed(mul_ln38_55_fu_4056_p0) * $signed(in1_loc_55_load_reg_5317)); + +assign mul_ln38_56_fu_4061_p0 = in2_loc_56_q0; + +assign mul_ln38_56_fu_4061_p2 = ($signed(mul_ln38_56_fu_4061_p0) * $signed(in1_loc_56_load_reg_5322)); + +assign mul_ln38_57_fu_4066_p0 = in2_loc_57_q0; + +assign mul_ln38_57_fu_4066_p2 = ($signed(mul_ln38_57_fu_4066_p0) * $signed(in1_loc_57_load_reg_5327)); + +assign mul_ln38_58_fu_4071_p0 = in2_loc_58_q0; + +assign mul_ln38_58_fu_4071_p2 = ($signed(mul_ln38_58_fu_4071_p0) * $signed(in1_loc_58_load_reg_5332)); + +assign mul_ln38_59_fu_4076_p0 = in2_loc_59_q0; + +assign mul_ln38_59_fu_4076_p2 = ($signed(mul_ln38_59_fu_4076_p0) * $signed(in1_loc_59_load_reg_5337)); + +assign mul_ln38_5_fu_3806_p0 = in2_loc_5_q0; + +assign mul_ln38_5_fu_3806_p2 = ($signed(mul_ln38_5_fu_3806_p0) * $signed(in1_loc_5_load_reg_5067)); + +assign mul_ln38_60_fu_4081_p0 = in2_loc_60_q0; + +assign mul_ln38_60_fu_4081_p2 = ($signed(mul_ln38_60_fu_4081_p0) * $signed(in1_loc_60_load_reg_5342)); + +assign mul_ln38_61_fu_4086_p0 = in2_loc_61_q0; + +assign mul_ln38_61_fu_4086_p2 = ($signed(mul_ln38_61_fu_4086_p0) * $signed(in1_loc_61_load_reg_5347)); + +assign mul_ln38_62_fu_4091_p0 = in2_loc_62_q0; + +assign mul_ln38_62_fu_4091_p2 = ($signed(mul_ln38_62_fu_4091_p0) * $signed(in1_loc_62_load_reg_5352)); + +assign mul_ln38_63_fu_4096_p0 = in2_loc_63_q0; + +assign mul_ln38_63_fu_4096_p2 = ($signed(mul_ln38_63_fu_4096_p0) * $signed(in1_loc_63_load_reg_5357)); + +assign mul_ln38_6_fu_3811_p0 = in2_loc_6_q0; + +assign mul_ln38_6_fu_3811_p2 = ($signed(mul_ln38_6_fu_3811_p0) * $signed(in1_loc_6_load_reg_5072)); + +assign mul_ln38_7_fu_3816_p0 = in2_loc_7_q0; + +assign mul_ln38_7_fu_3816_p2 = ($signed(mul_ln38_7_fu_3816_p0) * $signed(in1_loc_7_load_reg_5077)); + +assign mul_ln38_8_fu_3821_p0 = in2_loc_8_q0; + +assign mul_ln38_8_fu_3821_p2 = ($signed(mul_ln38_8_fu_3821_p0) * $signed(in1_loc_8_load_reg_5082)); + +assign mul_ln38_9_fu_3826_p0 = in2_loc_9_q0; + +assign mul_ln38_9_fu_3826_p2 = ($signed(mul_ln38_9_fu_3826_p0) * $signed(in1_loc_9_load_reg_5087)); + +assign mul_ln38_fu_3781_p0 = in2_loc_0_q0; + +assign mul_ln38_fu_3781_p2 = ($signed(mul_ln38_fu_3781_p0) * $signed(in1_loc_0_load_reg_5042)); + +assign out_loc_d0 = (add_ln38_30_fu_4438_p2 + add_ln38_62_fu_4462_p2); + +assign sext_ln38_1_fu_3776_p1 = $signed(add_ln38_64_fu_3771_p2); + +assign sext_ln38_fu_3699_p1 = j_0_reg_3328; + +assign trunc_ln27_fu_3430_p1 = phi_ln27_reg_3295[5:0]; + +assign trunc_ln28_fu_3513_p1 = phi_ln28_reg_3306[5:0]; + +assign trunc_ln38_1_fu_3767_p1 = j_0_reg_3328[13:0]; + +assign trunc_ln38_fu_3677_p1 = i_0_reg_3317[7:0]; + +assign zext_ln27_fu_3434_p1 = lshr_ln_reg_4540_pp0_iter1_reg; + +assign zext_ln28_fu_3527_p1 = trunc_ln28_reg_4626_pp1_iter1_reg; + +assign zext_ln31_fu_3594_p1 = i_0_reg_3317; + +assign zext_ln38_1_cast_fu_3681_p3 = {{trunc_ln38_reg_4712}, {6'd0}}; + +assign zext_ln38_fu_3609_p1 = i_0_reg_3317; + +assign zext_ln42_fu_4487_p1 = phi_ln42_reg_3339; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_4519[31:30] <= 2'b00; + in2_mem_addr_reg_4525[31:30] <= 2'b00; + zext_ln38_1_cast_reg_5037[5:0] <= 6'b000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_loc_0.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_loc_0.v new file mode 100755 index 0000000..7a7e881 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_loc_0.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_0_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 6; +parameter MEM_SIZE = 64; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc_0( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd64; +parameter AddressWidth = 32'd6; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_in1_loc_0_ram mmult_in1_loc_0_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_loc.v new file mode 100755 index 0000000..dedfa23 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_loc.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_out_loc_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_out_loc( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_out_loc_ram mmult_out_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..bd183ca --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult.vhd @@ -0,0 +1,9139 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=24795,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=192,HLS_SYN_FF=4685,HLS_SYN_LUT=8017,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (28 downto 0) := "00000000000100000000000000000"; + constant ap_ST_fsm_state23 : STD_LOGIC_VECTOR (28 downto 0) := "00000000001000000000000000000"; + constant ap_ST_fsm_state24 : STD_LOGIC_VECTOR (28 downto 0) := "00000000010000000000000000000"; + constant ap_ST_fsm_state25 : STD_LOGIC_VECTOR (28 downto 0) := "00000000100000000000000000000"; + constant ap_ST_fsm_state26 : STD_LOGIC_VECTOR (28 downto 0) := "00000001000000000000000000000"; + constant ap_ST_fsm_state27 : STD_LOGIC_VECTOR (28 downto 0) := "00000010000000000000000000000"; + constant ap_ST_fsm_pp2_stage0 : STD_LOGIC_VECTOR (28 downto 0) := "00000100000000000000000000000"; + constant ap_ST_fsm_state31 : STD_LOGIC_VECTOR (28 downto 0) := "00001000000000000000000000000"; + constant ap_ST_fsm_state32 : STD_LOGIC_VECTOR (28 downto 0) := "00010000000000000000000000000"; + constant ap_ST_fsm_state33 : STD_LOGIC_VECTOR (28 downto 0) := "00100000000000000000000000000"; + constant ap_ST_fsm_state34 : STD_LOGIC_VECTOR (28 downto 0) := "01000000000000000000000000000"; + constant ap_ST_fsm_state35 : STD_LOGIC_VECTOR (28 downto 0) := "10000000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_1C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011100"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv32_15 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010101"; + constant ap_const_lv32_17 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010111"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_16 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010110"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv6_3E : STD_LOGIC_VECTOR (5 downto 0) := "111110"; + constant ap_const_lv6_3D : STD_LOGIC_VECTOR (5 downto 0) := "111101"; + constant ap_const_lv6_3C : STD_LOGIC_VECTOR (5 downto 0) := "111100"; + constant ap_const_lv6_3B : STD_LOGIC_VECTOR (5 downto 0) := "111011"; + constant ap_const_lv6_3A : STD_LOGIC_VECTOR (5 downto 0) := "111010"; + constant ap_const_lv6_39 : STD_LOGIC_VECTOR (5 downto 0) := "111001"; + constant ap_const_lv6_38 : STD_LOGIC_VECTOR (5 downto 0) := "111000"; + constant ap_const_lv6_37 : STD_LOGIC_VECTOR (5 downto 0) := "110111"; + constant ap_const_lv6_36 : STD_LOGIC_VECTOR (5 downto 0) := "110110"; + constant ap_const_lv6_35 : STD_LOGIC_VECTOR (5 downto 0) := "110101"; + constant ap_const_lv6_34 : STD_LOGIC_VECTOR (5 downto 0) := "110100"; + constant ap_const_lv6_33 : STD_LOGIC_VECTOR (5 downto 0) := "110011"; + constant ap_const_lv6_32 : STD_LOGIC_VECTOR (5 downto 0) := "110010"; + constant ap_const_lv6_31 : STD_LOGIC_VECTOR (5 downto 0) := "110001"; + constant ap_const_lv6_30 : STD_LOGIC_VECTOR (5 downto 0) := "110000"; + constant ap_const_lv6_2F : STD_LOGIC_VECTOR (5 downto 0) := "101111"; + constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110"; + constant ap_const_lv6_2D : STD_LOGIC_VECTOR (5 downto 0) := "101101"; + constant ap_const_lv6_2C : STD_LOGIC_VECTOR (5 downto 0) := "101100"; + constant ap_const_lv6_2B : STD_LOGIC_VECTOR (5 downto 0) := "101011"; + constant ap_const_lv6_2A : STD_LOGIC_VECTOR (5 downto 0) := "101010"; + constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001"; + constant ap_const_lv6_28 : STD_LOGIC_VECTOR (5 downto 0) := "101000"; + constant ap_const_lv6_27 : STD_LOGIC_VECTOR (5 downto 0) := "100111"; + constant ap_const_lv6_26 : STD_LOGIC_VECTOR (5 downto 0) := "100110"; + constant ap_const_lv6_25 : STD_LOGIC_VECTOR (5 downto 0) := "100101"; + constant ap_const_lv6_24 : STD_LOGIC_VECTOR (5 downto 0) := "100100"; + constant ap_const_lv6_23 : STD_LOGIC_VECTOR (5 downto 0) := "100011"; + constant ap_const_lv6_22 : STD_LOGIC_VECTOR (5 downto 0) := "100010"; + constant ap_const_lv6_21 : STD_LOGIC_VECTOR (5 downto 0) := "100001"; + constant ap_const_lv6_20 : STD_LOGIC_VECTOR (5 downto 0) := "100000"; + constant ap_const_lv6_1F : STD_LOGIC_VECTOR (5 downto 0) := "011111"; + constant ap_const_lv6_1E : STD_LOGIC_VECTOR (5 downto 0) := "011110"; + constant ap_const_lv6_1D : STD_LOGIC_VECTOR (5 downto 0) := "011101"; + constant ap_const_lv6_1C : STD_LOGIC_VECTOR (5 downto 0) := "011100"; + constant ap_const_lv6_1B : STD_LOGIC_VECTOR (5 downto 0) := "011011"; + constant ap_const_lv6_1A : STD_LOGIC_VECTOR (5 downto 0) := "011010"; + constant ap_const_lv6_19 : STD_LOGIC_VECTOR (5 downto 0) := "011001"; + constant ap_const_lv6_18 : STD_LOGIC_VECTOR (5 downto 0) := "011000"; + constant ap_const_lv6_17 : STD_LOGIC_VECTOR (5 downto 0) := "010111"; + constant ap_const_lv6_16 : STD_LOGIC_VECTOR (5 downto 0) := "010110"; + constant ap_const_lv6_15 : STD_LOGIC_VECTOR (5 downto 0) := "010101"; + constant ap_const_lv6_14 : STD_LOGIC_VECTOR (5 downto 0) := "010100"; + constant ap_const_lv6_13 : STD_LOGIC_VECTOR (5 downto 0) := "010011"; + constant ap_const_lv6_12 : STD_LOGIC_VECTOR (5 downto 0) := "010010"; + constant ap_const_lv6_11 : STD_LOGIC_VECTOR (5 downto 0) := "010001"; + constant ap_const_lv6_10 : STD_LOGIC_VECTOR (5 downto 0) := "010000"; + constant ap_const_lv6_F : STD_LOGIC_VECTOR (5 downto 0) := "001111"; + constant ap_const_lv6_E : STD_LOGIC_VECTOR (5 downto 0) := "001110"; + constant ap_const_lv6_D : STD_LOGIC_VECTOR (5 downto 0) := "001101"; + constant ap_const_lv6_C : STD_LOGIC_VECTOR (5 downto 0) := "001100"; + constant ap_const_lv6_B : STD_LOGIC_VECTOR (5 downto 0) := "001011"; + constant ap_const_lv6_A : STD_LOGIC_VECTOR (5 downto 0) := "001010"; + constant ap_const_lv6_9 : STD_LOGIC_VECTOR (5 downto 0) := "001001"; + constant ap_const_lv6_8 : STD_LOGIC_VECTOR (5 downto 0) := "001000"; + constant ap_const_lv6_7 : STD_LOGIC_VECTOR (5 downto 0) := "000111"; + constant ap_const_lv6_6 : STD_LOGIC_VECTOR (5 downto 0) := "000110"; + constant ap_const_lv6_5 : STD_LOGIC_VECTOR (5 downto 0) := "000101"; + constant ap_const_lv6_4 : STD_LOGIC_VECTOR (5 downto 0) := "000100"; + constant ap_const_lv6_3 : STD_LOGIC_VECTOR (5 downto 0) := "000011"; + constant ap_const_lv6_2 : STD_LOGIC_VECTOR (5 downto 0) := "000010"; + constant ap_const_lv6_1 : STD_LOGIC_VECTOR (5 downto 0) := "000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv6_3F : STD_LOGIC_VECTOR (5 downto 0) := "111111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv32_6 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000110"; + constant ap_const_lv32_C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001100"; + constant ap_const_lv32_B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001011"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (28 downto 0) := "00000000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state23 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state23 : signal is "none"; + signal icmp_ln31_fu_3598_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp2_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0 : BOOLEAN; + signal icmp_ln42_reg_5750 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_5750_pp2_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state35 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state35 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_3295 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_3306 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln42_reg_3339 : STD_LOGIC_VECTOR (12 downto 0); + signal dim_read_reg_4492 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_4498 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_4503 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_4508 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_4519 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_4525 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_3408_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal add_ln27_fu_3414_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal lshr_ln_reg_4540 : STD_LOGIC_VECTOR (6 downto 0); + signal lshr_ln_reg_4540_pp0_iter1_reg : STD_LOGIC_VECTOR (6 downto 0); + signal trunc_ln27_fu_3430_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4545 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4545_pp0_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in1_mem_addr_read_reg_4549 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_3501_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal add_ln28_fu_3507_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal trunc_ln28_fu_3513_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4626 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4626_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4631 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4631_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in2_mem_addr_read_reg_4635 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_block_state23_io : BOOLEAN; + signal i_fu_3603_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal i_reg_4707 : STD_LOGIC_VECTOR (30 downto 0); + signal trunc_ln38_fu_3677_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal trunc_ln38_reg_4712 : STD_LOGIC_VECTOR (7 downto 0); + signal zext_ln38_1_cast_fu_3681_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal zext_ln38_1_cast_reg_5037 : STD_LOGIC_VECTOR (13 downto 0); + signal ap_CS_fsm_state24 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state24 : signal is "none"; + signal in1_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_0_load_reg_5042 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_1_load_reg_5047 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_load_reg_5052 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_load_reg_5057 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_load_reg_5062 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_load_reg_5067 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_load_reg_5072 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_load_reg_5077 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_load_reg_5082 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_load_reg_5087 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_load_reg_5092 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_load_reg_5097 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_load_reg_5102 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_load_reg_5107 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_load_reg_5112 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_load_reg_5117 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_load_reg_5122 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_load_reg_5127 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_load_reg_5132 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_load_reg_5137 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_load_reg_5142 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_load_reg_5147 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_load_reg_5152 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_load_reg_5157 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_load_reg_5162 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_load_reg_5167 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_load_reg_5172 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_load_reg_5177 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_load_reg_5182 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_load_reg_5187 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_load_reg_5192 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_load_reg_5197 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_load_reg_5202 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_load_reg_5207 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_load_reg_5212 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_load_reg_5217 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_load_reg_5222 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_load_reg_5227 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_load_reg_5232 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_load_reg_5237 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_load_reg_5242 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_load_reg_5247 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_load_reg_5252 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_load_reg_5257 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_load_reg_5262 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_load_reg_5267 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_load_reg_5272 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_load_reg_5277 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_load_reg_5282 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_load_reg_5287 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_load_reg_5292 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_load_reg_5297 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_load_reg_5302 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_load_reg_5307 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_load_reg_5312 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_load_reg_5317 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_load_reg_5322 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_load_reg_5327 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_load_reg_5332 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_load_reg_5337 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_load_reg_5342 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_load_reg_5347 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_load_reg_5352 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_load_reg_5357 : STD_LOGIC_VECTOR (31 downto 0); + signal j_fu_3693_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal j_reg_5365 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state25 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state25 : signal is "none"; + signal out_loc_addr_reg_5370 : STD_LOGIC_VECTOR (11 downto 0); + signal icmp_ln33_fu_3688_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln38_6_fu_4137_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_reg_5695 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state26 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state26 : signal is "none"; + signal add_ln38_9_fu_4155_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_reg_5700 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_fu_4173_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_reg_5705 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_fu_4215_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_reg_5710 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_fu_4257_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_reg_5715 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_fu_4299_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_reg_5720 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_fu_4317_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_reg_5725 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_fu_4335_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_reg_5730 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_fu_4377_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_reg_5735 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_fu_4395_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_reg_5740 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_fu_4419_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_reg_5745 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln42_fu_4475_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp2_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp2_stage0 : signal is "none"; + signal ap_block_state28_pp2_stage0_iter0 : BOOLEAN; + signal ap_block_state29_pp2_stage0_iter1 : BOOLEAN; + signal ap_block_state30_pp2_stage0_iter2 : BOOLEAN; + signal ap_block_state30_io : BOOLEAN; + signal ap_block_pp2_stage0_11001 : BOOLEAN; + signal add_ln42_fu_4481_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp2_iter0 : STD_LOGIC := '0'; + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_load_reg_5764 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0_subdone : BOOLEAN; + signal ap_condition_pp2_exit_iter0_state28 : STD_LOGIC; + signal in1_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_0_ce0 : STD_LOGIC; + signal in1_loc_0_we0 : STD_LOGIC; + signal in1_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_1_ce0 : STD_LOGIC; + signal in1_loc_1_we0 : STD_LOGIC; + signal in1_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_2_ce0 : STD_LOGIC; + signal in1_loc_2_we0 : STD_LOGIC; + signal in1_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_3_ce0 : STD_LOGIC; + signal in1_loc_3_we0 : STD_LOGIC; + signal in1_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_4_ce0 : STD_LOGIC; + signal in1_loc_4_we0 : STD_LOGIC; + signal in1_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_5_ce0 : STD_LOGIC; + signal in1_loc_5_we0 : STD_LOGIC; + signal in1_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_6_ce0 : STD_LOGIC; + signal in1_loc_6_we0 : STD_LOGIC; + signal in1_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_7_ce0 : STD_LOGIC; + signal in1_loc_7_we0 : STD_LOGIC; + signal in1_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_8_ce0 : STD_LOGIC; + signal in1_loc_8_we0 : STD_LOGIC; + signal in1_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_9_ce0 : STD_LOGIC; + signal in1_loc_9_we0 : STD_LOGIC; + signal in1_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_10_ce0 : STD_LOGIC; + signal in1_loc_10_we0 : STD_LOGIC; + signal in1_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_11_ce0 : STD_LOGIC; + signal in1_loc_11_we0 : STD_LOGIC; + signal in1_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_12_ce0 : STD_LOGIC; + signal in1_loc_12_we0 : STD_LOGIC; + signal in1_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_13_ce0 : STD_LOGIC; + signal in1_loc_13_we0 : STD_LOGIC; + signal in1_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_14_ce0 : STD_LOGIC; + signal in1_loc_14_we0 : STD_LOGIC; + signal in1_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_15_ce0 : STD_LOGIC; + signal in1_loc_15_we0 : STD_LOGIC; + signal in1_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_16_ce0 : STD_LOGIC; + signal in1_loc_16_we0 : STD_LOGIC; + signal in1_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_17_ce0 : STD_LOGIC; + signal in1_loc_17_we0 : STD_LOGIC; + signal in1_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_18_ce0 : STD_LOGIC; + signal in1_loc_18_we0 : STD_LOGIC; + signal in1_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_19_ce0 : STD_LOGIC; + signal in1_loc_19_we0 : STD_LOGIC; + signal in1_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_20_ce0 : STD_LOGIC; + signal in1_loc_20_we0 : STD_LOGIC; + signal in1_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_21_ce0 : STD_LOGIC; + signal in1_loc_21_we0 : STD_LOGIC; + signal in1_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_22_ce0 : STD_LOGIC; + signal in1_loc_22_we0 : STD_LOGIC; + signal in1_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_23_ce0 : STD_LOGIC; + signal in1_loc_23_we0 : STD_LOGIC; + signal in1_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_24_ce0 : STD_LOGIC; + signal in1_loc_24_we0 : STD_LOGIC; + signal in1_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_25_ce0 : STD_LOGIC; + signal in1_loc_25_we0 : STD_LOGIC; + signal in1_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_26_ce0 : STD_LOGIC; + signal in1_loc_26_we0 : STD_LOGIC; + signal in1_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_27_ce0 : STD_LOGIC; + signal in1_loc_27_we0 : STD_LOGIC; + signal in1_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_28_ce0 : STD_LOGIC; + signal in1_loc_28_we0 : STD_LOGIC; + signal in1_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_29_ce0 : STD_LOGIC; + signal in1_loc_29_we0 : STD_LOGIC; + signal in1_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_30_ce0 : STD_LOGIC; + signal in1_loc_30_we0 : STD_LOGIC; + signal in1_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_31_ce0 : STD_LOGIC; + signal in1_loc_31_we0 : STD_LOGIC; + signal in1_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_32_ce0 : STD_LOGIC; + signal in1_loc_32_we0 : STD_LOGIC; + signal in1_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_33_ce0 : STD_LOGIC; + signal in1_loc_33_we0 : STD_LOGIC; + signal in1_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_34_ce0 : STD_LOGIC; + signal in1_loc_34_we0 : STD_LOGIC; + signal in1_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_35_ce0 : STD_LOGIC; + signal in1_loc_35_we0 : STD_LOGIC; + signal in1_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_36_ce0 : STD_LOGIC; + signal in1_loc_36_we0 : STD_LOGIC; + signal in1_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_37_ce0 : STD_LOGIC; + signal in1_loc_37_we0 : STD_LOGIC; + signal in1_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_38_ce0 : STD_LOGIC; + signal in1_loc_38_we0 : STD_LOGIC; + signal in1_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_39_ce0 : STD_LOGIC; + signal in1_loc_39_we0 : STD_LOGIC; + signal in1_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_40_ce0 : STD_LOGIC; + signal in1_loc_40_we0 : STD_LOGIC; + signal in1_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_41_ce0 : STD_LOGIC; + signal in1_loc_41_we0 : STD_LOGIC; + signal in1_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_42_ce0 : STD_LOGIC; + signal in1_loc_42_we0 : STD_LOGIC; + signal in1_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_43_ce0 : STD_LOGIC; + signal in1_loc_43_we0 : STD_LOGIC; + signal in1_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_44_ce0 : STD_LOGIC; + signal in1_loc_44_we0 : STD_LOGIC; + signal in1_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_45_ce0 : STD_LOGIC; + signal in1_loc_45_we0 : STD_LOGIC; + signal in1_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_46_ce0 : STD_LOGIC; + signal in1_loc_46_we0 : STD_LOGIC; + signal in1_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_47_ce0 : STD_LOGIC; + signal in1_loc_47_we0 : STD_LOGIC; + signal in1_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_48_ce0 : STD_LOGIC; + signal in1_loc_48_we0 : STD_LOGIC; + signal in1_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_49_ce0 : STD_LOGIC; + signal in1_loc_49_we0 : STD_LOGIC; + signal in1_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_50_ce0 : STD_LOGIC; + signal in1_loc_50_we0 : STD_LOGIC; + signal in1_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_51_ce0 : STD_LOGIC; + signal in1_loc_51_we0 : STD_LOGIC; + signal in1_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_52_ce0 : STD_LOGIC; + signal in1_loc_52_we0 : STD_LOGIC; + signal in1_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_53_ce0 : STD_LOGIC; + signal in1_loc_53_we0 : STD_LOGIC; + signal in1_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_54_ce0 : STD_LOGIC; + signal in1_loc_54_we0 : STD_LOGIC; + signal in1_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_55_ce0 : STD_LOGIC; + signal in1_loc_55_we0 : STD_LOGIC; + signal in1_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_56_ce0 : STD_LOGIC; + signal in1_loc_56_we0 : STD_LOGIC; + signal in1_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_57_ce0 : STD_LOGIC; + signal in1_loc_57_we0 : STD_LOGIC; + signal in1_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_58_ce0 : STD_LOGIC; + signal in1_loc_58_we0 : STD_LOGIC; + signal in1_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_59_ce0 : STD_LOGIC; + signal in1_loc_59_we0 : STD_LOGIC; + signal in1_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_60_ce0 : STD_LOGIC; + signal in1_loc_60_we0 : STD_LOGIC; + signal in1_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_61_ce0 : STD_LOGIC; + signal in1_loc_61_we0 : STD_LOGIC; + signal in1_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_62_ce0 : STD_LOGIC; + signal in1_loc_62_we0 : STD_LOGIC; + signal in1_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_63_ce0 : STD_LOGIC; + signal in1_loc_63_we0 : STD_LOGIC; + signal in2_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_0_ce0 : STD_LOGIC; + signal in2_loc_0_we0 : STD_LOGIC; + signal in2_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_1_ce0 : STD_LOGIC; + signal in2_loc_1_we0 : STD_LOGIC; + signal in2_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_2_ce0 : STD_LOGIC; + signal in2_loc_2_we0 : STD_LOGIC; + signal in2_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_3_ce0 : STD_LOGIC; + signal in2_loc_3_we0 : STD_LOGIC; + signal in2_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_4_ce0 : STD_LOGIC; + signal in2_loc_4_we0 : STD_LOGIC; + signal in2_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_5_ce0 : STD_LOGIC; + signal in2_loc_5_we0 : STD_LOGIC; + signal in2_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_6_ce0 : STD_LOGIC; + signal in2_loc_6_we0 : STD_LOGIC; + signal in2_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_7_ce0 : STD_LOGIC; + signal in2_loc_7_we0 : STD_LOGIC; + signal in2_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_8_ce0 : STD_LOGIC; + signal in2_loc_8_we0 : STD_LOGIC; + signal in2_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_9_ce0 : STD_LOGIC; + signal in2_loc_9_we0 : STD_LOGIC; + signal in2_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_10_ce0 : STD_LOGIC; + signal in2_loc_10_we0 : STD_LOGIC; + signal in2_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_11_ce0 : STD_LOGIC; + signal in2_loc_11_we0 : STD_LOGIC; + signal in2_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_12_ce0 : STD_LOGIC; + signal in2_loc_12_we0 : STD_LOGIC; + signal in2_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_13_ce0 : STD_LOGIC; + signal in2_loc_13_we0 : STD_LOGIC; + signal in2_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_14_ce0 : STD_LOGIC; + signal in2_loc_14_we0 : STD_LOGIC; + signal in2_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_15_ce0 : STD_LOGIC; + signal in2_loc_15_we0 : STD_LOGIC; + signal in2_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_16_ce0 : STD_LOGIC; + signal in2_loc_16_we0 : STD_LOGIC; + signal in2_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_17_ce0 : STD_LOGIC; + signal in2_loc_17_we0 : STD_LOGIC; + signal in2_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_18_ce0 : STD_LOGIC; + signal in2_loc_18_we0 : STD_LOGIC; + signal in2_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_19_ce0 : STD_LOGIC; + signal in2_loc_19_we0 : STD_LOGIC; + signal in2_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_20_ce0 : STD_LOGIC; + signal in2_loc_20_we0 : STD_LOGIC; + signal in2_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_21_ce0 : STD_LOGIC; + signal in2_loc_21_we0 : STD_LOGIC; + signal in2_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_22_ce0 : STD_LOGIC; + signal in2_loc_22_we0 : STD_LOGIC; + signal in2_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_23_ce0 : STD_LOGIC; + signal in2_loc_23_we0 : STD_LOGIC; + signal in2_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_24_ce0 : STD_LOGIC; + signal in2_loc_24_we0 : STD_LOGIC; + signal in2_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_25_ce0 : STD_LOGIC; + signal in2_loc_25_we0 : STD_LOGIC; + signal in2_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_26_ce0 : STD_LOGIC; + signal in2_loc_26_we0 : STD_LOGIC; + signal in2_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_27_ce0 : STD_LOGIC; + signal in2_loc_27_we0 : STD_LOGIC; + signal in2_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_28_ce0 : STD_LOGIC; + signal in2_loc_28_we0 : STD_LOGIC; + signal in2_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_29_ce0 : STD_LOGIC; + signal in2_loc_29_we0 : STD_LOGIC; + signal in2_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_30_ce0 : STD_LOGIC; + signal in2_loc_30_we0 : STD_LOGIC; + signal in2_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_31_ce0 : STD_LOGIC; + signal in2_loc_31_we0 : STD_LOGIC; + signal in2_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_32_ce0 : STD_LOGIC; + signal in2_loc_32_we0 : STD_LOGIC; + signal in2_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_33_ce0 : STD_LOGIC; + signal in2_loc_33_we0 : STD_LOGIC; + signal in2_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_34_ce0 : STD_LOGIC; + signal in2_loc_34_we0 : STD_LOGIC; + signal in2_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_35_ce0 : STD_LOGIC; + signal in2_loc_35_we0 : STD_LOGIC; + signal in2_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_36_ce0 : STD_LOGIC; + signal in2_loc_36_we0 : STD_LOGIC; + signal in2_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_37_ce0 : STD_LOGIC; + signal in2_loc_37_we0 : STD_LOGIC; + signal in2_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_38_ce0 : STD_LOGIC; + signal in2_loc_38_we0 : STD_LOGIC; + signal in2_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_39_ce0 : STD_LOGIC; + signal in2_loc_39_we0 : STD_LOGIC; + signal in2_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_40_ce0 : STD_LOGIC; + signal in2_loc_40_we0 : STD_LOGIC; + signal in2_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_41_ce0 : STD_LOGIC; + signal in2_loc_41_we0 : STD_LOGIC; + signal in2_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_42_ce0 : STD_LOGIC; + signal in2_loc_42_we0 : STD_LOGIC; + signal in2_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_43_ce0 : STD_LOGIC; + signal in2_loc_43_we0 : STD_LOGIC; + signal in2_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_44_ce0 : STD_LOGIC; + signal in2_loc_44_we0 : STD_LOGIC; + signal in2_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_45_ce0 : STD_LOGIC; + signal in2_loc_45_we0 : STD_LOGIC; + signal in2_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_46_ce0 : STD_LOGIC; + signal in2_loc_46_we0 : STD_LOGIC; + signal in2_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_47_ce0 : STD_LOGIC; + signal in2_loc_47_we0 : STD_LOGIC; + signal in2_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_48_ce0 : STD_LOGIC; + signal in2_loc_48_we0 : STD_LOGIC; + signal in2_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_49_ce0 : STD_LOGIC; + signal in2_loc_49_we0 : STD_LOGIC; + signal in2_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_50_ce0 : STD_LOGIC; + signal in2_loc_50_we0 : STD_LOGIC; + signal in2_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_51_ce0 : STD_LOGIC; + signal in2_loc_51_we0 : STD_LOGIC; + signal in2_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_52_ce0 : STD_LOGIC; + signal in2_loc_52_we0 : STD_LOGIC; + signal in2_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_53_ce0 : STD_LOGIC; + signal in2_loc_53_we0 : STD_LOGIC; + signal in2_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_54_ce0 : STD_LOGIC; + signal in2_loc_54_we0 : STD_LOGIC; + signal in2_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_55_ce0 : STD_LOGIC; + signal in2_loc_55_we0 : STD_LOGIC; + signal in2_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_56_ce0 : STD_LOGIC; + signal in2_loc_56_we0 : STD_LOGIC; + signal in2_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_57_ce0 : STD_LOGIC; + signal in2_loc_57_we0 : STD_LOGIC; + signal in2_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_58_ce0 : STD_LOGIC; + signal in2_loc_58_we0 : STD_LOGIC; + signal in2_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_59_ce0 : STD_LOGIC; + signal in2_loc_59_we0 : STD_LOGIC; + signal in2_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_60_ce0 : STD_LOGIC; + signal in2_loc_60_we0 : STD_LOGIC; + signal in2_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_61_ce0 : STD_LOGIC; + signal in2_loc_61_we0 : STD_LOGIC; + signal in2_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_62_ce0 : STD_LOGIC; + signal in2_loc_62_we0 : STD_LOGIC; + signal in2_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_63_ce0 : STD_LOGIC; + signal in2_loc_63_we0 : STD_LOGIC; + signal in2_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_we0 : STD_LOGIC; + signal out_loc_d0 : STD_LOGIC_VECTOR (31 downto 0); + signal i_0_reg_3317 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal j_0_reg_3328 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state27 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state27 : signal is "none"; + signal zext_ln27_fu_3434_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_3527_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_fu_3609_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_1_fu_3776_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_3699_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_4487_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_8_fu_3380_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_3390_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_7_fu_3399_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp2_stage0_01001 : BOOLEAN; + signal zext_ln31_fu_3594_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal trunc_ln38_1_fu_3767_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_64_fu_3771_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_fu_3781_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3786_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3791_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3796_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3801_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3806_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3811_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3816_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3821_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3826_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3831_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3836_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3841_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3846_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3851_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3856_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3861_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3866_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3871_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3876_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3881_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3886_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3891_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3896_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3901_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3906_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3911_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3916_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3921_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3926_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_3931_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_3936_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_3941_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_3946_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_3951_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_3956_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_3961_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_3966_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_3971_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_3976_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_3981_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_3986_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_3991_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_3996_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_4001_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4006_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4011_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_4016_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_4021_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_4026_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_4031_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_4036_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4041_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4046_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4051_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4056_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4061_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4066_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4071_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4076_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4081_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4086_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4091_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4096_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_3781_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3791_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3786_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_fu_4101_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_1_fu_4107_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3801_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3796_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3811_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3806_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_fu_4119_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_fu_4125_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_fu_4113_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_5_fu_4131_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3821_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3816_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3831_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3826_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_fu_4143_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_8_fu_4149_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3841_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3836_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3851_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3846_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_fu_4161_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_11_fu_4167_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3861_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3856_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3871_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3866_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_fu_4179_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_16_fu_4185_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3881_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3876_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3891_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3886_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_fu_4197_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_fu_4203_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_fu_4191_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_20_fu_4209_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3901_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3896_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3911_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3906_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_fu_4221_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_23_fu_4227_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3921_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3916_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_3931_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3926_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_fu_4239_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_fu_4245_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_fu_4233_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_27_fu_4251_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_3941_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_3936_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_3951_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_3946_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_fu_4263_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_32_fu_4269_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_3961_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_3956_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_3971_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_3966_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_fu_4281_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_fu_4287_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_fu_4275_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_36_fu_4293_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_3981_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_3976_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_3991_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_3986_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_fu_4305_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_39_fu_4311_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_4001_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_3996_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4011_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4006_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_fu_4323_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_42_fu_4329_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_4021_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_4016_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_4031_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_4026_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_fu_4341_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_47_fu_4347_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4041_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_4036_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4051_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4046_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_fu_4359_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_fu_4365_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_fu_4353_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_51_fu_4371_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4061_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4056_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4071_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4066_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_fu_4383_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_54_fu_4389_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4081_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4076_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4096_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4091_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4086_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_fu_4407_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_fu_4401_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_58_fu_4413_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_13_fu_4425_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_fu_4429_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_29_fu_4434_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_44_fu_4444_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_60_fu_4453_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_fu_4448_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_fu_4457_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_fu_4438_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_62_fu_4462_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (28 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp2 : STD_LOGIC; + signal ap_enable_pp2 : STD_LOGIC; + + component mmult_in1_loc_0 IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (5 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_out_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_4525, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_4519, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => out_loc_load_reg_5764, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_0_address0, + ce0 => in1_loc_0_ce0, + we0 => in1_loc_0_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_0_q0); + + in1_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_1_address0, + ce0 => in1_loc_1_ce0, + we0 => in1_loc_1_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_1_q0); + + in1_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_2_address0, + ce0 => in1_loc_2_ce0, + we0 => in1_loc_2_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_2_q0); + + in1_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_3_address0, + ce0 => in1_loc_3_ce0, + we0 => in1_loc_3_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_3_q0); + + in1_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_4_address0, + ce0 => in1_loc_4_ce0, + we0 => in1_loc_4_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_4_q0); + + in1_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_5_address0, + ce0 => in1_loc_5_ce0, + we0 => in1_loc_5_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_5_q0); + + in1_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_6_address0, + ce0 => in1_loc_6_ce0, + we0 => in1_loc_6_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_6_q0); + + in1_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_7_address0, + ce0 => in1_loc_7_ce0, + we0 => in1_loc_7_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_7_q0); + + in1_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_8_address0, + ce0 => in1_loc_8_ce0, + we0 => in1_loc_8_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_8_q0); + + in1_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_9_address0, + ce0 => in1_loc_9_ce0, + we0 => in1_loc_9_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_9_q0); + + in1_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_10_address0, + ce0 => in1_loc_10_ce0, + we0 => in1_loc_10_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_10_q0); + + in1_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_11_address0, + ce0 => in1_loc_11_ce0, + we0 => in1_loc_11_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_11_q0); + + in1_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_12_address0, + ce0 => in1_loc_12_ce0, + we0 => in1_loc_12_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_12_q0); + + in1_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_13_address0, + ce0 => in1_loc_13_ce0, + we0 => in1_loc_13_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_13_q0); + + in1_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_14_address0, + ce0 => in1_loc_14_ce0, + we0 => in1_loc_14_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_14_q0); + + in1_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_15_address0, + ce0 => in1_loc_15_ce0, + we0 => in1_loc_15_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_15_q0); + + in1_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_16_address0, + ce0 => in1_loc_16_ce0, + we0 => in1_loc_16_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_16_q0); + + in1_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_17_address0, + ce0 => in1_loc_17_ce0, + we0 => in1_loc_17_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_17_q0); + + in1_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_18_address0, + ce0 => in1_loc_18_ce0, + we0 => in1_loc_18_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_18_q0); + + in1_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_19_address0, + ce0 => in1_loc_19_ce0, + we0 => in1_loc_19_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_19_q0); + + in1_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_20_address0, + ce0 => in1_loc_20_ce0, + we0 => in1_loc_20_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_20_q0); + + in1_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_21_address0, + ce0 => in1_loc_21_ce0, + we0 => in1_loc_21_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_21_q0); + + in1_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_22_address0, + ce0 => in1_loc_22_ce0, + we0 => in1_loc_22_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_22_q0); + + in1_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_23_address0, + ce0 => in1_loc_23_ce0, + we0 => in1_loc_23_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_23_q0); + + in1_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_24_address0, + ce0 => in1_loc_24_ce0, + we0 => in1_loc_24_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_24_q0); + + in1_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_25_address0, + ce0 => in1_loc_25_ce0, + we0 => in1_loc_25_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_25_q0); + + in1_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_26_address0, + ce0 => in1_loc_26_ce0, + we0 => in1_loc_26_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_26_q0); + + in1_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_27_address0, + ce0 => in1_loc_27_ce0, + we0 => in1_loc_27_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_27_q0); + + in1_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_28_address0, + ce0 => in1_loc_28_ce0, + we0 => in1_loc_28_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_28_q0); + + in1_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_29_address0, + ce0 => in1_loc_29_ce0, + we0 => in1_loc_29_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_29_q0); + + in1_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_30_address0, + ce0 => in1_loc_30_ce0, + we0 => in1_loc_30_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_30_q0); + + in1_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_31_address0, + ce0 => in1_loc_31_ce0, + we0 => in1_loc_31_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_31_q0); + + in1_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_32_address0, + ce0 => in1_loc_32_ce0, + we0 => in1_loc_32_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_32_q0); + + in1_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_33_address0, + ce0 => in1_loc_33_ce0, + we0 => in1_loc_33_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_33_q0); + + in1_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_34_address0, + ce0 => in1_loc_34_ce0, + we0 => in1_loc_34_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_34_q0); + + in1_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_35_address0, + ce0 => in1_loc_35_ce0, + we0 => in1_loc_35_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_35_q0); + + in1_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_36_address0, + ce0 => in1_loc_36_ce0, + we0 => in1_loc_36_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_36_q0); + + in1_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_37_address0, + ce0 => in1_loc_37_ce0, + we0 => in1_loc_37_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_37_q0); + + in1_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_38_address0, + ce0 => in1_loc_38_ce0, + we0 => in1_loc_38_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_38_q0); + + in1_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_39_address0, + ce0 => in1_loc_39_ce0, + we0 => in1_loc_39_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_39_q0); + + in1_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_40_address0, + ce0 => in1_loc_40_ce0, + we0 => in1_loc_40_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_40_q0); + + in1_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_41_address0, + ce0 => in1_loc_41_ce0, + we0 => in1_loc_41_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_41_q0); + + in1_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_42_address0, + ce0 => in1_loc_42_ce0, + we0 => in1_loc_42_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_42_q0); + + in1_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_43_address0, + ce0 => in1_loc_43_ce0, + we0 => in1_loc_43_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_43_q0); + + in1_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_44_address0, + ce0 => in1_loc_44_ce0, + we0 => in1_loc_44_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_44_q0); + + in1_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_45_address0, + ce0 => in1_loc_45_ce0, + we0 => in1_loc_45_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_45_q0); + + in1_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_46_address0, + ce0 => in1_loc_46_ce0, + we0 => in1_loc_46_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_46_q0); + + in1_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_47_address0, + ce0 => in1_loc_47_ce0, + we0 => in1_loc_47_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_47_q0); + + in1_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_48_address0, + ce0 => in1_loc_48_ce0, + we0 => in1_loc_48_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_48_q0); + + in1_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_49_address0, + ce0 => in1_loc_49_ce0, + we0 => in1_loc_49_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_49_q0); + + in1_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_50_address0, + ce0 => in1_loc_50_ce0, + we0 => in1_loc_50_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_50_q0); + + in1_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_51_address0, + ce0 => in1_loc_51_ce0, + we0 => in1_loc_51_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_51_q0); + + in1_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_52_address0, + ce0 => in1_loc_52_ce0, + we0 => in1_loc_52_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_52_q0); + + in1_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_53_address0, + ce0 => in1_loc_53_ce0, + we0 => in1_loc_53_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_53_q0); + + in1_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_54_address0, + ce0 => in1_loc_54_ce0, + we0 => in1_loc_54_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_54_q0); + + in1_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_55_address0, + ce0 => in1_loc_55_ce0, + we0 => in1_loc_55_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_55_q0); + + in1_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_56_address0, + ce0 => in1_loc_56_ce0, + we0 => in1_loc_56_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_56_q0); + + in1_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_57_address0, + ce0 => in1_loc_57_ce0, + we0 => in1_loc_57_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_57_q0); + + in1_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_58_address0, + ce0 => in1_loc_58_ce0, + we0 => in1_loc_58_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_58_q0); + + in1_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_59_address0, + ce0 => in1_loc_59_ce0, + we0 => in1_loc_59_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_59_q0); + + in1_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_60_address0, + ce0 => in1_loc_60_ce0, + we0 => in1_loc_60_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_60_q0); + + in1_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_61_address0, + ce0 => in1_loc_61_ce0, + we0 => in1_loc_61_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_61_q0); + + in1_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_62_address0, + ce0 => in1_loc_62_ce0, + we0 => in1_loc_62_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_62_q0); + + in1_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_63_address0, + ce0 => in1_loc_63_ce0, + we0 => in1_loc_63_we0, + d0 => in1_mem_addr_read_reg_4549, + q0 => in1_loc_63_q0); + + in2_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_0_address0, + ce0 => in2_loc_0_ce0, + we0 => in2_loc_0_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_0_q0); + + in2_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_1_address0, + ce0 => in2_loc_1_ce0, + we0 => in2_loc_1_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_1_q0); + + in2_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_2_address0, + ce0 => in2_loc_2_ce0, + we0 => in2_loc_2_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_2_q0); + + in2_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_3_address0, + ce0 => in2_loc_3_ce0, + we0 => in2_loc_3_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_3_q0); + + in2_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_4_address0, + ce0 => in2_loc_4_ce0, + we0 => in2_loc_4_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_4_q0); + + in2_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_5_address0, + ce0 => in2_loc_5_ce0, + we0 => in2_loc_5_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_5_q0); + + in2_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_6_address0, + ce0 => in2_loc_6_ce0, + we0 => in2_loc_6_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_6_q0); + + in2_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_7_address0, + ce0 => in2_loc_7_ce0, + we0 => in2_loc_7_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_7_q0); + + in2_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_8_address0, + ce0 => in2_loc_8_ce0, + we0 => in2_loc_8_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_8_q0); + + in2_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_9_address0, + ce0 => in2_loc_9_ce0, + we0 => in2_loc_9_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_9_q0); + + in2_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_10_address0, + ce0 => in2_loc_10_ce0, + we0 => in2_loc_10_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_10_q0); + + in2_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_11_address0, + ce0 => in2_loc_11_ce0, + we0 => in2_loc_11_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_11_q0); + + in2_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_12_address0, + ce0 => in2_loc_12_ce0, + we0 => in2_loc_12_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_12_q0); + + in2_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_13_address0, + ce0 => in2_loc_13_ce0, + we0 => in2_loc_13_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_13_q0); + + in2_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_14_address0, + ce0 => in2_loc_14_ce0, + we0 => in2_loc_14_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_14_q0); + + in2_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_15_address0, + ce0 => in2_loc_15_ce0, + we0 => in2_loc_15_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_15_q0); + + in2_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_16_address0, + ce0 => in2_loc_16_ce0, + we0 => in2_loc_16_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_16_q0); + + in2_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_17_address0, + ce0 => in2_loc_17_ce0, + we0 => in2_loc_17_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_17_q0); + + in2_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_18_address0, + ce0 => in2_loc_18_ce0, + we0 => in2_loc_18_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_18_q0); + + in2_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_19_address0, + ce0 => in2_loc_19_ce0, + we0 => in2_loc_19_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_19_q0); + + in2_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_20_address0, + ce0 => in2_loc_20_ce0, + we0 => in2_loc_20_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_20_q0); + + in2_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_21_address0, + ce0 => in2_loc_21_ce0, + we0 => in2_loc_21_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_21_q0); + + in2_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_22_address0, + ce0 => in2_loc_22_ce0, + we0 => in2_loc_22_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_22_q0); + + in2_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_23_address0, + ce0 => in2_loc_23_ce0, + we0 => in2_loc_23_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_23_q0); + + in2_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_24_address0, + ce0 => in2_loc_24_ce0, + we0 => in2_loc_24_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_24_q0); + + in2_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_25_address0, + ce0 => in2_loc_25_ce0, + we0 => in2_loc_25_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_25_q0); + + in2_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_26_address0, + ce0 => in2_loc_26_ce0, + we0 => in2_loc_26_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_26_q0); + + in2_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_27_address0, + ce0 => in2_loc_27_ce0, + we0 => in2_loc_27_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_27_q0); + + in2_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_28_address0, + ce0 => in2_loc_28_ce0, + we0 => in2_loc_28_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_28_q0); + + in2_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_29_address0, + ce0 => in2_loc_29_ce0, + we0 => in2_loc_29_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_29_q0); + + in2_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_30_address0, + ce0 => in2_loc_30_ce0, + we0 => in2_loc_30_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_30_q0); + + in2_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_31_address0, + ce0 => in2_loc_31_ce0, + we0 => in2_loc_31_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_31_q0); + + in2_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_32_address0, + ce0 => in2_loc_32_ce0, + we0 => in2_loc_32_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_32_q0); + + in2_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_33_address0, + ce0 => in2_loc_33_ce0, + we0 => in2_loc_33_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_33_q0); + + in2_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_34_address0, + ce0 => in2_loc_34_ce0, + we0 => in2_loc_34_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_34_q0); + + in2_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_35_address0, + ce0 => in2_loc_35_ce0, + we0 => in2_loc_35_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_35_q0); + + in2_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_36_address0, + ce0 => in2_loc_36_ce0, + we0 => in2_loc_36_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_36_q0); + + in2_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_37_address0, + ce0 => in2_loc_37_ce0, + we0 => in2_loc_37_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_37_q0); + + in2_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_38_address0, + ce0 => in2_loc_38_ce0, + we0 => in2_loc_38_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_38_q0); + + in2_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_39_address0, + ce0 => in2_loc_39_ce0, + we0 => in2_loc_39_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_39_q0); + + in2_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_40_address0, + ce0 => in2_loc_40_ce0, + we0 => in2_loc_40_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_40_q0); + + in2_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_41_address0, + ce0 => in2_loc_41_ce0, + we0 => in2_loc_41_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_41_q0); + + in2_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_42_address0, + ce0 => in2_loc_42_ce0, + we0 => in2_loc_42_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_42_q0); + + in2_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_43_address0, + ce0 => in2_loc_43_ce0, + we0 => in2_loc_43_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_43_q0); + + in2_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_44_address0, + ce0 => in2_loc_44_ce0, + we0 => in2_loc_44_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_44_q0); + + in2_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_45_address0, + ce0 => in2_loc_45_ce0, + we0 => in2_loc_45_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_45_q0); + + in2_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_46_address0, + ce0 => in2_loc_46_ce0, + we0 => in2_loc_46_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_46_q0); + + in2_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_47_address0, + ce0 => in2_loc_47_ce0, + we0 => in2_loc_47_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_47_q0); + + in2_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_48_address0, + ce0 => in2_loc_48_ce0, + we0 => in2_loc_48_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_48_q0); + + in2_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_49_address0, + ce0 => in2_loc_49_ce0, + we0 => in2_loc_49_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_49_q0); + + in2_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_50_address0, + ce0 => in2_loc_50_ce0, + we0 => in2_loc_50_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_50_q0); + + in2_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_51_address0, + ce0 => in2_loc_51_ce0, + we0 => in2_loc_51_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_51_q0); + + in2_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_52_address0, + ce0 => in2_loc_52_ce0, + we0 => in2_loc_52_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_52_q0); + + in2_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_53_address0, + ce0 => in2_loc_53_ce0, + we0 => in2_loc_53_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_53_q0); + + in2_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_54_address0, + ce0 => in2_loc_54_ce0, + we0 => in2_loc_54_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_54_q0); + + in2_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_55_address0, + ce0 => in2_loc_55_ce0, + we0 => in2_loc_55_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_55_q0); + + in2_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_56_address0, + ce0 => in2_loc_56_ce0, + we0 => in2_loc_56_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_56_q0); + + in2_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_57_address0, + ce0 => in2_loc_57_ce0, + we0 => in2_loc_57_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_57_q0); + + in2_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_58_address0, + ce0 => in2_loc_58_ce0, + we0 => in2_loc_58_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_58_q0); + + in2_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_59_address0, + ce0 => in2_loc_59_ce0, + we0 => in2_loc_59_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_59_q0); + + in2_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_60_address0, + ce0 => in2_loc_60_ce0, + we0 => in2_loc_60_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_60_q0); + + in2_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_61_address0, + ce0 => in2_loc_61_ce0, + we0 => in2_loc_61_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_61_q0); + + in2_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_62_address0, + ce0 => in2_loc_62_ce0, + we0 => in2_loc_62_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_62_q0); + + in2_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_63_address0, + ce0 => in2_loc_63_ce0, + we0 => in2_loc_63_we0, + d0 => in2_mem_addr_read_reg_4635, + q0 => in2_loc_63_q0); + + out_loc_U : component mmult_out_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + we0 => out_loc_we0, + d0 => out_loc_d0, + q0 => out_loc_q0); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp0_stage0) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp1_stage0) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state28) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state28)) then + ap_enable_reg_pp2_iter1 <= (ap_const_logic_1 xor ap_condition_pp2_exit_iter0_state28); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_3317_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state22)) then + i_0_reg_3317 <= ap_const_lv31_0; + elsif (((icmp_ln33_fu_3688_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + i_0_reg_3317 <= i_reg_4707; + end if; + end if; + end process; + + j_0_reg_3328_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state27)) then + j_0_reg_3328 <= j_reg_5365; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + j_0_reg_3328 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_ln27_reg_3295_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3408_p2 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_3295 <= add_ln27_fu_3414_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_3295 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_3306_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_3306 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3501_p2 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_3306 <= add_ln28_fu_3507_p2; + end if; + end if; + end process; + + phi_ln42_reg_3339_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + phi_ln42_reg_3339 <= ap_const_lv13_0; + elsif (((icmp_ln42_fu_4475_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + phi_ln42_reg_3339 <= add_ln42_fu_4481_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state26)) then + add_ln38_12_reg_5705 <= add_ln38_12_fu_4173_p2; + add_ln38_21_reg_5710 <= add_ln38_21_fu_4215_p2; + add_ln38_28_reg_5715 <= add_ln38_28_fu_4257_p2; + add_ln38_37_reg_5720 <= add_ln38_37_fu_4299_p2; + add_ln38_40_reg_5725 <= add_ln38_40_fu_4317_p2; + add_ln38_43_reg_5730 <= add_ln38_43_fu_4335_p2; + add_ln38_52_reg_5735 <= add_ln38_52_fu_4377_p2; + add_ln38_55_reg_5740 <= add_ln38_55_fu_4395_p2; + add_ln38_59_reg_5745 <= add_ln38_59_fu_4419_p2; + add_ln38_6_reg_5695 <= add_ln38_6_fu_4137_p2; + add_ln38_9_reg_5700 <= add_ln38_9_fu_4155_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_4492 <= dim; + in3_reg_4508 <= in1(31 downto 2); + in_reg_4503 <= in2(31 downto 2); + out5_reg_4498 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + i_reg_4707 <= i_fu_3603_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + icmp_ln42_reg_5750 <= icmp_ln42_fu_4475_p2; + icmp_ln42_reg_5750_pp2_iter1_reg <= icmp_ln42_reg_5750; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + in1_loc_0_load_reg_5042 <= in1_loc_0_q0; + in1_loc_10_load_reg_5092 <= in1_loc_10_q0; + in1_loc_11_load_reg_5097 <= in1_loc_11_q0; + in1_loc_12_load_reg_5102 <= in1_loc_12_q0; + in1_loc_13_load_reg_5107 <= in1_loc_13_q0; + in1_loc_14_load_reg_5112 <= in1_loc_14_q0; + in1_loc_15_load_reg_5117 <= in1_loc_15_q0; + in1_loc_16_load_reg_5122 <= in1_loc_16_q0; + in1_loc_17_load_reg_5127 <= in1_loc_17_q0; + in1_loc_18_load_reg_5132 <= in1_loc_18_q0; + in1_loc_19_load_reg_5137 <= in1_loc_19_q0; + in1_loc_1_load_reg_5047 <= in1_loc_1_q0; + in1_loc_20_load_reg_5142 <= in1_loc_20_q0; + in1_loc_21_load_reg_5147 <= in1_loc_21_q0; + in1_loc_22_load_reg_5152 <= in1_loc_22_q0; + in1_loc_23_load_reg_5157 <= in1_loc_23_q0; + in1_loc_24_load_reg_5162 <= in1_loc_24_q0; + in1_loc_25_load_reg_5167 <= in1_loc_25_q0; + in1_loc_26_load_reg_5172 <= in1_loc_26_q0; + in1_loc_27_load_reg_5177 <= in1_loc_27_q0; + in1_loc_28_load_reg_5182 <= in1_loc_28_q0; + in1_loc_29_load_reg_5187 <= in1_loc_29_q0; + in1_loc_2_load_reg_5052 <= in1_loc_2_q0; + in1_loc_30_load_reg_5192 <= in1_loc_30_q0; + in1_loc_31_load_reg_5197 <= in1_loc_31_q0; + in1_loc_32_load_reg_5202 <= in1_loc_32_q0; + in1_loc_33_load_reg_5207 <= in1_loc_33_q0; + in1_loc_34_load_reg_5212 <= in1_loc_34_q0; + in1_loc_35_load_reg_5217 <= in1_loc_35_q0; + in1_loc_36_load_reg_5222 <= in1_loc_36_q0; + in1_loc_37_load_reg_5227 <= in1_loc_37_q0; + in1_loc_38_load_reg_5232 <= in1_loc_38_q0; + in1_loc_39_load_reg_5237 <= in1_loc_39_q0; + in1_loc_3_load_reg_5057 <= in1_loc_3_q0; + in1_loc_40_load_reg_5242 <= in1_loc_40_q0; + in1_loc_41_load_reg_5247 <= in1_loc_41_q0; + in1_loc_42_load_reg_5252 <= in1_loc_42_q0; + in1_loc_43_load_reg_5257 <= in1_loc_43_q0; + in1_loc_44_load_reg_5262 <= in1_loc_44_q0; + in1_loc_45_load_reg_5267 <= in1_loc_45_q0; + in1_loc_46_load_reg_5272 <= in1_loc_46_q0; + in1_loc_47_load_reg_5277 <= in1_loc_47_q0; + in1_loc_48_load_reg_5282 <= in1_loc_48_q0; + in1_loc_49_load_reg_5287 <= in1_loc_49_q0; + in1_loc_4_load_reg_5062 <= in1_loc_4_q0; + in1_loc_50_load_reg_5292 <= in1_loc_50_q0; + in1_loc_51_load_reg_5297 <= in1_loc_51_q0; + in1_loc_52_load_reg_5302 <= in1_loc_52_q0; + in1_loc_53_load_reg_5307 <= in1_loc_53_q0; + in1_loc_54_load_reg_5312 <= in1_loc_54_q0; + in1_loc_55_load_reg_5317 <= in1_loc_55_q0; + in1_loc_56_load_reg_5322 <= in1_loc_56_q0; + in1_loc_57_load_reg_5327 <= in1_loc_57_q0; + in1_loc_58_load_reg_5332 <= in1_loc_58_q0; + in1_loc_59_load_reg_5337 <= in1_loc_59_q0; + in1_loc_5_load_reg_5067 <= in1_loc_5_q0; + in1_loc_60_load_reg_5342 <= in1_loc_60_q0; + in1_loc_61_load_reg_5347 <= in1_loc_61_q0; + in1_loc_62_load_reg_5352 <= in1_loc_62_q0; + in1_loc_63_load_reg_5357 <= in1_loc_63_q0; + in1_loc_6_load_reg_5072 <= in1_loc_6_q0; + in1_loc_7_load_reg_5077 <= in1_loc_7_q0; + in1_loc_8_load_reg_5082 <= in1_loc_8_q0; + in1_loc_9_load_reg_5087 <= in1_loc_9_q0; + zext_ln38_1_cast_reg_5037(13 downto 6) <= zext_ln38_1_cast_fu_3681_p3(13 downto 6); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_4549 <= in1_mem_RDATA; + lshr_ln_reg_4540_pp0_iter1_reg <= lshr_ln_reg_4540; + trunc_ln27_reg_4545_pp0_iter1_reg <= trunc_ln27_reg_4545; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_4635 <= in2_mem_RDATA; + trunc_ln1_reg_4631_pp1_iter1_reg <= trunc_ln1_reg_4631; + trunc_ln28_reg_4626_pp1_iter1_reg <= trunc_ln28_reg_4626; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_4525(29 downto 0) <= empty_7_fu_3399_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_4519(29 downto 0) <= empty_fu_3390_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + j_reg_5365 <= j_fu_3693_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3408_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + lshr_ln_reg_4540 <= phi_ln27_reg_3295(12 downto 6); + trunc_ln27_reg_4545 <= trunc_ln27_fu_3430_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln33_fu_3688_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + out_loc_addr_reg_5370 <= sext_ln38_1_fu_3776_p1(12 - 1 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln42_reg_5750 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + out_loc_load_reg_5764 <= out_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3501_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + trunc_ln1_reg_4631 <= phi_ln28_reg_3306(11 downto 6); + trunc_ln28_reg_4626 <= trunc_ln28_fu_3513_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + trunc_ln38_reg_4712 <= trunc_ln38_fu_3677_p1; + end if; + end if; + end process; + out_mem_addr_reg_4519(31 downto 30) <= "00"; + in2_mem_addr_reg_4525(31 downto 30) <= "00"; + zext_ln38_1_cast_reg_5037(5 downto 0) <= "000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state23, icmp_ln31_fu_3598_p2, ap_enable_reg_pp2_iter2, ap_CS_fsm_state35, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_BVALID, icmp_ln27_fu_3408_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_3501_p2, ap_enable_reg_pp1_iter0, ap_block_state23_io, ap_CS_fsm_state25, icmp_ln33_fu_3688_p2, icmp_ln42_fu_4475_p2, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((icmp_ln27_fu_3408_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) and not(((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((icmp_ln27_fu_3408_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) or ((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((icmp_ln28_fu_3501_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) and not(((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((icmp_ln28_fu_3501_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) or ((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state23 => + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + ap_NS_fsm <= ap_ST_fsm_state24; + else + ap_NS_fsm <= ap_ST_fsm_state23; + end if; + when ap_ST_fsm_state24 => + ap_NS_fsm <= ap_ST_fsm_state25; + when ap_ST_fsm_state25 => + if (((icmp_ln33_fu_3688_p2 = ap_const_lv1_1) and (ap_const_logic_1 = ap_CS_fsm_state25))) then + ap_NS_fsm <= ap_ST_fsm_state23; + else + ap_NS_fsm <= ap_ST_fsm_state26; + end if; + when ap_ST_fsm_state26 => + ap_NS_fsm <= ap_ST_fsm_state27; + when ap_ST_fsm_state27 => + ap_NS_fsm <= ap_ST_fsm_state25; + when ap_ST_fsm_pp2_stage0 => + if ((not(((icmp_ln42_fu_4475_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0))) and not(((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0))))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif ((((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0)) or ((icmp_ln42_fu_4475_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0)))) then + ap_NS_fsm <= ap_ST_fsm_state31; + else + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + end if; + when ap_ST_fsm_state31 => + ap_NS_fsm <= ap_ST_fsm_state32; + when ap_ST_fsm_state32 => + ap_NS_fsm <= ap_ST_fsm_state33; + when ap_ST_fsm_state33 => + ap_NS_fsm <= ap_ST_fsm_state34; + when ap_ST_fsm_state34 => + ap_NS_fsm <= ap_ST_fsm_state35; + when ap_ST_fsm_state35 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state35))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state35; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_3414_p2 <= std_logic_vector(unsigned(phi_ln27_reg_3295) + unsigned(ap_const_lv13_1)); + add_ln28_fu_3507_p2 <= std_logic_vector(unsigned(phi_ln28_reg_3306) + unsigned(ap_const_lv13_1)); + add_ln38_10_fu_4161_p2 <= std_logic_vector(unsigned(mul_ln38_12_fu_3841_p2) + unsigned(mul_ln38_11_fu_3836_p2)); + add_ln38_11_fu_4167_p2 <= std_logic_vector(unsigned(mul_ln38_14_fu_3851_p2) + unsigned(mul_ln38_13_fu_3846_p2)); + add_ln38_12_fu_4173_p2 <= std_logic_vector(unsigned(add_ln38_10_fu_4161_p2) + unsigned(add_ln38_11_fu_4167_p2)); + add_ln38_13_fu_4425_p2 <= std_logic_vector(unsigned(add_ln38_9_reg_5700) + unsigned(add_ln38_12_reg_5705)); + add_ln38_14_fu_4429_p2 <= std_logic_vector(unsigned(add_ln38_6_reg_5695) + unsigned(add_ln38_13_fu_4425_p2)); + add_ln38_15_fu_4179_p2 <= std_logic_vector(unsigned(mul_ln38_16_fu_3861_p2) + unsigned(mul_ln38_15_fu_3856_p2)); + add_ln38_16_fu_4185_p2 <= std_logic_vector(unsigned(mul_ln38_18_fu_3871_p2) + unsigned(mul_ln38_17_fu_3866_p2)); + add_ln38_17_fu_4191_p2 <= std_logic_vector(unsigned(add_ln38_15_fu_4179_p2) + unsigned(add_ln38_16_fu_4185_p2)); + add_ln38_18_fu_4197_p2 <= std_logic_vector(unsigned(mul_ln38_20_fu_3881_p2) + unsigned(mul_ln38_19_fu_3876_p2)); + add_ln38_19_fu_4203_p2 <= std_logic_vector(unsigned(mul_ln38_22_fu_3891_p2) + unsigned(mul_ln38_21_fu_3886_p2)); + add_ln38_1_fu_4107_p2 <= std_logic_vector(unsigned(mul_ln38_2_fu_3791_p2) + unsigned(mul_ln38_1_fu_3786_p2)); + add_ln38_20_fu_4209_p2 <= std_logic_vector(unsigned(add_ln38_18_fu_4197_p2) + unsigned(add_ln38_19_fu_4203_p2)); + add_ln38_21_fu_4215_p2 <= std_logic_vector(unsigned(add_ln38_17_fu_4191_p2) + unsigned(add_ln38_20_fu_4209_p2)); + add_ln38_22_fu_4221_p2 <= std_logic_vector(unsigned(mul_ln38_24_fu_3901_p2) + unsigned(mul_ln38_23_fu_3896_p2)); + add_ln38_23_fu_4227_p2 <= std_logic_vector(unsigned(mul_ln38_26_fu_3911_p2) + unsigned(mul_ln38_25_fu_3906_p2)); + add_ln38_24_fu_4233_p2 <= std_logic_vector(unsigned(add_ln38_22_fu_4221_p2) + unsigned(add_ln38_23_fu_4227_p2)); + add_ln38_25_fu_4239_p2 <= std_logic_vector(unsigned(mul_ln38_28_fu_3921_p2) + unsigned(mul_ln38_27_fu_3916_p2)); + add_ln38_26_fu_4245_p2 <= std_logic_vector(unsigned(mul_ln38_30_fu_3931_p2) + unsigned(mul_ln38_29_fu_3926_p2)); + add_ln38_27_fu_4251_p2 <= std_logic_vector(unsigned(add_ln38_25_fu_4239_p2) + unsigned(add_ln38_26_fu_4245_p2)); + add_ln38_28_fu_4257_p2 <= std_logic_vector(unsigned(add_ln38_24_fu_4233_p2) + unsigned(add_ln38_27_fu_4251_p2)); + add_ln38_29_fu_4434_p2 <= std_logic_vector(unsigned(add_ln38_21_reg_5710) + unsigned(add_ln38_28_reg_5715)); + add_ln38_2_fu_4113_p2 <= std_logic_vector(unsigned(add_ln38_fu_4101_p2) + unsigned(add_ln38_1_fu_4107_p2)); + add_ln38_30_fu_4438_p2 <= std_logic_vector(unsigned(add_ln38_14_fu_4429_p2) + unsigned(add_ln38_29_fu_4434_p2)); + add_ln38_31_fu_4263_p2 <= std_logic_vector(unsigned(mul_ln38_32_fu_3941_p2) + unsigned(mul_ln38_31_fu_3936_p2)); + add_ln38_32_fu_4269_p2 <= std_logic_vector(unsigned(mul_ln38_34_fu_3951_p2) + unsigned(mul_ln38_33_fu_3946_p2)); + add_ln38_33_fu_4275_p2 <= std_logic_vector(unsigned(add_ln38_31_fu_4263_p2) + unsigned(add_ln38_32_fu_4269_p2)); + add_ln38_34_fu_4281_p2 <= std_logic_vector(unsigned(mul_ln38_36_fu_3961_p2) + unsigned(mul_ln38_35_fu_3956_p2)); + add_ln38_35_fu_4287_p2 <= std_logic_vector(unsigned(mul_ln38_38_fu_3971_p2) + unsigned(mul_ln38_37_fu_3966_p2)); + add_ln38_36_fu_4293_p2 <= std_logic_vector(unsigned(add_ln38_34_fu_4281_p2) + unsigned(add_ln38_35_fu_4287_p2)); + add_ln38_37_fu_4299_p2 <= std_logic_vector(unsigned(add_ln38_33_fu_4275_p2) + unsigned(add_ln38_36_fu_4293_p2)); + add_ln38_38_fu_4305_p2 <= std_logic_vector(unsigned(mul_ln38_40_fu_3981_p2) + unsigned(mul_ln38_39_fu_3976_p2)); + add_ln38_39_fu_4311_p2 <= std_logic_vector(unsigned(mul_ln38_42_fu_3991_p2) + unsigned(mul_ln38_41_fu_3986_p2)); + add_ln38_3_fu_4119_p2 <= std_logic_vector(unsigned(mul_ln38_4_fu_3801_p2) + unsigned(mul_ln38_3_fu_3796_p2)); + add_ln38_40_fu_4317_p2 <= std_logic_vector(unsigned(add_ln38_38_fu_4305_p2) + unsigned(add_ln38_39_fu_4311_p2)); + add_ln38_41_fu_4323_p2 <= std_logic_vector(unsigned(mul_ln38_44_fu_4001_p2) + unsigned(mul_ln38_43_fu_3996_p2)); + add_ln38_42_fu_4329_p2 <= std_logic_vector(unsigned(mul_ln38_46_fu_4011_p2) + unsigned(mul_ln38_45_fu_4006_p2)); + add_ln38_43_fu_4335_p2 <= std_logic_vector(unsigned(add_ln38_41_fu_4323_p2) + unsigned(add_ln38_42_fu_4329_p2)); + add_ln38_44_fu_4444_p2 <= std_logic_vector(unsigned(add_ln38_40_reg_5725) + unsigned(add_ln38_43_reg_5730)); + add_ln38_45_fu_4448_p2 <= std_logic_vector(unsigned(add_ln38_37_reg_5720) + unsigned(add_ln38_44_fu_4444_p2)); + add_ln38_46_fu_4341_p2 <= std_logic_vector(unsigned(mul_ln38_48_fu_4021_p2) + unsigned(mul_ln38_47_fu_4016_p2)); + add_ln38_47_fu_4347_p2 <= std_logic_vector(unsigned(mul_ln38_50_fu_4031_p2) + unsigned(mul_ln38_49_fu_4026_p2)); + add_ln38_48_fu_4353_p2 <= std_logic_vector(unsigned(add_ln38_46_fu_4341_p2) + unsigned(add_ln38_47_fu_4347_p2)); + add_ln38_49_fu_4359_p2 <= std_logic_vector(unsigned(mul_ln38_52_fu_4041_p2) + unsigned(mul_ln38_51_fu_4036_p2)); + add_ln38_4_fu_4125_p2 <= std_logic_vector(unsigned(mul_ln38_6_fu_3811_p2) + unsigned(mul_ln38_5_fu_3806_p2)); + add_ln38_50_fu_4365_p2 <= std_logic_vector(unsigned(mul_ln38_54_fu_4051_p2) + unsigned(mul_ln38_53_fu_4046_p2)); + add_ln38_51_fu_4371_p2 <= std_logic_vector(unsigned(add_ln38_49_fu_4359_p2) + unsigned(add_ln38_50_fu_4365_p2)); + add_ln38_52_fu_4377_p2 <= std_logic_vector(unsigned(add_ln38_48_fu_4353_p2) + unsigned(add_ln38_51_fu_4371_p2)); + add_ln38_53_fu_4383_p2 <= std_logic_vector(unsigned(mul_ln38_56_fu_4061_p2) + unsigned(mul_ln38_55_fu_4056_p2)); + add_ln38_54_fu_4389_p2 <= std_logic_vector(unsigned(mul_ln38_58_fu_4071_p2) + unsigned(mul_ln38_57_fu_4066_p2)); + add_ln38_55_fu_4395_p2 <= std_logic_vector(unsigned(add_ln38_53_fu_4383_p2) + unsigned(add_ln38_54_fu_4389_p2)); + add_ln38_56_fu_4401_p2 <= std_logic_vector(unsigned(mul_ln38_60_fu_4081_p2) + unsigned(mul_ln38_59_fu_4076_p2)); + add_ln38_57_fu_4407_p2 <= std_logic_vector(unsigned(mul_ln38_63_fu_4096_p2) + unsigned(mul_ln38_62_fu_4091_p2)); + add_ln38_58_fu_4413_p2 <= std_logic_vector(unsigned(mul_ln38_61_fu_4086_p2) + unsigned(add_ln38_57_fu_4407_p2)); + add_ln38_59_fu_4419_p2 <= std_logic_vector(unsigned(add_ln38_56_fu_4401_p2) + unsigned(add_ln38_58_fu_4413_p2)); + add_ln38_5_fu_4131_p2 <= std_logic_vector(unsigned(add_ln38_3_fu_4119_p2) + unsigned(add_ln38_4_fu_4125_p2)); + add_ln38_60_fu_4453_p2 <= std_logic_vector(unsigned(add_ln38_55_reg_5740) + unsigned(add_ln38_59_reg_5745)); + add_ln38_61_fu_4457_p2 <= std_logic_vector(unsigned(add_ln38_52_reg_5735) + unsigned(add_ln38_60_fu_4453_p2)); + add_ln38_62_fu_4462_p2 <= std_logic_vector(unsigned(add_ln38_45_fu_4448_p2) + unsigned(add_ln38_61_fu_4457_p2)); + add_ln38_64_fu_3771_p2 <= std_logic_vector(unsigned(zext_ln38_1_cast_reg_5037) + unsigned(trunc_ln38_1_fu_3767_p1)); + add_ln38_6_fu_4137_p2 <= std_logic_vector(unsigned(add_ln38_2_fu_4113_p2) + unsigned(add_ln38_5_fu_4131_p2)); + add_ln38_7_fu_4143_p2 <= std_logic_vector(unsigned(mul_ln38_8_fu_3821_p2) + unsigned(mul_ln38_7_fu_3816_p2)); + add_ln38_8_fu_4149_p2 <= std_logic_vector(unsigned(mul_ln38_10_fu_3831_p2) + unsigned(mul_ln38_9_fu_3826_p2)); + add_ln38_9_fu_4155_p2 <= std_logic_vector(unsigned(add_ln38_7_fu_4143_p2) + unsigned(add_ln38_8_fu_4149_p2)); + add_ln38_fu_4101_p2 <= std_logic_vector(unsigned(mul_ln38_fu_3781_p2) + unsigned(out_loc_q0)); + add_ln42_fu_4481_p2 <= std_logic_vector(unsigned(phi_ln42_reg_3339) + unsigned(ap_const_lv13_1)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp2_stage0 <= ap_CS_fsm(23); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state23 <= ap_CS_fsm(18); + ap_CS_fsm_state24 <= ap_CS_fsm(19); + ap_CS_fsm_state25 <= ap_CS_fsm(20); + ap_CS_fsm_state26 <= ap_CS_fsm(21); + ap_CS_fsm_state27 <= ap_CS_fsm(22); + ap_CS_fsm_state35 <= ap_CS_fsm(28); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp2_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp2_stage0_11001_assign_proc : process(ap_enable_reg_pp2_iter2, ap_block_state30_io) + begin + ap_block_pp2_stage0_11001 <= ((ap_const_boolean_1 = ap_block_state30_io) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)); + end process; + + + ap_block_pp2_stage0_subdone_assign_proc : process(ap_enable_reg_pp2_iter2, ap_block_state30_io) + begin + ap_block_pp2_stage0_subdone <= ((ap_const_boolean_1 = ap_block_state30_io) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= (in1_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= (in2_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state23_io_assign_proc : process(icmp_ln31_fu_3598_p2, out_mem_AWREADY) + begin + ap_block_state23_io <= ((out_mem_AWREADY = ap_const_logic_0) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0)); + end process; + + ap_block_state28_pp2_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state29_pp2_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state30_io_assign_proc : process(icmp_ln42_reg_5750_pp2_iter1_reg, out_mem_WREADY) + begin + ap_block_state30_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_5750_pp2_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state30_pp2_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_3408_p2) + begin + if ((icmp_ln27_fu_3408_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_3501_p2) + begin + if ((icmp_ln28_fu_3501_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp2_exit_iter0_state28_assign_proc : process(icmp_ln42_fu_4475_p2) + begin + if ((icmp_ln42_fu_4475_p2 = ap_const_lv1_1)) then + ap_condition_pp2_exit_iter0_state28 <= ap_const_logic_1; + else + ap_condition_pp2_exit_iter0_state28 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state35, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state35))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp2 <= (ap_idle_pp2 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp2_assign_proc : process(ap_enable_reg_pp2_iter2, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1) + begin + if (((ap_enable_reg_pp2_iter2 = ap_const_logic_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_0))) then + ap_idle_pp2 <= ap_const_logic_1; + else + ap_idle_pp2 <= ap_const_logic_0; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state35, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state35))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_7_fu_3399_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_4503),64)); + empty_8_fu_3380_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_4508),64)); + empty_fu_3390_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_4498),64)); + i_fu_3603_p2 <= std_logic_vector(unsigned(i_0_reg_3317) + unsigned(ap_const_lv31_1)); + icmp_ln27_fu_3408_p2 <= "1" when (phi_ln27_reg_3295 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_3501_p2 <= "1" when (phi_ln28_reg_3306 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_3598_p2 <= "1" when (signed(zext_ln31_fu_3594_p1) < signed(dim_read_reg_4492)) else "0"; + icmp_ln33_fu_3688_p2 <= "1" when (j_0_reg_3328 = dim_read_reg_4492) else "0"; + icmp_ln42_fu_4475_p2 <= "1" when (phi_ln42_reg_3339 = ap_const_lv13_1000) else "0"; + + in1_loc_0_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_0_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_0_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_0_ce0 <= ap_const_logic_1; + else + in1_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_0_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_we0 <= ap_const_logic_1; + else + in1_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_10_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_10_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_10_ce0 <= ap_const_logic_1; + else + in1_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_we0 <= ap_const_logic_1; + else + in1_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_11_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_11_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_11_ce0 <= ap_const_logic_1; + else + in1_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_we0 <= ap_const_logic_1; + else + in1_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_12_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_12_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_12_ce0 <= ap_const_logic_1; + else + in1_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_we0 <= ap_const_logic_1; + else + in1_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_13_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_13_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_13_ce0 <= ap_const_logic_1; + else + in1_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_we0 <= ap_const_logic_1; + else + in1_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_14_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_14_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_14_ce0 <= ap_const_logic_1; + else + in1_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_we0 <= ap_const_logic_1; + else + in1_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_15_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_15_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_15_ce0 <= ap_const_logic_1; + else + in1_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_we0 <= ap_const_logic_1; + else + in1_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_16_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_16_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_16_ce0 <= ap_const_logic_1; + else + in1_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_we0 <= ap_const_logic_1; + else + in1_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_17_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_17_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_17_ce0 <= ap_const_logic_1; + else + in1_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_we0 <= ap_const_logic_1; + else + in1_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_18_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_18_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_18_ce0 <= ap_const_logic_1; + else + in1_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_we0 <= ap_const_logic_1; + else + in1_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_19_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_19_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_19_ce0 <= ap_const_logic_1; + else + in1_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_we0 <= ap_const_logic_1; + else + in1_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_1_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_1_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_1_ce0 <= ap_const_logic_1; + else + in1_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_we0 <= ap_const_logic_1; + else + in1_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_20_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_20_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_20_ce0 <= ap_const_logic_1; + else + in1_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_we0 <= ap_const_logic_1; + else + in1_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_21_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_21_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_21_ce0 <= ap_const_logic_1; + else + in1_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_we0 <= ap_const_logic_1; + else + in1_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_22_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_22_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_22_ce0 <= ap_const_logic_1; + else + in1_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_we0 <= ap_const_logic_1; + else + in1_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_23_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_23_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_23_ce0 <= ap_const_logic_1; + else + in1_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_we0 <= ap_const_logic_1; + else + in1_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_24_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_24_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_24_ce0 <= ap_const_logic_1; + else + in1_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_we0 <= ap_const_logic_1; + else + in1_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_25_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_25_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_25_ce0 <= ap_const_logic_1; + else + in1_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_we0 <= ap_const_logic_1; + else + in1_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_26_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_26_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_26_ce0 <= ap_const_logic_1; + else + in1_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_we0 <= ap_const_logic_1; + else + in1_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_27_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_27_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_27_ce0 <= ap_const_logic_1; + else + in1_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_we0 <= ap_const_logic_1; + else + in1_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_28_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_28_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_28_ce0 <= ap_const_logic_1; + else + in1_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_we0 <= ap_const_logic_1; + else + in1_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_29_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_29_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_29_ce0 <= ap_const_logic_1; + else + in1_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_we0 <= ap_const_logic_1; + else + in1_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_2_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_2_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_2_ce0 <= ap_const_logic_1; + else + in1_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_we0 <= ap_const_logic_1; + else + in1_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_30_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_30_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_30_ce0 <= ap_const_logic_1; + else + in1_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_we0 <= ap_const_logic_1; + else + in1_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_31_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_31_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_31_ce0 <= ap_const_logic_1; + else + in1_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_we0 <= ap_const_logic_1; + else + in1_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_32_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_32_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_32_ce0 <= ap_const_logic_1; + else + in1_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_we0 <= ap_const_logic_1; + else + in1_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_33_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_33_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_33_ce0 <= ap_const_logic_1; + else + in1_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_we0 <= ap_const_logic_1; + else + in1_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_34_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_34_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_34_ce0 <= ap_const_logic_1; + else + in1_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_we0 <= ap_const_logic_1; + else + in1_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_35_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_35_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_35_ce0 <= ap_const_logic_1; + else + in1_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_we0 <= ap_const_logic_1; + else + in1_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_36_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_36_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_36_ce0 <= ap_const_logic_1; + else + in1_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_we0 <= ap_const_logic_1; + else + in1_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_37_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_37_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_37_ce0 <= ap_const_logic_1; + else + in1_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_we0 <= ap_const_logic_1; + else + in1_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_38_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_38_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_38_ce0 <= ap_const_logic_1; + else + in1_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_we0 <= ap_const_logic_1; + else + in1_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_39_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_39_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_39_ce0 <= ap_const_logic_1; + else + in1_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_we0 <= ap_const_logic_1; + else + in1_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_3_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_3_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_3_ce0 <= ap_const_logic_1; + else + in1_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_we0 <= ap_const_logic_1; + else + in1_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_40_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_40_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_40_ce0 <= ap_const_logic_1; + else + in1_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_we0 <= ap_const_logic_1; + else + in1_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_41_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_41_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_41_ce0 <= ap_const_logic_1; + else + in1_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_we0 <= ap_const_logic_1; + else + in1_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_42_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_42_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_42_ce0 <= ap_const_logic_1; + else + in1_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_we0 <= ap_const_logic_1; + else + in1_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_43_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_43_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_43_ce0 <= ap_const_logic_1; + else + in1_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_we0 <= ap_const_logic_1; + else + in1_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_44_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_44_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_44_ce0 <= ap_const_logic_1; + else + in1_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_we0 <= ap_const_logic_1; + else + in1_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_45_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_45_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_45_ce0 <= ap_const_logic_1; + else + in1_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_we0 <= ap_const_logic_1; + else + in1_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_46_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_46_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_46_ce0 <= ap_const_logic_1; + else + in1_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_we0 <= ap_const_logic_1; + else + in1_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_47_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_47_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_47_ce0 <= ap_const_logic_1; + else + in1_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_we0 <= ap_const_logic_1; + else + in1_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_48_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_48_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_48_ce0 <= ap_const_logic_1; + else + in1_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_we0 <= ap_const_logic_1; + else + in1_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_49_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_49_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_49_ce0 <= ap_const_logic_1; + else + in1_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_we0 <= ap_const_logic_1; + else + in1_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_4_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_4_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_4_ce0 <= ap_const_logic_1; + else + in1_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_we0 <= ap_const_logic_1; + else + in1_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_50_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_50_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_50_ce0 <= ap_const_logic_1; + else + in1_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_we0 <= ap_const_logic_1; + else + in1_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_51_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_51_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_51_ce0 <= ap_const_logic_1; + else + in1_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_we0 <= ap_const_logic_1; + else + in1_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_52_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_52_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_52_ce0 <= ap_const_logic_1; + else + in1_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_we0 <= ap_const_logic_1; + else + in1_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_53_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_53_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_53_ce0 <= ap_const_logic_1; + else + in1_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_we0 <= ap_const_logic_1; + else + in1_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_54_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_54_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_54_ce0 <= ap_const_logic_1; + else + in1_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_we0 <= ap_const_logic_1; + else + in1_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_55_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_55_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_55_ce0 <= ap_const_logic_1; + else + in1_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_we0 <= ap_const_logic_1; + else + in1_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_56_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_56_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_56_ce0 <= ap_const_logic_1; + else + in1_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_we0 <= ap_const_logic_1; + else + in1_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_57_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_57_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_57_ce0 <= ap_const_logic_1; + else + in1_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_we0 <= ap_const_logic_1; + else + in1_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_58_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_58_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_58_ce0 <= ap_const_logic_1; + else + in1_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_we0 <= ap_const_logic_1; + else + in1_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_59_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_59_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_59_ce0 <= ap_const_logic_1; + else + in1_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_we0 <= ap_const_logic_1; + else + in1_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_5_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_5_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_5_ce0 <= ap_const_logic_1; + else + in1_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_we0 <= ap_const_logic_1; + else + in1_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_60_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_60_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_60_ce0 <= ap_const_logic_1; + else + in1_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_we0 <= ap_const_logic_1; + else + in1_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_61_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_61_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_61_ce0 <= ap_const_logic_1; + else + in1_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_we0 <= ap_const_logic_1; + else + in1_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_62_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_62_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_62_ce0 <= ap_const_logic_1; + else + in1_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_we0 <= ap_const_logic_1; + else + in1_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_63_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_63_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_63_ce0 <= ap_const_logic_1; + else + in1_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_we0 <= ap_const_logic_1; + else + in1_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_6_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_6_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_6_ce0 <= ap_const_logic_1; + else + in1_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_we0 <= ap_const_logic_1; + else + in1_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_7_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_7_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_7_ce0 <= ap_const_logic_1; + else + in1_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_we0 <= ap_const_logic_1; + else + in1_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_8_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_8_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_8_ce0 <= ap_const_logic_1; + else + in1_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_we0 <= ap_const_logic_1; + else + in1_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_state23, ap_enable_reg_pp0_iter2, zext_ln27_fu_3434_p1, zext_ln38_fu_3609_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state23)) then + in1_loc_9_address0 <= zext_ln38_fu_3609_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_address0 <= zext_ln27_fu_3434_p1(6 - 1 downto 0); + else + in1_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_9_ce0_assign_proc : process(ap_CS_fsm_state23, ap_block_pp0_stage0_11001, ap_block_state23_io, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_state23_io) and (ap_const_logic_1 = ap_CS_fsm_state23)))) then + in1_loc_9_ce0 <= ap_const_logic_1; + else + in1_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4545_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4545_pp0_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_we0 <= ap_const_logic_1; + else + in1_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_8_fu_3380_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_0_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_0_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_0_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_0_ce0 <= ap_const_logic_1; + else + in2_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_0_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_we0 <= ap_const_logic_1; + else + in2_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_10_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_10_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_10_ce0 <= ap_const_logic_1; + else + in2_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_we0 <= ap_const_logic_1; + else + in2_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_11_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_11_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_11_ce0 <= ap_const_logic_1; + else + in2_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_we0 <= ap_const_logic_1; + else + in2_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_12_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_12_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_12_ce0 <= ap_const_logic_1; + else + in2_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_we0 <= ap_const_logic_1; + else + in2_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_13_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_13_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_13_ce0 <= ap_const_logic_1; + else + in2_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_we0 <= ap_const_logic_1; + else + in2_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_14_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_14_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_14_ce0 <= ap_const_logic_1; + else + in2_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_we0 <= ap_const_logic_1; + else + in2_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_15_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_15_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_15_ce0 <= ap_const_logic_1; + else + in2_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_we0 <= ap_const_logic_1; + else + in2_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_16_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_16_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_16_ce0 <= ap_const_logic_1; + else + in2_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_we0 <= ap_const_logic_1; + else + in2_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_17_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_17_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_17_ce0 <= ap_const_logic_1; + else + in2_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_we0 <= ap_const_logic_1; + else + in2_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_18_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_18_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_18_ce0 <= ap_const_logic_1; + else + in2_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_we0 <= ap_const_logic_1; + else + in2_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_19_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_19_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_19_ce0 <= ap_const_logic_1; + else + in2_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_we0 <= ap_const_logic_1; + else + in2_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_1_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_1_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_1_ce0 <= ap_const_logic_1; + else + in2_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_we0 <= ap_const_logic_1; + else + in2_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_20_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_20_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_20_ce0 <= ap_const_logic_1; + else + in2_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_we0 <= ap_const_logic_1; + else + in2_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_21_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_21_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_21_ce0 <= ap_const_logic_1; + else + in2_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_we0 <= ap_const_logic_1; + else + in2_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_22_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_22_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_22_ce0 <= ap_const_logic_1; + else + in2_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_we0 <= ap_const_logic_1; + else + in2_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_23_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_23_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_23_ce0 <= ap_const_logic_1; + else + in2_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_we0 <= ap_const_logic_1; + else + in2_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_24_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_24_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_24_ce0 <= ap_const_logic_1; + else + in2_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_we0 <= ap_const_logic_1; + else + in2_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_25_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_25_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_25_ce0 <= ap_const_logic_1; + else + in2_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_we0 <= ap_const_logic_1; + else + in2_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_26_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_26_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_26_ce0 <= ap_const_logic_1; + else + in2_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_we0 <= ap_const_logic_1; + else + in2_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_27_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_27_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_27_ce0 <= ap_const_logic_1; + else + in2_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_we0 <= ap_const_logic_1; + else + in2_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_28_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_28_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_28_ce0 <= ap_const_logic_1; + else + in2_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_we0 <= ap_const_logic_1; + else + in2_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_29_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_29_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_29_ce0 <= ap_const_logic_1; + else + in2_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_we0 <= ap_const_logic_1; + else + in2_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_2_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_2_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_2_ce0 <= ap_const_logic_1; + else + in2_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_we0 <= ap_const_logic_1; + else + in2_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_30_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_30_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_30_ce0 <= ap_const_logic_1; + else + in2_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_we0 <= ap_const_logic_1; + else + in2_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_31_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_31_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_31_ce0 <= ap_const_logic_1; + else + in2_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_we0 <= ap_const_logic_1; + else + in2_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_32_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_32_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_32_ce0 <= ap_const_logic_1; + else + in2_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_we0 <= ap_const_logic_1; + else + in2_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_33_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_33_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_33_ce0 <= ap_const_logic_1; + else + in2_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_we0 <= ap_const_logic_1; + else + in2_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_34_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_34_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_34_ce0 <= ap_const_logic_1; + else + in2_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_we0 <= ap_const_logic_1; + else + in2_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_35_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_35_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_35_ce0 <= ap_const_logic_1; + else + in2_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_we0 <= ap_const_logic_1; + else + in2_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_36_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_36_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_36_ce0 <= ap_const_logic_1; + else + in2_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_we0 <= ap_const_logic_1; + else + in2_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_37_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_37_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_37_ce0 <= ap_const_logic_1; + else + in2_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_we0 <= ap_const_logic_1; + else + in2_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_38_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_38_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_38_ce0 <= ap_const_logic_1; + else + in2_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_we0 <= ap_const_logic_1; + else + in2_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_39_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_39_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_39_ce0 <= ap_const_logic_1; + else + in2_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_we0 <= ap_const_logic_1; + else + in2_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_3_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_3_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_3_ce0 <= ap_const_logic_1; + else + in2_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_we0 <= ap_const_logic_1; + else + in2_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_40_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_40_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_40_ce0 <= ap_const_logic_1; + else + in2_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_we0 <= ap_const_logic_1; + else + in2_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_41_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_41_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_41_ce0 <= ap_const_logic_1; + else + in2_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_we0 <= ap_const_logic_1; + else + in2_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_42_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_42_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_42_ce0 <= ap_const_logic_1; + else + in2_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_we0 <= ap_const_logic_1; + else + in2_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_43_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_43_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_43_ce0 <= ap_const_logic_1; + else + in2_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_we0 <= ap_const_logic_1; + else + in2_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_44_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_44_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_44_ce0 <= ap_const_logic_1; + else + in2_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_we0 <= ap_const_logic_1; + else + in2_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_45_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_45_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_45_ce0 <= ap_const_logic_1; + else + in2_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_we0 <= ap_const_logic_1; + else + in2_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_46_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_46_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_46_ce0 <= ap_const_logic_1; + else + in2_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_we0 <= ap_const_logic_1; + else + in2_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_47_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_47_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_47_ce0 <= ap_const_logic_1; + else + in2_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_we0 <= ap_const_logic_1; + else + in2_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_48_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_48_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_48_ce0 <= ap_const_logic_1; + else + in2_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_we0 <= ap_const_logic_1; + else + in2_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_49_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_49_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_49_ce0 <= ap_const_logic_1; + else + in2_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_we0 <= ap_const_logic_1; + else + in2_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_4_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_4_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_4_ce0 <= ap_const_logic_1; + else + in2_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_we0 <= ap_const_logic_1; + else + in2_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_50_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_50_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_50_ce0 <= ap_const_logic_1; + else + in2_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_we0 <= ap_const_logic_1; + else + in2_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_51_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_51_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_51_ce0 <= ap_const_logic_1; + else + in2_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_we0 <= ap_const_logic_1; + else + in2_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_52_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_52_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_52_ce0 <= ap_const_logic_1; + else + in2_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_we0 <= ap_const_logic_1; + else + in2_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_53_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_53_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_53_ce0 <= ap_const_logic_1; + else + in2_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_we0 <= ap_const_logic_1; + else + in2_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_54_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_54_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_54_ce0 <= ap_const_logic_1; + else + in2_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_we0 <= ap_const_logic_1; + else + in2_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_55_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_55_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_55_ce0 <= ap_const_logic_1; + else + in2_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_we0 <= ap_const_logic_1; + else + in2_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_56_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_56_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_56_ce0 <= ap_const_logic_1; + else + in2_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_we0 <= ap_const_logic_1; + else + in2_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_57_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_57_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_57_ce0 <= ap_const_logic_1; + else + in2_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_we0 <= ap_const_logic_1; + else + in2_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_58_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_58_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_58_ce0 <= ap_const_logic_1; + else + in2_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_we0 <= ap_const_logic_1; + else + in2_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_59_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_59_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_59_ce0 <= ap_const_logic_1; + else + in2_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_we0 <= ap_const_logic_1; + else + in2_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_5_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_5_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_5_ce0 <= ap_const_logic_1; + else + in2_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_we0 <= ap_const_logic_1; + else + in2_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_60_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_60_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_60_ce0 <= ap_const_logic_1; + else + in2_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_we0 <= ap_const_logic_1; + else + in2_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_61_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_61_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_61_ce0 <= ap_const_logic_1; + else + in2_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_we0 <= ap_const_logic_1; + else + in2_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_62_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_62_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_62_ce0 <= ap_const_logic_1; + else + in2_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_we0 <= ap_const_logic_1; + else + in2_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_63_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_63_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_63_ce0 <= ap_const_logic_1; + else + in2_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_we0 <= ap_const_logic_1; + else + in2_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_6_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_6_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_6_ce0 <= ap_const_logic_1; + else + in2_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_we0 <= ap_const_logic_1; + else + in2_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_7_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_7_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_7_ce0 <= ap_const_logic_1; + else + in2_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_we0 <= ap_const_logic_1; + else + in2_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_8_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_8_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_8_ce0 <= ap_const_logic_1; + else + in2_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_we0 <= ap_const_logic_1; + else + in2_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2, zext_ln28_fu_3527_p1, sext_ln38_fu_3699_p1) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state25)) then + in2_loc_9_address0 <= sext_ln38_fu_3699_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_address0 <= zext_ln28_fu_3527_p1(6 - 1 downto 0); + else + in2_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_9_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_state25, ap_enable_reg_pp1_iter2) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_9_ce0 <= ap_const_logic_1; + else + in2_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4631_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4631_pp1_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_we0 <= ap_const_logic_1; + else + in2_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_3693_p2 <= std_logic_vector(signed(j_0_reg_3328) + signed(ap_const_lv32_1)); + mul_ln38_10_fu_3831_p0 <= in2_loc_10_q0; + mul_ln38_10_fu_3831_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_10_fu_3831_p0) * signed(in1_loc_10_load_reg_5092))), 32)); + mul_ln38_11_fu_3836_p0 <= in2_loc_11_q0; + mul_ln38_11_fu_3836_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_11_fu_3836_p0) * signed(in1_loc_11_load_reg_5097))), 32)); + mul_ln38_12_fu_3841_p0 <= in2_loc_12_q0; + mul_ln38_12_fu_3841_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_12_fu_3841_p0) * signed(in1_loc_12_load_reg_5102))), 32)); + mul_ln38_13_fu_3846_p0 <= in2_loc_13_q0; + mul_ln38_13_fu_3846_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_13_fu_3846_p0) * signed(in1_loc_13_load_reg_5107))), 32)); + mul_ln38_14_fu_3851_p0 <= in2_loc_14_q0; + mul_ln38_14_fu_3851_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_14_fu_3851_p0) * signed(in1_loc_14_load_reg_5112))), 32)); + mul_ln38_15_fu_3856_p0 <= in2_loc_15_q0; + mul_ln38_15_fu_3856_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_15_fu_3856_p0) * signed(in1_loc_15_load_reg_5117))), 32)); + mul_ln38_16_fu_3861_p0 <= in2_loc_16_q0; + mul_ln38_16_fu_3861_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_16_fu_3861_p0) * signed(in1_loc_16_load_reg_5122))), 32)); + mul_ln38_17_fu_3866_p0 <= in2_loc_17_q0; + mul_ln38_17_fu_3866_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_17_fu_3866_p0) * signed(in1_loc_17_load_reg_5127))), 32)); + mul_ln38_18_fu_3871_p0 <= in2_loc_18_q0; + mul_ln38_18_fu_3871_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_18_fu_3871_p0) * signed(in1_loc_18_load_reg_5132))), 32)); + mul_ln38_19_fu_3876_p0 <= in2_loc_19_q0; + mul_ln38_19_fu_3876_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_19_fu_3876_p0) * signed(in1_loc_19_load_reg_5137))), 32)); + mul_ln38_1_fu_3786_p0 <= in2_loc_1_q0; + mul_ln38_1_fu_3786_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_1_fu_3786_p0) * signed(in1_loc_1_load_reg_5047))), 32)); + mul_ln38_20_fu_3881_p0 <= in2_loc_20_q0; + mul_ln38_20_fu_3881_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_20_fu_3881_p0) * signed(in1_loc_20_load_reg_5142))), 32)); + mul_ln38_21_fu_3886_p0 <= in2_loc_21_q0; + mul_ln38_21_fu_3886_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_21_fu_3886_p0) * signed(in1_loc_21_load_reg_5147))), 32)); + mul_ln38_22_fu_3891_p0 <= in2_loc_22_q0; + mul_ln38_22_fu_3891_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_22_fu_3891_p0) * signed(in1_loc_22_load_reg_5152))), 32)); + mul_ln38_23_fu_3896_p0 <= in2_loc_23_q0; + mul_ln38_23_fu_3896_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_23_fu_3896_p0) * signed(in1_loc_23_load_reg_5157))), 32)); + mul_ln38_24_fu_3901_p0 <= in2_loc_24_q0; + mul_ln38_24_fu_3901_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_24_fu_3901_p0) * signed(in1_loc_24_load_reg_5162))), 32)); + mul_ln38_25_fu_3906_p0 <= in2_loc_25_q0; + mul_ln38_25_fu_3906_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_25_fu_3906_p0) * signed(in1_loc_25_load_reg_5167))), 32)); + mul_ln38_26_fu_3911_p0 <= in2_loc_26_q0; + mul_ln38_26_fu_3911_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_26_fu_3911_p0) * signed(in1_loc_26_load_reg_5172))), 32)); + mul_ln38_27_fu_3916_p0 <= in2_loc_27_q0; + mul_ln38_27_fu_3916_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_27_fu_3916_p0) * signed(in1_loc_27_load_reg_5177))), 32)); + mul_ln38_28_fu_3921_p0 <= in2_loc_28_q0; + mul_ln38_28_fu_3921_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_28_fu_3921_p0) * signed(in1_loc_28_load_reg_5182))), 32)); + mul_ln38_29_fu_3926_p0 <= in2_loc_29_q0; + mul_ln38_29_fu_3926_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_29_fu_3926_p0) * signed(in1_loc_29_load_reg_5187))), 32)); + mul_ln38_2_fu_3791_p0 <= in2_loc_2_q0; + mul_ln38_2_fu_3791_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_2_fu_3791_p0) * signed(in1_loc_2_load_reg_5052))), 32)); + mul_ln38_30_fu_3931_p0 <= in2_loc_30_q0; + mul_ln38_30_fu_3931_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_30_fu_3931_p0) * signed(in1_loc_30_load_reg_5192))), 32)); + mul_ln38_31_fu_3936_p0 <= in2_loc_31_q0; + mul_ln38_31_fu_3936_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_31_fu_3936_p0) * signed(in1_loc_31_load_reg_5197))), 32)); + mul_ln38_32_fu_3941_p0 <= in2_loc_32_q0; + mul_ln38_32_fu_3941_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_32_fu_3941_p0) * signed(in1_loc_32_load_reg_5202))), 32)); + mul_ln38_33_fu_3946_p0 <= in2_loc_33_q0; + mul_ln38_33_fu_3946_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_33_fu_3946_p0) * signed(in1_loc_33_load_reg_5207))), 32)); + mul_ln38_34_fu_3951_p0 <= in2_loc_34_q0; + mul_ln38_34_fu_3951_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_34_fu_3951_p0) * signed(in1_loc_34_load_reg_5212))), 32)); + mul_ln38_35_fu_3956_p0 <= in2_loc_35_q0; + mul_ln38_35_fu_3956_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_35_fu_3956_p0) * signed(in1_loc_35_load_reg_5217))), 32)); + mul_ln38_36_fu_3961_p0 <= in2_loc_36_q0; + mul_ln38_36_fu_3961_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_36_fu_3961_p0) * signed(in1_loc_36_load_reg_5222))), 32)); + mul_ln38_37_fu_3966_p0 <= in2_loc_37_q0; + mul_ln38_37_fu_3966_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_37_fu_3966_p0) * signed(in1_loc_37_load_reg_5227))), 32)); + mul_ln38_38_fu_3971_p0 <= in2_loc_38_q0; + mul_ln38_38_fu_3971_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_38_fu_3971_p0) * signed(in1_loc_38_load_reg_5232))), 32)); + mul_ln38_39_fu_3976_p0 <= in2_loc_39_q0; + mul_ln38_39_fu_3976_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_39_fu_3976_p0) * signed(in1_loc_39_load_reg_5237))), 32)); + mul_ln38_3_fu_3796_p0 <= in2_loc_3_q0; + mul_ln38_3_fu_3796_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_3_fu_3796_p0) * signed(in1_loc_3_load_reg_5057))), 32)); + mul_ln38_40_fu_3981_p0 <= in2_loc_40_q0; + mul_ln38_40_fu_3981_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_40_fu_3981_p0) * signed(in1_loc_40_load_reg_5242))), 32)); + mul_ln38_41_fu_3986_p0 <= in2_loc_41_q0; + mul_ln38_41_fu_3986_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_41_fu_3986_p0) * signed(in1_loc_41_load_reg_5247))), 32)); + mul_ln38_42_fu_3991_p0 <= in2_loc_42_q0; + mul_ln38_42_fu_3991_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_42_fu_3991_p0) * signed(in1_loc_42_load_reg_5252))), 32)); + mul_ln38_43_fu_3996_p0 <= in2_loc_43_q0; + mul_ln38_43_fu_3996_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_43_fu_3996_p0) * signed(in1_loc_43_load_reg_5257))), 32)); + mul_ln38_44_fu_4001_p0 <= in2_loc_44_q0; + mul_ln38_44_fu_4001_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_44_fu_4001_p0) * signed(in1_loc_44_load_reg_5262))), 32)); + mul_ln38_45_fu_4006_p0 <= in2_loc_45_q0; + mul_ln38_45_fu_4006_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_45_fu_4006_p0) * signed(in1_loc_45_load_reg_5267))), 32)); + mul_ln38_46_fu_4011_p0 <= in2_loc_46_q0; + mul_ln38_46_fu_4011_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_46_fu_4011_p0) * signed(in1_loc_46_load_reg_5272))), 32)); + mul_ln38_47_fu_4016_p0 <= in2_loc_47_q0; + mul_ln38_47_fu_4016_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_47_fu_4016_p0) * signed(in1_loc_47_load_reg_5277))), 32)); + mul_ln38_48_fu_4021_p0 <= in2_loc_48_q0; + mul_ln38_48_fu_4021_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_48_fu_4021_p0) * signed(in1_loc_48_load_reg_5282))), 32)); + mul_ln38_49_fu_4026_p0 <= in2_loc_49_q0; + mul_ln38_49_fu_4026_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_49_fu_4026_p0) * signed(in1_loc_49_load_reg_5287))), 32)); + mul_ln38_4_fu_3801_p0 <= in2_loc_4_q0; + mul_ln38_4_fu_3801_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_4_fu_3801_p0) * signed(in1_loc_4_load_reg_5062))), 32)); + mul_ln38_50_fu_4031_p0 <= in2_loc_50_q0; + mul_ln38_50_fu_4031_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_50_fu_4031_p0) * signed(in1_loc_50_load_reg_5292))), 32)); + mul_ln38_51_fu_4036_p0 <= in2_loc_51_q0; + mul_ln38_51_fu_4036_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_51_fu_4036_p0) * signed(in1_loc_51_load_reg_5297))), 32)); + mul_ln38_52_fu_4041_p0 <= in2_loc_52_q0; + mul_ln38_52_fu_4041_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_52_fu_4041_p0) * signed(in1_loc_52_load_reg_5302))), 32)); + mul_ln38_53_fu_4046_p0 <= in2_loc_53_q0; + mul_ln38_53_fu_4046_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_53_fu_4046_p0) * signed(in1_loc_53_load_reg_5307))), 32)); + mul_ln38_54_fu_4051_p0 <= in2_loc_54_q0; + mul_ln38_54_fu_4051_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_54_fu_4051_p0) * signed(in1_loc_54_load_reg_5312))), 32)); + mul_ln38_55_fu_4056_p0 <= in2_loc_55_q0; + mul_ln38_55_fu_4056_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_55_fu_4056_p0) * signed(in1_loc_55_load_reg_5317))), 32)); + mul_ln38_56_fu_4061_p0 <= in2_loc_56_q0; + mul_ln38_56_fu_4061_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_56_fu_4061_p0) * signed(in1_loc_56_load_reg_5322))), 32)); + mul_ln38_57_fu_4066_p0 <= in2_loc_57_q0; + mul_ln38_57_fu_4066_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_57_fu_4066_p0) * signed(in1_loc_57_load_reg_5327))), 32)); + mul_ln38_58_fu_4071_p0 <= in2_loc_58_q0; + mul_ln38_58_fu_4071_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_58_fu_4071_p0) * signed(in1_loc_58_load_reg_5332))), 32)); + mul_ln38_59_fu_4076_p0 <= in2_loc_59_q0; + mul_ln38_59_fu_4076_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_59_fu_4076_p0) * signed(in1_loc_59_load_reg_5337))), 32)); + mul_ln38_5_fu_3806_p0 <= in2_loc_5_q0; + mul_ln38_5_fu_3806_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_5_fu_3806_p0) * signed(in1_loc_5_load_reg_5067))), 32)); + mul_ln38_60_fu_4081_p0 <= in2_loc_60_q0; + mul_ln38_60_fu_4081_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_60_fu_4081_p0) * signed(in1_loc_60_load_reg_5342))), 32)); + mul_ln38_61_fu_4086_p0 <= in2_loc_61_q0; + mul_ln38_61_fu_4086_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_61_fu_4086_p0) * signed(in1_loc_61_load_reg_5347))), 32)); + mul_ln38_62_fu_4091_p0 <= in2_loc_62_q0; + mul_ln38_62_fu_4091_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_62_fu_4091_p0) * signed(in1_loc_62_load_reg_5352))), 32)); + mul_ln38_63_fu_4096_p0 <= in2_loc_63_q0; + mul_ln38_63_fu_4096_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_63_fu_4096_p0) * signed(in1_loc_63_load_reg_5357))), 32)); + mul_ln38_6_fu_3811_p0 <= in2_loc_6_q0; + mul_ln38_6_fu_3811_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_6_fu_3811_p0) * signed(in1_loc_6_load_reg_5072))), 32)); + mul_ln38_7_fu_3816_p0 <= in2_loc_7_q0; + mul_ln38_7_fu_3816_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_7_fu_3816_p0) * signed(in1_loc_7_load_reg_5077))), 32)); + mul_ln38_8_fu_3821_p0 <= in2_loc_8_q0; + mul_ln38_8_fu_3821_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_8_fu_3821_p0) * signed(in1_loc_8_load_reg_5082))), 32)); + mul_ln38_9_fu_3826_p0 <= in2_loc_9_q0; + mul_ln38_9_fu_3826_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_9_fu_3826_p0) * signed(in1_loc_9_load_reg_5087))), 32)); + mul_ln38_fu_3781_p0 <= in2_loc_0_q0; + mul_ln38_fu_3781_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_fu_3781_p0) * signed(in1_loc_0_load_reg_5042))), 32)); + + out_loc_address0_assign_proc : process(ap_block_pp2_stage0, ap_CS_fsm_state25, out_loc_addr_reg_5370, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_CS_fsm_state27, sext_ln38_1_fu_3776_p1, zext_ln42_fu_4487_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + out_loc_address0 <= zext_ln42_fu_4487_p1(12 - 1 downto 0); + elsif ((ap_const_logic_1 = ap_CS_fsm_state27)) then + out_loc_address0 <= out_loc_addr_reg_5370; + elsif ((ap_const_logic_1 = ap_CS_fsm_state25)) then + out_loc_address0 <= sext_ln38_1_fu_3776_p1(12 - 1 downto 0); + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_CS_fsm_state25, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_CS_fsm_state27) + begin + if (((ap_const_logic_1 = ap_CS_fsm_state25) or (ap_const_logic_1 = ap_CS_fsm_state27) or ((ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + out_loc_d0 <= std_logic_vector(unsigned(add_ln38_30_fu_4438_p2) + unsigned(add_ln38_62_fu_4462_p2)); + + out_loc_we0_assign_proc : process(ap_CS_fsm_state27) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state27)) then + out_loc_we0 <= ap_const_logic_1; + else + out_loc_we0 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state23, icmp_ln31_fu_3598_p2, ap_block_state23_io) + begin + if (((ap_const_boolean_0 = ap_block_state23_io) and (icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state35, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state35))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp2_iter2, icmp_ln42_reg_5750_pp2_iter1_reg, ap_block_pp2_stage0_11001) + begin + if (((icmp_ln42_reg_5750_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_11001))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state23, icmp_ln31_fu_3598_p2) + begin + if (((icmp_ln31_fu_3598_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_state23))) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state35) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state35)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp2_iter2, ap_block_pp2_stage0, icmp_ln42_reg_5750_pp2_iter1_reg) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (icmp_ln42_reg_5750_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + sext_ln38_1_fu_3776_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(add_ln38_64_fu_3771_p2),64)); + + sext_ln38_fu_3699_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(j_0_reg_3328),64)); + + trunc_ln27_fu_3430_p1 <= phi_ln27_reg_3295(6 - 1 downto 0); + trunc_ln28_fu_3513_p1 <= phi_ln28_reg_3306(6 - 1 downto 0); + trunc_ln38_1_fu_3767_p1 <= j_0_reg_3328(14 - 1 downto 0); + trunc_ln38_fu_3677_p1 <= i_0_reg_3317(8 - 1 downto 0); + zext_ln27_fu_3434_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(lshr_ln_reg_4540_pp0_iter1_reg),64)); + zext_ln28_fu_3527_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(trunc_ln28_reg_4626_pp1_iter1_reg),64)); + zext_ln31_fu_3594_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(i_0_reg_3317),32)); + zext_ln38_1_cast_fu_3681_p3 <= (trunc_ln38_reg_4712 & ap_const_lv6_0); + zext_ln38_fu_3609_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(i_0_reg_3317),64)); + zext_ln42_fu_4487_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_3339),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_loc_0.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_loc_0.vhd new file mode 100755 index 0000000..609e4b6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_loc_0.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_0_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 6; + MEM_SIZE : integer := 64 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_0_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc_0 is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 64; + AddressWidth : INTEGER := 6); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc_0 is + component mmult_in1_loc_0_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_0_ram_U : component mmult_in1_loc_0_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_loc.vhd new file mode 100755 index 0000000..ec49d88 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_loc.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_out_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_out_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_out_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_out_loc is + component mmult_out_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_out_loc_ram_U : component mmult_out_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/xgui/mmult_v6_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/xgui/mmult_v6_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_6/xgui/mmult_v6_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/component.xml new file mode 100755 index 0000000..6f89397 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/component.xml @@ -0,0 +1,5578 @@ + + + xilinx.com + hls + mmult + 7.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 0ce2a418 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + eadbc8ff + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 4506cbfd + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 9630f760 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + bf354ee5 + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_loc.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_b8ac03e0 + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v7_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v7_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v7_0/src/Makefile + driver_src + + + drivers/mmult_v7_0/src/xmmult.c + driver_src + + + drivers/mmult_v7_0/src/xmmult.h + driver_src + + + drivers/mmult_v7_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v7_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v7_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v7_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v7_0 + + + clk_period + 10 + + + machine + 64 + + + combinational + 0 + + + latency + 16413 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141712 + 2021-05-14T15:12:46Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..2ed5eee --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 10.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/doc/ReleaseNotes.txt new file mode 100755 index 0000000..48cc01b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 10.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.mdd new file mode 100755 index 0000000..09ec73b --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v7_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 7.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/drivers/mmult_v7_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult.v new file mode 100755 index 0000000..9583927 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult.v @@ -0,0 +1,8287 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=16413,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=2859,HLS_SYN_LUT=8200,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 26'd1; +parameter ap_ST_fsm_state2 = 26'd2; +parameter ap_ST_fsm_state3 = 26'd4; +parameter ap_ST_fsm_state4 = 26'd8; +parameter ap_ST_fsm_state5 = 26'd16; +parameter ap_ST_fsm_state6 = 26'd32; +parameter ap_ST_fsm_state7 = 26'd64; +parameter ap_ST_fsm_state8 = 26'd128; +parameter ap_ST_fsm_pp0_stage0 = 26'd256; +parameter ap_ST_fsm_state12 = 26'd512; +parameter ap_ST_fsm_state13 = 26'd1024; +parameter ap_ST_fsm_state14 = 26'd2048; +parameter ap_ST_fsm_state15 = 26'd4096; +parameter ap_ST_fsm_state16 = 26'd8192; +parameter ap_ST_fsm_state17 = 26'd16384; +parameter ap_ST_fsm_state18 = 26'd32768; +parameter ap_ST_fsm_pp1_stage0 = 26'd65536; +parameter ap_ST_fsm_state22 = 26'd131072; +parameter ap_ST_fsm_pp2_stage0 = 26'd262144; +parameter ap_ST_fsm_state26 = 26'd524288; +parameter ap_ST_fsm_pp3_stage0 = 26'd1048576; +parameter ap_ST_fsm_state30 = 26'd2097152; +parameter ap_ST_fsm_state31 = 26'd4194304; +parameter ap_ST_fsm_state32 = 26'd8388608; +parameter ap_ST_fsm_state33 = 26'd16777216; +parameter ap_ST_fsm_state34 = 26'd33554432; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [25:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state26; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp3_iter2; +wire ap_block_pp3_stage0; +reg [0:0] icmp_ln42_reg_5549; +reg [0:0] icmp_ln42_reg_5549_pp3_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state34; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_3296; +reg [12:0] phi_ln28_reg_3307; +reg [63:0] indvar_flatten_reg_3318; +reg [30:0] i_0_reg_3329; +reg [31:0] j_0_reg_3340; +reg [12:0] phi_ln42_reg_3351; +reg [31:0] dim_read_reg_4593; +reg [29:0] out5_reg_4599; +reg [29:0] in_reg_4604; +reg [29:0] in3_reg_4609; +reg [31:0] out_mem_addr_reg_4620; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_4626; +wire [0:0] icmp_ln27_fu_3420_p2; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +wire [12:0] add_ln27_fu_3426_p2; +reg ap_enable_reg_pp0_iter0; +reg [6:0] lshr_ln_reg_4641; +reg [6:0] lshr_ln_reg_4641_pp0_iter1_reg; +wire [5:0] trunc_ln27_fu_3442_p1; +reg [5:0] trunc_ln27_reg_4646; +reg [5:0] trunc_ln27_reg_4646_pp0_iter1_reg; +reg [31:0] in1_mem_addr_read_reg_4650; +wire [0:0] icmp_ln28_fu_3513_p2; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +wire [12:0] add_ln28_fu_3519_p2; +reg ap_enable_reg_pp1_iter0; +wire [5:0] trunc_ln28_fu_3525_p1; +reg [5:0] trunc_ln28_reg_4727; +reg [5:0] trunc_ln28_reg_4727_pp1_iter1_reg; +reg [5:0] trunc_ln1_reg_4732; +reg [5:0] trunc_ln1_reg_4732_pp1_iter1_reg; +reg [31:0] in2_mem_addr_read_reg_4736; +wire [63:0] mul_ln31_fu_3609_p2; +reg [63:0] mul_ln31_reg_4804; +wire ap_CS_fsm_state22; +wire [0:0] icmp_ln31_fu_3615_p2; +reg [0:0] icmp_ln31_reg_4809; +wire ap_CS_fsm_pp2_stage0; +wire ap_block_state23_pp2_stage0_iter0; +wire ap_block_state24_pp2_stage0_iter1; +wire ap_block_state25_pp2_stage0_iter2; +wire ap_block_pp2_stage0_11001; +reg [0:0] icmp_ln31_reg_4809_pp2_iter1_reg; +wire [63:0] add_ln31_fu_3620_p2; +reg ap_enable_reg_pp2_iter0; +wire [30:0] select_ln31_1_fu_3645_p3; +reg [30:0] select_ln31_1_reg_4818; +reg [11:0] out_loc_addr_reg_5143; +reg [11:0] out_loc_addr_reg_5143_pp2_iter1_reg; +wire [31:0] j_fu_3816_p2; +wire [31:0] mul_ln38_fu_3822_p2; +reg [31:0] mul_ln38_reg_5474; +wire [31:0] mul_ln38_1_fu_3828_p2; +reg [31:0] mul_ln38_1_reg_5479; +wire [31:0] mul_ln38_2_fu_3834_p2; +reg [31:0] mul_ln38_2_reg_5484; +wire [31:0] add_ln38_3_fu_4206_p2; +reg [31:0] add_ln38_3_reg_5489; +wire [31:0] add_ln38_4_fu_4212_p2; +reg [31:0] add_ln38_4_reg_5494; +wire [31:0] add_ln38_9_fu_4230_p2; +reg [31:0] add_ln38_9_reg_5499; +wire [31:0] add_ln38_12_fu_4248_p2; +reg [31:0] add_ln38_12_reg_5504; +wire [31:0] add_ln38_21_fu_4290_p2; +reg [31:0] add_ln38_21_reg_5509; +wire [31:0] add_ln38_28_fu_4332_p2; +reg [31:0] add_ln38_28_reg_5514; +wire [31:0] add_ln38_37_fu_4374_p2; +reg [31:0] add_ln38_37_reg_5519; +wire [31:0] add_ln38_40_fu_4392_p2; +reg [31:0] add_ln38_40_reg_5524; +wire [31:0] add_ln38_43_fu_4410_p2; +reg [31:0] add_ln38_43_reg_5529; +wire [31:0] add_ln38_52_fu_4452_p2; +reg [31:0] add_ln38_52_reg_5534; +wire [31:0] add_ln38_55_fu_4470_p2; +reg [31:0] add_ln38_55_reg_5539; +wire [31:0] add_ln38_59_fu_4494_p2; +reg [31:0] add_ln38_59_reg_5544; +wire [0:0] icmp_ln42_fu_4576_p2; +wire ap_CS_fsm_pp3_stage0; +wire ap_block_state27_pp3_stage0_iter0; +wire ap_block_state28_pp3_stage0_iter1; +wire ap_block_state29_pp3_stage0_iter2; +reg ap_block_state29_io; +reg ap_block_pp3_stage0_11001; +wire [12:0] add_ln42_fu_4582_p2; +reg ap_enable_reg_pp3_iter0; +wire [31:0] out_loc_q0; +reg [31:0] out_loc_load_reg_5563; +reg ap_enable_reg_pp3_iter1; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +wire ap_block_pp2_stage0_subdone; +reg ap_condition_pp2_exit_iter0_state23; +reg ap_enable_reg_pp2_iter1; +reg ap_enable_reg_pp2_iter2; +reg ap_block_pp3_stage0_subdone; +reg ap_condition_pp3_exit_iter0_state27; +reg [5:0] in1_loc_0_address0; +reg in1_loc_0_ce0; +reg in1_loc_0_we0; +wire [31:0] in1_loc_0_q0; +reg [5:0] in1_loc_1_address0; +reg in1_loc_1_ce0; +reg in1_loc_1_we0; +wire [31:0] in1_loc_1_q0; +reg [5:0] in1_loc_2_address0; +reg in1_loc_2_ce0; +reg in1_loc_2_we0; +wire [31:0] in1_loc_2_q0; +reg [5:0] in1_loc_3_address0; +reg in1_loc_3_ce0; +reg in1_loc_3_we0; +wire [31:0] in1_loc_3_q0; +reg [5:0] in1_loc_4_address0; +reg in1_loc_4_ce0; +reg in1_loc_4_we0; +wire [31:0] in1_loc_4_q0; +reg [5:0] in1_loc_5_address0; +reg in1_loc_5_ce0; +reg in1_loc_5_we0; +wire [31:0] in1_loc_5_q0; +reg [5:0] in1_loc_6_address0; +reg in1_loc_6_ce0; +reg in1_loc_6_we0; +wire [31:0] in1_loc_6_q0; +reg [5:0] in1_loc_7_address0; +reg in1_loc_7_ce0; +reg in1_loc_7_we0; +wire [31:0] in1_loc_7_q0; +reg [5:0] in1_loc_8_address0; +reg in1_loc_8_ce0; +reg in1_loc_8_we0; +wire [31:0] in1_loc_8_q0; +reg [5:0] in1_loc_9_address0; +reg in1_loc_9_ce0; +reg in1_loc_9_we0; +wire [31:0] in1_loc_9_q0; +reg [5:0] in1_loc_10_address0; +reg in1_loc_10_ce0; +reg in1_loc_10_we0; +wire [31:0] in1_loc_10_q0; +reg [5:0] in1_loc_11_address0; +reg in1_loc_11_ce0; +reg in1_loc_11_we0; +wire [31:0] in1_loc_11_q0; +reg [5:0] in1_loc_12_address0; +reg in1_loc_12_ce0; +reg in1_loc_12_we0; +wire [31:0] in1_loc_12_q0; +reg [5:0] in1_loc_13_address0; +reg in1_loc_13_ce0; +reg in1_loc_13_we0; +wire [31:0] in1_loc_13_q0; +reg [5:0] in1_loc_14_address0; +reg in1_loc_14_ce0; +reg in1_loc_14_we0; +wire [31:0] in1_loc_14_q0; +reg [5:0] in1_loc_15_address0; +reg in1_loc_15_ce0; +reg in1_loc_15_we0; +wire [31:0] in1_loc_15_q0; +reg [5:0] in1_loc_16_address0; +reg in1_loc_16_ce0; +reg in1_loc_16_we0; +wire [31:0] in1_loc_16_q0; +reg [5:0] in1_loc_17_address0; +reg in1_loc_17_ce0; +reg in1_loc_17_we0; +wire [31:0] in1_loc_17_q0; +reg [5:0] in1_loc_18_address0; +reg in1_loc_18_ce0; +reg in1_loc_18_we0; +wire [31:0] in1_loc_18_q0; +reg [5:0] in1_loc_19_address0; +reg in1_loc_19_ce0; +reg in1_loc_19_we0; +wire [31:0] in1_loc_19_q0; +reg [5:0] in1_loc_20_address0; +reg in1_loc_20_ce0; +reg in1_loc_20_we0; +wire [31:0] in1_loc_20_q0; +reg [5:0] in1_loc_21_address0; +reg in1_loc_21_ce0; +reg in1_loc_21_we0; +wire [31:0] in1_loc_21_q0; +reg [5:0] in1_loc_22_address0; +reg in1_loc_22_ce0; +reg in1_loc_22_we0; +wire [31:0] in1_loc_22_q0; +reg [5:0] in1_loc_23_address0; +reg in1_loc_23_ce0; +reg in1_loc_23_we0; +wire [31:0] in1_loc_23_q0; +reg [5:0] in1_loc_24_address0; +reg in1_loc_24_ce0; +reg in1_loc_24_we0; +wire [31:0] in1_loc_24_q0; +reg [5:0] in1_loc_25_address0; +reg in1_loc_25_ce0; +reg in1_loc_25_we0; +wire [31:0] in1_loc_25_q0; +reg [5:0] in1_loc_26_address0; +reg in1_loc_26_ce0; +reg in1_loc_26_we0; +wire [31:0] in1_loc_26_q0; +reg [5:0] in1_loc_27_address0; +reg in1_loc_27_ce0; +reg in1_loc_27_we0; +wire [31:0] in1_loc_27_q0; +reg [5:0] in1_loc_28_address0; +reg in1_loc_28_ce0; +reg in1_loc_28_we0; +wire [31:0] in1_loc_28_q0; +reg [5:0] in1_loc_29_address0; +reg in1_loc_29_ce0; +reg in1_loc_29_we0; +wire [31:0] in1_loc_29_q0; +reg [5:0] in1_loc_30_address0; +reg in1_loc_30_ce0; +reg in1_loc_30_we0; +wire [31:0] in1_loc_30_q0; +reg [5:0] in1_loc_31_address0; +reg in1_loc_31_ce0; +reg in1_loc_31_we0; +wire [31:0] in1_loc_31_q0; +reg [5:0] in1_loc_32_address0; +reg in1_loc_32_ce0; +reg in1_loc_32_we0; +wire [31:0] in1_loc_32_q0; +reg [5:0] in1_loc_33_address0; +reg in1_loc_33_ce0; +reg in1_loc_33_we0; +wire [31:0] in1_loc_33_q0; +reg [5:0] in1_loc_34_address0; +reg in1_loc_34_ce0; +reg in1_loc_34_we0; +wire [31:0] in1_loc_34_q0; +reg [5:0] in1_loc_35_address0; +reg in1_loc_35_ce0; +reg in1_loc_35_we0; +wire [31:0] in1_loc_35_q0; +reg [5:0] in1_loc_36_address0; +reg in1_loc_36_ce0; +reg in1_loc_36_we0; +wire [31:0] in1_loc_36_q0; +reg [5:0] in1_loc_37_address0; +reg in1_loc_37_ce0; +reg in1_loc_37_we0; +wire [31:0] in1_loc_37_q0; +reg [5:0] in1_loc_38_address0; +reg in1_loc_38_ce0; +reg in1_loc_38_we0; +wire [31:0] in1_loc_38_q0; +reg [5:0] in1_loc_39_address0; +reg in1_loc_39_ce0; +reg in1_loc_39_we0; +wire [31:0] in1_loc_39_q0; +reg [5:0] in1_loc_40_address0; +reg in1_loc_40_ce0; +reg in1_loc_40_we0; +wire [31:0] in1_loc_40_q0; +reg [5:0] in1_loc_41_address0; +reg in1_loc_41_ce0; +reg in1_loc_41_we0; +wire [31:0] in1_loc_41_q0; +reg [5:0] in1_loc_42_address0; +reg in1_loc_42_ce0; +reg in1_loc_42_we0; +wire [31:0] in1_loc_42_q0; +reg [5:0] in1_loc_43_address0; +reg in1_loc_43_ce0; +reg in1_loc_43_we0; +wire [31:0] in1_loc_43_q0; +reg [5:0] in1_loc_44_address0; +reg in1_loc_44_ce0; +reg in1_loc_44_we0; +wire [31:0] in1_loc_44_q0; +reg [5:0] in1_loc_45_address0; +reg in1_loc_45_ce0; +reg in1_loc_45_we0; +wire [31:0] in1_loc_45_q0; +reg [5:0] in1_loc_46_address0; +reg in1_loc_46_ce0; +reg in1_loc_46_we0; +wire [31:0] in1_loc_46_q0; +reg [5:0] in1_loc_47_address0; +reg in1_loc_47_ce0; +reg in1_loc_47_we0; +wire [31:0] in1_loc_47_q0; +reg [5:0] in1_loc_48_address0; +reg in1_loc_48_ce0; +reg in1_loc_48_we0; +wire [31:0] in1_loc_48_q0; +reg [5:0] in1_loc_49_address0; +reg in1_loc_49_ce0; +reg in1_loc_49_we0; +wire [31:0] in1_loc_49_q0; +reg [5:0] in1_loc_50_address0; +reg in1_loc_50_ce0; +reg in1_loc_50_we0; +wire [31:0] in1_loc_50_q0; +reg [5:0] in1_loc_51_address0; +reg in1_loc_51_ce0; +reg in1_loc_51_we0; +wire [31:0] in1_loc_51_q0; +reg [5:0] in1_loc_52_address0; +reg in1_loc_52_ce0; +reg in1_loc_52_we0; +wire [31:0] in1_loc_52_q0; +reg [5:0] in1_loc_53_address0; +reg in1_loc_53_ce0; +reg in1_loc_53_we0; +wire [31:0] in1_loc_53_q0; +reg [5:0] in1_loc_54_address0; +reg in1_loc_54_ce0; +reg in1_loc_54_we0; +wire [31:0] in1_loc_54_q0; +reg [5:0] in1_loc_55_address0; +reg in1_loc_55_ce0; +reg in1_loc_55_we0; +wire [31:0] in1_loc_55_q0; +reg [5:0] in1_loc_56_address0; +reg in1_loc_56_ce0; +reg in1_loc_56_we0; +wire [31:0] in1_loc_56_q0; +reg [5:0] in1_loc_57_address0; +reg in1_loc_57_ce0; +reg in1_loc_57_we0; +wire [31:0] in1_loc_57_q0; +reg [5:0] in1_loc_58_address0; +reg in1_loc_58_ce0; +reg in1_loc_58_we0; +wire [31:0] in1_loc_58_q0; +reg [5:0] in1_loc_59_address0; +reg in1_loc_59_ce0; +reg in1_loc_59_we0; +wire [31:0] in1_loc_59_q0; +reg [5:0] in1_loc_60_address0; +reg in1_loc_60_ce0; +reg in1_loc_60_we0; +wire [31:0] in1_loc_60_q0; +reg [5:0] in1_loc_61_address0; +reg in1_loc_61_ce0; +reg in1_loc_61_we0; +wire [31:0] in1_loc_61_q0; +reg [5:0] in1_loc_62_address0; +reg in1_loc_62_ce0; +reg in1_loc_62_we0; +wire [31:0] in1_loc_62_q0; +reg [5:0] in1_loc_63_address0; +reg in1_loc_63_ce0; +reg in1_loc_63_we0; +wire [31:0] in1_loc_63_q0; +reg [5:0] in2_loc_0_address0; +reg in2_loc_0_ce0; +reg in2_loc_0_we0; +wire [31:0] in2_loc_0_q0; +reg [5:0] in2_loc_1_address0; +reg in2_loc_1_ce0; +reg in2_loc_1_we0; +wire [31:0] in2_loc_1_q0; +reg [5:0] in2_loc_2_address0; +reg in2_loc_2_ce0; +reg in2_loc_2_we0; +wire [31:0] in2_loc_2_q0; +reg [5:0] in2_loc_3_address0; +reg in2_loc_3_ce0; +reg in2_loc_3_we0; +wire [31:0] in2_loc_3_q0; +reg [5:0] in2_loc_4_address0; +reg in2_loc_4_ce0; +reg in2_loc_4_we0; +wire [31:0] in2_loc_4_q0; +reg [5:0] in2_loc_5_address0; +reg in2_loc_5_ce0; +reg in2_loc_5_we0; +wire [31:0] in2_loc_5_q0; +reg [5:0] in2_loc_6_address0; +reg in2_loc_6_ce0; +reg in2_loc_6_we0; +wire [31:0] in2_loc_6_q0; +reg [5:0] in2_loc_7_address0; +reg in2_loc_7_ce0; +reg in2_loc_7_we0; +wire [31:0] in2_loc_7_q0; +reg [5:0] in2_loc_8_address0; +reg in2_loc_8_ce0; +reg in2_loc_8_we0; +wire [31:0] in2_loc_8_q0; +reg [5:0] in2_loc_9_address0; +reg in2_loc_9_ce0; +reg in2_loc_9_we0; +wire [31:0] in2_loc_9_q0; +reg [5:0] in2_loc_10_address0; +reg in2_loc_10_ce0; +reg in2_loc_10_we0; +wire [31:0] in2_loc_10_q0; +reg [5:0] in2_loc_11_address0; +reg in2_loc_11_ce0; +reg in2_loc_11_we0; +wire [31:0] in2_loc_11_q0; +reg [5:0] in2_loc_12_address0; +reg in2_loc_12_ce0; +reg in2_loc_12_we0; +wire [31:0] in2_loc_12_q0; +reg [5:0] in2_loc_13_address0; +reg in2_loc_13_ce0; +reg in2_loc_13_we0; +wire [31:0] in2_loc_13_q0; +reg [5:0] in2_loc_14_address0; +reg in2_loc_14_ce0; +reg in2_loc_14_we0; +wire [31:0] in2_loc_14_q0; +reg [5:0] in2_loc_15_address0; +reg in2_loc_15_ce0; +reg in2_loc_15_we0; +wire [31:0] in2_loc_15_q0; +reg [5:0] in2_loc_16_address0; +reg in2_loc_16_ce0; +reg in2_loc_16_we0; +wire [31:0] in2_loc_16_q0; +reg [5:0] in2_loc_17_address0; +reg in2_loc_17_ce0; +reg in2_loc_17_we0; +wire [31:0] in2_loc_17_q0; +reg [5:0] in2_loc_18_address0; +reg in2_loc_18_ce0; +reg in2_loc_18_we0; +wire [31:0] in2_loc_18_q0; +reg [5:0] in2_loc_19_address0; +reg in2_loc_19_ce0; +reg in2_loc_19_we0; +wire [31:0] in2_loc_19_q0; +reg [5:0] in2_loc_20_address0; +reg in2_loc_20_ce0; +reg in2_loc_20_we0; +wire [31:0] in2_loc_20_q0; +reg [5:0] in2_loc_21_address0; +reg in2_loc_21_ce0; +reg in2_loc_21_we0; +wire [31:0] in2_loc_21_q0; +reg [5:0] in2_loc_22_address0; +reg in2_loc_22_ce0; +reg in2_loc_22_we0; +wire [31:0] in2_loc_22_q0; +reg [5:0] in2_loc_23_address0; +reg in2_loc_23_ce0; +reg in2_loc_23_we0; +wire [31:0] in2_loc_23_q0; +reg [5:0] in2_loc_24_address0; +reg in2_loc_24_ce0; +reg in2_loc_24_we0; +wire [31:0] in2_loc_24_q0; +reg [5:0] in2_loc_25_address0; +reg in2_loc_25_ce0; +reg in2_loc_25_we0; +wire [31:0] in2_loc_25_q0; +reg [5:0] in2_loc_26_address0; +reg in2_loc_26_ce0; +reg in2_loc_26_we0; +wire [31:0] in2_loc_26_q0; +reg [5:0] in2_loc_27_address0; +reg in2_loc_27_ce0; +reg in2_loc_27_we0; +wire [31:0] in2_loc_27_q0; +reg [5:0] in2_loc_28_address0; +reg in2_loc_28_ce0; +reg in2_loc_28_we0; +wire [31:0] in2_loc_28_q0; +reg [5:0] in2_loc_29_address0; +reg in2_loc_29_ce0; +reg in2_loc_29_we0; +wire [31:0] in2_loc_29_q0; +reg [5:0] in2_loc_30_address0; +reg in2_loc_30_ce0; +reg in2_loc_30_we0; +wire [31:0] in2_loc_30_q0; +reg [5:0] in2_loc_31_address0; +reg in2_loc_31_ce0; +reg in2_loc_31_we0; +wire [31:0] in2_loc_31_q0; +reg [5:0] in2_loc_32_address0; +reg in2_loc_32_ce0; +reg in2_loc_32_we0; +wire [31:0] in2_loc_32_q0; +reg [5:0] in2_loc_33_address0; +reg in2_loc_33_ce0; +reg in2_loc_33_we0; +wire [31:0] in2_loc_33_q0; +reg [5:0] in2_loc_34_address0; +reg in2_loc_34_ce0; +reg in2_loc_34_we0; +wire [31:0] in2_loc_34_q0; +reg [5:0] in2_loc_35_address0; +reg in2_loc_35_ce0; +reg in2_loc_35_we0; +wire [31:0] in2_loc_35_q0; +reg [5:0] in2_loc_36_address0; +reg in2_loc_36_ce0; +reg in2_loc_36_we0; +wire [31:0] in2_loc_36_q0; +reg [5:0] in2_loc_37_address0; +reg in2_loc_37_ce0; +reg in2_loc_37_we0; +wire [31:0] in2_loc_37_q0; +reg [5:0] in2_loc_38_address0; +reg in2_loc_38_ce0; +reg in2_loc_38_we0; +wire [31:0] in2_loc_38_q0; +reg [5:0] in2_loc_39_address0; +reg in2_loc_39_ce0; +reg in2_loc_39_we0; +wire [31:0] in2_loc_39_q0; +reg [5:0] in2_loc_40_address0; +reg in2_loc_40_ce0; +reg in2_loc_40_we0; +wire [31:0] in2_loc_40_q0; +reg [5:0] in2_loc_41_address0; +reg in2_loc_41_ce0; +reg in2_loc_41_we0; +wire [31:0] in2_loc_41_q0; +reg [5:0] in2_loc_42_address0; +reg in2_loc_42_ce0; +reg in2_loc_42_we0; +wire [31:0] in2_loc_42_q0; +reg [5:0] in2_loc_43_address0; +reg in2_loc_43_ce0; +reg in2_loc_43_we0; +wire [31:0] in2_loc_43_q0; +reg [5:0] in2_loc_44_address0; +reg in2_loc_44_ce0; +reg in2_loc_44_we0; +wire [31:0] in2_loc_44_q0; +reg [5:0] in2_loc_45_address0; +reg in2_loc_45_ce0; +reg in2_loc_45_we0; +wire [31:0] in2_loc_45_q0; +reg [5:0] in2_loc_46_address0; +reg in2_loc_46_ce0; +reg in2_loc_46_we0; +wire [31:0] in2_loc_46_q0; +reg [5:0] in2_loc_47_address0; +reg in2_loc_47_ce0; +reg in2_loc_47_we0; +wire [31:0] in2_loc_47_q0; +reg [5:0] in2_loc_48_address0; +reg in2_loc_48_ce0; +reg in2_loc_48_we0; +wire [31:0] in2_loc_48_q0; +reg [5:0] in2_loc_49_address0; +reg in2_loc_49_ce0; +reg in2_loc_49_we0; +wire [31:0] in2_loc_49_q0; +reg [5:0] in2_loc_50_address0; +reg in2_loc_50_ce0; +reg in2_loc_50_we0; +wire [31:0] in2_loc_50_q0; +reg [5:0] in2_loc_51_address0; +reg in2_loc_51_ce0; +reg in2_loc_51_we0; +wire [31:0] in2_loc_51_q0; +reg [5:0] in2_loc_52_address0; +reg in2_loc_52_ce0; +reg in2_loc_52_we0; +wire [31:0] in2_loc_52_q0; +reg [5:0] in2_loc_53_address0; +reg in2_loc_53_ce0; +reg in2_loc_53_we0; +wire [31:0] in2_loc_53_q0; +reg [5:0] in2_loc_54_address0; +reg in2_loc_54_ce0; +reg in2_loc_54_we0; +wire [31:0] in2_loc_54_q0; +reg [5:0] in2_loc_55_address0; +reg in2_loc_55_ce0; +reg in2_loc_55_we0; +wire [31:0] in2_loc_55_q0; +reg [5:0] in2_loc_56_address0; +reg in2_loc_56_ce0; +reg in2_loc_56_we0; +wire [31:0] in2_loc_56_q0; +reg [5:0] in2_loc_57_address0; +reg in2_loc_57_ce0; +reg in2_loc_57_we0; +wire [31:0] in2_loc_57_q0; +reg [5:0] in2_loc_58_address0; +reg in2_loc_58_ce0; +reg in2_loc_58_we0; +wire [31:0] in2_loc_58_q0; +reg [5:0] in2_loc_59_address0; +reg in2_loc_59_ce0; +reg in2_loc_59_we0; +wire [31:0] in2_loc_59_q0; +reg [5:0] in2_loc_60_address0; +reg in2_loc_60_ce0; +reg in2_loc_60_we0; +wire [31:0] in2_loc_60_q0; +reg [5:0] in2_loc_61_address0; +reg in2_loc_61_ce0; +reg in2_loc_61_we0; +wire [31:0] in2_loc_61_q0; +reg [5:0] in2_loc_62_address0; +reg in2_loc_62_ce0; +reg in2_loc_62_we0; +wire [31:0] in2_loc_62_q0; +reg [5:0] in2_loc_63_address0; +reg in2_loc_63_ce0; +reg in2_loc_63_we0; +wire [31:0] in2_loc_63_q0; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_ce1; +reg out_loc_we1; +wire [31:0] out_loc_d1; +reg [30:0] ap_phi_mux_i_0_phi_fu_3333_p4; +wire ap_block_pp2_stage0; +wire [63:0] zext_ln27_fu_3446_p1; +wire [63:0] zext_ln28_fu_3539_p1; +wire [63:0] zext_ln31_1_fu_3665_p1; +wire [63:0] zext_ln38_fu_3811_p1; +wire signed [63:0] sext_ln38_fu_3733_p1; +wire [63:0] zext_ln42_fu_4588_p1; +wire [63:0] empty_8_fu_3392_p1; +wire [63:0] empty_fu_3402_p1; +wire [63:0] empty_7_fu_3411_p1; +wire ap_block_pp3_stage0_01001; +wire [31:0] mul_ln31_fu_3609_p0; +wire [63:0] zext_ln31_fu_3606_p1; +wire [31:0] mul_ln31_fu_3609_p1; +wire [0:0] icmp_ln33_fu_3632_p2; +wire [30:0] i_fu_3626_p2; +wire [7:0] trunc_ln38_fu_3653_p1; +wire signed [31:0] select_ln31_fu_3637_p3; +wire [13:0] tmp_cast_fu_3657_p3; +wire [13:0] trunc_ln38_1_fu_3801_p1; +wire [13:0] add_ln38_64_fu_3805_p2; +wire signed [31:0] mul_ln38_fu_3822_p0; +wire signed [31:0] mul_ln38_fu_3822_p1; +wire signed [31:0] mul_ln38_1_fu_3828_p0; +wire signed [31:0] mul_ln38_1_fu_3828_p1; +wire signed [31:0] mul_ln38_2_fu_3834_p0; +wire signed [31:0] mul_ln38_2_fu_3834_p1; +wire signed [31:0] mul_ln38_3_fu_3840_p0; +wire signed [31:0] mul_ln38_3_fu_3840_p1; +wire signed [31:0] mul_ln38_4_fu_3846_p0; +wire signed [31:0] mul_ln38_4_fu_3846_p1; +wire signed [31:0] mul_ln38_5_fu_3852_p0; +wire signed [31:0] mul_ln38_5_fu_3852_p1; +wire signed [31:0] mul_ln38_6_fu_3858_p0; +wire signed [31:0] mul_ln38_6_fu_3858_p1; +wire signed [31:0] mul_ln38_7_fu_3864_p0; +wire signed [31:0] mul_ln38_7_fu_3864_p1; +wire signed [31:0] mul_ln38_8_fu_3870_p0; +wire signed [31:0] mul_ln38_8_fu_3870_p1; +wire signed [31:0] mul_ln38_9_fu_3876_p0; +wire signed [31:0] mul_ln38_9_fu_3876_p1; +wire signed [31:0] mul_ln38_10_fu_3882_p0; +wire signed [31:0] mul_ln38_10_fu_3882_p1; +wire signed [31:0] mul_ln38_11_fu_3888_p0; +wire signed [31:0] mul_ln38_11_fu_3888_p1; +wire signed [31:0] mul_ln38_12_fu_3894_p0; +wire signed [31:0] mul_ln38_12_fu_3894_p1; +wire signed [31:0] mul_ln38_13_fu_3900_p0; +wire signed [31:0] mul_ln38_13_fu_3900_p1; +wire signed [31:0] mul_ln38_14_fu_3906_p0; +wire signed [31:0] mul_ln38_14_fu_3906_p1; +wire signed [31:0] mul_ln38_15_fu_3912_p0; +wire signed [31:0] mul_ln38_15_fu_3912_p1; +wire signed [31:0] mul_ln38_16_fu_3918_p0; +wire signed [31:0] mul_ln38_16_fu_3918_p1; +wire signed [31:0] mul_ln38_17_fu_3924_p0; +wire signed [31:0] mul_ln38_17_fu_3924_p1; +wire signed [31:0] mul_ln38_18_fu_3930_p0; +wire signed [31:0] mul_ln38_18_fu_3930_p1; +wire signed [31:0] mul_ln38_19_fu_3936_p0; +wire signed [31:0] mul_ln38_19_fu_3936_p1; +wire signed [31:0] mul_ln38_20_fu_3942_p0; +wire signed [31:0] mul_ln38_20_fu_3942_p1; +wire signed [31:0] mul_ln38_21_fu_3948_p0; +wire signed [31:0] mul_ln38_21_fu_3948_p1; +wire signed [31:0] mul_ln38_22_fu_3954_p0; +wire signed [31:0] mul_ln38_22_fu_3954_p1; +wire signed [31:0] mul_ln38_23_fu_3960_p0; +wire signed [31:0] mul_ln38_23_fu_3960_p1; +wire signed [31:0] mul_ln38_24_fu_3966_p0; +wire signed [31:0] mul_ln38_24_fu_3966_p1; +wire signed [31:0] mul_ln38_25_fu_3972_p0; +wire signed [31:0] mul_ln38_25_fu_3972_p1; +wire signed [31:0] mul_ln38_26_fu_3978_p0; +wire signed [31:0] mul_ln38_26_fu_3978_p1; +wire signed [31:0] mul_ln38_27_fu_3984_p0; +wire signed [31:0] mul_ln38_27_fu_3984_p1; +wire signed [31:0] mul_ln38_28_fu_3990_p0; +wire signed [31:0] mul_ln38_28_fu_3990_p1; +wire signed [31:0] mul_ln38_29_fu_3996_p0; +wire signed [31:0] mul_ln38_29_fu_3996_p1; +wire signed [31:0] mul_ln38_30_fu_4002_p0; +wire signed [31:0] mul_ln38_30_fu_4002_p1; +wire signed [31:0] mul_ln38_31_fu_4008_p0; +wire signed [31:0] mul_ln38_31_fu_4008_p1; +wire signed [31:0] mul_ln38_32_fu_4014_p0; +wire signed [31:0] mul_ln38_32_fu_4014_p1; +wire signed [31:0] mul_ln38_33_fu_4020_p0; +wire signed [31:0] mul_ln38_33_fu_4020_p1; +wire signed [31:0] mul_ln38_34_fu_4026_p0; +wire signed [31:0] mul_ln38_34_fu_4026_p1; +wire signed [31:0] mul_ln38_35_fu_4032_p0; +wire signed [31:0] mul_ln38_35_fu_4032_p1; +wire signed [31:0] mul_ln38_36_fu_4038_p0; +wire signed [31:0] mul_ln38_36_fu_4038_p1; +wire signed [31:0] mul_ln38_37_fu_4044_p0; +wire signed [31:0] mul_ln38_37_fu_4044_p1; +wire signed [31:0] mul_ln38_38_fu_4050_p0; +wire signed [31:0] mul_ln38_38_fu_4050_p1; +wire signed [31:0] mul_ln38_39_fu_4056_p0; +wire signed [31:0] mul_ln38_39_fu_4056_p1; +wire signed [31:0] mul_ln38_40_fu_4062_p0; +wire signed [31:0] mul_ln38_40_fu_4062_p1; +wire signed [31:0] mul_ln38_41_fu_4068_p0; +wire signed [31:0] mul_ln38_41_fu_4068_p1; +wire signed [31:0] mul_ln38_42_fu_4074_p0; +wire signed [31:0] mul_ln38_42_fu_4074_p1; +wire signed [31:0] mul_ln38_43_fu_4080_p0; +wire signed [31:0] mul_ln38_43_fu_4080_p1; +wire signed [31:0] mul_ln38_44_fu_4086_p0; +wire signed [31:0] mul_ln38_44_fu_4086_p1; +wire signed [31:0] mul_ln38_45_fu_4092_p0; +wire signed [31:0] mul_ln38_45_fu_4092_p1; +wire signed [31:0] mul_ln38_46_fu_4098_p0; +wire signed [31:0] mul_ln38_46_fu_4098_p1; +wire signed [31:0] mul_ln38_47_fu_4104_p0; +wire signed [31:0] mul_ln38_47_fu_4104_p1; +wire signed [31:0] mul_ln38_48_fu_4110_p0; +wire signed [31:0] mul_ln38_48_fu_4110_p1; +wire signed [31:0] mul_ln38_49_fu_4116_p0; +wire signed [31:0] mul_ln38_49_fu_4116_p1; +wire signed [31:0] mul_ln38_50_fu_4122_p0; +wire signed [31:0] mul_ln38_50_fu_4122_p1; +wire signed [31:0] mul_ln38_51_fu_4128_p0; +wire signed [31:0] mul_ln38_51_fu_4128_p1; +wire signed [31:0] mul_ln38_52_fu_4134_p0; +wire signed [31:0] mul_ln38_52_fu_4134_p1; +wire signed [31:0] mul_ln38_53_fu_4140_p0; +wire signed [31:0] mul_ln38_53_fu_4140_p1; +wire signed [31:0] mul_ln38_54_fu_4146_p0; +wire signed [31:0] mul_ln38_54_fu_4146_p1; +wire signed [31:0] mul_ln38_55_fu_4152_p0; +wire signed [31:0] mul_ln38_55_fu_4152_p1; +wire signed [31:0] mul_ln38_56_fu_4158_p0; +wire signed [31:0] mul_ln38_56_fu_4158_p1; +wire signed [31:0] mul_ln38_57_fu_4164_p0; +wire signed [31:0] mul_ln38_57_fu_4164_p1; +wire signed [31:0] mul_ln38_58_fu_4170_p0; +wire signed [31:0] mul_ln38_58_fu_4170_p1; +wire signed [31:0] mul_ln38_59_fu_4176_p0; +wire signed [31:0] mul_ln38_59_fu_4176_p1; +wire signed [31:0] mul_ln38_60_fu_4182_p0; +wire signed [31:0] mul_ln38_60_fu_4182_p1; +wire signed [31:0] mul_ln38_61_fu_4188_p0; +wire signed [31:0] mul_ln38_61_fu_4188_p1; +wire signed [31:0] mul_ln38_62_fu_4194_p0; +wire signed [31:0] mul_ln38_62_fu_4194_p1; +wire signed [31:0] mul_ln38_63_fu_4200_p0; +wire signed [31:0] mul_ln38_63_fu_4200_p1; +wire [31:0] mul_ln38_4_fu_3846_p2; +wire [31:0] mul_ln38_3_fu_3840_p2; +wire [31:0] mul_ln38_6_fu_3858_p2; +wire [31:0] mul_ln38_5_fu_3852_p2; +wire [31:0] mul_ln38_8_fu_3870_p2; +wire [31:0] mul_ln38_7_fu_3864_p2; +wire [31:0] mul_ln38_10_fu_3882_p2; +wire [31:0] mul_ln38_9_fu_3876_p2; +wire [31:0] add_ln38_7_fu_4218_p2; +wire [31:0] add_ln38_8_fu_4224_p2; +wire [31:0] mul_ln38_12_fu_3894_p2; +wire [31:0] mul_ln38_11_fu_3888_p2; +wire [31:0] mul_ln38_14_fu_3906_p2; +wire [31:0] mul_ln38_13_fu_3900_p2; +wire [31:0] add_ln38_10_fu_4236_p2; +wire [31:0] add_ln38_11_fu_4242_p2; +wire [31:0] mul_ln38_16_fu_3918_p2; +wire [31:0] mul_ln38_15_fu_3912_p2; +wire [31:0] mul_ln38_18_fu_3930_p2; +wire [31:0] mul_ln38_17_fu_3924_p2; +wire [31:0] add_ln38_15_fu_4254_p2; +wire [31:0] add_ln38_16_fu_4260_p2; +wire [31:0] mul_ln38_20_fu_3942_p2; +wire [31:0] mul_ln38_19_fu_3936_p2; +wire [31:0] mul_ln38_22_fu_3954_p2; +wire [31:0] mul_ln38_21_fu_3948_p2; +wire [31:0] add_ln38_18_fu_4272_p2; +wire [31:0] add_ln38_19_fu_4278_p2; +wire [31:0] add_ln38_17_fu_4266_p2; +wire [31:0] add_ln38_20_fu_4284_p2; +wire [31:0] mul_ln38_24_fu_3966_p2; +wire [31:0] mul_ln38_23_fu_3960_p2; +wire [31:0] mul_ln38_26_fu_3978_p2; +wire [31:0] mul_ln38_25_fu_3972_p2; +wire [31:0] add_ln38_22_fu_4296_p2; +wire [31:0] add_ln38_23_fu_4302_p2; +wire [31:0] mul_ln38_28_fu_3990_p2; +wire [31:0] mul_ln38_27_fu_3984_p2; +wire [31:0] mul_ln38_30_fu_4002_p2; +wire [31:0] mul_ln38_29_fu_3996_p2; +wire [31:0] add_ln38_25_fu_4314_p2; +wire [31:0] add_ln38_26_fu_4320_p2; +wire [31:0] add_ln38_24_fu_4308_p2; +wire [31:0] add_ln38_27_fu_4326_p2; +wire [31:0] mul_ln38_32_fu_4014_p2; +wire [31:0] mul_ln38_31_fu_4008_p2; +wire [31:0] mul_ln38_34_fu_4026_p2; +wire [31:0] mul_ln38_33_fu_4020_p2; +wire [31:0] add_ln38_31_fu_4338_p2; +wire [31:0] add_ln38_32_fu_4344_p2; +wire [31:0] mul_ln38_36_fu_4038_p2; +wire [31:0] mul_ln38_35_fu_4032_p2; +wire [31:0] mul_ln38_38_fu_4050_p2; +wire [31:0] mul_ln38_37_fu_4044_p2; +wire [31:0] add_ln38_34_fu_4356_p2; +wire [31:0] add_ln38_35_fu_4362_p2; +wire [31:0] add_ln38_33_fu_4350_p2; +wire [31:0] add_ln38_36_fu_4368_p2; +wire [31:0] mul_ln38_40_fu_4062_p2; +wire [31:0] mul_ln38_39_fu_4056_p2; +wire [31:0] mul_ln38_42_fu_4074_p2; +wire [31:0] mul_ln38_41_fu_4068_p2; +wire [31:0] add_ln38_38_fu_4380_p2; +wire [31:0] add_ln38_39_fu_4386_p2; +wire [31:0] mul_ln38_44_fu_4086_p2; +wire [31:0] mul_ln38_43_fu_4080_p2; +wire [31:0] mul_ln38_46_fu_4098_p2; +wire [31:0] mul_ln38_45_fu_4092_p2; +wire [31:0] add_ln38_41_fu_4398_p2; +wire [31:0] add_ln38_42_fu_4404_p2; +wire [31:0] mul_ln38_48_fu_4110_p2; +wire [31:0] mul_ln38_47_fu_4104_p2; +wire [31:0] mul_ln38_50_fu_4122_p2; +wire [31:0] mul_ln38_49_fu_4116_p2; +wire [31:0] add_ln38_46_fu_4416_p2; +wire [31:0] add_ln38_47_fu_4422_p2; +wire [31:0] mul_ln38_52_fu_4134_p2; +wire [31:0] mul_ln38_51_fu_4128_p2; +wire [31:0] mul_ln38_54_fu_4146_p2; +wire [31:0] mul_ln38_53_fu_4140_p2; +wire [31:0] add_ln38_49_fu_4434_p2; +wire [31:0] add_ln38_50_fu_4440_p2; +wire [31:0] add_ln38_48_fu_4428_p2; +wire [31:0] add_ln38_51_fu_4446_p2; +wire [31:0] mul_ln38_56_fu_4158_p2; +wire [31:0] mul_ln38_55_fu_4152_p2; +wire [31:0] mul_ln38_58_fu_4170_p2; +wire [31:0] mul_ln38_57_fu_4164_p2; +wire [31:0] add_ln38_53_fu_4458_p2; +wire [31:0] add_ln38_54_fu_4464_p2; +wire [31:0] mul_ln38_60_fu_4182_p2; +wire [31:0] mul_ln38_59_fu_4176_p2; +wire [31:0] mul_ln38_63_fu_4200_p2; +wire [31:0] mul_ln38_62_fu_4194_p2; +wire [31:0] mul_ln38_61_fu_4188_p2; +wire [31:0] add_ln38_57_fu_4482_p2; +wire [31:0] add_ln38_56_fu_4476_p2; +wire [31:0] add_ln38_58_fu_4488_p2; +wire [31:0] add_ln38_fu_4500_p2; +wire [31:0] add_ln38_1_fu_4505_p2; +wire [31:0] add_ln38_2_fu_4509_p2; +wire [31:0] add_ln38_5_fu_4515_p2; +wire [31:0] add_ln38_6_fu_4519_p2; +wire [31:0] add_ln38_13_fu_4525_p2; +wire [31:0] add_ln38_14_fu_4529_p2; +wire [31:0] add_ln38_29_fu_4535_p2; +wire [31:0] add_ln38_44_fu_4545_p2; +wire [31:0] add_ln38_60_fu_4554_p2; +wire [31:0] add_ln38_45_fu_4549_p2; +wire [31:0] add_ln38_61_fu_4558_p2; +wire [31:0] add_ln38_30_fu_4539_p2; +wire [31:0] add_ln38_62_fu_4563_p2; +reg [25:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp2; +wire ap_enable_pp2; +reg ap_idle_pp3; +wire ap_enable_pp3; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 26'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp3_iter2 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter0 = 1'b0; +#0 ap_enable_reg_pp3_iter0 = 1'b0; +#0 ap_enable_reg_pp3_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +#0 ap_enable_reg_pp2_iter1 = 1'b0; +#0 ap_enable_reg_pp2_iter2 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_4626), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_4620), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(out_loc_load_reg_5563), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_0_address0), + .ce0(in1_loc_0_ce0), + .we0(in1_loc_0_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_1_address0), + .ce0(in1_loc_1_ce0), + .we0(in1_loc_1_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_2_address0), + .ce0(in1_loc_2_ce0), + .we0(in1_loc_2_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_3_address0), + .ce0(in1_loc_3_ce0), + .we0(in1_loc_3_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_4_address0), + .ce0(in1_loc_4_ce0), + .we0(in1_loc_4_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_5_address0), + .ce0(in1_loc_5_ce0), + .we0(in1_loc_5_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_6_address0), + .ce0(in1_loc_6_ce0), + .we0(in1_loc_6_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_7_address0), + .ce0(in1_loc_7_ce0), + .we0(in1_loc_7_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_8_address0), + .ce0(in1_loc_8_ce0), + .we0(in1_loc_8_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_9_address0), + .ce0(in1_loc_9_ce0), + .we0(in1_loc_9_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_10_address0), + .ce0(in1_loc_10_ce0), + .we0(in1_loc_10_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_11_address0), + .ce0(in1_loc_11_ce0), + .we0(in1_loc_11_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_12_address0), + .ce0(in1_loc_12_ce0), + .we0(in1_loc_12_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_13_address0), + .ce0(in1_loc_13_ce0), + .we0(in1_loc_13_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_14_address0), + .ce0(in1_loc_14_ce0), + .we0(in1_loc_14_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_15_address0), + .ce0(in1_loc_15_ce0), + .we0(in1_loc_15_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_16_address0), + .ce0(in1_loc_16_ce0), + .we0(in1_loc_16_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_17_address0), + .ce0(in1_loc_17_ce0), + .we0(in1_loc_17_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_18_address0), + .ce0(in1_loc_18_ce0), + .we0(in1_loc_18_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_19_address0), + .ce0(in1_loc_19_ce0), + .we0(in1_loc_19_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_20_address0), + .ce0(in1_loc_20_ce0), + .we0(in1_loc_20_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_21_address0), + .ce0(in1_loc_21_ce0), + .we0(in1_loc_21_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_22_address0), + .ce0(in1_loc_22_ce0), + .we0(in1_loc_22_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_23_address0), + .ce0(in1_loc_23_ce0), + .we0(in1_loc_23_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_24_address0), + .ce0(in1_loc_24_ce0), + .we0(in1_loc_24_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_25_address0), + .ce0(in1_loc_25_ce0), + .we0(in1_loc_25_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_26_address0), + .ce0(in1_loc_26_ce0), + .we0(in1_loc_26_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_27_address0), + .ce0(in1_loc_27_ce0), + .we0(in1_loc_27_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_28_address0), + .ce0(in1_loc_28_ce0), + .we0(in1_loc_28_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_29_address0), + .ce0(in1_loc_29_ce0), + .we0(in1_loc_29_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_30_address0), + .ce0(in1_loc_30_ce0), + .we0(in1_loc_30_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_31_address0), + .ce0(in1_loc_31_ce0), + .we0(in1_loc_31_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_32_address0), + .ce0(in1_loc_32_ce0), + .we0(in1_loc_32_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_33_address0), + .ce0(in1_loc_33_ce0), + .we0(in1_loc_33_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_34_address0), + .ce0(in1_loc_34_ce0), + .we0(in1_loc_34_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_35_address0), + .ce0(in1_loc_35_ce0), + .we0(in1_loc_35_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_36_address0), + .ce0(in1_loc_36_ce0), + .we0(in1_loc_36_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_37_address0), + .ce0(in1_loc_37_ce0), + .we0(in1_loc_37_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_38_address0), + .ce0(in1_loc_38_ce0), + .we0(in1_loc_38_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_39_address0), + .ce0(in1_loc_39_ce0), + .we0(in1_loc_39_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_40_address0), + .ce0(in1_loc_40_ce0), + .we0(in1_loc_40_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_41_address0), + .ce0(in1_loc_41_ce0), + .we0(in1_loc_41_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_42_address0), + .ce0(in1_loc_42_ce0), + .we0(in1_loc_42_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_43_address0), + .ce0(in1_loc_43_ce0), + .we0(in1_loc_43_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_44_address0), + .ce0(in1_loc_44_ce0), + .we0(in1_loc_44_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_45_address0), + .ce0(in1_loc_45_ce0), + .we0(in1_loc_45_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_46_address0), + .ce0(in1_loc_46_ce0), + .we0(in1_loc_46_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_47_address0), + .ce0(in1_loc_47_ce0), + .we0(in1_loc_47_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_48_address0), + .ce0(in1_loc_48_ce0), + .we0(in1_loc_48_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_49_address0), + .ce0(in1_loc_49_ce0), + .we0(in1_loc_49_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_50_address0), + .ce0(in1_loc_50_ce0), + .we0(in1_loc_50_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_51_address0), + .ce0(in1_loc_51_ce0), + .we0(in1_loc_51_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_52_address0), + .ce0(in1_loc_52_ce0), + .we0(in1_loc_52_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_53_address0), + .ce0(in1_loc_53_ce0), + .we0(in1_loc_53_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_54_address0), + .ce0(in1_loc_54_ce0), + .we0(in1_loc_54_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_55_address0), + .ce0(in1_loc_55_ce0), + .we0(in1_loc_55_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_56_address0), + .ce0(in1_loc_56_ce0), + .we0(in1_loc_56_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_57_address0), + .ce0(in1_loc_57_ce0), + .we0(in1_loc_57_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_58_address0), + .ce0(in1_loc_58_ce0), + .we0(in1_loc_58_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_59_address0), + .ce0(in1_loc_59_ce0), + .we0(in1_loc_59_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_60_address0), + .ce0(in1_loc_60_ce0), + .we0(in1_loc_60_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_61_address0), + .ce0(in1_loc_61_ce0), + .we0(in1_loc_61_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_62_address0), + .ce0(in1_loc_62_ce0), + .we0(in1_loc_62_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_63_address0), + .ce0(in1_loc_63_ce0), + .we0(in1_loc_63_we0), + .d0(in1_mem_addr_read_reg_4650), + .q0(in1_loc_63_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_0_address0), + .ce0(in2_loc_0_ce0), + .we0(in2_loc_0_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_1_address0), + .ce0(in2_loc_1_ce0), + .we0(in2_loc_1_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_2_address0), + .ce0(in2_loc_2_ce0), + .we0(in2_loc_2_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_3_address0), + .ce0(in2_loc_3_ce0), + .we0(in2_loc_3_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_4_address0), + .ce0(in2_loc_4_ce0), + .we0(in2_loc_4_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_5_address0), + .ce0(in2_loc_5_ce0), + .we0(in2_loc_5_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_6_address0), + .ce0(in2_loc_6_ce0), + .we0(in2_loc_6_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_7_address0), + .ce0(in2_loc_7_ce0), + .we0(in2_loc_7_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_8_address0), + .ce0(in2_loc_8_ce0), + .we0(in2_loc_8_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_9_address0), + .ce0(in2_loc_9_ce0), + .we0(in2_loc_9_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_10_address0), + .ce0(in2_loc_10_ce0), + .we0(in2_loc_10_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_11_address0), + .ce0(in2_loc_11_ce0), + .we0(in2_loc_11_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_12_address0), + .ce0(in2_loc_12_ce0), + .we0(in2_loc_12_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_13_address0), + .ce0(in2_loc_13_ce0), + .we0(in2_loc_13_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_14_address0), + .ce0(in2_loc_14_ce0), + .we0(in2_loc_14_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_15_address0), + .ce0(in2_loc_15_ce0), + .we0(in2_loc_15_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_16_address0), + .ce0(in2_loc_16_ce0), + .we0(in2_loc_16_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_17_address0), + .ce0(in2_loc_17_ce0), + .we0(in2_loc_17_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_18_address0), + .ce0(in2_loc_18_ce0), + .we0(in2_loc_18_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_19_address0), + .ce0(in2_loc_19_ce0), + .we0(in2_loc_19_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_20_address0), + .ce0(in2_loc_20_ce0), + .we0(in2_loc_20_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_21_address0), + .ce0(in2_loc_21_ce0), + .we0(in2_loc_21_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_22_address0), + .ce0(in2_loc_22_ce0), + .we0(in2_loc_22_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_23_address0), + .ce0(in2_loc_23_ce0), + .we0(in2_loc_23_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_24_address0), + .ce0(in2_loc_24_ce0), + .we0(in2_loc_24_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_25_address0), + .ce0(in2_loc_25_ce0), + .we0(in2_loc_25_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_26_address0), + .ce0(in2_loc_26_ce0), + .we0(in2_loc_26_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_27_address0), + .ce0(in2_loc_27_ce0), + .we0(in2_loc_27_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_28_address0), + .ce0(in2_loc_28_ce0), + .we0(in2_loc_28_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_29_address0), + .ce0(in2_loc_29_ce0), + .we0(in2_loc_29_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_30_address0), + .ce0(in2_loc_30_ce0), + .we0(in2_loc_30_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_31_address0), + .ce0(in2_loc_31_ce0), + .we0(in2_loc_31_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_32_address0), + .ce0(in2_loc_32_ce0), + .we0(in2_loc_32_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_33_address0), + .ce0(in2_loc_33_ce0), + .we0(in2_loc_33_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_34_address0), + .ce0(in2_loc_34_ce0), + .we0(in2_loc_34_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_35_address0), + .ce0(in2_loc_35_ce0), + .we0(in2_loc_35_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_36_address0), + .ce0(in2_loc_36_ce0), + .we0(in2_loc_36_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_37_address0), + .ce0(in2_loc_37_ce0), + .we0(in2_loc_37_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_38_address0), + .ce0(in2_loc_38_ce0), + .we0(in2_loc_38_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_39_address0), + .ce0(in2_loc_39_ce0), + .we0(in2_loc_39_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_40_address0), + .ce0(in2_loc_40_ce0), + .we0(in2_loc_40_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_41_address0), + .ce0(in2_loc_41_ce0), + .we0(in2_loc_41_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_42_address0), + .ce0(in2_loc_42_ce0), + .we0(in2_loc_42_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_43_address0), + .ce0(in2_loc_43_ce0), + .we0(in2_loc_43_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_44_address0), + .ce0(in2_loc_44_ce0), + .we0(in2_loc_44_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_45_address0), + .ce0(in2_loc_45_ce0), + .we0(in2_loc_45_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_46_address0), + .ce0(in2_loc_46_ce0), + .we0(in2_loc_46_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_47_address0), + .ce0(in2_loc_47_ce0), + .we0(in2_loc_47_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_48_address0), + .ce0(in2_loc_48_ce0), + .we0(in2_loc_48_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_49_address0), + .ce0(in2_loc_49_ce0), + .we0(in2_loc_49_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_50_address0), + .ce0(in2_loc_50_ce0), + .we0(in2_loc_50_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_51_address0), + .ce0(in2_loc_51_ce0), + .we0(in2_loc_51_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_52_address0), + .ce0(in2_loc_52_ce0), + .we0(in2_loc_52_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_53_address0), + .ce0(in2_loc_53_ce0), + .we0(in2_loc_53_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_54_address0), + .ce0(in2_loc_54_ce0), + .we0(in2_loc_54_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_55_address0), + .ce0(in2_loc_55_ce0), + .we0(in2_loc_55_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_56_address0), + .ce0(in2_loc_56_ce0), + .we0(in2_loc_56_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_57_address0), + .ce0(in2_loc_57_ce0), + .we0(in2_loc_57_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_58_address0), + .ce0(in2_loc_58_ce0), + .we0(in2_loc_58_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_59_address0), + .ce0(in2_loc_59_ce0), + .we0(in2_loc_59_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_60_address0), + .ce0(in2_loc_60_ce0), + .we0(in2_loc_60_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_61_address0), + .ce0(in2_loc_61_ce0), + .we0(in2_loc_61_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_62_address0), + .ce0(in2_loc_62_ce0), + .we0(in2_loc_62_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_63_address0), + .ce0(in2_loc_63_ce0), + .we0(in2_loc_63_we0), + .d0(in2_mem_addr_read_reg_4736), + .q0(in2_loc_63_q0) +); + +mmult_out_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .q0(out_loc_q0), + .address1(out_loc_addr_reg_5143_pp2_iter1_reg), + .ce1(out_loc_ce1), + .we1(out_loc_we1), + .d1(out_loc_d1) +); + +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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp0_stage0_subdone) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b0 == ap_block_pp1_stage0_subdone) & (1'b1 == ap_CS_fsm_pp1_stage0) & (1'b1 == ap_condition_pp1_exit_iter0_state19))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp2_stage0) & (1'b1 == ap_condition_pp2_exit_iter0_state23) & (1'b0 == ap_block_pp2_stage0_subdone))) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + ap_enable_reg_pp2_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp2_exit_iter0_state23)) begin + ap_enable_reg_pp2_iter1 <= (1'b1 ^ ap_condition_pp2_exit_iter0_state23); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp3_stage0) & (1'b1 == ap_condition_pp3_exit_iter0_state27) & (1'b0 == ap_block_pp3_stage0_subdone))) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state26))) begin + ap_enable_reg_pp3_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp3_exit_iter0_state27)) begin + ap_enable_reg_pp3_iter1 <= (1'b1 ^ ap_condition_pp3_exit_iter0_state27); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state26))) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4809 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + i_0_reg_3329 <= select_ln31_1_reg_4818; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + i_0_reg_3329 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + indvar_flatten_reg_3318 <= add_ln31_fu_3620_p2; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + indvar_flatten_reg_3318 <= 64'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + j_0_reg_3340 <= j_fu_3816_p2; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + j_0_reg_3340 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3420_p2 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_3296 <= add_ln27_fu_3426_p2; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_3296 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_3307 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3513_p2 == 1'd0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_3307 <= add_ln28_fu_3519_p2; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state26))) begin + phi_ln42_reg_3351 <= 13'd0; + end else if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_fu_4576_p2 == 1'd0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + phi_ln42_reg_3351 <= add_ln42_fu_4582_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4809 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + add_ln38_12_reg_5504 <= add_ln38_12_fu_4248_p2; + add_ln38_21_reg_5509 <= add_ln38_21_fu_4290_p2; + add_ln38_28_reg_5514 <= add_ln38_28_fu_4332_p2; + add_ln38_37_reg_5519 <= add_ln38_37_fu_4374_p2; + add_ln38_3_reg_5489 <= add_ln38_3_fu_4206_p2; + add_ln38_40_reg_5524 <= add_ln38_40_fu_4392_p2; + add_ln38_43_reg_5529 <= add_ln38_43_fu_4410_p2; + add_ln38_4_reg_5494 <= add_ln38_4_fu_4212_p2; + add_ln38_52_reg_5534 <= add_ln38_52_fu_4452_p2; + add_ln38_55_reg_5539 <= add_ln38_55_fu_4470_p2; + add_ln38_59_reg_5544 <= add_ln38_59_fu_4494_p2; + add_ln38_9_reg_5499 <= add_ln38_9_fu_4230_p2; + mul_ln38_1_reg_5479 <= mul_ln38_1_fu_3828_p2; + mul_ln38_2_reg_5484 <= mul_ln38_2_fu_3834_p2; + mul_ln38_reg_5474 <= mul_ln38_fu_3822_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_4593 <= dim; + in3_reg_4609 <= {{in1[31:2]}}; + in_reg_4604 <= {{in2[31:2]}}; + out5_reg_4599 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + icmp_ln31_reg_4809 <= icmp_ln31_fu_3615_p2; + icmp_ln31_reg_4809_pp2_iter1_reg <= icmp_ln31_reg_4809; + out_loc_addr_reg_5143_pp2_iter1_reg <= out_loc_addr_reg_5143; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + icmp_ln42_reg_5549 <= icmp_ln42_fu_4576_p2; + icmp_ln42_reg_5549_pp3_iter1_reg <= icmp_ln42_reg_5549; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_4650 <= in1_mem_RDATA; + lshr_ln_reg_4641_pp0_iter1_reg <= lshr_ln_reg_4641; + trunc_ln27_reg_4646_pp0_iter1_reg <= trunc_ln27_reg_4646; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_4736 <= in2_mem_RDATA; + trunc_ln1_reg_4732_pp1_iter1_reg <= trunc_ln1_reg_4732; + trunc_ln28_reg_4727_pp1_iter1_reg <= trunc_ln28_reg_4727; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_4626[29 : 0] <= empty_7_fu_3411_p1[29 : 0]; + out_mem_addr_reg_4620[29 : 0] <= empty_fu_3402_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3420_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + lshr_ln_reg_4641 <= {{phi_ln27_reg_3296[12:6]}}; + trunc_ln27_reg_4646 <= trunc_ln27_fu_3442_p1; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state22)) begin + mul_ln31_reg_4804 <= mul_ln31_fu_3609_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + out_loc_addr_reg_5143 <= zext_ln38_fu_3811_p1; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_5549 == 1'd0) & (ap_enable_reg_pp3_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + out_loc_load_reg_5563 <= out_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + select_ln31_1_reg_4818 <= select_ln31_1_fu_3645_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3513_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + trunc_ln1_reg_4732 <= {{phi_ln28_reg_3307[11:6]}}; + trunc_ln28_reg_4727 <= trunc_ln28_fu_3525_p1; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_3420_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_3513_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln31_fu_3615_p2 == 1'd1)) begin + ap_condition_pp2_exit_iter0_state23 = 1'b1; + end else begin + ap_condition_pp2_exit_iter0_state23 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_4576_p2 == 1'd1)) begin + ap_condition_pp3_exit_iter0_state27 = 1'b1; + end else begin + ap_condition_pp3_exit_iter0_state27 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state34))) 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_iter2 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp2_iter0 == 1'b0) & (ap_enable_reg_pp2_iter2 == 1'b0) & (ap_enable_reg_pp2_iter1 == 1'b0))) begin + ap_idle_pp2 = 1'b1; + end else begin + ap_idle_pp2 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b0))) begin + ap_idle_pp3 = 1'b1; + end else begin + ap_idle_pp3 = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln31_reg_4809 == 1'd0) & (1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + ap_phi_mux_i_0_phi_fu_3333_p4 = select_ln31_1_reg_4818; + end else begin + ap_phi_mux_i_0_phi_fu_3333_p4 = i_0_reg_3329; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_0_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_0_ce0 = 1'b1; + end else begin + in1_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_we0 = 1'b1; + end else begin + in1_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_10_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_10_ce0 = 1'b1; + end else begin + in1_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd10) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_we0 = 1'b1; + end else begin + in1_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_11_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_11_ce0 = 1'b1; + end else begin + in1_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd11) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_we0 = 1'b1; + end else begin + in1_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_12_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_12_ce0 = 1'b1; + end else begin + in1_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd12) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_we0 = 1'b1; + end else begin + in1_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_13_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_13_ce0 = 1'b1; + end else begin + in1_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd13) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_we0 = 1'b1; + end else begin + in1_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_14_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_14_ce0 = 1'b1; + end else begin + in1_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd14) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_we0 = 1'b1; + end else begin + in1_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_15_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_15_ce0 = 1'b1; + end else begin + in1_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd15) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_we0 = 1'b1; + end else begin + in1_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_16_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_16_ce0 = 1'b1; + end else begin + in1_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd16) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_we0 = 1'b1; + end else begin + in1_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_17_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_17_ce0 = 1'b1; + end else begin + in1_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd17) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_we0 = 1'b1; + end else begin + in1_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_18_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_18_ce0 = 1'b1; + end else begin + in1_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd18) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_we0 = 1'b1; + end else begin + in1_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_19_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_19_ce0 = 1'b1; + end else begin + in1_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd19) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_we0 = 1'b1; + end else begin + in1_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_1_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_1_ce0 = 1'b1; + end else begin + in1_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_we0 = 1'b1; + end else begin + in1_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_20_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_20_ce0 = 1'b1; + end else begin + in1_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd20) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_we0 = 1'b1; + end else begin + in1_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_21_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_21_ce0 = 1'b1; + end else begin + in1_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd21) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_we0 = 1'b1; + end else begin + in1_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_22_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_22_ce0 = 1'b1; + end else begin + in1_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd22) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_we0 = 1'b1; + end else begin + in1_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_23_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_23_ce0 = 1'b1; + end else begin + in1_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd23) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_we0 = 1'b1; + end else begin + in1_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_24_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_24_ce0 = 1'b1; + end else begin + in1_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd24) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_we0 = 1'b1; + end else begin + in1_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_25_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_25_ce0 = 1'b1; + end else begin + in1_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd25) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_we0 = 1'b1; + end else begin + in1_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_26_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_26_ce0 = 1'b1; + end else begin + in1_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd26) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_we0 = 1'b1; + end else begin + in1_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_27_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_27_ce0 = 1'b1; + end else begin + in1_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd27) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_we0 = 1'b1; + end else begin + in1_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_28_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_28_ce0 = 1'b1; + end else begin + in1_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd28) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_we0 = 1'b1; + end else begin + in1_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_29_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_29_ce0 = 1'b1; + end else begin + in1_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd29) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_we0 = 1'b1; + end else begin + in1_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_2_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_2_ce0 = 1'b1; + end else begin + in1_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd2) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_we0 = 1'b1; + end else begin + in1_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_30_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_30_ce0 = 1'b1; + end else begin + in1_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd30) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_we0 = 1'b1; + end else begin + in1_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_31_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_31_ce0 = 1'b1; + end else begin + in1_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd31) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_we0 = 1'b1; + end else begin + in1_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_32_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_32_ce0 = 1'b1; + end else begin + in1_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd32) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_we0 = 1'b1; + end else begin + in1_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_33_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_33_ce0 = 1'b1; + end else begin + in1_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd33) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_we0 = 1'b1; + end else begin + in1_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_34_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_34_ce0 = 1'b1; + end else begin + in1_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd34) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_we0 = 1'b1; + end else begin + in1_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_35_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_35_ce0 = 1'b1; + end else begin + in1_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd35) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_we0 = 1'b1; + end else begin + in1_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_36_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_36_ce0 = 1'b1; + end else begin + in1_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd36) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_we0 = 1'b1; + end else begin + in1_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_37_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_37_ce0 = 1'b1; + end else begin + in1_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd37) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_we0 = 1'b1; + end else begin + in1_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_38_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_38_ce0 = 1'b1; + end else begin + in1_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd38) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_we0 = 1'b1; + end else begin + in1_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_39_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_39_ce0 = 1'b1; + end else begin + in1_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd39) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_we0 = 1'b1; + end else begin + in1_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_3_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_3_ce0 = 1'b1; + end else begin + in1_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd3) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_we0 = 1'b1; + end else begin + in1_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_40_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_40_ce0 = 1'b1; + end else begin + in1_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd40) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_we0 = 1'b1; + end else begin + in1_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_41_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_41_ce0 = 1'b1; + end else begin + in1_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd41) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_we0 = 1'b1; + end else begin + in1_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_42_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_42_ce0 = 1'b1; + end else begin + in1_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd42) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_we0 = 1'b1; + end else begin + in1_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_43_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_43_ce0 = 1'b1; + end else begin + in1_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd43) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_we0 = 1'b1; + end else begin + in1_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_44_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_44_ce0 = 1'b1; + end else begin + in1_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd44) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_we0 = 1'b1; + end else begin + in1_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_45_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_45_ce0 = 1'b1; + end else begin + in1_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd45) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_we0 = 1'b1; + end else begin + in1_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_46_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_46_ce0 = 1'b1; + end else begin + in1_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd46) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_we0 = 1'b1; + end else begin + in1_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_47_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_47_ce0 = 1'b1; + end else begin + in1_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd47) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_we0 = 1'b1; + end else begin + in1_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_48_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_48_ce0 = 1'b1; + end else begin + in1_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd48) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_we0 = 1'b1; + end else begin + in1_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_49_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_49_ce0 = 1'b1; + end else begin + in1_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd49) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_we0 = 1'b1; + end else begin + in1_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_4_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_4_ce0 = 1'b1; + end else begin + in1_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd4) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_we0 = 1'b1; + end else begin + in1_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_50_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_50_ce0 = 1'b1; + end else begin + in1_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd50) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_we0 = 1'b1; + end else begin + in1_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_51_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_51_ce0 = 1'b1; + end else begin + in1_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd51) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_we0 = 1'b1; + end else begin + in1_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_52_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_52_ce0 = 1'b1; + end else begin + in1_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd52) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_we0 = 1'b1; + end else begin + in1_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_53_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_53_ce0 = 1'b1; + end else begin + in1_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd53) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_we0 = 1'b1; + end else begin + in1_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_54_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_54_ce0 = 1'b1; + end else begin + in1_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd54) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_we0 = 1'b1; + end else begin + in1_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_55_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_55_ce0 = 1'b1; + end else begin + in1_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd55) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_we0 = 1'b1; + end else begin + in1_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_56_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_56_ce0 = 1'b1; + end else begin + in1_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd56) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_we0 = 1'b1; + end else begin + in1_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_57_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_57_ce0 = 1'b1; + end else begin + in1_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd57) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_we0 = 1'b1; + end else begin + in1_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_58_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_58_ce0 = 1'b1; + end else begin + in1_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd58) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_we0 = 1'b1; + end else begin + in1_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_59_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_59_ce0 = 1'b1; + end else begin + in1_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd59) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_we0 = 1'b1; + end else begin + in1_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_5_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_5_ce0 = 1'b1; + end else begin + in1_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd5) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_we0 = 1'b1; + end else begin + in1_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_60_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_60_ce0 = 1'b1; + end else begin + in1_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd60) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_we0 = 1'b1; + end else begin + in1_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_61_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_61_ce0 = 1'b1; + end else begin + in1_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd61) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_we0 = 1'b1; + end else begin + in1_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_62_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_62_ce0 = 1'b1; + end else begin + in1_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd62) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_we0 = 1'b1; + end else begin + in1_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_63_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_63_ce0 = 1'b1; + end else begin + in1_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd63) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_we0 = 1'b1; + end else begin + in1_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_6_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_6_ce0 = 1'b1; + end else begin + in1_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd6) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_we0 = 1'b1; + end else begin + in1_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_7_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_7_ce0 = 1'b1; + end else begin + in1_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd7) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_we0 = 1'b1; + end else begin + in1_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_8_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_8_ce0 = 1'b1; + end else begin + in1_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd8) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_we0 = 1'b1; + end else begin + in1_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_9_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_9_ce0 = 1'b1; + end else begin + in1_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg == 6'd9) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_we0 = 1'b1; + end else begin + in1_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 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 + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_0_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_0_ce0 = 1'b1; + end else begin + in2_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd0) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_we0 = 1'b1; + end else begin + in2_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_10_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_10_ce0 = 1'b1; + end else begin + in2_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd10) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_we0 = 1'b1; + end else begin + in2_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_11_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_11_ce0 = 1'b1; + end else begin + in2_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd11) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_we0 = 1'b1; + end else begin + in2_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_12_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_12_ce0 = 1'b1; + end else begin + in2_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd12) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_we0 = 1'b1; + end else begin + in2_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_13_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_13_ce0 = 1'b1; + end else begin + in2_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd13) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_we0 = 1'b1; + end else begin + in2_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_14_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_14_ce0 = 1'b1; + end else begin + in2_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd14) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_we0 = 1'b1; + end else begin + in2_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_15_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_15_ce0 = 1'b1; + end else begin + in2_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd15) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_we0 = 1'b1; + end else begin + in2_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_16_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_16_ce0 = 1'b1; + end else begin + in2_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd16) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_we0 = 1'b1; + end else begin + in2_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_17_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_17_ce0 = 1'b1; + end else begin + in2_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd17) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_we0 = 1'b1; + end else begin + in2_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_18_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_18_ce0 = 1'b1; + end else begin + in2_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd18) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_we0 = 1'b1; + end else begin + in2_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_19_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_19_ce0 = 1'b1; + end else begin + in2_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd19) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_we0 = 1'b1; + end else begin + in2_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_1_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_1_ce0 = 1'b1; + end else begin + in2_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd1) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_we0 = 1'b1; + end else begin + in2_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_20_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_20_ce0 = 1'b1; + end else begin + in2_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd20) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_we0 = 1'b1; + end else begin + in2_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_21_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_21_ce0 = 1'b1; + end else begin + in2_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd21) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_we0 = 1'b1; + end else begin + in2_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_22_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_22_ce0 = 1'b1; + end else begin + in2_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd22) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_we0 = 1'b1; + end else begin + in2_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_23_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_23_ce0 = 1'b1; + end else begin + in2_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd23) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_we0 = 1'b1; + end else begin + in2_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_24_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_24_ce0 = 1'b1; + end else begin + in2_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd24) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_we0 = 1'b1; + end else begin + in2_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_25_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_25_ce0 = 1'b1; + end else begin + in2_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd25) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_we0 = 1'b1; + end else begin + in2_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_26_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_26_ce0 = 1'b1; + end else begin + in2_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd26) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_we0 = 1'b1; + end else begin + in2_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_27_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_27_ce0 = 1'b1; + end else begin + in2_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd27) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_we0 = 1'b1; + end else begin + in2_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_28_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_28_ce0 = 1'b1; + end else begin + in2_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd28) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_we0 = 1'b1; + end else begin + in2_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_29_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_29_ce0 = 1'b1; + end else begin + in2_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd29) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_we0 = 1'b1; + end else begin + in2_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_2_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_2_ce0 = 1'b1; + end else begin + in2_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd2) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_we0 = 1'b1; + end else begin + in2_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_30_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_30_ce0 = 1'b1; + end else begin + in2_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd30) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_we0 = 1'b1; + end else begin + in2_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_31_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_31_ce0 = 1'b1; + end else begin + in2_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd31) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_we0 = 1'b1; + end else begin + in2_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_32_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_32_ce0 = 1'b1; + end else begin + in2_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd32) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_we0 = 1'b1; + end else begin + in2_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_33_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_33_ce0 = 1'b1; + end else begin + in2_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd33) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_we0 = 1'b1; + end else begin + in2_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_34_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_34_ce0 = 1'b1; + end else begin + in2_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd34) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_we0 = 1'b1; + end else begin + in2_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_35_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_35_ce0 = 1'b1; + end else begin + in2_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd35) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_we0 = 1'b1; + end else begin + in2_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_36_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_36_ce0 = 1'b1; + end else begin + in2_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd36) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_we0 = 1'b1; + end else begin + in2_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_37_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_37_ce0 = 1'b1; + end else begin + in2_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd37) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_we0 = 1'b1; + end else begin + in2_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_38_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_38_ce0 = 1'b1; + end else begin + in2_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd38) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_we0 = 1'b1; + end else begin + in2_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_39_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_39_ce0 = 1'b1; + end else begin + in2_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd39) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_we0 = 1'b1; + end else begin + in2_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_3_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_3_ce0 = 1'b1; + end else begin + in2_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd3) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_we0 = 1'b1; + end else begin + in2_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_40_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_40_ce0 = 1'b1; + end else begin + in2_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd40) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_we0 = 1'b1; + end else begin + in2_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_41_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_41_ce0 = 1'b1; + end else begin + in2_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd41) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_we0 = 1'b1; + end else begin + in2_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_42_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_42_ce0 = 1'b1; + end else begin + in2_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd42) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_we0 = 1'b1; + end else begin + in2_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_43_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_43_ce0 = 1'b1; + end else begin + in2_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd43) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_we0 = 1'b1; + end else begin + in2_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_44_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_44_ce0 = 1'b1; + end else begin + in2_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd44) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_we0 = 1'b1; + end else begin + in2_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_45_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_45_ce0 = 1'b1; + end else begin + in2_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd45) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_we0 = 1'b1; + end else begin + in2_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_46_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_46_ce0 = 1'b1; + end else begin + in2_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd46) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_we0 = 1'b1; + end else begin + in2_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_47_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_47_ce0 = 1'b1; + end else begin + in2_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd47) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_we0 = 1'b1; + end else begin + in2_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_48_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_48_ce0 = 1'b1; + end else begin + in2_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd48) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_we0 = 1'b1; + end else begin + in2_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_49_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_49_ce0 = 1'b1; + end else begin + in2_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd49) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_we0 = 1'b1; + end else begin + in2_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_4_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_4_ce0 = 1'b1; + end else begin + in2_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd4) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_we0 = 1'b1; + end else begin + in2_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_50_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_50_ce0 = 1'b1; + end else begin + in2_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd50) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_we0 = 1'b1; + end else begin + in2_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_51_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_51_ce0 = 1'b1; + end else begin + in2_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd51) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_we0 = 1'b1; + end else begin + in2_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_52_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_52_ce0 = 1'b1; + end else begin + in2_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd52) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_we0 = 1'b1; + end else begin + in2_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_53_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_53_ce0 = 1'b1; + end else begin + in2_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd53) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_we0 = 1'b1; + end else begin + in2_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_54_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_54_ce0 = 1'b1; + end else begin + in2_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd54) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_we0 = 1'b1; + end else begin + in2_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_55_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_55_ce0 = 1'b1; + end else begin + in2_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd55) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_we0 = 1'b1; + end else begin + in2_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_56_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_56_ce0 = 1'b1; + end else begin + in2_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd56) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_we0 = 1'b1; + end else begin + in2_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_57_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_57_ce0 = 1'b1; + end else begin + in2_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd57) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_we0 = 1'b1; + end else begin + in2_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_58_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_58_ce0 = 1'b1; + end else begin + in2_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd58) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_we0 = 1'b1; + end else begin + in2_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_59_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_59_ce0 = 1'b1; + end else begin + in2_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd59) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_we0 = 1'b1; + end else begin + in2_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_5_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_5_ce0 = 1'b1; + end else begin + in2_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd5) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_we0 = 1'b1; + end else begin + in2_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_60_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_60_ce0 = 1'b1; + end else begin + in2_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd60) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_we0 = 1'b1; + end else begin + in2_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_61_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_61_ce0 = 1'b1; + end else begin + in2_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd61) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_we0 = 1'b1; + end else begin + in2_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_62_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_62_ce0 = 1'b1; + end else begin + in2_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd62) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_we0 = 1'b1; + end else begin + in2_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_63_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_63_ce0 = 1'b1; + end else begin + in2_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd63) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_we0 = 1'b1; + end else begin + in2_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_6_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_6_ce0 = 1'b1; + end else begin + in2_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd6) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_we0 = 1'b1; + end else begin + in2_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_7_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_7_ce0 = 1'b1; + end else begin + in2_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd7) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_we0 = 1'b1; + end else begin + in2_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_8_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_8_ce0 = 1'b1; + end else begin + in2_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd8) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_we0 = 1'b1; + end else begin + in2_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_9_address0 = sext_ln38_fu_3733_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_9_ce0 = 1'b1; + end else begin + in2_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg == 6'd9) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_we0 = 1'b1; + end else begin + in2_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + out_loc_address0 = zext_ln42_fu_4588_p1; + end else if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + out_loc_address0 = out_loc_addr_reg_5143; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp3_stage0_11001) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + out_loc_ce1 = 1'b1; + end else begin + out_loc_ce1 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4809_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + out_loc_we1 = 1'b1; + end else begin + out_loc_we1 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state26))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_5549_pp3_iter1_reg == 1'd0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state26)) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state34)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_5549_pp3_iter1_reg == 1'd0) & (1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln27_fu_3420_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1)) & ~((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((1'b0 == ap_block_pp0_stage0_subdone) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp0_stage0_subdone) & (icmp_ln27_fu_3420_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((1'b0 == ap_block_pp1_stage0_subdone) & (icmp_ln28_fu_3513_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1)) & ~((1'b0 == ap_block_pp1_stage0_subdone) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((1'b0 == ap_block_pp1_stage0_subdone) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp1_stage0_subdone) & (icmp_ln28_fu_3513_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + ap_ST_fsm_pp2_stage0 : begin + if ((~((icmp_ln31_fu_3615_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)) & ~((ap_enable_reg_pp2_iter2 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if ((((icmp_ln31_fu_3615_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)) | ((ap_enable_reg_pp2_iter2 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state26; + end else begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + end + ap_ST_fsm_state26 : begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state26))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else begin + ap_NS_fsm = ap_ST_fsm_state26; + end + end + ap_ST_fsm_pp3_stage0 : begin + if ((~((ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_4576_p2 == 1'd1) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)) & ~((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else if ((((ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_4576_p2 == 1'd1) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)) | ((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state30; + end else begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end + end + ap_ST_fsm_state30 : begin + ap_NS_fsm = ap_ST_fsm_state31; + end + ap_ST_fsm_state31 : begin + ap_NS_fsm = ap_ST_fsm_state32; + end + ap_ST_fsm_state32 : begin + ap_NS_fsm = ap_ST_fsm_state33; + end + ap_ST_fsm_state33 : begin + ap_NS_fsm = ap_ST_fsm_state34; + end + ap_ST_fsm_state34 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state34; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_3426_p2 = (phi_ln27_reg_3296 + 13'd1); + +assign add_ln28_fu_3519_p2 = (phi_ln28_reg_3307 + 13'd1); + +assign add_ln31_fu_3620_p2 = (indvar_flatten_reg_3318 + 64'd1); + +assign add_ln38_10_fu_4236_p2 = (mul_ln38_12_fu_3894_p2 + mul_ln38_11_fu_3888_p2); + +assign add_ln38_11_fu_4242_p2 = (mul_ln38_14_fu_3906_p2 + mul_ln38_13_fu_3900_p2); + +assign add_ln38_12_fu_4248_p2 = (add_ln38_10_fu_4236_p2 + add_ln38_11_fu_4242_p2); + +assign add_ln38_13_fu_4525_p2 = (add_ln38_9_reg_5499 + add_ln38_12_reg_5504); + +assign add_ln38_14_fu_4529_p2 = (add_ln38_6_fu_4519_p2 + add_ln38_13_fu_4525_p2); + +assign add_ln38_15_fu_4254_p2 = (mul_ln38_16_fu_3918_p2 + mul_ln38_15_fu_3912_p2); + +assign add_ln38_16_fu_4260_p2 = (mul_ln38_18_fu_3930_p2 + mul_ln38_17_fu_3924_p2); + +assign add_ln38_17_fu_4266_p2 = (add_ln38_15_fu_4254_p2 + add_ln38_16_fu_4260_p2); + +assign add_ln38_18_fu_4272_p2 = (mul_ln38_20_fu_3942_p2 + mul_ln38_19_fu_3936_p2); + +assign add_ln38_19_fu_4278_p2 = (mul_ln38_22_fu_3954_p2 + mul_ln38_21_fu_3948_p2); + +assign add_ln38_1_fu_4505_p2 = (mul_ln38_2_reg_5484 + mul_ln38_1_reg_5479); + +assign add_ln38_20_fu_4284_p2 = (add_ln38_18_fu_4272_p2 + add_ln38_19_fu_4278_p2); + +assign add_ln38_21_fu_4290_p2 = (add_ln38_17_fu_4266_p2 + add_ln38_20_fu_4284_p2); + +assign add_ln38_22_fu_4296_p2 = (mul_ln38_24_fu_3966_p2 + mul_ln38_23_fu_3960_p2); + +assign add_ln38_23_fu_4302_p2 = (mul_ln38_26_fu_3978_p2 + mul_ln38_25_fu_3972_p2); + +assign add_ln38_24_fu_4308_p2 = (add_ln38_22_fu_4296_p2 + add_ln38_23_fu_4302_p2); + +assign add_ln38_25_fu_4314_p2 = (mul_ln38_28_fu_3990_p2 + mul_ln38_27_fu_3984_p2); + +assign add_ln38_26_fu_4320_p2 = (mul_ln38_30_fu_4002_p2 + mul_ln38_29_fu_3996_p2); + +assign add_ln38_27_fu_4326_p2 = (add_ln38_25_fu_4314_p2 + add_ln38_26_fu_4320_p2); + +assign add_ln38_28_fu_4332_p2 = (add_ln38_24_fu_4308_p2 + add_ln38_27_fu_4326_p2); + +assign add_ln38_29_fu_4535_p2 = (add_ln38_21_reg_5509 + add_ln38_28_reg_5514); + +assign add_ln38_2_fu_4509_p2 = (add_ln38_fu_4500_p2 + add_ln38_1_fu_4505_p2); + +assign add_ln38_30_fu_4539_p2 = (add_ln38_14_fu_4529_p2 + add_ln38_29_fu_4535_p2); + +assign add_ln38_31_fu_4338_p2 = (mul_ln38_32_fu_4014_p2 + mul_ln38_31_fu_4008_p2); + +assign add_ln38_32_fu_4344_p2 = (mul_ln38_34_fu_4026_p2 + mul_ln38_33_fu_4020_p2); + +assign add_ln38_33_fu_4350_p2 = (add_ln38_31_fu_4338_p2 + add_ln38_32_fu_4344_p2); + +assign add_ln38_34_fu_4356_p2 = (mul_ln38_36_fu_4038_p2 + mul_ln38_35_fu_4032_p2); + +assign add_ln38_35_fu_4362_p2 = (mul_ln38_38_fu_4050_p2 + mul_ln38_37_fu_4044_p2); + +assign add_ln38_36_fu_4368_p2 = (add_ln38_34_fu_4356_p2 + add_ln38_35_fu_4362_p2); + +assign add_ln38_37_fu_4374_p2 = (add_ln38_33_fu_4350_p2 + add_ln38_36_fu_4368_p2); + +assign add_ln38_38_fu_4380_p2 = (mul_ln38_40_fu_4062_p2 + mul_ln38_39_fu_4056_p2); + +assign add_ln38_39_fu_4386_p2 = (mul_ln38_42_fu_4074_p2 + mul_ln38_41_fu_4068_p2); + +assign add_ln38_3_fu_4206_p2 = (mul_ln38_4_fu_3846_p2 + mul_ln38_3_fu_3840_p2); + +assign add_ln38_40_fu_4392_p2 = (add_ln38_38_fu_4380_p2 + add_ln38_39_fu_4386_p2); + +assign add_ln38_41_fu_4398_p2 = (mul_ln38_44_fu_4086_p2 + mul_ln38_43_fu_4080_p2); + +assign add_ln38_42_fu_4404_p2 = (mul_ln38_46_fu_4098_p2 + mul_ln38_45_fu_4092_p2); + +assign add_ln38_43_fu_4410_p2 = (add_ln38_41_fu_4398_p2 + add_ln38_42_fu_4404_p2); + +assign add_ln38_44_fu_4545_p2 = (add_ln38_40_reg_5524 + add_ln38_43_reg_5529); + +assign add_ln38_45_fu_4549_p2 = (add_ln38_37_reg_5519 + add_ln38_44_fu_4545_p2); + +assign add_ln38_46_fu_4416_p2 = (mul_ln38_48_fu_4110_p2 + mul_ln38_47_fu_4104_p2); + +assign add_ln38_47_fu_4422_p2 = (mul_ln38_50_fu_4122_p2 + mul_ln38_49_fu_4116_p2); + +assign add_ln38_48_fu_4428_p2 = (add_ln38_46_fu_4416_p2 + add_ln38_47_fu_4422_p2); + +assign add_ln38_49_fu_4434_p2 = (mul_ln38_52_fu_4134_p2 + mul_ln38_51_fu_4128_p2); + +assign add_ln38_4_fu_4212_p2 = (mul_ln38_6_fu_3858_p2 + mul_ln38_5_fu_3852_p2); + +assign add_ln38_50_fu_4440_p2 = (mul_ln38_54_fu_4146_p2 + mul_ln38_53_fu_4140_p2); + +assign add_ln38_51_fu_4446_p2 = (add_ln38_49_fu_4434_p2 + add_ln38_50_fu_4440_p2); + +assign add_ln38_52_fu_4452_p2 = (add_ln38_48_fu_4428_p2 + add_ln38_51_fu_4446_p2); + +assign add_ln38_53_fu_4458_p2 = (mul_ln38_56_fu_4158_p2 + mul_ln38_55_fu_4152_p2); + +assign add_ln38_54_fu_4464_p2 = (mul_ln38_58_fu_4170_p2 + mul_ln38_57_fu_4164_p2); + +assign add_ln38_55_fu_4470_p2 = (add_ln38_53_fu_4458_p2 + add_ln38_54_fu_4464_p2); + +assign add_ln38_56_fu_4476_p2 = (mul_ln38_60_fu_4182_p2 + mul_ln38_59_fu_4176_p2); + +assign add_ln38_57_fu_4482_p2 = (mul_ln38_63_fu_4200_p2 + mul_ln38_62_fu_4194_p2); + +assign add_ln38_58_fu_4488_p2 = (mul_ln38_61_fu_4188_p2 + add_ln38_57_fu_4482_p2); + +assign add_ln38_59_fu_4494_p2 = (add_ln38_56_fu_4476_p2 + add_ln38_58_fu_4488_p2); + +assign add_ln38_5_fu_4515_p2 = (add_ln38_3_reg_5489 + add_ln38_4_reg_5494); + +assign add_ln38_60_fu_4554_p2 = (add_ln38_55_reg_5539 + add_ln38_59_reg_5544); + +assign add_ln38_61_fu_4558_p2 = (add_ln38_52_reg_5534 + add_ln38_60_fu_4554_p2); + +assign add_ln38_62_fu_4563_p2 = (add_ln38_45_fu_4549_p2 + add_ln38_61_fu_4558_p2); + +assign add_ln38_64_fu_3805_p2 = (tmp_cast_fu_3657_p3 + trunc_ln38_1_fu_3801_p1); + +assign add_ln38_6_fu_4519_p2 = (add_ln38_2_fu_4509_p2 + add_ln38_5_fu_4515_p2); + +assign add_ln38_7_fu_4218_p2 = (mul_ln38_8_fu_3870_p2 + mul_ln38_7_fu_3864_p2); + +assign add_ln38_8_fu_4224_p2 = (mul_ln38_10_fu_3882_p2 + mul_ln38_9_fu_3876_p2); + +assign add_ln38_9_fu_4230_p2 = (add_ln38_7_fu_4218_p2 + add_ln38_8_fu_4224_p2); + +assign add_ln38_fu_4500_p2 = (mul_ln38_reg_5474 + out_loc_q0); + +assign add_ln42_fu_4582_p2 = (phi_ln42_reg_3351 + 13'd1); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp2_stage0 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_pp3_stage0 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state26 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state34 = ap_CS_fsm[32'd25]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp2_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp3_stage0_11001 = ((1'b1 == ap_block_state29_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_pp3_stage0_subdone = ((1'b1 == ap_block_state29_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = (in1_mem_RVALID == 1'b0); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = (in2_mem_RVALID == 1'b0); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state23_pp2_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state24_pp2_stage0_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state25_pp2_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state27_pp3_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state28_pp3_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state29_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_5549_pp3_iter1_reg == 1'd0)); +end + +assign ap_block_state29_pp3_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp2 = (ap_idle_pp2 ^ 1'b1); + +assign ap_enable_pp3 = (ap_idle_pp3 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_7_fu_3411_p1 = in_reg_4604; + +assign empty_8_fu_3392_p1 = in3_reg_4609; + +assign empty_fu_3402_p1 = out5_reg_4599; + +assign i_fu_3626_p2 = (31'd1 + ap_phi_mux_i_0_phi_fu_3333_p4); + +assign icmp_ln27_fu_3420_p2 = ((phi_ln27_reg_3296 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_3513_p2 = ((phi_ln28_reg_3307 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_3615_p2 = ((indvar_flatten_reg_3318 == mul_ln31_reg_4804) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_3632_p2 = ((j_0_reg_3340 == dim_read_reg_4593) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_4576_p2 = ((phi_ln42_reg_3351 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_8_fu_3392_p1; + +assign j_fu_3816_p2 = ($signed(32'd1) + $signed(select_ln31_fu_3637_p3)); + +assign mul_ln31_fu_3609_p0 = zext_ln31_fu_3606_p1; + +assign mul_ln31_fu_3609_p1 = zext_ln31_fu_3606_p1; + +assign mul_ln31_fu_3609_p2 = (mul_ln31_fu_3609_p0 * mul_ln31_fu_3609_p1); + +assign mul_ln38_10_fu_3882_p0 = in2_loc_10_q0; + +assign mul_ln38_10_fu_3882_p1 = in1_loc_10_q0; + +assign mul_ln38_10_fu_3882_p2 = ($signed(mul_ln38_10_fu_3882_p0) * $signed(mul_ln38_10_fu_3882_p1)); + +assign mul_ln38_11_fu_3888_p0 = in2_loc_11_q0; + +assign mul_ln38_11_fu_3888_p1 = in1_loc_11_q0; + +assign mul_ln38_11_fu_3888_p2 = ($signed(mul_ln38_11_fu_3888_p0) * $signed(mul_ln38_11_fu_3888_p1)); + +assign mul_ln38_12_fu_3894_p0 = in2_loc_12_q0; + +assign mul_ln38_12_fu_3894_p1 = in1_loc_12_q0; + +assign mul_ln38_12_fu_3894_p2 = ($signed(mul_ln38_12_fu_3894_p0) * $signed(mul_ln38_12_fu_3894_p1)); + +assign mul_ln38_13_fu_3900_p0 = in2_loc_13_q0; + +assign mul_ln38_13_fu_3900_p1 = in1_loc_13_q0; + +assign mul_ln38_13_fu_3900_p2 = ($signed(mul_ln38_13_fu_3900_p0) * $signed(mul_ln38_13_fu_3900_p1)); + +assign mul_ln38_14_fu_3906_p0 = in2_loc_14_q0; + +assign mul_ln38_14_fu_3906_p1 = in1_loc_14_q0; + +assign mul_ln38_14_fu_3906_p2 = ($signed(mul_ln38_14_fu_3906_p0) * $signed(mul_ln38_14_fu_3906_p1)); + +assign mul_ln38_15_fu_3912_p0 = in2_loc_15_q0; + +assign mul_ln38_15_fu_3912_p1 = in1_loc_15_q0; + +assign mul_ln38_15_fu_3912_p2 = ($signed(mul_ln38_15_fu_3912_p0) * $signed(mul_ln38_15_fu_3912_p1)); + +assign mul_ln38_16_fu_3918_p0 = in2_loc_16_q0; + +assign mul_ln38_16_fu_3918_p1 = in1_loc_16_q0; + +assign mul_ln38_16_fu_3918_p2 = ($signed(mul_ln38_16_fu_3918_p0) * $signed(mul_ln38_16_fu_3918_p1)); + +assign mul_ln38_17_fu_3924_p0 = in2_loc_17_q0; + +assign mul_ln38_17_fu_3924_p1 = in1_loc_17_q0; + +assign mul_ln38_17_fu_3924_p2 = ($signed(mul_ln38_17_fu_3924_p0) * $signed(mul_ln38_17_fu_3924_p1)); + +assign mul_ln38_18_fu_3930_p0 = in2_loc_18_q0; + +assign mul_ln38_18_fu_3930_p1 = in1_loc_18_q0; + +assign mul_ln38_18_fu_3930_p2 = ($signed(mul_ln38_18_fu_3930_p0) * $signed(mul_ln38_18_fu_3930_p1)); + +assign mul_ln38_19_fu_3936_p0 = in2_loc_19_q0; + +assign mul_ln38_19_fu_3936_p1 = in1_loc_19_q0; + +assign mul_ln38_19_fu_3936_p2 = ($signed(mul_ln38_19_fu_3936_p0) * $signed(mul_ln38_19_fu_3936_p1)); + +assign mul_ln38_1_fu_3828_p0 = in2_loc_1_q0; + +assign mul_ln38_1_fu_3828_p1 = in1_loc_1_q0; + +assign mul_ln38_1_fu_3828_p2 = ($signed(mul_ln38_1_fu_3828_p0) * $signed(mul_ln38_1_fu_3828_p1)); + +assign mul_ln38_20_fu_3942_p0 = in2_loc_20_q0; + +assign mul_ln38_20_fu_3942_p1 = in1_loc_20_q0; + +assign mul_ln38_20_fu_3942_p2 = ($signed(mul_ln38_20_fu_3942_p0) * $signed(mul_ln38_20_fu_3942_p1)); + +assign mul_ln38_21_fu_3948_p0 = in2_loc_21_q0; + +assign mul_ln38_21_fu_3948_p1 = in1_loc_21_q0; + +assign mul_ln38_21_fu_3948_p2 = ($signed(mul_ln38_21_fu_3948_p0) * $signed(mul_ln38_21_fu_3948_p1)); + +assign mul_ln38_22_fu_3954_p0 = in2_loc_22_q0; + +assign mul_ln38_22_fu_3954_p1 = in1_loc_22_q0; + +assign mul_ln38_22_fu_3954_p2 = ($signed(mul_ln38_22_fu_3954_p0) * $signed(mul_ln38_22_fu_3954_p1)); + +assign mul_ln38_23_fu_3960_p0 = in2_loc_23_q0; + +assign mul_ln38_23_fu_3960_p1 = in1_loc_23_q0; + +assign mul_ln38_23_fu_3960_p2 = ($signed(mul_ln38_23_fu_3960_p0) * $signed(mul_ln38_23_fu_3960_p1)); + +assign mul_ln38_24_fu_3966_p0 = in2_loc_24_q0; + +assign mul_ln38_24_fu_3966_p1 = in1_loc_24_q0; + +assign mul_ln38_24_fu_3966_p2 = ($signed(mul_ln38_24_fu_3966_p0) * $signed(mul_ln38_24_fu_3966_p1)); + +assign mul_ln38_25_fu_3972_p0 = in2_loc_25_q0; + +assign mul_ln38_25_fu_3972_p1 = in1_loc_25_q0; + +assign mul_ln38_25_fu_3972_p2 = ($signed(mul_ln38_25_fu_3972_p0) * $signed(mul_ln38_25_fu_3972_p1)); + +assign mul_ln38_26_fu_3978_p0 = in2_loc_26_q0; + +assign mul_ln38_26_fu_3978_p1 = in1_loc_26_q0; + +assign mul_ln38_26_fu_3978_p2 = ($signed(mul_ln38_26_fu_3978_p0) * $signed(mul_ln38_26_fu_3978_p1)); + +assign mul_ln38_27_fu_3984_p0 = in2_loc_27_q0; + +assign mul_ln38_27_fu_3984_p1 = in1_loc_27_q0; + +assign mul_ln38_27_fu_3984_p2 = ($signed(mul_ln38_27_fu_3984_p0) * $signed(mul_ln38_27_fu_3984_p1)); + +assign mul_ln38_28_fu_3990_p0 = in2_loc_28_q0; + +assign mul_ln38_28_fu_3990_p1 = in1_loc_28_q0; + +assign mul_ln38_28_fu_3990_p2 = ($signed(mul_ln38_28_fu_3990_p0) * $signed(mul_ln38_28_fu_3990_p1)); + +assign mul_ln38_29_fu_3996_p0 = in2_loc_29_q0; + +assign mul_ln38_29_fu_3996_p1 = in1_loc_29_q0; + +assign mul_ln38_29_fu_3996_p2 = ($signed(mul_ln38_29_fu_3996_p0) * $signed(mul_ln38_29_fu_3996_p1)); + +assign mul_ln38_2_fu_3834_p0 = in2_loc_2_q0; + +assign mul_ln38_2_fu_3834_p1 = in1_loc_2_q0; + +assign mul_ln38_2_fu_3834_p2 = ($signed(mul_ln38_2_fu_3834_p0) * $signed(mul_ln38_2_fu_3834_p1)); + +assign mul_ln38_30_fu_4002_p0 = in2_loc_30_q0; + +assign mul_ln38_30_fu_4002_p1 = in1_loc_30_q0; + +assign mul_ln38_30_fu_4002_p2 = ($signed(mul_ln38_30_fu_4002_p0) * $signed(mul_ln38_30_fu_4002_p1)); + +assign mul_ln38_31_fu_4008_p0 = in2_loc_31_q0; + +assign mul_ln38_31_fu_4008_p1 = in1_loc_31_q0; + +assign mul_ln38_31_fu_4008_p2 = ($signed(mul_ln38_31_fu_4008_p0) * $signed(mul_ln38_31_fu_4008_p1)); + +assign mul_ln38_32_fu_4014_p0 = in2_loc_32_q0; + +assign mul_ln38_32_fu_4014_p1 = in1_loc_32_q0; + +assign mul_ln38_32_fu_4014_p2 = ($signed(mul_ln38_32_fu_4014_p0) * $signed(mul_ln38_32_fu_4014_p1)); + +assign mul_ln38_33_fu_4020_p0 = in2_loc_33_q0; + +assign mul_ln38_33_fu_4020_p1 = in1_loc_33_q0; + +assign mul_ln38_33_fu_4020_p2 = ($signed(mul_ln38_33_fu_4020_p0) * $signed(mul_ln38_33_fu_4020_p1)); + +assign mul_ln38_34_fu_4026_p0 = in2_loc_34_q0; + +assign mul_ln38_34_fu_4026_p1 = in1_loc_34_q0; + +assign mul_ln38_34_fu_4026_p2 = ($signed(mul_ln38_34_fu_4026_p0) * $signed(mul_ln38_34_fu_4026_p1)); + +assign mul_ln38_35_fu_4032_p0 = in2_loc_35_q0; + +assign mul_ln38_35_fu_4032_p1 = in1_loc_35_q0; + +assign mul_ln38_35_fu_4032_p2 = ($signed(mul_ln38_35_fu_4032_p0) * $signed(mul_ln38_35_fu_4032_p1)); + +assign mul_ln38_36_fu_4038_p0 = in2_loc_36_q0; + +assign mul_ln38_36_fu_4038_p1 = in1_loc_36_q0; + +assign mul_ln38_36_fu_4038_p2 = ($signed(mul_ln38_36_fu_4038_p0) * $signed(mul_ln38_36_fu_4038_p1)); + +assign mul_ln38_37_fu_4044_p0 = in2_loc_37_q0; + +assign mul_ln38_37_fu_4044_p1 = in1_loc_37_q0; + +assign mul_ln38_37_fu_4044_p2 = ($signed(mul_ln38_37_fu_4044_p0) * $signed(mul_ln38_37_fu_4044_p1)); + +assign mul_ln38_38_fu_4050_p0 = in2_loc_38_q0; + +assign mul_ln38_38_fu_4050_p1 = in1_loc_38_q0; + +assign mul_ln38_38_fu_4050_p2 = ($signed(mul_ln38_38_fu_4050_p0) * $signed(mul_ln38_38_fu_4050_p1)); + +assign mul_ln38_39_fu_4056_p0 = in2_loc_39_q0; + +assign mul_ln38_39_fu_4056_p1 = in1_loc_39_q0; + +assign mul_ln38_39_fu_4056_p2 = ($signed(mul_ln38_39_fu_4056_p0) * $signed(mul_ln38_39_fu_4056_p1)); + +assign mul_ln38_3_fu_3840_p0 = in2_loc_3_q0; + +assign mul_ln38_3_fu_3840_p1 = in1_loc_3_q0; + +assign mul_ln38_3_fu_3840_p2 = ($signed(mul_ln38_3_fu_3840_p0) * $signed(mul_ln38_3_fu_3840_p1)); + +assign mul_ln38_40_fu_4062_p0 = in2_loc_40_q0; + +assign mul_ln38_40_fu_4062_p1 = in1_loc_40_q0; + +assign mul_ln38_40_fu_4062_p2 = ($signed(mul_ln38_40_fu_4062_p0) * $signed(mul_ln38_40_fu_4062_p1)); + +assign mul_ln38_41_fu_4068_p0 = in2_loc_41_q0; + +assign mul_ln38_41_fu_4068_p1 = in1_loc_41_q0; + +assign mul_ln38_41_fu_4068_p2 = ($signed(mul_ln38_41_fu_4068_p0) * $signed(mul_ln38_41_fu_4068_p1)); + +assign mul_ln38_42_fu_4074_p0 = in2_loc_42_q0; + +assign mul_ln38_42_fu_4074_p1 = in1_loc_42_q0; + +assign mul_ln38_42_fu_4074_p2 = ($signed(mul_ln38_42_fu_4074_p0) * $signed(mul_ln38_42_fu_4074_p1)); + +assign mul_ln38_43_fu_4080_p0 = in2_loc_43_q0; + +assign mul_ln38_43_fu_4080_p1 = in1_loc_43_q0; + +assign mul_ln38_43_fu_4080_p2 = ($signed(mul_ln38_43_fu_4080_p0) * $signed(mul_ln38_43_fu_4080_p1)); + +assign mul_ln38_44_fu_4086_p0 = in2_loc_44_q0; + +assign mul_ln38_44_fu_4086_p1 = in1_loc_44_q0; + +assign mul_ln38_44_fu_4086_p2 = ($signed(mul_ln38_44_fu_4086_p0) * $signed(mul_ln38_44_fu_4086_p1)); + +assign mul_ln38_45_fu_4092_p0 = in2_loc_45_q0; + +assign mul_ln38_45_fu_4092_p1 = in1_loc_45_q0; + +assign mul_ln38_45_fu_4092_p2 = ($signed(mul_ln38_45_fu_4092_p0) * $signed(mul_ln38_45_fu_4092_p1)); + +assign mul_ln38_46_fu_4098_p0 = in2_loc_46_q0; + +assign mul_ln38_46_fu_4098_p1 = in1_loc_46_q0; + +assign mul_ln38_46_fu_4098_p2 = ($signed(mul_ln38_46_fu_4098_p0) * $signed(mul_ln38_46_fu_4098_p1)); + +assign mul_ln38_47_fu_4104_p0 = in2_loc_47_q0; + +assign mul_ln38_47_fu_4104_p1 = in1_loc_47_q0; + +assign mul_ln38_47_fu_4104_p2 = ($signed(mul_ln38_47_fu_4104_p0) * $signed(mul_ln38_47_fu_4104_p1)); + +assign mul_ln38_48_fu_4110_p0 = in2_loc_48_q0; + +assign mul_ln38_48_fu_4110_p1 = in1_loc_48_q0; + +assign mul_ln38_48_fu_4110_p2 = ($signed(mul_ln38_48_fu_4110_p0) * $signed(mul_ln38_48_fu_4110_p1)); + +assign mul_ln38_49_fu_4116_p0 = in2_loc_49_q0; + +assign mul_ln38_49_fu_4116_p1 = in1_loc_49_q0; + +assign mul_ln38_49_fu_4116_p2 = ($signed(mul_ln38_49_fu_4116_p0) * $signed(mul_ln38_49_fu_4116_p1)); + +assign mul_ln38_4_fu_3846_p0 = in2_loc_4_q0; + +assign mul_ln38_4_fu_3846_p1 = in1_loc_4_q0; + +assign mul_ln38_4_fu_3846_p2 = ($signed(mul_ln38_4_fu_3846_p0) * $signed(mul_ln38_4_fu_3846_p1)); + +assign mul_ln38_50_fu_4122_p0 = in2_loc_50_q0; + +assign mul_ln38_50_fu_4122_p1 = in1_loc_50_q0; + +assign mul_ln38_50_fu_4122_p2 = ($signed(mul_ln38_50_fu_4122_p0) * $signed(mul_ln38_50_fu_4122_p1)); + +assign mul_ln38_51_fu_4128_p0 = in2_loc_51_q0; + +assign mul_ln38_51_fu_4128_p1 = in1_loc_51_q0; + +assign mul_ln38_51_fu_4128_p2 = ($signed(mul_ln38_51_fu_4128_p0) * $signed(mul_ln38_51_fu_4128_p1)); + +assign mul_ln38_52_fu_4134_p0 = in2_loc_52_q0; + +assign mul_ln38_52_fu_4134_p1 = in1_loc_52_q0; + +assign mul_ln38_52_fu_4134_p2 = ($signed(mul_ln38_52_fu_4134_p0) * $signed(mul_ln38_52_fu_4134_p1)); + +assign mul_ln38_53_fu_4140_p0 = in2_loc_53_q0; + +assign mul_ln38_53_fu_4140_p1 = in1_loc_53_q0; + +assign mul_ln38_53_fu_4140_p2 = ($signed(mul_ln38_53_fu_4140_p0) * $signed(mul_ln38_53_fu_4140_p1)); + +assign mul_ln38_54_fu_4146_p0 = in2_loc_54_q0; + +assign mul_ln38_54_fu_4146_p1 = in1_loc_54_q0; + +assign mul_ln38_54_fu_4146_p2 = ($signed(mul_ln38_54_fu_4146_p0) * $signed(mul_ln38_54_fu_4146_p1)); + +assign mul_ln38_55_fu_4152_p0 = in2_loc_55_q0; + +assign mul_ln38_55_fu_4152_p1 = in1_loc_55_q0; + +assign mul_ln38_55_fu_4152_p2 = ($signed(mul_ln38_55_fu_4152_p0) * $signed(mul_ln38_55_fu_4152_p1)); + +assign mul_ln38_56_fu_4158_p0 = in2_loc_56_q0; + +assign mul_ln38_56_fu_4158_p1 = in1_loc_56_q0; + +assign mul_ln38_56_fu_4158_p2 = ($signed(mul_ln38_56_fu_4158_p0) * $signed(mul_ln38_56_fu_4158_p1)); + +assign mul_ln38_57_fu_4164_p0 = in2_loc_57_q0; + +assign mul_ln38_57_fu_4164_p1 = in1_loc_57_q0; + +assign mul_ln38_57_fu_4164_p2 = ($signed(mul_ln38_57_fu_4164_p0) * $signed(mul_ln38_57_fu_4164_p1)); + +assign mul_ln38_58_fu_4170_p0 = in2_loc_58_q0; + +assign mul_ln38_58_fu_4170_p1 = in1_loc_58_q0; + +assign mul_ln38_58_fu_4170_p2 = ($signed(mul_ln38_58_fu_4170_p0) * $signed(mul_ln38_58_fu_4170_p1)); + +assign mul_ln38_59_fu_4176_p0 = in2_loc_59_q0; + +assign mul_ln38_59_fu_4176_p1 = in1_loc_59_q0; + +assign mul_ln38_59_fu_4176_p2 = ($signed(mul_ln38_59_fu_4176_p0) * $signed(mul_ln38_59_fu_4176_p1)); + +assign mul_ln38_5_fu_3852_p0 = in2_loc_5_q0; + +assign mul_ln38_5_fu_3852_p1 = in1_loc_5_q0; + +assign mul_ln38_5_fu_3852_p2 = ($signed(mul_ln38_5_fu_3852_p0) * $signed(mul_ln38_5_fu_3852_p1)); + +assign mul_ln38_60_fu_4182_p0 = in2_loc_60_q0; + +assign mul_ln38_60_fu_4182_p1 = in1_loc_60_q0; + +assign mul_ln38_60_fu_4182_p2 = ($signed(mul_ln38_60_fu_4182_p0) * $signed(mul_ln38_60_fu_4182_p1)); + +assign mul_ln38_61_fu_4188_p0 = in2_loc_61_q0; + +assign mul_ln38_61_fu_4188_p1 = in1_loc_61_q0; + +assign mul_ln38_61_fu_4188_p2 = ($signed(mul_ln38_61_fu_4188_p0) * $signed(mul_ln38_61_fu_4188_p1)); + +assign mul_ln38_62_fu_4194_p0 = in2_loc_62_q0; + +assign mul_ln38_62_fu_4194_p1 = in1_loc_62_q0; + +assign mul_ln38_62_fu_4194_p2 = ($signed(mul_ln38_62_fu_4194_p0) * $signed(mul_ln38_62_fu_4194_p1)); + +assign mul_ln38_63_fu_4200_p0 = in2_loc_63_q0; + +assign mul_ln38_63_fu_4200_p1 = in1_loc_63_q0; + +assign mul_ln38_63_fu_4200_p2 = ($signed(mul_ln38_63_fu_4200_p0) * $signed(mul_ln38_63_fu_4200_p1)); + +assign mul_ln38_6_fu_3858_p0 = in2_loc_6_q0; + +assign mul_ln38_6_fu_3858_p1 = in1_loc_6_q0; + +assign mul_ln38_6_fu_3858_p2 = ($signed(mul_ln38_6_fu_3858_p0) * $signed(mul_ln38_6_fu_3858_p1)); + +assign mul_ln38_7_fu_3864_p0 = in2_loc_7_q0; + +assign mul_ln38_7_fu_3864_p1 = in1_loc_7_q0; + +assign mul_ln38_7_fu_3864_p2 = ($signed(mul_ln38_7_fu_3864_p0) * $signed(mul_ln38_7_fu_3864_p1)); + +assign mul_ln38_8_fu_3870_p0 = in2_loc_8_q0; + +assign mul_ln38_8_fu_3870_p1 = in1_loc_8_q0; + +assign mul_ln38_8_fu_3870_p2 = ($signed(mul_ln38_8_fu_3870_p0) * $signed(mul_ln38_8_fu_3870_p1)); + +assign mul_ln38_9_fu_3876_p0 = in2_loc_9_q0; + +assign mul_ln38_9_fu_3876_p1 = in1_loc_9_q0; + +assign mul_ln38_9_fu_3876_p2 = ($signed(mul_ln38_9_fu_3876_p0) * $signed(mul_ln38_9_fu_3876_p1)); + +assign mul_ln38_fu_3822_p0 = in2_loc_0_q0; + +assign mul_ln38_fu_3822_p1 = in1_loc_0_q0; + +assign mul_ln38_fu_3822_p2 = ($signed(mul_ln38_fu_3822_p0) * $signed(mul_ln38_fu_3822_p1)); + +assign out_loc_d1 = (add_ln38_30_fu_4539_p2 + add_ln38_62_fu_4563_p2); + +assign select_ln31_1_fu_3645_p3 = ((icmp_ln33_fu_3632_p2[0:0] === 1'b1) ? i_fu_3626_p2 : ap_phi_mux_i_0_phi_fu_3333_p4); + +assign select_ln31_fu_3637_p3 = ((icmp_ln33_fu_3632_p2[0:0] === 1'b1) ? 32'd0 : j_0_reg_3340); + +assign sext_ln38_fu_3733_p1 = select_ln31_fu_3637_p3; + +assign tmp_cast_fu_3657_p3 = {{trunc_ln38_fu_3653_p1}, {6'd0}}; + +assign trunc_ln27_fu_3442_p1 = phi_ln27_reg_3296[5:0]; + +assign trunc_ln28_fu_3525_p1 = phi_ln28_reg_3307[5:0]; + +assign trunc_ln38_1_fu_3801_p1 = select_ln31_fu_3637_p3[13:0]; + +assign trunc_ln38_fu_3653_p1 = select_ln31_1_fu_3645_p3[7:0]; + +assign zext_ln27_fu_3446_p1 = lshr_ln_reg_4641_pp0_iter1_reg; + +assign zext_ln28_fu_3539_p1 = trunc_ln28_reg_4727_pp1_iter1_reg; + +assign zext_ln31_1_fu_3665_p1 = select_ln31_1_fu_3645_p3; + +assign zext_ln31_fu_3606_p1 = dim_read_reg_4593; + +assign zext_ln38_fu_3811_p1 = add_ln38_64_fu_3805_p2; + +assign zext_ln42_fu_4588_p1 = phi_ln42_reg_3351; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_4620[31:30] <= 2'b00; + in2_mem_addr_reg_4626[31:30] <= 2'b00; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_loc_0.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_loc_0.v new file mode 100755 index 0000000..7a7e881 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_loc_0.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_0_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 6; +parameter MEM_SIZE = 64; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc_0( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd64; +parameter AddressWidth = 32'd6; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_in1_loc_0_ram mmult_in1_loc_0_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_loc.v new file mode 100755 index 0000000..9acfd8e --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_loc.v @@ -0,0 +1,83 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_out_loc_ram (addr0, ce0, q0, addr1, ce1, d1, we1, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +output reg[DWIDTH-1:0] q0; +input[AWIDTH-1:0] addr1; +input ce1; +input[DWIDTH-1:0] d1; +input we1; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + q0 <= ram[addr0]; + end +end + + +always @(posedge clk) +begin + if (ce1) begin + if (we1) + ram[addr1] <= d1; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_out_loc( + reset, + clk, + address0, + ce0, + q0, + address1, + ce1, + we1, + d1); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +output[DataWidth - 1:0] q0; +input[AddressWidth - 1:0] address1; +input ce1; +input we1; +input[DataWidth - 1:0] d1; + + + +mmult_out_loc_ram mmult_out_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .q0( q0 ), + .addr1( address1 ), + .ce1( ce1 ), + .we1( we1 ), + .d1( d1 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..18cb8f6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult.vhd @@ -0,0 +1,9255 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=10.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=8.750000,HLS_SYN_LAT=16413,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=2859,HLS_SYN_LUT=8200,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (25 downto 0) := "00000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (25 downto 0) := "00000000100000000000000000"; + constant ap_ST_fsm_pp2_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000001000000000000000000"; + constant ap_ST_fsm_state26 : STD_LOGIC_VECTOR (25 downto 0) := "00000010000000000000000000"; + constant ap_ST_fsm_pp3_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000100000000000000000000"; + constant ap_ST_fsm_state30 : STD_LOGIC_VECTOR (25 downto 0) := "00001000000000000000000000"; + constant ap_ST_fsm_state31 : STD_LOGIC_VECTOR (25 downto 0) := "00010000000000000000000000"; + constant ap_ST_fsm_state32 : STD_LOGIC_VECTOR (25 downto 0) := "00100000000000000000000000"; + constant ap_ST_fsm_state33 : STD_LOGIC_VECTOR (25 downto 0) := "01000000000000000000000000"; + constant ap_ST_fsm_state34 : STD_LOGIC_VECTOR (25 downto 0) := "10000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_19 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011001"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv64_0 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv6_3E : STD_LOGIC_VECTOR (5 downto 0) := "111110"; + constant ap_const_lv6_3D : STD_LOGIC_VECTOR (5 downto 0) := "111101"; + constant ap_const_lv6_3C : STD_LOGIC_VECTOR (5 downto 0) := "111100"; + constant ap_const_lv6_3B : STD_LOGIC_VECTOR (5 downto 0) := "111011"; + constant ap_const_lv6_3A : STD_LOGIC_VECTOR (5 downto 0) := "111010"; + constant ap_const_lv6_39 : STD_LOGIC_VECTOR (5 downto 0) := "111001"; + constant ap_const_lv6_38 : STD_LOGIC_VECTOR (5 downto 0) := "111000"; + constant ap_const_lv6_37 : STD_LOGIC_VECTOR (5 downto 0) := "110111"; + constant ap_const_lv6_36 : STD_LOGIC_VECTOR (5 downto 0) := "110110"; + constant ap_const_lv6_35 : STD_LOGIC_VECTOR (5 downto 0) := "110101"; + constant ap_const_lv6_34 : STD_LOGIC_VECTOR (5 downto 0) := "110100"; + constant ap_const_lv6_33 : STD_LOGIC_VECTOR (5 downto 0) := "110011"; + constant ap_const_lv6_32 : STD_LOGIC_VECTOR (5 downto 0) := "110010"; + constant ap_const_lv6_31 : STD_LOGIC_VECTOR (5 downto 0) := "110001"; + constant ap_const_lv6_30 : STD_LOGIC_VECTOR (5 downto 0) := "110000"; + constant ap_const_lv6_2F : STD_LOGIC_VECTOR (5 downto 0) := "101111"; + constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110"; + constant ap_const_lv6_2D : STD_LOGIC_VECTOR (5 downto 0) := "101101"; + constant ap_const_lv6_2C : STD_LOGIC_VECTOR (5 downto 0) := "101100"; + constant ap_const_lv6_2B : STD_LOGIC_VECTOR (5 downto 0) := "101011"; + constant ap_const_lv6_2A : STD_LOGIC_VECTOR (5 downto 0) := "101010"; + constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001"; + constant ap_const_lv6_28 : STD_LOGIC_VECTOR (5 downto 0) := "101000"; + constant ap_const_lv6_27 : STD_LOGIC_VECTOR (5 downto 0) := "100111"; + constant ap_const_lv6_26 : STD_LOGIC_VECTOR (5 downto 0) := "100110"; + constant ap_const_lv6_25 : STD_LOGIC_VECTOR (5 downto 0) := "100101"; + constant ap_const_lv6_24 : STD_LOGIC_VECTOR (5 downto 0) := "100100"; + constant ap_const_lv6_23 : STD_LOGIC_VECTOR (5 downto 0) := "100011"; + constant ap_const_lv6_22 : STD_LOGIC_VECTOR (5 downto 0) := "100010"; + constant ap_const_lv6_21 : STD_LOGIC_VECTOR (5 downto 0) := "100001"; + constant ap_const_lv6_20 : STD_LOGIC_VECTOR (5 downto 0) := "100000"; + constant ap_const_lv6_1F : STD_LOGIC_VECTOR (5 downto 0) := "011111"; + constant ap_const_lv6_1E : STD_LOGIC_VECTOR (5 downto 0) := "011110"; + constant ap_const_lv6_1D : STD_LOGIC_VECTOR (5 downto 0) := "011101"; + constant ap_const_lv6_1C : STD_LOGIC_VECTOR (5 downto 0) := "011100"; + constant ap_const_lv6_1B : STD_LOGIC_VECTOR (5 downto 0) := "011011"; + constant ap_const_lv6_1A : STD_LOGIC_VECTOR (5 downto 0) := "011010"; + constant ap_const_lv6_19 : STD_LOGIC_VECTOR (5 downto 0) := "011001"; + constant ap_const_lv6_18 : STD_LOGIC_VECTOR (5 downto 0) := "011000"; + constant ap_const_lv6_17 : STD_LOGIC_VECTOR (5 downto 0) := "010111"; + constant ap_const_lv6_16 : STD_LOGIC_VECTOR (5 downto 0) := "010110"; + constant ap_const_lv6_15 : STD_LOGIC_VECTOR (5 downto 0) := "010101"; + constant ap_const_lv6_14 : STD_LOGIC_VECTOR (5 downto 0) := "010100"; + constant ap_const_lv6_13 : STD_LOGIC_VECTOR (5 downto 0) := "010011"; + constant ap_const_lv6_12 : STD_LOGIC_VECTOR (5 downto 0) := "010010"; + constant ap_const_lv6_11 : STD_LOGIC_VECTOR (5 downto 0) := "010001"; + constant ap_const_lv6_10 : STD_LOGIC_VECTOR (5 downto 0) := "010000"; + constant ap_const_lv6_F : STD_LOGIC_VECTOR (5 downto 0) := "001111"; + constant ap_const_lv6_E : STD_LOGIC_VECTOR (5 downto 0) := "001110"; + constant ap_const_lv6_D : STD_LOGIC_VECTOR (5 downto 0) := "001101"; + constant ap_const_lv6_C : STD_LOGIC_VECTOR (5 downto 0) := "001100"; + constant ap_const_lv6_B : STD_LOGIC_VECTOR (5 downto 0) := "001011"; + constant ap_const_lv6_A : STD_LOGIC_VECTOR (5 downto 0) := "001010"; + constant ap_const_lv6_9 : STD_LOGIC_VECTOR (5 downto 0) := "001001"; + constant ap_const_lv6_8 : STD_LOGIC_VECTOR (5 downto 0) := "001000"; + constant ap_const_lv6_7 : STD_LOGIC_VECTOR (5 downto 0) := "000111"; + constant ap_const_lv6_6 : STD_LOGIC_VECTOR (5 downto 0) := "000110"; + constant ap_const_lv6_5 : STD_LOGIC_VECTOR (5 downto 0) := "000101"; + constant ap_const_lv6_4 : STD_LOGIC_VECTOR (5 downto 0) := "000100"; + constant ap_const_lv6_3 : STD_LOGIC_VECTOR (5 downto 0) := "000011"; + constant ap_const_lv6_2 : STD_LOGIC_VECTOR (5 downto 0) := "000010"; + constant ap_const_lv6_1 : STD_LOGIC_VECTOR (5 downto 0) := "000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv6_3F : STD_LOGIC_VECTOR (5 downto 0) := "111111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv32_6 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000110"; + constant ap_const_lv32_C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001100"; + constant ap_const_lv32_B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001011"; + constant ap_const_lv64_1 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state26 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state26 : signal is "none"; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp3_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0 : BOOLEAN; + signal icmp_ln42_reg_5549 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_5549_pp3_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state34 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state34 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_3296 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_3307 : STD_LOGIC_VECTOR (12 downto 0); + signal indvar_flatten_reg_3318 : STD_LOGIC_VECTOR (63 downto 0); + signal i_0_reg_3329 : STD_LOGIC_VECTOR (30 downto 0); + signal j_0_reg_3340 : STD_LOGIC_VECTOR (31 downto 0); + signal phi_ln42_reg_3351 : STD_LOGIC_VECTOR (12 downto 0); + signal dim_read_reg_4593 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_4599 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_4604 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_4609 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_4620 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_4626 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_3420_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal add_ln27_fu_3426_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal lshr_ln_reg_4641 : STD_LOGIC_VECTOR (6 downto 0); + signal lshr_ln_reg_4641_pp0_iter1_reg : STD_LOGIC_VECTOR (6 downto 0); + signal trunc_ln27_fu_3442_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4646 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4646_pp0_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in1_mem_addr_read_reg_4650 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_3513_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal add_ln28_fu_3519_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal trunc_ln28_fu_3525_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4727 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4727_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4732 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4732_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in2_mem_addr_read_reg_4736 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln31_fu_3609_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal mul_ln31_reg_4804 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal icmp_ln31_fu_3615_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4809 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp2_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp2_stage0 : signal is "none"; + signal ap_block_state23_pp2_stage0_iter0 : BOOLEAN; + signal ap_block_state24_pp2_stage0_iter1 : BOOLEAN; + signal ap_block_state25_pp2_stage0_iter2 : BOOLEAN; + signal ap_block_pp2_stage0_11001 : BOOLEAN; + signal icmp_ln31_reg_4809_pp2_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln31_fu_3620_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_enable_reg_pp2_iter0 : STD_LOGIC := '0'; + signal select_ln31_1_fu_3645_p3 : STD_LOGIC_VECTOR (30 downto 0); + signal select_ln31_1_reg_4818 : STD_LOGIC_VECTOR (30 downto 0); + signal out_loc_addr_reg_5143 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_5143_pp2_iter1_reg : STD_LOGIC_VECTOR (11 downto 0); + signal j_fu_3816_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_3822_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_reg_5474 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3828_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_reg_5479 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3834_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_reg_5484 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_fu_4206_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_reg_5489 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_fu_4212_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_reg_5494 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_fu_4230_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_reg_5499 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_fu_4248_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_reg_5504 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_fu_4290_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_reg_5509 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_fu_4332_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_reg_5514 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_fu_4374_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_reg_5519 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_fu_4392_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_reg_5524 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_fu_4410_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_reg_5529 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_fu_4452_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_reg_5534 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_fu_4470_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_reg_5539 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_fu_4494_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_reg_5544 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln42_fu_4576_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp3_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp3_stage0 : signal is "none"; + signal ap_block_state27_pp3_stage0_iter0 : BOOLEAN; + signal ap_block_state28_pp3_stage0_iter1 : BOOLEAN; + signal ap_block_state29_pp3_stage0_iter2 : BOOLEAN; + signal ap_block_state29_io : BOOLEAN; + signal ap_block_pp3_stage0_11001 : BOOLEAN; + signal add_ln42_fu_4582_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp3_iter0 : STD_LOGIC := '0'; + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_load_reg_5563 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp3_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0_subdone : BOOLEAN; + signal ap_condition_pp2_exit_iter0_state23 : STD_LOGIC; + signal ap_enable_reg_pp2_iter1 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0_subdone : BOOLEAN; + signal ap_condition_pp3_exit_iter0_state27 : STD_LOGIC; + signal in1_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_0_ce0 : STD_LOGIC; + signal in1_loc_0_we0 : STD_LOGIC; + signal in1_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_1_ce0 : STD_LOGIC; + signal in1_loc_1_we0 : STD_LOGIC; + signal in1_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_2_ce0 : STD_LOGIC; + signal in1_loc_2_we0 : STD_LOGIC; + signal in1_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_3_ce0 : STD_LOGIC; + signal in1_loc_3_we0 : STD_LOGIC; + signal in1_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_4_ce0 : STD_LOGIC; + signal in1_loc_4_we0 : STD_LOGIC; + signal in1_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_5_ce0 : STD_LOGIC; + signal in1_loc_5_we0 : STD_LOGIC; + signal in1_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_6_ce0 : STD_LOGIC; + signal in1_loc_6_we0 : STD_LOGIC; + signal in1_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_7_ce0 : STD_LOGIC; + signal in1_loc_7_we0 : STD_LOGIC; + signal in1_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_8_ce0 : STD_LOGIC; + signal in1_loc_8_we0 : STD_LOGIC; + signal in1_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_9_ce0 : STD_LOGIC; + signal in1_loc_9_we0 : STD_LOGIC; + signal in1_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_10_ce0 : STD_LOGIC; + signal in1_loc_10_we0 : STD_LOGIC; + signal in1_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_11_ce0 : STD_LOGIC; + signal in1_loc_11_we0 : STD_LOGIC; + signal in1_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_12_ce0 : STD_LOGIC; + signal in1_loc_12_we0 : STD_LOGIC; + signal in1_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_13_ce0 : STD_LOGIC; + signal in1_loc_13_we0 : STD_LOGIC; + signal in1_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_14_ce0 : STD_LOGIC; + signal in1_loc_14_we0 : STD_LOGIC; + signal in1_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_15_ce0 : STD_LOGIC; + signal in1_loc_15_we0 : STD_LOGIC; + signal in1_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_16_ce0 : STD_LOGIC; + signal in1_loc_16_we0 : STD_LOGIC; + signal in1_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_17_ce0 : STD_LOGIC; + signal in1_loc_17_we0 : STD_LOGIC; + signal in1_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_18_ce0 : STD_LOGIC; + signal in1_loc_18_we0 : STD_LOGIC; + signal in1_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_19_ce0 : STD_LOGIC; + signal in1_loc_19_we0 : STD_LOGIC; + signal in1_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_20_ce0 : STD_LOGIC; + signal in1_loc_20_we0 : STD_LOGIC; + signal in1_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_21_ce0 : STD_LOGIC; + signal in1_loc_21_we0 : STD_LOGIC; + signal in1_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_22_ce0 : STD_LOGIC; + signal in1_loc_22_we0 : STD_LOGIC; + signal in1_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_23_ce0 : STD_LOGIC; + signal in1_loc_23_we0 : STD_LOGIC; + signal in1_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_24_ce0 : STD_LOGIC; + signal in1_loc_24_we0 : STD_LOGIC; + signal in1_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_25_ce0 : STD_LOGIC; + signal in1_loc_25_we0 : STD_LOGIC; + signal in1_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_26_ce0 : STD_LOGIC; + signal in1_loc_26_we0 : STD_LOGIC; + signal in1_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_27_ce0 : STD_LOGIC; + signal in1_loc_27_we0 : STD_LOGIC; + signal in1_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_28_ce0 : STD_LOGIC; + signal in1_loc_28_we0 : STD_LOGIC; + signal in1_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_29_ce0 : STD_LOGIC; + signal in1_loc_29_we0 : STD_LOGIC; + signal in1_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_30_ce0 : STD_LOGIC; + signal in1_loc_30_we0 : STD_LOGIC; + signal in1_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_31_ce0 : STD_LOGIC; + signal in1_loc_31_we0 : STD_LOGIC; + signal in1_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_32_ce0 : STD_LOGIC; + signal in1_loc_32_we0 : STD_LOGIC; + signal in1_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_33_ce0 : STD_LOGIC; + signal in1_loc_33_we0 : STD_LOGIC; + signal in1_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_34_ce0 : STD_LOGIC; + signal in1_loc_34_we0 : STD_LOGIC; + signal in1_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_35_ce0 : STD_LOGIC; + signal in1_loc_35_we0 : STD_LOGIC; + signal in1_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_36_ce0 : STD_LOGIC; + signal in1_loc_36_we0 : STD_LOGIC; + signal in1_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_37_ce0 : STD_LOGIC; + signal in1_loc_37_we0 : STD_LOGIC; + signal in1_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_38_ce0 : STD_LOGIC; + signal in1_loc_38_we0 : STD_LOGIC; + signal in1_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_39_ce0 : STD_LOGIC; + signal in1_loc_39_we0 : STD_LOGIC; + signal in1_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_40_ce0 : STD_LOGIC; + signal in1_loc_40_we0 : STD_LOGIC; + signal in1_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_41_ce0 : STD_LOGIC; + signal in1_loc_41_we0 : STD_LOGIC; + signal in1_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_42_ce0 : STD_LOGIC; + signal in1_loc_42_we0 : STD_LOGIC; + signal in1_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_43_ce0 : STD_LOGIC; + signal in1_loc_43_we0 : STD_LOGIC; + signal in1_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_44_ce0 : STD_LOGIC; + signal in1_loc_44_we0 : STD_LOGIC; + signal in1_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_45_ce0 : STD_LOGIC; + signal in1_loc_45_we0 : STD_LOGIC; + signal in1_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_46_ce0 : STD_LOGIC; + signal in1_loc_46_we0 : STD_LOGIC; + signal in1_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_47_ce0 : STD_LOGIC; + signal in1_loc_47_we0 : STD_LOGIC; + signal in1_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_48_ce0 : STD_LOGIC; + signal in1_loc_48_we0 : STD_LOGIC; + signal in1_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_49_ce0 : STD_LOGIC; + signal in1_loc_49_we0 : STD_LOGIC; + signal in1_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_50_ce0 : STD_LOGIC; + signal in1_loc_50_we0 : STD_LOGIC; + signal in1_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_51_ce0 : STD_LOGIC; + signal in1_loc_51_we0 : STD_LOGIC; + signal in1_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_52_ce0 : STD_LOGIC; + signal in1_loc_52_we0 : STD_LOGIC; + signal in1_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_53_ce0 : STD_LOGIC; + signal in1_loc_53_we0 : STD_LOGIC; + signal in1_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_54_ce0 : STD_LOGIC; + signal in1_loc_54_we0 : STD_LOGIC; + signal in1_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_55_ce0 : STD_LOGIC; + signal in1_loc_55_we0 : STD_LOGIC; + signal in1_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_56_ce0 : STD_LOGIC; + signal in1_loc_56_we0 : STD_LOGIC; + signal in1_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_57_ce0 : STD_LOGIC; + signal in1_loc_57_we0 : STD_LOGIC; + signal in1_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_58_ce0 : STD_LOGIC; + signal in1_loc_58_we0 : STD_LOGIC; + signal in1_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_59_ce0 : STD_LOGIC; + signal in1_loc_59_we0 : STD_LOGIC; + signal in1_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_60_ce0 : STD_LOGIC; + signal in1_loc_60_we0 : STD_LOGIC; + signal in1_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_61_ce0 : STD_LOGIC; + signal in1_loc_61_we0 : STD_LOGIC; + signal in1_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_62_ce0 : STD_LOGIC; + signal in1_loc_62_we0 : STD_LOGIC; + signal in1_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_63_ce0 : STD_LOGIC; + signal in1_loc_63_we0 : STD_LOGIC; + signal in1_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_0_ce0 : STD_LOGIC; + signal in2_loc_0_we0 : STD_LOGIC; + signal in2_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_1_ce0 : STD_LOGIC; + signal in2_loc_1_we0 : STD_LOGIC; + signal in2_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_2_ce0 : STD_LOGIC; + signal in2_loc_2_we0 : STD_LOGIC; + signal in2_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_3_ce0 : STD_LOGIC; + signal in2_loc_3_we0 : STD_LOGIC; + signal in2_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_4_ce0 : STD_LOGIC; + signal in2_loc_4_we0 : STD_LOGIC; + signal in2_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_5_ce0 : STD_LOGIC; + signal in2_loc_5_we0 : STD_LOGIC; + signal in2_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_6_ce0 : STD_LOGIC; + signal in2_loc_6_we0 : STD_LOGIC; + signal in2_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_7_ce0 : STD_LOGIC; + signal in2_loc_7_we0 : STD_LOGIC; + signal in2_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_8_ce0 : STD_LOGIC; + signal in2_loc_8_we0 : STD_LOGIC; + signal in2_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_9_ce0 : STD_LOGIC; + signal in2_loc_9_we0 : STD_LOGIC; + signal in2_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_10_ce0 : STD_LOGIC; + signal in2_loc_10_we0 : STD_LOGIC; + signal in2_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_11_ce0 : STD_LOGIC; + signal in2_loc_11_we0 : STD_LOGIC; + signal in2_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_12_ce0 : STD_LOGIC; + signal in2_loc_12_we0 : STD_LOGIC; + signal in2_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_13_ce0 : STD_LOGIC; + signal in2_loc_13_we0 : STD_LOGIC; + signal in2_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_14_ce0 : STD_LOGIC; + signal in2_loc_14_we0 : STD_LOGIC; + signal in2_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_15_ce0 : STD_LOGIC; + signal in2_loc_15_we0 : STD_LOGIC; + signal in2_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_16_ce0 : STD_LOGIC; + signal in2_loc_16_we0 : STD_LOGIC; + signal in2_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_17_ce0 : STD_LOGIC; + signal in2_loc_17_we0 : STD_LOGIC; + signal in2_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_18_ce0 : STD_LOGIC; + signal in2_loc_18_we0 : STD_LOGIC; + signal in2_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_19_ce0 : STD_LOGIC; + signal in2_loc_19_we0 : STD_LOGIC; + signal in2_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_20_ce0 : STD_LOGIC; + signal in2_loc_20_we0 : STD_LOGIC; + signal in2_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_21_ce0 : STD_LOGIC; + signal in2_loc_21_we0 : STD_LOGIC; + signal in2_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_22_ce0 : STD_LOGIC; + signal in2_loc_22_we0 : STD_LOGIC; + signal in2_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_23_ce0 : STD_LOGIC; + signal in2_loc_23_we0 : STD_LOGIC; + signal in2_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_24_ce0 : STD_LOGIC; + signal in2_loc_24_we0 : STD_LOGIC; + signal in2_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_25_ce0 : STD_LOGIC; + signal in2_loc_25_we0 : STD_LOGIC; + signal in2_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_26_ce0 : STD_LOGIC; + signal in2_loc_26_we0 : STD_LOGIC; + signal in2_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_27_ce0 : STD_LOGIC; + signal in2_loc_27_we0 : STD_LOGIC; + signal in2_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_28_ce0 : STD_LOGIC; + signal in2_loc_28_we0 : STD_LOGIC; + signal in2_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_29_ce0 : STD_LOGIC; + signal in2_loc_29_we0 : STD_LOGIC; + signal in2_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_30_ce0 : STD_LOGIC; + signal in2_loc_30_we0 : STD_LOGIC; + signal in2_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_31_ce0 : STD_LOGIC; + signal in2_loc_31_we0 : STD_LOGIC; + signal in2_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_32_ce0 : STD_LOGIC; + signal in2_loc_32_we0 : STD_LOGIC; + signal in2_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_33_ce0 : STD_LOGIC; + signal in2_loc_33_we0 : STD_LOGIC; + signal in2_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_34_ce0 : STD_LOGIC; + signal in2_loc_34_we0 : STD_LOGIC; + signal in2_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_35_ce0 : STD_LOGIC; + signal in2_loc_35_we0 : STD_LOGIC; + signal in2_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_36_ce0 : STD_LOGIC; + signal in2_loc_36_we0 : STD_LOGIC; + signal in2_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_37_ce0 : STD_LOGIC; + signal in2_loc_37_we0 : STD_LOGIC; + signal in2_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_38_ce0 : STD_LOGIC; + signal in2_loc_38_we0 : STD_LOGIC; + signal in2_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_39_ce0 : STD_LOGIC; + signal in2_loc_39_we0 : STD_LOGIC; + signal in2_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_40_ce0 : STD_LOGIC; + signal in2_loc_40_we0 : STD_LOGIC; + signal in2_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_41_ce0 : STD_LOGIC; + signal in2_loc_41_we0 : STD_LOGIC; + signal in2_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_42_ce0 : STD_LOGIC; + signal in2_loc_42_we0 : STD_LOGIC; + signal in2_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_43_ce0 : STD_LOGIC; + signal in2_loc_43_we0 : STD_LOGIC; + signal in2_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_44_ce0 : STD_LOGIC; + signal in2_loc_44_we0 : STD_LOGIC; + signal in2_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_45_ce0 : STD_LOGIC; + signal in2_loc_45_we0 : STD_LOGIC; + signal in2_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_46_ce0 : STD_LOGIC; + signal in2_loc_46_we0 : STD_LOGIC; + signal in2_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_47_ce0 : STD_LOGIC; + signal in2_loc_47_we0 : STD_LOGIC; + signal in2_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_48_ce0 : STD_LOGIC; + signal in2_loc_48_we0 : STD_LOGIC; + signal in2_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_49_ce0 : STD_LOGIC; + signal in2_loc_49_we0 : STD_LOGIC; + signal in2_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_50_ce0 : STD_LOGIC; + signal in2_loc_50_we0 : STD_LOGIC; + signal in2_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_51_ce0 : STD_LOGIC; + signal in2_loc_51_we0 : STD_LOGIC; + signal in2_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_52_ce0 : STD_LOGIC; + signal in2_loc_52_we0 : STD_LOGIC; + signal in2_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_53_ce0 : STD_LOGIC; + signal in2_loc_53_we0 : STD_LOGIC; + signal in2_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_54_ce0 : STD_LOGIC; + signal in2_loc_54_we0 : STD_LOGIC; + signal in2_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_55_ce0 : STD_LOGIC; + signal in2_loc_55_we0 : STD_LOGIC; + signal in2_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_56_ce0 : STD_LOGIC; + signal in2_loc_56_we0 : STD_LOGIC; + signal in2_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_57_ce0 : STD_LOGIC; + signal in2_loc_57_we0 : STD_LOGIC; + signal in2_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_58_ce0 : STD_LOGIC; + signal in2_loc_58_we0 : STD_LOGIC; + signal in2_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_59_ce0 : STD_LOGIC; + signal in2_loc_59_we0 : STD_LOGIC; + signal in2_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_60_ce0 : STD_LOGIC; + signal in2_loc_60_we0 : STD_LOGIC; + signal in2_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_61_ce0 : STD_LOGIC; + signal in2_loc_61_we0 : STD_LOGIC; + signal in2_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_62_ce0 : STD_LOGIC; + signal in2_loc_62_we0 : STD_LOGIC; + signal in2_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_63_ce0 : STD_LOGIC; + signal in2_loc_63_we0 : STD_LOGIC; + signal in2_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_ce1 : STD_LOGIC; + signal out_loc_we1 : STD_LOGIC; + signal out_loc_d1 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_i_0_phi_fu_3333_p4 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_block_pp2_stage0 : BOOLEAN; + signal zext_ln27_fu_3446_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_3539_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln31_1_fu_3665_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_fu_3811_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_3733_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_4588_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_8_fu_3392_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_3402_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_7_fu_3411_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp3_stage0_01001 : BOOLEAN; + signal mul_ln31_fu_3609_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln31_fu_3606_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal mul_ln31_fu_3609_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln33_fu_3632_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal i_fu_3626_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal trunc_ln38_fu_3653_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal select_ln31_fu_3637_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal tmp_cast_fu_3657_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal trunc_ln38_1_fu_3801_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_64_fu_3805_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal mul_ln38_fu_3822_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_3822_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3828_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3828_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3834_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3834_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3840_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3840_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3846_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3846_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3852_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3852_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3858_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3858_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3864_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3864_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3870_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3870_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3876_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3876_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3882_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3882_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3888_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3888_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3894_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3894_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3900_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3900_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3906_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3906_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3912_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3912_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3918_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3918_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3924_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3924_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3930_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3930_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3936_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3936_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3942_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3942_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3948_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3948_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3954_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3954_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3960_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3960_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3966_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3966_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3972_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3972_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3978_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3978_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3984_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3984_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3990_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3990_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3996_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3996_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_4002_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_4002_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_4008_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_4008_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_4014_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_4014_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_4020_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_4020_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_4026_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_4026_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_4032_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_4032_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_4038_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_4038_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_4044_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_4044_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_4050_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_4050_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_4056_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_4056_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_4062_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_4062_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_4068_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_4068_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_4074_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_4074_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_4080_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_4080_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_4086_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_4086_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4092_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4092_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4098_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4098_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_4104_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_4104_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_4110_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_4110_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_4116_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_4116_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_4122_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_4122_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_4128_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_4128_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4134_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4134_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4140_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4140_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4146_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4146_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4152_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4152_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4158_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4158_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4164_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4164_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4170_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4170_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4176_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4176_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4182_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4182_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4188_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4188_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4194_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4194_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4200_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4200_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3846_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3840_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3858_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3852_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3870_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3864_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3882_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3876_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_fu_4218_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_8_fu_4224_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3894_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3888_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3906_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3900_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_fu_4236_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_11_fu_4242_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3918_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3912_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3930_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3924_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_fu_4254_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_16_fu_4260_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3942_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3936_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3954_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3948_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_fu_4272_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_fu_4278_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_fu_4266_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_20_fu_4284_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3966_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3960_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3978_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3972_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_fu_4296_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_23_fu_4302_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3990_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3984_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_4002_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3996_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_fu_4314_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_fu_4320_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_fu_4308_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_27_fu_4326_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_4014_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_4008_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_4026_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_4020_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_fu_4338_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_32_fu_4344_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_4038_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_4032_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_4050_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_4044_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_fu_4356_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_fu_4362_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_fu_4350_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_36_fu_4368_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_4062_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_4056_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_4074_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_4068_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_fu_4380_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_39_fu_4386_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_4086_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_4080_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4098_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4092_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_fu_4398_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_42_fu_4404_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_4110_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_4104_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_4122_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_4116_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_fu_4416_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_47_fu_4422_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4134_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_4128_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4146_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4140_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_fu_4434_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_fu_4440_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_fu_4428_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_51_fu_4446_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4158_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4152_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4170_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4164_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_fu_4458_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_54_fu_4464_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4182_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4176_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4200_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4194_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4188_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_fu_4482_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_fu_4476_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_58_fu_4488_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_fu_4500_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_1_fu_4505_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_fu_4509_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_5_fu_4515_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_fu_4519_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_13_fu_4525_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_fu_4529_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_29_fu_4535_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_44_fu_4545_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_60_fu_4554_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_fu_4549_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_fu_4558_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_fu_4539_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_62_fu_4563_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (25 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp2 : STD_LOGIC; + signal ap_enable_pp2 : STD_LOGIC; + signal ap_idle_pp3 : STD_LOGIC; + signal ap_enable_pp3 : STD_LOGIC; + + component mmult_in1_loc_0 IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (5 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_out_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR (31 downto 0); + address1 : IN STD_LOGIC_VECTOR (11 downto 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_4626, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_4620, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => out_loc_load_reg_5563, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_0_address0, + ce0 => in1_loc_0_ce0, + we0 => in1_loc_0_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_0_q0); + + in1_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_1_address0, + ce0 => in1_loc_1_ce0, + we0 => in1_loc_1_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_1_q0); + + in1_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_2_address0, + ce0 => in1_loc_2_ce0, + we0 => in1_loc_2_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_2_q0); + + in1_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_3_address0, + ce0 => in1_loc_3_ce0, + we0 => in1_loc_3_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_3_q0); + + in1_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_4_address0, + ce0 => in1_loc_4_ce0, + we0 => in1_loc_4_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_4_q0); + + in1_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_5_address0, + ce0 => in1_loc_5_ce0, + we0 => in1_loc_5_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_5_q0); + + in1_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_6_address0, + ce0 => in1_loc_6_ce0, + we0 => in1_loc_6_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_6_q0); + + in1_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_7_address0, + ce0 => in1_loc_7_ce0, + we0 => in1_loc_7_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_7_q0); + + in1_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_8_address0, + ce0 => in1_loc_8_ce0, + we0 => in1_loc_8_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_8_q0); + + in1_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_9_address0, + ce0 => in1_loc_9_ce0, + we0 => in1_loc_9_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_9_q0); + + in1_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_10_address0, + ce0 => in1_loc_10_ce0, + we0 => in1_loc_10_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_10_q0); + + in1_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_11_address0, + ce0 => in1_loc_11_ce0, + we0 => in1_loc_11_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_11_q0); + + in1_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_12_address0, + ce0 => in1_loc_12_ce0, + we0 => in1_loc_12_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_12_q0); + + in1_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_13_address0, + ce0 => in1_loc_13_ce0, + we0 => in1_loc_13_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_13_q0); + + in1_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_14_address0, + ce0 => in1_loc_14_ce0, + we0 => in1_loc_14_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_14_q0); + + in1_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_15_address0, + ce0 => in1_loc_15_ce0, + we0 => in1_loc_15_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_15_q0); + + in1_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_16_address0, + ce0 => in1_loc_16_ce0, + we0 => in1_loc_16_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_16_q0); + + in1_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_17_address0, + ce0 => in1_loc_17_ce0, + we0 => in1_loc_17_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_17_q0); + + in1_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_18_address0, + ce0 => in1_loc_18_ce0, + we0 => in1_loc_18_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_18_q0); + + in1_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_19_address0, + ce0 => in1_loc_19_ce0, + we0 => in1_loc_19_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_19_q0); + + in1_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_20_address0, + ce0 => in1_loc_20_ce0, + we0 => in1_loc_20_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_20_q0); + + in1_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_21_address0, + ce0 => in1_loc_21_ce0, + we0 => in1_loc_21_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_21_q0); + + in1_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_22_address0, + ce0 => in1_loc_22_ce0, + we0 => in1_loc_22_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_22_q0); + + in1_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_23_address0, + ce0 => in1_loc_23_ce0, + we0 => in1_loc_23_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_23_q0); + + in1_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_24_address0, + ce0 => in1_loc_24_ce0, + we0 => in1_loc_24_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_24_q0); + + in1_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_25_address0, + ce0 => in1_loc_25_ce0, + we0 => in1_loc_25_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_25_q0); + + in1_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_26_address0, + ce0 => in1_loc_26_ce0, + we0 => in1_loc_26_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_26_q0); + + in1_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_27_address0, + ce0 => in1_loc_27_ce0, + we0 => in1_loc_27_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_27_q0); + + in1_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_28_address0, + ce0 => in1_loc_28_ce0, + we0 => in1_loc_28_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_28_q0); + + in1_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_29_address0, + ce0 => in1_loc_29_ce0, + we0 => in1_loc_29_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_29_q0); + + in1_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_30_address0, + ce0 => in1_loc_30_ce0, + we0 => in1_loc_30_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_30_q0); + + in1_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_31_address0, + ce0 => in1_loc_31_ce0, + we0 => in1_loc_31_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_31_q0); + + in1_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_32_address0, + ce0 => in1_loc_32_ce0, + we0 => in1_loc_32_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_32_q0); + + in1_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_33_address0, + ce0 => in1_loc_33_ce0, + we0 => in1_loc_33_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_33_q0); + + in1_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_34_address0, + ce0 => in1_loc_34_ce0, + we0 => in1_loc_34_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_34_q0); + + in1_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_35_address0, + ce0 => in1_loc_35_ce0, + we0 => in1_loc_35_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_35_q0); + + in1_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_36_address0, + ce0 => in1_loc_36_ce0, + we0 => in1_loc_36_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_36_q0); + + in1_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_37_address0, + ce0 => in1_loc_37_ce0, + we0 => in1_loc_37_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_37_q0); + + in1_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_38_address0, + ce0 => in1_loc_38_ce0, + we0 => in1_loc_38_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_38_q0); + + in1_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_39_address0, + ce0 => in1_loc_39_ce0, + we0 => in1_loc_39_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_39_q0); + + in1_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_40_address0, + ce0 => in1_loc_40_ce0, + we0 => in1_loc_40_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_40_q0); + + in1_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_41_address0, + ce0 => in1_loc_41_ce0, + we0 => in1_loc_41_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_41_q0); + + in1_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_42_address0, + ce0 => in1_loc_42_ce0, + we0 => in1_loc_42_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_42_q0); + + in1_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_43_address0, + ce0 => in1_loc_43_ce0, + we0 => in1_loc_43_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_43_q0); + + in1_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_44_address0, + ce0 => in1_loc_44_ce0, + we0 => in1_loc_44_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_44_q0); + + in1_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_45_address0, + ce0 => in1_loc_45_ce0, + we0 => in1_loc_45_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_45_q0); + + in1_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_46_address0, + ce0 => in1_loc_46_ce0, + we0 => in1_loc_46_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_46_q0); + + in1_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_47_address0, + ce0 => in1_loc_47_ce0, + we0 => in1_loc_47_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_47_q0); + + in1_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_48_address0, + ce0 => in1_loc_48_ce0, + we0 => in1_loc_48_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_48_q0); + + in1_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_49_address0, + ce0 => in1_loc_49_ce0, + we0 => in1_loc_49_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_49_q0); + + in1_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_50_address0, + ce0 => in1_loc_50_ce0, + we0 => in1_loc_50_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_50_q0); + + in1_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_51_address0, + ce0 => in1_loc_51_ce0, + we0 => in1_loc_51_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_51_q0); + + in1_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_52_address0, + ce0 => in1_loc_52_ce0, + we0 => in1_loc_52_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_52_q0); + + in1_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_53_address0, + ce0 => in1_loc_53_ce0, + we0 => in1_loc_53_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_53_q0); + + in1_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_54_address0, + ce0 => in1_loc_54_ce0, + we0 => in1_loc_54_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_54_q0); + + in1_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_55_address0, + ce0 => in1_loc_55_ce0, + we0 => in1_loc_55_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_55_q0); + + in1_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_56_address0, + ce0 => in1_loc_56_ce0, + we0 => in1_loc_56_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_56_q0); + + in1_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_57_address0, + ce0 => in1_loc_57_ce0, + we0 => in1_loc_57_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_57_q0); + + in1_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_58_address0, + ce0 => in1_loc_58_ce0, + we0 => in1_loc_58_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_58_q0); + + in1_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_59_address0, + ce0 => in1_loc_59_ce0, + we0 => in1_loc_59_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_59_q0); + + in1_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_60_address0, + ce0 => in1_loc_60_ce0, + we0 => in1_loc_60_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_60_q0); + + in1_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_61_address0, + ce0 => in1_loc_61_ce0, + we0 => in1_loc_61_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_61_q0); + + in1_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_62_address0, + ce0 => in1_loc_62_ce0, + we0 => in1_loc_62_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_62_q0); + + in1_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_63_address0, + ce0 => in1_loc_63_ce0, + we0 => in1_loc_63_we0, + d0 => in1_mem_addr_read_reg_4650, + q0 => in1_loc_63_q0); + + in2_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_0_address0, + ce0 => in2_loc_0_ce0, + we0 => in2_loc_0_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_0_q0); + + in2_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_1_address0, + ce0 => in2_loc_1_ce0, + we0 => in2_loc_1_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_1_q0); + + in2_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_2_address0, + ce0 => in2_loc_2_ce0, + we0 => in2_loc_2_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_2_q0); + + in2_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_3_address0, + ce0 => in2_loc_3_ce0, + we0 => in2_loc_3_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_3_q0); + + in2_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_4_address0, + ce0 => in2_loc_4_ce0, + we0 => in2_loc_4_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_4_q0); + + in2_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_5_address0, + ce0 => in2_loc_5_ce0, + we0 => in2_loc_5_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_5_q0); + + in2_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_6_address0, + ce0 => in2_loc_6_ce0, + we0 => in2_loc_6_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_6_q0); + + in2_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_7_address0, + ce0 => in2_loc_7_ce0, + we0 => in2_loc_7_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_7_q0); + + in2_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_8_address0, + ce0 => in2_loc_8_ce0, + we0 => in2_loc_8_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_8_q0); + + in2_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_9_address0, + ce0 => in2_loc_9_ce0, + we0 => in2_loc_9_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_9_q0); + + in2_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_10_address0, + ce0 => in2_loc_10_ce0, + we0 => in2_loc_10_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_10_q0); + + in2_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_11_address0, + ce0 => in2_loc_11_ce0, + we0 => in2_loc_11_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_11_q0); + + in2_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_12_address0, + ce0 => in2_loc_12_ce0, + we0 => in2_loc_12_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_12_q0); + + in2_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_13_address0, + ce0 => in2_loc_13_ce0, + we0 => in2_loc_13_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_13_q0); + + in2_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_14_address0, + ce0 => in2_loc_14_ce0, + we0 => in2_loc_14_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_14_q0); + + in2_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_15_address0, + ce0 => in2_loc_15_ce0, + we0 => in2_loc_15_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_15_q0); + + in2_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_16_address0, + ce0 => in2_loc_16_ce0, + we0 => in2_loc_16_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_16_q0); + + in2_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_17_address0, + ce0 => in2_loc_17_ce0, + we0 => in2_loc_17_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_17_q0); + + in2_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_18_address0, + ce0 => in2_loc_18_ce0, + we0 => in2_loc_18_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_18_q0); + + in2_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_19_address0, + ce0 => in2_loc_19_ce0, + we0 => in2_loc_19_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_19_q0); + + in2_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_20_address0, + ce0 => in2_loc_20_ce0, + we0 => in2_loc_20_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_20_q0); + + in2_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_21_address0, + ce0 => in2_loc_21_ce0, + we0 => in2_loc_21_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_21_q0); + + in2_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_22_address0, + ce0 => in2_loc_22_ce0, + we0 => in2_loc_22_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_22_q0); + + in2_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_23_address0, + ce0 => in2_loc_23_ce0, + we0 => in2_loc_23_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_23_q0); + + in2_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_24_address0, + ce0 => in2_loc_24_ce0, + we0 => in2_loc_24_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_24_q0); + + in2_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_25_address0, + ce0 => in2_loc_25_ce0, + we0 => in2_loc_25_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_25_q0); + + in2_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_26_address0, + ce0 => in2_loc_26_ce0, + we0 => in2_loc_26_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_26_q0); + + in2_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_27_address0, + ce0 => in2_loc_27_ce0, + we0 => in2_loc_27_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_27_q0); + + in2_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_28_address0, + ce0 => in2_loc_28_ce0, + we0 => in2_loc_28_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_28_q0); + + in2_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_29_address0, + ce0 => in2_loc_29_ce0, + we0 => in2_loc_29_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_29_q0); + + in2_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_30_address0, + ce0 => in2_loc_30_ce0, + we0 => in2_loc_30_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_30_q0); + + in2_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_31_address0, + ce0 => in2_loc_31_ce0, + we0 => in2_loc_31_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_31_q0); + + in2_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_32_address0, + ce0 => in2_loc_32_ce0, + we0 => in2_loc_32_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_32_q0); + + in2_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_33_address0, + ce0 => in2_loc_33_ce0, + we0 => in2_loc_33_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_33_q0); + + in2_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_34_address0, + ce0 => in2_loc_34_ce0, + we0 => in2_loc_34_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_34_q0); + + in2_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_35_address0, + ce0 => in2_loc_35_ce0, + we0 => in2_loc_35_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_35_q0); + + in2_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_36_address0, + ce0 => in2_loc_36_ce0, + we0 => in2_loc_36_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_36_q0); + + in2_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_37_address0, + ce0 => in2_loc_37_ce0, + we0 => in2_loc_37_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_37_q0); + + in2_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_38_address0, + ce0 => in2_loc_38_ce0, + we0 => in2_loc_38_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_38_q0); + + in2_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_39_address0, + ce0 => in2_loc_39_ce0, + we0 => in2_loc_39_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_39_q0); + + in2_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_40_address0, + ce0 => in2_loc_40_ce0, + we0 => in2_loc_40_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_40_q0); + + in2_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_41_address0, + ce0 => in2_loc_41_ce0, + we0 => in2_loc_41_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_41_q0); + + in2_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_42_address0, + ce0 => in2_loc_42_ce0, + we0 => in2_loc_42_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_42_q0); + + in2_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_43_address0, + ce0 => in2_loc_43_ce0, + we0 => in2_loc_43_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_43_q0); + + in2_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_44_address0, + ce0 => in2_loc_44_ce0, + we0 => in2_loc_44_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_44_q0); + + in2_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_45_address0, + ce0 => in2_loc_45_ce0, + we0 => in2_loc_45_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_45_q0); + + in2_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_46_address0, + ce0 => in2_loc_46_ce0, + we0 => in2_loc_46_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_46_q0); + + in2_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_47_address0, + ce0 => in2_loc_47_ce0, + we0 => in2_loc_47_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_47_q0); + + in2_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_48_address0, + ce0 => in2_loc_48_ce0, + we0 => in2_loc_48_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_48_q0); + + in2_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_49_address0, + ce0 => in2_loc_49_ce0, + we0 => in2_loc_49_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_49_q0); + + in2_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_50_address0, + ce0 => in2_loc_50_ce0, + we0 => in2_loc_50_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_50_q0); + + in2_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_51_address0, + ce0 => in2_loc_51_ce0, + we0 => in2_loc_51_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_51_q0); + + in2_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_52_address0, + ce0 => in2_loc_52_ce0, + we0 => in2_loc_52_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_52_q0); + + in2_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_53_address0, + ce0 => in2_loc_53_ce0, + we0 => in2_loc_53_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_53_q0); + + in2_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_54_address0, + ce0 => in2_loc_54_ce0, + we0 => in2_loc_54_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_54_q0); + + in2_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_55_address0, + ce0 => in2_loc_55_ce0, + we0 => in2_loc_55_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_55_q0); + + in2_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_56_address0, + ce0 => in2_loc_56_ce0, + we0 => in2_loc_56_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_56_q0); + + in2_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_57_address0, + ce0 => in2_loc_57_ce0, + we0 => in2_loc_57_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_57_q0); + + in2_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_58_address0, + ce0 => in2_loc_58_ce0, + we0 => in2_loc_58_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_58_q0); + + in2_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_59_address0, + ce0 => in2_loc_59_ce0, + we0 => in2_loc_59_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_59_q0); + + in2_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_60_address0, + ce0 => in2_loc_60_ce0, + we0 => in2_loc_60_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_60_q0); + + in2_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_61_address0, + ce0 => in2_loc_61_ce0, + we0 => in2_loc_61_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_61_q0); + + in2_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_62_address0, + ce0 => in2_loc_62_ce0, + we0 => in2_loc_62_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_62_q0); + + in2_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_63_address0, + ce0 => in2_loc_63_ce0, + we0 => in2_loc_63_we0, + d0 => in2_mem_addr_read_reg_4736, + q0 => in2_loc_63_q0); + + out_loc_U : component mmult_out_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + q0 => out_loc_q0, + address1 => out_loc_addr_reg_5143_pp2_iter1_reg, + ce1 => out_loc_ce1, + we1 => out_loc_we1, + d1 => out_loc_d1); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_logic_1 = ap_condition_pp2_exit_iter0_state23) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state23)) then + ap_enable_reg_pp2_iter1 <= (ap_const_logic_1 xor ap_condition_pp2_exit_iter0_state23); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_logic_1 = ap_condition_pp3_exit_iter0_state27) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state26))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp3_exit_iter0_state27)) then + ap_enable_reg_pp3_iter1 <= (ap_const_logic_1 xor ap_condition_pp3_exit_iter0_state27); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state26))) then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_3329_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4809 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + i_0_reg_3329 <= select_ln31_1_reg_4818; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + i_0_reg_3329 <= ap_const_lv31_0; + end if; + end if; + end process; + + indvar_flatten_reg_3318_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + indvar_flatten_reg_3318 <= add_ln31_fu_3620_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + indvar_flatten_reg_3318 <= ap_const_lv64_0; + end if; + end if; + end process; + + j_0_reg_3340_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + j_0_reg_3340 <= j_fu_3816_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + j_0_reg_3340 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_ln27_reg_3296_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_3296 <= add_ln27_fu_3426_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_3296 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_3307_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_3307 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_3307 <= add_ln28_fu_3519_p2; + end if; + end if; + end process; + + phi_ln42_reg_3351_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state26))) then + phi_ln42_reg_3351 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_fu_4576_p2 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + phi_ln42_reg_3351 <= add_ln42_fu_4582_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4809 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + add_ln38_12_reg_5504 <= add_ln38_12_fu_4248_p2; + add_ln38_21_reg_5509 <= add_ln38_21_fu_4290_p2; + add_ln38_28_reg_5514 <= add_ln38_28_fu_4332_p2; + add_ln38_37_reg_5519 <= add_ln38_37_fu_4374_p2; + add_ln38_3_reg_5489 <= add_ln38_3_fu_4206_p2; + add_ln38_40_reg_5524 <= add_ln38_40_fu_4392_p2; + add_ln38_43_reg_5529 <= add_ln38_43_fu_4410_p2; + add_ln38_4_reg_5494 <= add_ln38_4_fu_4212_p2; + add_ln38_52_reg_5534 <= add_ln38_52_fu_4452_p2; + add_ln38_55_reg_5539 <= add_ln38_55_fu_4470_p2; + add_ln38_59_reg_5544 <= add_ln38_59_fu_4494_p2; + add_ln38_9_reg_5499 <= add_ln38_9_fu_4230_p2; + mul_ln38_1_reg_5479 <= mul_ln38_1_fu_3828_p2; + mul_ln38_2_reg_5484 <= mul_ln38_2_fu_3834_p2; + mul_ln38_reg_5474 <= mul_ln38_fu_3822_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_4593 <= dim; + in3_reg_4609 <= in1(31 downto 2); + in_reg_4604 <= in2(31 downto 2); + out5_reg_4599 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + icmp_ln31_reg_4809 <= icmp_ln31_fu_3615_p2; + icmp_ln31_reg_4809_pp2_iter1_reg <= icmp_ln31_reg_4809; + out_loc_addr_reg_5143_pp2_iter1_reg <= out_loc_addr_reg_5143; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + icmp_ln42_reg_5549 <= icmp_ln42_fu_4576_p2; + icmp_ln42_reg_5549_pp3_iter1_reg <= icmp_ln42_reg_5549; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_4650 <= in1_mem_RDATA; + lshr_ln_reg_4641_pp0_iter1_reg <= lshr_ln_reg_4641; + trunc_ln27_reg_4646_pp0_iter1_reg <= trunc_ln27_reg_4646; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_4736 <= in2_mem_RDATA; + trunc_ln1_reg_4732_pp1_iter1_reg <= trunc_ln1_reg_4732; + trunc_ln28_reg_4727_pp1_iter1_reg <= trunc_ln28_reg_4727; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_4626(29 downto 0) <= empty_7_fu_3411_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_4620(29 downto 0) <= empty_fu_3402_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + lshr_ln_reg_4641 <= phi_ln27_reg_3296(12 downto 6); + trunc_ln27_reg_4646 <= trunc_ln27_fu_3442_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state22)) then + mul_ln31_reg_4804 <= mul_ln31_fu_3609_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + out_loc_addr_reg_5143 <= zext_ln38_fu_3811_p1(12 - 1 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_5549 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + out_loc_load_reg_5563 <= out_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + select_ln31_1_reg_4818 <= select_ln31_1_fu_3645_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + trunc_ln1_reg_4732 <= phi_ln28_reg_3307(11 downto 6); + trunc_ln28_reg_4727 <= trunc_ln28_fu_3525_p1; + end if; + end if; + end process; + out_mem_addr_reg_4620(31 downto 30) <= "00"; + in2_mem_addr_reg_4626(31 downto 30) <= "00"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state26, ap_enable_reg_pp3_iter2, ap_CS_fsm_state34, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_AWREADY, out_mem_BVALID, icmp_ln27_fu_3420_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_3513_p2, ap_enable_reg_pp1_iter0, icmp_ln31_fu_3615_p2, ap_enable_reg_pp2_iter0, icmp_ln42_fu_4576_p2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0_subdone, ap_enable_reg_pp2_iter1, ap_enable_reg_pp2_iter2, ap_block_pp3_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1))) and not(((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1))) and not(((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + when ap_ST_fsm_pp2_stage0 => + if ((not(((icmp_ln31_fu_3615_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) and not(((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif ((((icmp_ln31_fu_3615_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) or ((ap_enable_reg_pp2_iter2 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state26; + else + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + end if; + when ap_ST_fsm_state26 => + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state26))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + else + ap_NS_fsm <= ap_ST_fsm_state26; + end if; + when ap_ST_fsm_pp3_stage0 => + if ((not(((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_4576_p2 = ap_const_lv1_1) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))) and not(((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + elsif ((((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_4576_p2 = ap_const_lv1_1) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) or ((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state30; + else + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + end if; + when ap_ST_fsm_state30 => + ap_NS_fsm <= ap_ST_fsm_state31; + when ap_ST_fsm_state31 => + ap_NS_fsm <= ap_ST_fsm_state32; + when ap_ST_fsm_state32 => + ap_NS_fsm <= ap_ST_fsm_state33; + when ap_ST_fsm_state33 => + ap_NS_fsm <= ap_ST_fsm_state34; + when ap_ST_fsm_state34 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state34; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_3426_p2 <= std_logic_vector(unsigned(phi_ln27_reg_3296) + unsigned(ap_const_lv13_1)); + add_ln28_fu_3519_p2 <= std_logic_vector(unsigned(phi_ln28_reg_3307) + unsigned(ap_const_lv13_1)); + add_ln31_fu_3620_p2 <= std_logic_vector(unsigned(indvar_flatten_reg_3318) + unsigned(ap_const_lv64_1)); + add_ln38_10_fu_4236_p2 <= std_logic_vector(unsigned(mul_ln38_12_fu_3894_p2) + unsigned(mul_ln38_11_fu_3888_p2)); + add_ln38_11_fu_4242_p2 <= std_logic_vector(unsigned(mul_ln38_14_fu_3906_p2) + unsigned(mul_ln38_13_fu_3900_p2)); + add_ln38_12_fu_4248_p2 <= std_logic_vector(unsigned(add_ln38_10_fu_4236_p2) + unsigned(add_ln38_11_fu_4242_p2)); + add_ln38_13_fu_4525_p2 <= std_logic_vector(unsigned(add_ln38_9_reg_5499) + unsigned(add_ln38_12_reg_5504)); + add_ln38_14_fu_4529_p2 <= std_logic_vector(unsigned(add_ln38_6_fu_4519_p2) + unsigned(add_ln38_13_fu_4525_p2)); + add_ln38_15_fu_4254_p2 <= std_logic_vector(unsigned(mul_ln38_16_fu_3918_p2) + unsigned(mul_ln38_15_fu_3912_p2)); + add_ln38_16_fu_4260_p2 <= std_logic_vector(unsigned(mul_ln38_18_fu_3930_p2) + unsigned(mul_ln38_17_fu_3924_p2)); + add_ln38_17_fu_4266_p2 <= std_logic_vector(unsigned(add_ln38_15_fu_4254_p2) + unsigned(add_ln38_16_fu_4260_p2)); + add_ln38_18_fu_4272_p2 <= std_logic_vector(unsigned(mul_ln38_20_fu_3942_p2) + unsigned(mul_ln38_19_fu_3936_p2)); + add_ln38_19_fu_4278_p2 <= std_logic_vector(unsigned(mul_ln38_22_fu_3954_p2) + unsigned(mul_ln38_21_fu_3948_p2)); + add_ln38_1_fu_4505_p2 <= std_logic_vector(unsigned(mul_ln38_2_reg_5484) + unsigned(mul_ln38_1_reg_5479)); + add_ln38_20_fu_4284_p2 <= std_logic_vector(unsigned(add_ln38_18_fu_4272_p2) + unsigned(add_ln38_19_fu_4278_p2)); + add_ln38_21_fu_4290_p2 <= std_logic_vector(unsigned(add_ln38_17_fu_4266_p2) + unsigned(add_ln38_20_fu_4284_p2)); + add_ln38_22_fu_4296_p2 <= std_logic_vector(unsigned(mul_ln38_24_fu_3966_p2) + unsigned(mul_ln38_23_fu_3960_p2)); + add_ln38_23_fu_4302_p2 <= std_logic_vector(unsigned(mul_ln38_26_fu_3978_p2) + unsigned(mul_ln38_25_fu_3972_p2)); + add_ln38_24_fu_4308_p2 <= std_logic_vector(unsigned(add_ln38_22_fu_4296_p2) + unsigned(add_ln38_23_fu_4302_p2)); + add_ln38_25_fu_4314_p2 <= std_logic_vector(unsigned(mul_ln38_28_fu_3990_p2) + unsigned(mul_ln38_27_fu_3984_p2)); + add_ln38_26_fu_4320_p2 <= std_logic_vector(unsigned(mul_ln38_30_fu_4002_p2) + unsigned(mul_ln38_29_fu_3996_p2)); + add_ln38_27_fu_4326_p2 <= std_logic_vector(unsigned(add_ln38_25_fu_4314_p2) + unsigned(add_ln38_26_fu_4320_p2)); + add_ln38_28_fu_4332_p2 <= std_logic_vector(unsigned(add_ln38_24_fu_4308_p2) + unsigned(add_ln38_27_fu_4326_p2)); + add_ln38_29_fu_4535_p2 <= std_logic_vector(unsigned(add_ln38_21_reg_5509) + unsigned(add_ln38_28_reg_5514)); + add_ln38_2_fu_4509_p2 <= std_logic_vector(unsigned(add_ln38_fu_4500_p2) + unsigned(add_ln38_1_fu_4505_p2)); + add_ln38_30_fu_4539_p2 <= std_logic_vector(unsigned(add_ln38_14_fu_4529_p2) + unsigned(add_ln38_29_fu_4535_p2)); + add_ln38_31_fu_4338_p2 <= std_logic_vector(unsigned(mul_ln38_32_fu_4014_p2) + unsigned(mul_ln38_31_fu_4008_p2)); + add_ln38_32_fu_4344_p2 <= std_logic_vector(unsigned(mul_ln38_34_fu_4026_p2) + unsigned(mul_ln38_33_fu_4020_p2)); + add_ln38_33_fu_4350_p2 <= std_logic_vector(unsigned(add_ln38_31_fu_4338_p2) + unsigned(add_ln38_32_fu_4344_p2)); + add_ln38_34_fu_4356_p2 <= std_logic_vector(unsigned(mul_ln38_36_fu_4038_p2) + unsigned(mul_ln38_35_fu_4032_p2)); + add_ln38_35_fu_4362_p2 <= std_logic_vector(unsigned(mul_ln38_38_fu_4050_p2) + unsigned(mul_ln38_37_fu_4044_p2)); + add_ln38_36_fu_4368_p2 <= std_logic_vector(unsigned(add_ln38_34_fu_4356_p2) + unsigned(add_ln38_35_fu_4362_p2)); + add_ln38_37_fu_4374_p2 <= std_logic_vector(unsigned(add_ln38_33_fu_4350_p2) + unsigned(add_ln38_36_fu_4368_p2)); + add_ln38_38_fu_4380_p2 <= std_logic_vector(unsigned(mul_ln38_40_fu_4062_p2) + unsigned(mul_ln38_39_fu_4056_p2)); + add_ln38_39_fu_4386_p2 <= std_logic_vector(unsigned(mul_ln38_42_fu_4074_p2) + unsigned(mul_ln38_41_fu_4068_p2)); + add_ln38_3_fu_4206_p2 <= std_logic_vector(unsigned(mul_ln38_4_fu_3846_p2) + unsigned(mul_ln38_3_fu_3840_p2)); + add_ln38_40_fu_4392_p2 <= std_logic_vector(unsigned(add_ln38_38_fu_4380_p2) + unsigned(add_ln38_39_fu_4386_p2)); + add_ln38_41_fu_4398_p2 <= std_logic_vector(unsigned(mul_ln38_44_fu_4086_p2) + unsigned(mul_ln38_43_fu_4080_p2)); + add_ln38_42_fu_4404_p2 <= std_logic_vector(unsigned(mul_ln38_46_fu_4098_p2) + unsigned(mul_ln38_45_fu_4092_p2)); + add_ln38_43_fu_4410_p2 <= std_logic_vector(unsigned(add_ln38_41_fu_4398_p2) + unsigned(add_ln38_42_fu_4404_p2)); + add_ln38_44_fu_4545_p2 <= std_logic_vector(unsigned(add_ln38_40_reg_5524) + unsigned(add_ln38_43_reg_5529)); + add_ln38_45_fu_4549_p2 <= std_logic_vector(unsigned(add_ln38_37_reg_5519) + unsigned(add_ln38_44_fu_4545_p2)); + add_ln38_46_fu_4416_p2 <= std_logic_vector(unsigned(mul_ln38_48_fu_4110_p2) + unsigned(mul_ln38_47_fu_4104_p2)); + add_ln38_47_fu_4422_p2 <= std_logic_vector(unsigned(mul_ln38_50_fu_4122_p2) + unsigned(mul_ln38_49_fu_4116_p2)); + add_ln38_48_fu_4428_p2 <= std_logic_vector(unsigned(add_ln38_46_fu_4416_p2) + unsigned(add_ln38_47_fu_4422_p2)); + add_ln38_49_fu_4434_p2 <= std_logic_vector(unsigned(mul_ln38_52_fu_4134_p2) + unsigned(mul_ln38_51_fu_4128_p2)); + add_ln38_4_fu_4212_p2 <= std_logic_vector(unsigned(mul_ln38_6_fu_3858_p2) + unsigned(mul_ln38_5_fu_3852_p2)); + add_ln38_50_fu_4440_p2 <= std_logic_vector(unsigned(mul_ln38_54_fu_4146_p2) + unsigned(mul_ln38_53_fu_4140_p2)); + add_ln38_51_fu_4446_p2 <= std_logic_vector(unsigned(add_ln38_49_fu_4434_p2) + unsigned(add_ln38_50_fu_4440_p2)); + add_ln38_52_fu_4452_p2 <= std_logic_vector(unsigned(add_ln38_48_fu_4428_p2) + unsigned(add_ln38_51_fu_4446_p2)); + add_ln38_53_fu_4458_p2 <= std_logic_vector(unsigned(mul_ln38_56_fu_4158_p2) + unsigned(mul_ln38_55_fu_4152_p2)); + add_ln38_54_fu_4464_p2 <= std_logic_vector(unsigned(mul_ln38_58_fu_4170_p2) + unsigned(mul_ln38_57_fu_4164_p2)); + add_ln38_55_fu_4470_p2 <= std_logic_vector(unsigned(add_ln38_53_fu_4458_p2) + unsigned(add_ln38_54_fu_4464_p2)); + add_ln38_56_fu_4476_p2 <= std_logic_vector(unsigned(mul_ln38_60_fu_4182_p2) + unsigned(mul_ln38_59_fu_4176_p2)); + add_ln38_57_fu_4482_p2 <= std_logic_vector(unsigned(mul_ln38_63_fu_4200_p2) + unsigned(mul_ln38_62_fu_4194_p2)); + add_ln38_58_fu_4488_p2 <= std_logic_vector(unsigned(mul_ln38_61_fu_4188_p2) + unsigned(add_ln38_57_fu_4482_p2)); + add_ln38_59_fu_4494_p2 <= std_logic_vector(unsigned(add_ln38_56_fu_4476_p2) + unsigned(add_ln38_58_fu_4488_p2)); + add_ln38_5_fu_4515_p2 <= std_logic_vector(unsigned(add_ln38_3_reg_5489) + unsigned(add_ln38_4_reg_5494)); + add_ln38_60_fu_4554_p2 <= std_logic_vector(unsigned(add_ln38_55_reg_5539) + unsigned(add_ln38_59_reg_5544)); + add_ln38_61_fu_4558_p2 <= std_logic_vector(unsigned(add_ln38_52_reg_5534) + unsigned(add_ln38_60_fu_4554_p2)); + add_ln38_62_fu_4563_p2 <= std_logic_vector(unsigned(add_ln38_45_fu_4549_p2) + unsigned(add_ln38_61_fu_4558_p2)); + add_ln38_64_fu_3805_p2 <= std_logic_vector(unsigned(tmp_cast_fu_3657_p3) + unsigned(trunc_ln38_1_fu_3801_p1)); + add_ln38_6_fu_4519_p2 <= std_logic_vector(unsigned(add_ln38_2_fu_4509_p2) + unsigned(add_ln38_5_fu_4515_p2)); + add_ln38_7_fu_4218_p2 <= std_logic_vector(unsigned(mul_ln38_8_fu_3870_p2) + unsigned(mul_ln38_7_fu_3864_p2)); + add_ln38_8_fu_4224_p2 <= std_logic_vector(unsigned(mul_ln38_10_fu_3882_p2) + unsigned(mul_ln38_9_fu_3876_p2)); + add_ln38_9_fu_4230_p2 <= std_logic_vector(unsigned(add_ln38_7_fu_4218_p2) + unsigned(add_ln38_8_fu_4224_p2)); + add_ln38_fu_4500_p2 <= std_logic_vector(unsigned(mul_ln38_reg_5474) + unsigned(out_loc_q0)); + add_ln42_fu_4582_p2 <= std_logic_vector(unsigned(phi_ln42_reg_3351) + unsigned(ap_const_lv13_1)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp2_stage0 <= ap_CS_fsm(18); + ap_CS_fsm_pp3_stage0 <= ap_CS_fsm(20); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state26 <= ap_CS_fsm(19); + ap_CS_fsm_state34 <= ap_CS_fsm(25); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp2_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp3_stage0_11001_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state29_io) + begin + ap_block_pp3_stage0_11001 <= ((ap_const_boolean_1 = ap_block_state29_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_pp3_stage0_subdone_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state29_io) + begin + ap_block_pp3_stage0_subdone <= ((ap_const_boolean_1 = ap_block_state29_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= (in1_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= (in2_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state23_pp2_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state24_pp2_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state25_pp2_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state27_pp3_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state28_pp3_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state29_io_assign_proc : process(icmp_ln42_reg_5549_pp3_iter1_reg, out_mem_WREADY) + begin + ap_block_state29_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_5549_pp3_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state29_pp3_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_3420_p2) + begin + if ((icmp_ln27_fu_3420_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_3513_p2) + begin + if ((icmp_ln28_fu_3513_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp2_exit_iter0_state23_assign_proc : process(icmp_ln31_fu_3615_p2) + begin + if ((icmp_ln31_fu_3615_p2 = ap_const_lv1_1)) then + ap_condition_pp2_exit_iter0_state23 <= ap_const_logic_1; + else + ap_condition_pp2_exit_iter0_state23 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp3_exit_iter0_state27_assign_proc : process(icmp_ln42_fu_4576_p2) + begin + if ((icmp_ln42_fu_4576_p2 = ap_const_lv1_1)) then + ap_condition_pp3_exit_iter0_state27 <= ap_const_logic_1; + else + ap_condition_pp3_exit_iter0_state27 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state34, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp2 <= (ap_idle_pp2 xor ap_const_logic_1); + ap_enable_pp3 <= (ap_idle_pp3 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter2 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp2_assign_proc : process(ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1, ap_enable_reg_pp2_iter2) + begin + if (((ap_enable_reg_pp2_iter0 = ap_const_logic_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0))) then + ap_idle_pp2 <= ap_const_logic_1; + else + ap_idle_pp2 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp3_assign_proc : process(ap_enable_reg_pp3_iter2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1) + begin + if (((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_0))) then + ap_idle_pp3 <= ap_const_logic_1; + else + ap_idle_pp3 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_i_0_phi_fu_3333_p4_assign_proc : process(i_0_reg_3329, icmp_ln31_reg_4809, ap_CS_fsm_pp2_stage0, select_ln31_1_reg_4818, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0) + begin + if (((icmp_ln31_reg_4809 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + ap_phi_mux_i_0_phi_fu_3333_p4 <= select_ln31_1_reg_4818; + else + ap_phi_mux_i_0_phi_fu_3333_p4 <= i_0_reg_3329; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state34, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_7_fu_3411_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_4604),64)); + empty_8_fu_3392_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_4609),64)); + empty_fu_3402_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_4599),64)); + i_fu_3626_p2 <= std_logic_vector(unsigned(ap_const_lv31_1) + unsigned(ap_phi_mux_i_0_phi_fu_3333_p4)); + icmp_ln27_fu_3420_p2 <= "1" when (phi_ln27_reg_3296 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_3513_p2 <= "1" when (phi_ln28_reg_3307 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_3615_p2 <= "1" when (indvar_flatten_reg_3318 = mul_ln31_reg_4804) else "0"; + icmp_ln33_fu_3632_p2 <= "1" when (j_0_reg_3340 = dim_read_reg_4593) else "0"; + icmp_ln42_fu_4576_p2 <= "1" when (phi_ln42_reg_3351 = ap_const_lv13_1000) else "0"; + + in1_loc_0_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_0_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_0_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_0_ce0 <= ap_const_logic_1; + else + in1_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_0_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_we0 <= ap_const_logic_1; + else + in1_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_10_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_10_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_10_ce0 <= ap_const_logic_1; + else + in1_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_we0 <= ap_const_logic_1; + else + in1_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_11_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_11_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_11_ce0 <= ap_const_logic_1; + else + in1_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_we0 <= ap_const_logic_1; + else + in1_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_12_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_12_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_12_ce0 <= ap_const_logic_1; + else + in1_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_we0 <= ap_const_logic_1; + else + in1_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_13_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_13_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_13_ce0 <= ap_const_logic_1; + else + in1_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_we0 <= ap_const_logic_1; + else + in1_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_14_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_14_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_14_ce0 <= ap_const_logic_1; + else + in1_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_we0 <= ap_const_logic_1; + else + in1_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_15_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_15_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_15_ce0 <= ap_const_logic_1; + else + in1_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_we0 <= ap_const_logic_1; + else + in1_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_16_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_16_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_16_ce0 <= ap_const_logic_1; + else + in1_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_we0 <= ap_const_logic_1; + else + in1_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_17_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_17_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_17_ce0 <= ap_const_logic_1; + else + in1_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_we0 <= ap_const_logic_1; + else + in1_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_18_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_18_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_18_ce0 <= ap_const_logic_1; + else + in1_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_we0 <= ap_const_logic_1; + else + in1_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_19_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_19_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_19_ce0 <= ap_const_logic_1; + else + in1_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_we0 <= ap_const_logic_1; + else + in1_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_1_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_1_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_1_ce0 <= ap_const_logic_1; + else + in1_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_we0 <= ap_const_logic_1; + else + in1_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_20_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_20_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_20_ce0 <= ap_const_logic_1; + else + in1_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_we0 <= ap_const_logic_1; + else + in1_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_21_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_21_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_21_ce0 <= ap_const_logic_1; + else + in1_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_we0 <= ap_const_logic_1; + else + in1_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_22_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_22_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_22_ce0 <= ap_const_logic_1; + else + in1_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_we0 <= ap_const_logic_1; + else + in1_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_23_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_23_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_23_ce0 <= ap_const_logic_1; + else + in1_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_we0 <= ap_const_logic_1; + else + in1_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_24_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_24_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_24_ce0 <= ap_const_logic_1; + else + in1_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_we0 <= ap_const_logic_1; + else + in1_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_25_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_25_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_25_ce0 <= ap_const_logic_1; + else + in1_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_we0 <= ap_const_logic_1; + else + in1_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_26_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_26_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_26_ce0 <= ap_const_logic_1; + else + in1_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_we0 <= ap_const_logic_1; + else + in1_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_27_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_27_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_27_ce0 <= ap_const_logic_1; + else + in1_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_we0 <= ap_const_logic_1; + else + in1_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_28_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_28_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_28_ce0 <= ap_const_logic_1; + else + in1_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_we0 <= ap_const_logic_1; + else + in1_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_29_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_29_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_29_ce0 <= ap_const_logic_1; + else + in1_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_we0 <= ap_const_logic_1; + else + in1_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_2_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_2_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_2_ce0 <= ap_const_logic_1; + else + in1_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_we0 <= ap_const_logic_1; + else + in1_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_30_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_30_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_30_ce0 <= ap_const_logic_1; + else + in1_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_we0 <= ap_const_logic_1; + else + in1_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_31_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_31_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_31_ce0 <= ap_const_logic_1; + else + in1_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_we0 <= ap_const_logic_1; + else + in1_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_32_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_32_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_32_ce0 <= ap_const_logic_1; + else + in1_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_we0 <= ap_const_logic_1; + else + in1_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_33_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_33_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_33_ce0 <= ap_const_logic_1; + else + in1_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_we0 <= ap_const_logic_1; + else + in1_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_34_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_34_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_34_ce0 <= ap_const_logic_1; + else + in1_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_we0 <= ap_const_logic_1; + else + in1_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_35_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_35_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_35_ce0 <= ap_const_logic_1; + else + in1_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_we0 <= ap_const_logic_1; + else + in1_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_36_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_36_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_36_ce0 <= ap_const_logic_1; + else + in1_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_we0 <= ap_const_logic_1; + else + in1_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_37_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_37_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_37_ce0 <= ap_const_logic_1; + else + in1_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_we0 <= ap_const_logic_1; + else + in1_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_38_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_38_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_38_ce0 <= ap_const_logic_1; + else + in1_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_we0 <= ap_const_logic_1; + else + in1_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_39_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_39_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_39_ce0 <= ap_const_logic_1; + else + in1_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_we0 <= ap_const_logic_1; + else + in1_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_3_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_3_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_3_ce0 <= ap_const_logic_1; + else + in1_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_we0 <= ap_const_logic_1; + else + in1_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_40_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_40_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_40_ce0 <= ap_const_logic_1; + else + in1_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_we0 <= ap_const_logic_1; + else + in1_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_41_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_41_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_41_ce0 <= ap_const_logic_1; + else + in1_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_we0 <= ap_const_logic_1; + else + in1_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_42_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_42_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_42_ce0 <= ap_const_logic_1; + else + in1_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_we0 <= ap_const_logic_1; + else + in1_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_43_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_43_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_43_ce0 <= ap_const_logic_1; + else + in1_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_we0 <= ap_const_logic_1; + else + in1_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_44_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_44_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_44_ce0 <= ap_const_logic_1; + else + in1_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_we0 <= ap_const_logic_1; + else + in1_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_45_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_45_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_45_ce0 <= ap_const_logic_1; + else + in1_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_we0 <= ap_const_logic_1; + else + in1_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_46_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_46_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_46_ce0 <= ap_const_logic_1; + else + in1_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_we0 <= ap_const_logic_1; + else + in1_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_47_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_47_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_47_ce0 <= ap_const_logic_1; + else + in1_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_we0 <= ap_const_logic_1; + else + in1_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_48_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_48_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_48_ce0 <= ap_const_logic_1; + else + in1_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_we0 <= ap_const_logic_1; + else + in1_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_49_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_49_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_49_ce0 <= ap_const_logic_1; + else + in1_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_we0 <= ap_const_logic_1; + else + in1_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_4_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_4_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_4_ce0 <= ap_const_logic_1; + else + in1_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_we0 <= ap_const_logic_1; + else + in1_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_50_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_50_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_50_ce0 <= ap_const_logic_1; + else + in1_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_we0 <= ap_const_logic_1; + else + in1_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_51_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_51_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_51_ce0 <= ap_const_logic_1; + else + in1_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_we0 <= ap_const_logic_1; + else + in1_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_52_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_52_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_52_ce0 <= ap_const_logic_1; + else + in1_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_we0 <= ap_const_logic_1; + else + in1_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_53_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_53_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_53_ce0 <= ap_const_logic_1; + else + in1_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_we0 <= ap_const_logic_1; + else + in1_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_54_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_54_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_54_ce0 <= ap_const_logic_1; + else + in1_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_we0 <= ap_const_logic_1; + else + in1_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_55_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_55_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_55_ce0 <= ap_const_logic_1; + else + in1_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_we0 <= ap_const_logic_1; + else + in1_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_56_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_56_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_56_ce0 <= ap_const_logic_1; + else + in1_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_we0 <= ap_const_logic_1; + else + in1_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_57_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_57_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_57_ce0 <= ap_const_logic_1; + else + in1_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_we0 <= ap_const_logic_1; + else + in1_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_58_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_58_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_58_ce0 <= ap_const_logic_1; + else + in1_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_we0 <= ap_const_logic_1; + else + in1_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_59_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_59_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_59_ce0 <= ap_const_logic_1; + else + in1_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_we0 <= ap_const_logic_1; + else + in1_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_5_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_5_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_5_ce0 <= ap_const_logic_1; + else + in1_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_we0 <= ap_const_logic_1; + else + in1_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_60_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_60_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_60_ce0 <= ap_const_logic_1; + else + in1_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_we0 <= ap_const_logic_1; + else + in1_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_61_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_61_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_61_ce0 <= ap_const_logic_1; + else + in1_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_we0 <= ap_const_logic_1; + else + in1_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_62_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_62_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_62_ce0 <= ap_const_logic_1; + else + in1_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_we0 <= ap_const_logic_1; + else + in1_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_63_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_63_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_63_ce0 <= ap_const_logic_1; + else + in1_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_we0 <= ap_const_logic_1; + else + in1_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_6_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_6_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_6_ce0 <= ap_const_logic_1; + else + in1_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_we0 <= ap_const_logic_1; + else + in1_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_7_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_7_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_7_ce0 <= ap_const_logic_1; + else + in1_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_we0 <= ap_const_logic_1; + else + in1_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_8_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_8_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_8_ce0 <= ap_const_logic_1; + else + in1_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_we0 <= ap_const_logic_1; + else + in1_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1, zext_ln31_1_fu_3665_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_9_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_9_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_9_ce0 <= ap_const_logic_1; + else + in1_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4646_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4646_pp0_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_we0 <= ap_const_logic_1; + else + in1_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_8_fu_3392_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_0_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_0_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_0_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_0_ce0 <= ap_const_logic_1; + else + in2_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_0_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_we0 <= ap_const_logic_1; + else + in2_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_10_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_10_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_10_ce0 <= ap_const_logic_1; + else + in2_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_we0 <= ap_const_logic_1; + else + in2_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_11_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_11_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_11_ce0 <= ap_const_logic_1; + else + in2_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_we0 <= ap_const_logic_1; + else + in2_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_12_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_12_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_12_ce0 <= ap_const_logic_1; + else + in2_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_we0 <= ap_const_logic_1; + else + in2_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_13_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_13_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_13_ce0 <= ap_const_logic_1; + else + in2_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_we0 <= ap_const_logic_1; + else + in2_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_14_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_14_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_14_ce0 <= ap_const_logic_1; + else + in2_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_we0 <= ap_const_logic_1; + else + in2_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_15_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_15_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_15_ce0 <= ap_const_logic_1; + else + in2_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_we0 <= ap_const_logic_1; + else + in2_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_16_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_16_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_16_ce0 <= ap_const_logic_1; + else + in2_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_we0 <= ap_const_logic_1; + else + in2_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_17_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_17_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_17_ce0 <= ap_const_logic_1; + else + in2_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_we0 <= ap_const_logic_1; + else + in2_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_18_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_18_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_18_ce0 <= ap_const_logic_1; + else + in2_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_we0 <= ap_const_logic_1; + else + in2_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_19_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_19_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_19_ce0 <= ap_const_logic_1; + else + in2_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_we0 <= ap_const_logic_1; + else + in2_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_1_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_1_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_1_ce0 <= ap_const_logic_1; + else + in2_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_we0 <= ap_const_logic_1; + else + in2_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_20_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_20_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_20_ce0 <= ap_const_logic_1; + else + in2_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_we0 <= ap_const_logic_1; + else + in2_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_21_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_21_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_21_ce0 <= ap_const_logic_1; + else + in2_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_we0 <= ap_const_logic_1; + else + in2_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_22_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_22_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_22_ce0 <= ap_const_logic_1; + else + in2_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_we0 <= ap_const_logic_1; + else + in2_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_23_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_23_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_23_ce0 <= ap_const_logic_1; + else + in2_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_we0 <= ap_const_logic_1; + else + in2_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_24_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_24_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_24_ce0 <= ap_const_logic_1; + else + in2_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_we0 <= ap_const_logic_1; + else + in2_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_25_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_25_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_25_ce0 <= ap_const_logic_1; + else + in2_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_we0 <= ap_const_logic_1; + else + in2_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_26_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_26_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_26_ce0 <= ap_const_logic_1; + else + in2_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_we0 <= ap_const_logic_1; + else + in2_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_27_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_27_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_27_ce0 <= ap_const_logic_1; + else + in2_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_we0 <= ap_const_logic_1; + else + in2_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_28_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_28_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_28_ce0 <= ap_const_logic_1; + else + in2_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_we0 <= ap_const_logic_1; + else + in2_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_29_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_29_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_29_ce0 <= ap_const_logic_1; + else + in2_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_we0 <= ap_const_logic_1; + else + in2_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_2_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_2_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_2_ce0 <= ap_const_logic_1; + else + in2_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_we0 <= ap_const_logic_1; + else + in2_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_30_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_30_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_30_ce0 <= ap_const_logic_1; + else + in2_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_we0 <= ap_const_logic_1; + else + in2_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_31_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_31_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_31_ce0 <= ap_const_logic_1; + else + in2_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_we0 <= ap_const_logic_1; + else + in2_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_32_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_32_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_32_ce0 <= ap_const_logic_1; + else + in2_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_we0 <= ap_const_logic_1; + else + in2_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_33_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_33_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_33_ce0 <= ap_const_logic_1; + else + in2_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_we0 <= ap_const_logic_1; + else + in2_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_34_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_34_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_34_ce0 <= ap_const_logic_1; + else + in2_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_we0 <= ap_const_logic_1; + else + in2_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_35_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_35_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_35_ce0 <= ap_const_logic_1; + else + in2_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_we0 <= ap_const_logic_1; + else + in2_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_36_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_36_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_36_ce0 <= ap_const_logic_1; + else + in2_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_we0 <= ap_const_logic_1; + else + in2_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_37_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_37_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_37_ce0 <= ap_const_logic_1; + else + in2_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_we0 <= ap_const_logic_1; + else + in2_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_38_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_38_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_38_ce0 <= ap_const_logic_1; + else + in2_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_we0 <= ap_const_logic_1; + else + in2_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_39_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_39_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_39_ce0 <= ap_const_logic_1; + else + in2_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_we0 <= ap_const_logic_1; + else + in2_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_3_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_3_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_3_ce0 <= ap_const_logic_1; + else + in2_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_we0 <= ap_const_logic_1; + else + in2_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_40_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_40_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_40_ce0 <= ap_const_logic_1; + else + in2_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_we0 <= ap_const_logic_1; + else + in2_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_41_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_41_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_41_ce0 <= ap_const_logic_1; + else + in2_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_we0 <= ap_const_logic_1; + else + in2_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_42_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_42_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_42_ce0 <= ap_const_logic_1; + else + in2_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_we0 <= ap_const_logic_1; + else + in2_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_43_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_43_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_43_ce0 <= ap_const_logic_1; + else + in2_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_we0 <= ap_const_logic_1; + else + in2_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_44_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_44_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_44_ce0 <= ap_const_logic_1; + else + in2_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_we0 <= ap_const_logic_1; + else + in2_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_45_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_45_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_45_ce0 <= ap_const_logic_1; + else + in2_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_we0 <= ap_const_logic_1; + else + in2_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_46_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_46_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_46_ce0 <= ap_const_logic_1; + else + in2_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_we0 <= ap_const_logic_1; + else + in2_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_47_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_47_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_47_ce0 <= ap_const_logic_1; + else + in2_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_we0 <= ap_const_logic_1; + else + in2_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_48_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_48_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_48_ce0 <= ap_const_logic_1; + else + in2_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_we0 <= ap_const_logic_1; + else + in2_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_49_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_49_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_49_ce0 <= ap_const_logic_1; + else + in2_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_we0 <= ap_const_logic_1; + else + in2_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_4_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_4_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_4_ce0 <= ap_const_logic_1; + else + in2_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_we0 <= ap_const_logic_1; + else + in2_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_50_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_50_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_50_ce0 <= ap_const_logic_1; + else + in2_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_we0 <= ap_const_logic_1; + else + in2_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_51_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_51_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_51_ce0 <= ap_const_logic_1; + else + in2_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_we0 <= ap_const_logic_1; + else + in2_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_52_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_52_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_52_ce0 <= ap_const_logic_1; + else + in2_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_we0 <= ap_const_logic_1; + else + in2_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_53_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_53_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_53_ce0 <= ap_const_logic_1; + else + in2_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_we0 <= ap_const_logic_1; + else + in2_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_54_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_54_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_54_ce0 <= ap_const_logic_1; + else + in2_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_we0 <= ap_const_logic_1; + else + in2_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_55_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_55_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_55_ce0 <= ap_const_logic_1; + else + in2_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_we0 <= ap_const_logic_1; + else + in2_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_56_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_56_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_56_ce0 <= ap_const_logic_1; + else + in2_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_we0 <= ap_const_logic_1; + else + in2_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_57_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_57_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_57_ce0 <= ap_const_logic_1; + else + in2_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_we0 <= ap_const_logic_1; + else + in2_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_58_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_58_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_58_ce0 <= ap_const_logic_1; + else + in2_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_we0 <= ap_const_logic_1; + else + in2_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_59_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_59_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_59_ce0 <= ap_const_logic_1; + else + in2_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_we0 <= ap_const_logic_1; + else + in2_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_5_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_5_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_5_ce0 <= ap_const_logic_1; + else + in2_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_we0 <= ap_const_logic_1; + else + in2_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_60_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_60_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_60_ce0 <= ap_const_logic_1; + else + in2_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_we0 <= ap_const_logic_1; + else + in2_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_61_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_61_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_61_ce0 <= ap_const_logic_1; + else + in2_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_we0 <= ap_const_logic_1; + else + in2_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_62_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_62_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_62_ce0 <= ap_const_logic_1; + else + in2_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_we0 <= ap_const_logic_1; + else + in2_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_63_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_63_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_63_ce0 <= ap_const_logic_1; + else + in2_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_we0 <= ap_const_logic_1; + else + in2_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_6_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_6_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_6_ce0 <= ap_const_logic_1; + else + in2_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_we0 <= ap_const_logic_1; + else + in2_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_7_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_7_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_7_ce0 <= ap_const_logic_1; + else + in2_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_we0 <= ap_const_logic_1; + else + in2_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_8_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_8_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_8_ce0 <= ap_const_logic_1; + else + in2_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_we0 <= ap_const_logic_1; + else + in2_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1, sext_ln38_fu_3733_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_9_address0 <= sext_ln38_fu_3733_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_9_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_9_ce0 <= ap_const_logic_1; + else + in2_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4732_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4732_pp1_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_we0 <= ap_const_logic_1; + else + in2_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_3816_p2 <= std_logic_vector(unsigned(ap_const_lv32_1) + unsigned(select_ln31_fu_3637_p3)); + mul_ln31_fu_3609_p0 <= zext_ln31_fu_3606_p1(32 - 1 downto 0); + mul_ln31_fu_3609_p1 <= zext_ln31_fu_3606_p1(32 - 1 downto 0); + mul_ln31_fu_3609_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(mul_ln31_fu_3609_p0) * unsigned(mul_ln31_fu_3609_p1), 64)); + mul_ln38_10_fu_3882_p0 <= in2_loc_10_q0; + mul_ln38_10_fu_3882_p1 <= in1_loc_10_q0; + mul_ln38_10_fu_3882_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_10_fu_3882_p0) * signed(mul_ln38_10_fu_3882_p1))), 32)); + mul_ln38_11_fu_3888_p0 <= in2_loc_11_q0; + mul_ln38_11_fu_3888_p1 <= in1_loc_11_q0; + mul_ln38_11_fu_3888_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_11_fu_3888_p0) * signed(mul_ln38_11_fu_3888_p1))), 32)); + mul_ln38_12_fu_3894_p0 <= in2_loc_12_q0; + mul_ln38_12_fu_3894_p1 <= in1_loc_12_q0; + mul_ln38_12_fu_3894_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_12_fu_3894_p0) * signed(mul_ln38_12_fu_3894_p1))), 32)); + mul_ln38_13_fu_3900_p0 <= in2_loc_13_q0; + mul_ln38_13_fu_3900_p1 <= in1_loc_13_q0; + mul_ln38_13_fu_3900_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_13_fu_3900_p0) * signed(mul_ln38_13_fu_3900_p1))), 32)); + mul_ln38_14_fu_3906_p0 <= in2_loc_14_q0; + mul_ln38_14_fu_3906_p1 <= in1_loc_14_q0; + mul_ln38_14_fu_3906_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_14_fu_3906_p0) * signed(mul_ln38_14_fu_3906_p1))), 32)); + mul_ln38_15_fu_3912_p0 <= in2_loc_15_q0; + mul_ln38_15_fu_3912_p1 <= in1_loc_15_q0; + mul_ln38_15_fu_3912_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_15_fu_3912_p0) * signed(mul_ln38_15_fu_3912_p1))), 32)); + mul_ln38_16_fu_3918_p0 <= in2_loc_16_q0; + mul_ln38_16_fu_3918_p1 <= in1_loc_16_q0; + mul_ln38_16_fu_3918_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_16_fu_3918_p0) * signed(mul_ln38_16_fu_3918_p1))), 32)); + mul_ln38_17_fu_3924_p0 <= in2_loc_17_q0; + mul_ln38_17_fu_3924_p1 <= in1_loc_17_q0; + mul_ln38_17_fu_3924_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_17_fu_3924_p0) * signed(mul_ln38_17_fu_3924_p1))), 32)); + mul_ln38_18_fu_3930_p0 <= in2_loc_18_q0; + mul_ln38_18_fu_3930_p1 <= in1_loc_18_q0; + mul_ln38_18_fu_3930_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_18_fu_3930_p0) * signed(mul_ln38_18_fu_3930_p1))), 32)); + mul_ln38_19_fu_3936_p0 <= in2_loc_19_q0; + mul_ln38_19_fu_3936_p1 <= in1_loc_19_q0; + mul_ln38_19_fu_3936_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_19_fu_3936_p0) * signed(mul_ln38_19_fu_3936_p1))), 32)); + mul_ln38_1_fu_3828_p0 <= in2_loc_1_q0; + mul_ln38_1_fu_3828_p1 <= in1_loc_1_q0; + mul_ln38_1_fu_3828_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_1_fu_3828_p0) * signed(mul_ln38_1_fu_3828_p1))), 32)); + mul_ln38_20_fu_3942_p0 <= in2_loc_20_q0; + mul_ln38_20_fu_3942_p1 <= in1_loc_20_q0; + mul_ln38_20_fu_3942_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_20_fu_3942_p0) * signed(mul_ln38_20_fu_3942_p1))), 32)); + mul_ln38_21_fu_3948_p0 <= in2_loc_21_q0; + mul_ln38_21_fu_3948_p1 <= in1_loc_21_q0; + mul_ln38_21_fu_3948_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_21_fu_3948_p0) * signed(mul_ln38_21_fu_3948_p1))), 32)); + mul_ln38_22_fu_3954_p0 <= in2_loc_22_q0; + mul_ln38_22_fu_3954_p1 <= in1_loc_22_q0; + mul_ln38_22_fu_3954_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_22_fu_3954_p0) * signed(mul_ln38_22_fu_3954_p1))), 32)); + mul_ln38_23_fu_3960_p0 <= in2_loc_23_q0; + mul_ln38_23_fu_3960_p1 <= in1_loc_23_q0; + mul_ln38_23_fu_3960_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_23_fu_3960_p0) * signed(mul_ln38_23_fu_3960_p1))), 32)); + mul_ln38_24_fu_3966_p0 <= in2_loc_24_q0; + mul_ln38_24_fu_3966_p1 <= in1_loc_24_q0; + mul_ln38_24_fu_3966_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_24_fu_3966_p0) * signed(mul_ln38_24_fu_3966_p1))), 32)); + mul_ln38_25_fu_3972_p0 <= in2_loc_25_q0; + mul_ln38_25_fu_3972_p1 <= in1_loc_25_q0; + mul_ln38_25_fu_3972_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_25_fu_3972_p0) * signed(mul_ln38_25_fu_3972_p1))), 32)); + mul_ln38_26_fu_3978_p0 <= in2_loc_26_q0; + mul_ln38_26_fu_3978_p1 <= in1_loc_26_q0; + mul_ln38_26_fu_3978_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_26_fu_3978_p0) * signed(mul_ln38_26_fu_3978_p1))), 32)); + mul_ln38_27_fu_3984_p0 <= in2_loc_27_q0; + mul_ln38_27_fu_3984_p1 <= in1_loc_27_q0; + mul_ln38_27_fu_3984_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_27_fu_3984_p0) * signed(mul_ln38_27_fu_3984_p1))), 32)); + mul_ln38_28_fu_3990_p0 <= in2_loc_28_q0; + mul_ln38_28_fu_3990_p1 <= in1_loc_28_q0; + mul_ln38_28_fu_3990_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_28_fu_3990_p0) * signed(mul_ln38_28_fu_3990_p1))), 32)); + mul_ln38_29_fu_3996_p0 <= in2_loc_29_q0; + mul_ln38_29_fu_3996_p1 <= in1_loc_29_q0; + mul_ln38_29_fu_3996_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_29_fu_3996_p0) * signed(mul_ln38_29_fu_3996_p1))), 32)); + mul_ln38_2_fu_3834_p0 <= in2_loc_2_q0; + mul_ln38_2_fu_3834_p1 <= in1_loc_2_q0; + mul_ln38_2_fu_3834_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_2_fu_3834_p0) * signed(mul_ln38_2_fu_3834_p1))), 32)); + mul_ln38_30_fu_4002_p0 <= in2_loc_30_q0; + mul_ln38_30_fu_4002_p1 <= in1_loc_30_q0; + mul_ln38_30_fu_4002_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_30_fu_4002_p0) * signed(mul_ln38_30_fu_4002_p1))), 32)); + mul_ln38_31_fu_4008_p0 <= in2_loc_31_q0; + mul_ln38_31_fu_4008_p1 <= in1_loc_31_q0; + mul_ln38_31_fu_4008_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_31_fu_4008_p0) * signed(mul_ln38_31_fu_4008_p1))), 32)); + mul_ln38_32_fu_4014_p0 <= in2_loc_32_q0; + mul_ln38_32_fu_4014_p1 <= in1_loc_32_q0; + mul_ln38_32_fu_4014_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_32_fu_4014_p0) * signed(mul_ln38_32_fu_4014_p1))), 32)); + mul_ln38_33_fu_4020_p0 <= in2_loc_33_q0; + mul_ln38_33_fu_4020_p1 <= in1_loc_33_q0; + mul_ln38_33_fu_4020_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_33_fu_4020_p0) * signed(mul_ln38_33_fu_4020_p1))), 32)); + mul_ln38_34_fu_4026_p0 <= in2_loc_34_q0; + mul_ln38_34_fu_4026_p1 <= in1_loc_34_q0; + mul_ln38_34_fu_4026_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_34_fu_4026_p0) * signed(mul_ln38_34_fu_4026_p1))), 32)); + mul_ln38_35_fu_4032_p0 <= in2_loc_35_q0; + mul_ln38_35_fu_4032_p1 <= in1_loc_35_q0; + mul_ln38_35_fu_4032_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_35_fu_4032_p0) * signed(mul_ln38_35_fu_4032_p1))), 32)); + mul_ln38_36_fu_4038_p0 <= in2_loc_36_q0; + mul_ln38_36_fu_4038_p1 <= in1_loc_36_q0; + mul_ln38_36_fu_4038_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_36_fu_4038_p0) * signed(mul_ln38_36_fu_4038_p1))), 32)); + mul_ln38_37_fu_4044_p0 <= in2_loc_37_q0; + mul_ln38_37_fu_4044_p1 <= in1_loc_37_q0; + mul_ln38_37_fu_4044_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_37_fu_4044_p0) * signed(mul_ln38_37_fu_4044_p1))), 32)); + mul_ln38_38_fu_4050_p0 <= in2_loc_38_q0; + mul_ln38_38_fu_4050_p1 <= in1_loc_38_q0; + mul_ln38_38_fu_4050_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_38_fu_4050_p0) * signed(mul_ln38_38_fu_4050_p1))), 32)); + mul_ln38_39_fu_4056_p0 <= in2_loc_39_q0; + mul_ln38_39_fu_4056_p1 <= in1_loc_39_q0; + mul_ln38_39_fu_4056_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_39_fu_4056_p0) * signed(mul_ln38_39_fu_4056_p1))), 32)); + mul_ln38_3_fu_3840_p0 <= in2_loc_3_q0; + mul_ln38_3_fu_3840_p1 <= in1_loc_3_q0; + mul_ln38_3_fu_3840_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_3_fu_3840_p0) * signed(mul_ln38_3_fu_3840_p1))), 32)); + mul_ln38_40_fu_4062_p0 <= in2_loc_40_q0; + mul_ln38_40_fu_4062_p1 <= in1_loc_40_q0; + mul_ln38_40_fu_4062_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_40_fu_4062_p0) * signed(mul_ln38_40_fu_4062_p1))), 32)); + mul_ln38_41_fu_4068_p0 <= in2_loc_41_q0; + mul_ln38_41_fu_4068_p1 <= in1_loc_41_q0; + mul_ln38_41_fu_4068_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_41_fu_4068_p0) * signed(mul_ln38_41_fu_4068_p1))), 32)); + mul_ln38_42_fu_4074_p0 <= in2_loc_42_q0; + mul_ln38_42_fu_4074_p1 <= in1_loc_42_q0; + mul_ln38_42_fu_4074_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_42_fu_4074_p0) * signed(mul_ln38_42_fu_4074_p1))), 32)); + mul_ln38_43_fu_4080_p0 <= in2_loc_43_q0; + mul_ln38_43_fu_4080_p1 <= in1_loc_43_q0; + mul_ln38_43_fu_4080_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_43_fu_4080_p0) * signed(mul_ln38_43_fu_4080_p1))), 32)); + mul_ln38_44_fu_4086_p0 <= in2_loc_44_q0; + mul_ln38_44_fu_4086_p1 <= in1_loc_44_q0; + mul_ln38_44_fu_4086_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_44_fu_4086_p0) * signed(mul_ln38_44_fu_4086_p1))), 32)); + mul_ln38_45_fu_4092_p0 <= in2_loc_45_q0; + mul_ln38_45_fu_4092_p1 <= in1_loc_45_q0; + mul_ln38_45_fu_4092_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_45_fu_4092_p0) * signed(mul_ln38_45_fu_4092_p1))), 32)); + mul_ln38_46_fu_4098_p0 <= in2_loc_46_q0; + mul_ln38_46_fu_4098_p1 <= in1_loc_46_q0; + mul_ln38_46_fu_4098_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_46_fu_4098_p0) * signed(mul_ln38_46_fu_4098_p1))), 32)); + mul_ln38_47_fu_4104_p0 <= in2_loc_47_q0; + mul_ln38_47_fu_4104_p1 <= in1_loc_47_q0; + mul_ln38_47_fu_4104_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_47_fu_4104_p0) * signed(mul_ln38_47_fu_4104_p1))), 32)); + mul_ln38_48_fu_4110_p0 <= in2_loc_48_q0; + mul_ln38_48_fu_4110_p1 <= in1_loc_48_q0; + mul_ln38_48_fu_4110_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_48_fu_4110_p0) * signed(mul_ln38_48_fu_4110_p1))), 32)); + mul_ln38_49_fu_4116_p0 <= in2_loc_49_q0; + mul_ln38_49_fu_4116_p1 <= in1_loc_49_q0; + mul_ln38_49_fu_4116_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_49_fu_4116_p0) * signed(mul_ln38_49_fu_4116_p1))), 32)); + mul_ln38_4_fu_3846_p0 <= in2_loc_4_q0; + mul_ln38_4_fu_3846_p1 <= in1_loc_4_q0; + mul_ln38_4_fu_3846_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_4_fu_3846_p0) * signed(mul_ln38_4_fu_3846_p1))), 32)); + mul_ln38_50_fu_4122_p0 <= in2_loc_50_q0; + mul_ln38_50_fu_4122_p1 <= in1_loc_50_q0; + mul_ln38_50_fu_4122_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_50_fu_4122_p0) * signed(mul_ln38_50_fu_4122_p1))), 32)); + mul_ln38_51_fu_4128_p0 <= in2_loc_51_q0; + mul_ln38_51_fu_4128_p1 <= in1_loc_51_q0; + mul_ln38_51_fu_4128_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_51_fu_4128_p0) * signed(mul_ln38_51_fu_4128_p1))), 32)); + mul_ln38_52_fu_4134_p0 <= in2_loc_52_q0; + mul_ln38_52_fu_4134_p1 <= in1_loc_52_q0; + mul_ln38_52_fu_4134_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_52_fu_4134_p0) * signed(mul_ln38_52_fu_4134_p1))), 32)); + mul_ln38_53_fu_4140_p0 <= in2_loc_53_q0; + mul_ln38_53_fu_4140_p1 <= in1_loc_53_q0; + mul_ln38_53_fu_4140_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_53_fu_4140_p0) * signed(mul_ln38_53_fu_4140_p1))), 32)); + mul_ln38_54_fu_4146_p0 <= in2_loc_54_q0; + mul_ln38_54_fu_4146_p1 <= in1_loc_54_q0; + mul_ln38_54_fu_4146_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_54_fu_4146_p0) * signed(mul_ln38_54_fu_4146_p1))), 32)); + mul_ln38_55_fu_4152_p0 <= in2_loc_55_q0; + mul_ln38_55_fu_4152_p1 <= in1_loc_55_q0; + mul_ln38_55_fu_4152_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_55_fu_4152_p0) * signed(mul_ln38_55_fu_4152_p1))), 32)); + mul_ln38_56_fu_4158_p0 <= in2_loc_56_q0; + mul_ln38_56_fu_4158_p1 <= in1_loc_56_q0; + mul_ln38_56_fu_4158_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_56_fu_4158_p0) * signed(mul_ln38_56_fu_4158_p1))), 32)); + mul_ln38_57_fu_4164_p0 <= in2_loc_57_q0; + mul_ln38_57_fu_4164_p1 <= in1_loc_57_q0; + mul_ln38_57_fu_4164_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_57_fu_4164_p0) * signed(mul_ln38_57_fu_4164_p1))), 32)); + mul_ln38_58_fu_4170_p0 <= in2_loc_58_q0; + mul_ln38_58_fu_4170_p1 <= in1_loc_58_q0; + mul_ln38_58_fu_4170_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_58_fu_4170_p0) * signed(mul_ln38_58_fu_4170_p1))), 32)); + mul_ln38_59_fu_4176_p0 <= in2_loc_59_q0; + mul_ln38_59_fu_4176_p1 <= in1_loc_59_q0; + mul_ln38_59_fu_4176_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_59_fu_4176_p0) * signed(mul_ln38_59_fu_4176_p1))), 32)); + mul_ln38_5_fu_3852_p0 <= in2_loc_5_q0; + mul_ln38_5_fu_3852_p1 <= in1_loc_5_q0; + mul_ln38_5_fu_3852_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_5_fu_3852_p0) * signed(mul_ln38_5_fu_3852_p1))), 32)); + mul_ln38_60_fu_4182_p0 <= in2_loc_60_q0; + mul_ln38_60_fu_4182_p1 <= in1_loc_60_q0; + mul_ln38_60_fu_4182_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_60_fu_4182_p0) * signed(mul_ln38_60_fu_4182_p1))), 32)); + mul_ln38_61_fu_4188_p0 <= in2_loc_61_q0; + mul_ln38_61_fu_4188_p1 <= in1_loc_61_q0; + mul_ln38_61_fu_4188_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_61_fu_4188_p0) * signed(mul_ln38_61_fu_4188_p1))), 32)); + mul_ln38_62_fu_4194_p0 <= in2_loc_62_q0; + mul_ln38_62_fu_4194_p1 <= in1_loc_62_q0; + mul_ln38_62_fu_4194_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_62_fu_4194_p0) * signed(mul_ln38_62_fu_4194_p1))), 32)); + mul_ln38_63_fu_4200_p0 <= in2_loc_63_q0; + mul_ln38_63_fu_4200_p1 <= in1_loc_63_q0; + mul_ln38_63_fu_4200_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_63_fu_4200_p0) * signed(mul_ln38_63_fu_4200_p1))), 32)); + mul_ln38_6_fu_3858_p0 <= in2_loc_6_q0; + mul_ln38_6_fu_3858_p1 <= in1_loc_6_q0; + mul_ln38_6_fu_3858_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_6_fu_3858_p0) * signed(mul_ln38_6_fu_3858_p1))), 32)); + mul_ln38_7_fu_3864_p0 <= in2_loc_7_q0; + mul_ln38_7_fu_3864_p1 <= in1_loc_7_q0; + mul_ln38_7_fu_3864_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_7_fu_3864_p0) * signed(mul_ln38_7_fu_3864_p1))), 32)); + mul_ln38_8_fu_3870_p0 <= in2_loc_8_q0; + mul_ln38_8_fu_3870_p1 <= in1_loc_8_q0; + mul_ln38_8_fu_3870_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_8_fu_3870_p0) * signed(mul_ln38_8_fu_3870_p1))), 32)); + mul_ln38_9_fu_3876_p0 <= in2_loc_9_q0; + mul_ln38_9_fu_3876_p1 <= in1_loc_9_q0; + mul_ln38_9_fu_3876_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_9_fu_3876_p0) * signed(mul_ln38_9_fu_3876_p1))), 32)); + mul_ln38_fu_3822_p0 <= in2_loc_0_q0; + mul_ln38_fu_3822_p1 <= in1_loc_0_q0; + mul_ln38_fu_3822_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(mul_ln38_fu_3822_p0) * signed(mul_ln38_fu_3822_p1))), 32)); + + out_loc_address0_assign_proc : process(ap_block_pp3_stage0, ap_CS_fsm_pp2_stage0, out_loc_addr_reg_5143, ap_CS_fsm_pp3_stage0, ap_enable_reg_pp3_iter0, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln42_fu_4588_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + out_loc_address0 <= zext_ln42_fu_4588_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + out_loc_address0 <= out_loc_addr_reg_5143; + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_CS_fsm_pp3_stage0, ap_block_pp3_stage0_11001, ap_enable_reg_pp3_iter0, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + out_loc_ce1_assign_proc : process(ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + out_loc_ce1 <= ap_const_logic_1; + else + out_loc_ce1 <= ap_const_logic_0; + end if; + end process; + + out_loc_d1 <= std_logic_vector(unsigned(add_ln38_30_fu_4539_p2) + unsigned(add_ln38_62_fu_4563_p2)); + + out_loc_we1_assign_proc : process(ap_block_pp2_stage0_11001, icmp_ln31_reg_4809_pp2_iter1_reg, ap_enable_reg_pp2_iter2) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4809_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + out_loc_we1 <= ap_const_logic_1; + else + out_loc_we1 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state26, out_mem_AWREADY) + begin + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state26))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state34, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp3_iter2, icmp_ln42_reg_5549_pp3_iter1_reg, ap_block_pp3_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_5549_pp3_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state26) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state26)) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state34) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state34)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp3_iter2, ap_block_pp3_stage0, icmp_ln42_reg_5549_pp3_iter1_reg) + begin + if (((icmp_ln42_reg_5549_pp3_iter1_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + select_ln31_1_fu_3645_p3 <= + i_fu_3626_p2 when (icmp_ln33_fu_3632_p2(0) = '1') else + ap_phi_mux_i_0_phi_fu_3333_p4; + select_ln31_fu_3637_p3 <= + ap_const_lv32_0 when (icmp_ln33_fu_3632_p2(0) = '1') else + j_0_reg_3340; + sext_ln38_fu_3733_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(select_ln31_fu_3637_p3),64)); + + tmp_cast_fu_3657_p3 <= (trunc_ln38_fu_3653_p1 & ap_const_lv6_0); + trunc_ln27_fu_3442_p1 <= phi_ln27_reg_3296(6 - 1 downto 0); + trunc_ln28_fu_3525_p1 <= phi_ln28_reg_3307(6 - 1 downto 0); + trunc_ln38_1_fu_3801_p1 <= select_ln31_fu_3637_p3(14 - 1 downto 0); + trunc_ln38_fu_3653_p1 <= select_ln31_1_fu_3645_p3(8 - 1 downto 0); + zext_ln27_fu_3446_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(lshr_ln_reg_4641_pp0_iter1_reg),64)); + zext_ln28_fu_3539_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(trunc_ln28_reg_4727_pp1_iter1_reg),64)); + zext_ln31_1_fu_3665_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(select_ln31_1_fu_3645_p3),64)); + zext_ln31_fu_3606_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_4593),64)); + zext_ln38_fu_3811_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(add_ln38_64_fu_3805_p2),64)); + zext_ln42_fu_4588_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_3351),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_loc_0.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_loc_0.vhd new file mode 100755 index 0000000..609e4b6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_loc_0.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_0_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 6; + MEM_SIZE : integer := 64 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_0_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc_0 is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 64; + AddressWidth : INTEGER := 6); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc_0 is + component mmult_in1_loc_0_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_0_ram_U : component mmult_in1_loc_0_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_loc.vhd new file mode 100755 index 0000000..ea7bf78 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_loc.vhd @@ -0,0 +1,129 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_out_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + addr1 : in std_logic_vector(AWIDTH-1 downto 0); + ce1 : in std_logic; + d1 : in std_logic_vector(DWIDTH-1 downto 0); + we1 : in std_logic; + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_out_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + end if; + end if; +end process; + + +p_memory_access_1: process (clk) +begin + if (clk'event and clk = '1') then + if (ce1 = '1') then + if (we1 = '1') then + ram(CONV_INTEGER(addr1)) := d1; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_out_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + address1 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_out_loc is + component mmult_out_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR; + addr1 : IN STD_LOGIC_VECTOR; + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_out_loc_ram_U : component mmult_out_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + q0 => q0, + addr1 => address1, + ce1 => ce1, + we1 => we1, + d1 => d1); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/xgui/mmult_v7_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/xgui/mmult_v7_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_7/xgui/mmult_v7_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/component.xml new file mode 100755 index 0000000..69919dc --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/component.xml @@ -0,0 +1,5578 @@ + + + xilinx.com + hls + mmult + 8.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + e3c53a09 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + 04bdef47 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 9e5d7da9 + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 6e26e69c + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 3c012d2d + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_out_loc.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_a58cab7e + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v8_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v8_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v8_0/src/Makefile + driver_src + + + drivers/mmult_v8_0/src/xmmult.c + driver_src + + + drivers/mmult_v8_0/src/xmmult.h + driver_src + + + drivers/mmult_v8_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v8_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v8_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v8_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v8_0 + + + clk_period + 5 + + + machine + 64 + + + combinational + 0 + + + latency + 16415 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105141831 + 2021-05-14T16:31:31Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..60a9ff7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 5.000 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/doc/ReleaseNotes.txt new file mode 100755 index 0000000..a04ae42 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 5.000 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.mdd new file mode 100755 index 0000000..f96920a --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v8_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 8.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/drivers/mmult_v8_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult.v new file mode 100755 index 0000000..6870150 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult.v @@ -0,0 +1,8344 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=5.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=4.375000,HLS_SYN_LAT=16415,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=9119,HLS_SYN_LUT=8264,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 26'd1; +parameter ap_ST_fsm_state2 = 26'd2; +parameter ap_ST_fsm_state3 = 26'd4; +parameter ap_ST_fsm_state4 = 26'd8; +parameter ap_ST_fsm_state5 = 26'd16; +parameter ap_ST_fsm_state6 = 26'd32; +parameter ap_ST_fsm_state7 = 26'd64; +parameter ap_ST_fsm_state8 = 26'd128; +parameter ap_ST_fsm_pp0_stage0 = 26'd256; +parameter ap_ST_fsm_state12 = 26'd512; +parameter ap_ST_fsm_state13 = 26'd1024; +parameter ap_ST_fsm_state14 = 26'd2048; +parameter ap_ST_fsm_state15 = 26'd4096; +parameter ap_ST_fsm_state16 = 26'd8192; +parameter ap_ST_fsm_state17 = 26'd16384; +parameter ap_ST_fsm_state18 = 26'd32768; +parameter ap_ST_fsm_pp1_stage0 = 26'd65536; +parameter ap_ST_fsm_state22 = 26'd131072; +parameter ap_ST_fsm_pp2_stage0 = 26'd262144; +parameter ap_ST_fsm_state28 = 26'd524288; +parameter ap_ST_fsm_pp3_stage0 = 26'd1048576; +parameter ap_ST_fsm_state32 = 26'd2097152; +parameter ap_ST_fsm_state33 = 26'd4194304; +parameter ap_ST_fsm_state34 = 26'd8388608; +parameter ap_ST_fsm_state35 = 26'd16777216; +parameter ap_ST_fsm_state36 = 26'd33554432; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [25:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state28; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp3_iter2; +wire ap_block_pp3_stage0; +reg [0:0] icmp_ln42_reg_6313; +reg [0:0] icmp_ln42_reg_6313_pp3_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state36; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_3296; +reg [12:0] phi_ln28_reg_3307; +reg [63:0] indvar_flatten_reg_3318; +reg [30:0] i_0_reg_3329; +reg [31:0] j_0_reg_3340; +reg [12:0] phi_ln42_reg_3351; +reg [31:0] dim_read_reg_4390; +reg [29:0] out5_reg_4396; +reg [29:0] in_reg_4401; +reg [29:0] in3_reg_4406; +reg [31:0] out_mem_addr_reg_4417; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_4423; +wire [0:0] icmp_ln27_fu_3420_p2; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +wire [12:0] add_ln27_fu_3426_p2; +reg ap_enable_reg_pp0_iter0; +reg [6:0] lshr_ln_reg_4438; +reg [6:0] lshr_ln_reg_4438_pp0_iter1_reg; +wire [5:0] trunc_ln27_fu_3442_p1; +reg [5:0] trunc_ln27_reg_4443; +reg [5:0] trunc_ln27_reg_4443_pp0_iter1_reg; +reg [31:0] in1_mem_addr_read_reg_4447; +wire [0:0] icmp_ln28_fu_3513_p2; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +wire [12:0] add_ln28_fu_3519_p2; +reg ap_enable_reg_pp1_iter0; +wire [5:0] trunc_ln28_fu_3525_p1; +reg [5:0] trunc_ln28_reg_4524; +reg [5:0] trunc_ln28_reg_4524_pp1_iter1_reg; +reg [5:0] trunc_ln1_reg_4529; +reg [5:0] trunc_ln1_reg_4529_pp1_iter1_reg; +reg [31:0] in2_mem_addr_read_reg_4533; +wire [63:0] mul_ln31_fu_3609_p2; +reg [63:0] mul_ln31_reg_4601; +wire ap_CS_fsm_state22; +wire [0:0] icmp_ln31_fu_3615_p2; +reg [0:0] icmp_ln31_reg_4606; +wire ap_CS_fsm_pp2_stage0; +wire ap_block_state23_pp2_stage0_iter0; +wire ap_block_state24_pp2_stage0_iter1; +wire ap_block_state25_pp2_stage0_iter2; +wire ap_block_state26_pp2_stage0_iter3; +wire ap_block_state27_pp2_stage0_iter4; +wire ap_block_pp2_stage0_11001; +reg [0:0] icmp_ln31_reg_4606_pp2_iter1_reg; +reg [0:0] icmp_ln31_reg_4606_pp2_iter2_reg; +reg [0:0] icmp_ln31_reg_4606_pp2_iter3_reg; +wire [63:0] add_ln31_fu_3620_p2; +reg ap_enable_reg_pp2_iter0; +wire [30:0] select_ln31_1_fu_3645_p3; +reg [30:0] select_ln31_1_reg_4615; +wire [63:0] zext_ln31_1_fu_3665_p1; +reg [63:0] zext_ln31_1_reg_4620; +wire signed [63:0] sext_ln38_fu_3726_p1; +reg signed [63:0] sext_ln38_reg_4916; +reg [11:0] out_loc_addr_reg_4927; +reg [11:0] out_loc_addr_reg_4927_pp2_iter1_reg; +reg [11:0] out_loc_addr_reg_4927_pp2_iter2_reg; +reg [11:0] out_loc_addr_reg_4927_pp2_iter3_reg; +wire [31:0] j_fu_3802_p2; +wire [31:0] in1_loc_0_q0; +reg signed [31:0] in1_loc_0_load_reg_5223; +reg ap_enable_reg_pp2_iter1; +wire [31:0] in1_loc_1_q0; +reg signed [31:0] in1_loc_1_load_reg_5228; +wire [31:0] in1_loc_2_q0; +reg signed [31:0] in1_loc_2_load_reg_5233; +wire [31:0] in1_loc_3_q0; +reg signed [31:0] in1_loc_3_load_reg_5238; +wire [31:0] in1_loc_4_q0; +reg signed [31:0] in1_loc_4_load_reg_5243; +wire [31:0] in1_loc_5_q0; +reg signed [31:0] in1_loc_5_load_reg_5248; +wire [31:0] in1_loc_6_q0; +reg signed [31:0] in1_loc_6_load_reg_5253; +wire [31:0] in1_loc_7_q0; +reg signed [31:0] in1_loc_7_load_reg_5258; +wire [31:0] in1_loc_8_q0; +reg signed [31:0] in1_loc_8_load_reg_5263; +wire [31:0] in1_loc_9_q0; +reg signed [31:0] in1_loc_9_load_reg_5268; +wire [31:0] in1_loc_10_q0; +reg signed [31:0] in1_loc_10_load_reg_5273; +wire [31:0] in1_loc_11_q0; +reg signed [31:0] in1_loc_11_load_reg_5278; +wire [31:0] in1_loc_12_q0; +reg signed [31:0] in1_loc_12_load_reg_5283; +wire [31:0] in1_loc_13_q0; +reg signed [31:0] in1_loc_13_load_reg_5288; +wire [31:0] in1_loc_14_q0; +reg signed [31:0] in1_loc_14_load_reg_5293; +wire [31:0] in1_loc_15_q0; +reg signed [31:0] in1_loc_15_load_reg_5298; +wire [31:0] in1_loc_16_q0; +reg signed [31:0] in1_loc_16_load_reg_5303; +wire [31:0] in1_loc_17_q0; +reg signed [31:0] in1_loc_17_load_reg_5308; +wire [31:0] in1_loc_18_q0; +reg signed [31:0] in1_loc_18_load_reg_5313; +wire [31:0] in1_loc_19_q0; +reg signed [31:0] in1_loc_19_load_reg_5318; +wire [31:0] in1_loc_20_q0; +reg signed [31:0] in1_loc_20_load_reg_5323; +wire [31:0] in1_loc_21_q0; +reg signed [31:0] in1_loc_21_load_reg_5328; +wire [31:0] in1_loc_22_q0; +reg signed [31:0] in1_loc_22_load_reg_5333; +wire [31:0] in1_loc_23_q0; +reg signed [31:0] in1_loc_23_load_reg_5338; +wire [31:0] in1_loc_24_q0; +reg signed [31:0] in1_loc_24_load_reg_5343; +wire [31:0] in1_loc_25_q0; +reg signed [31:0] in1_loc_25_load_reg_5348; +wire [31:0] in1_loc_26_q0; +reg signed [31:0] in1_loc_26_load_reg_5353; +wire [31:0] in1_loc_27_q0; +reg signed [31:0] in1_loc_27_load_reg_5358; +wire [31:0] in1_loc_28_q0; +reg signed [31:0] in1_loc_28_load_reg_5363; +wire [31:0] in1_loc_29_q0; +reg signed [31:0] in1_loc_29_load_reg_5368; +wire [31:0] in1_loc_30_q0; +reg signed [31:0] in1_loc_30_load_reg_5373; +wire [31:0] in1_loc_31_q0; +reg signed [31:0] in1_loc_31_load_reg_5378; +wire [31:0] in1_loc_32_q0; +reg signed [31:0] in1_loc_32_load_reg_5383; +wire [31:0] in1_loc_33_q0; +reg signed [31:0] in1_loc_33_load_reg_5388; +wire [31:0] in1_loc_34_q0; +reg signed [31:0] in1_loc_34_load_reg_5393; +wire [31:0] in1_loc_35_q0; +reg signed [31:0] in1_loc_35_load_reg_5398; +wire [31:0] in1_loc_36_q0; +reg signed [31:0] in1_loc_36_load_reg_5403; +wire [31:0] in1_loc_37_q0; +reg signed [31:0] in1_loc_37_load_reg_5408; +wire [31:0] in1_loc_38_q0; +reg signed [31:0] in1_loc_38_load_reg_5413; +wire [31:0] in1_loc_39_q0; +reg signed [31:0] in1_loc_39_load_reg_5418; +wire [31:0] in1_loc_40_q0; +reg signed [31:0] in1_loc_40_load_reg_5423; +wire [31:0] in1_loc_43_q0; +reg signed [31:0] in1_loc_43_load_reg_5438; +wire [31:0] in1_loc_44_q0; +reg signed [31:0] in1_loc_44_load_reg_5443; +wire [31:0] in1_loc_47_q0; +reg signed [31:0] in1_loc_47_load_reg_5458; +wire [31:0] in1_loc_48_q0; +reg signed [31:0] in1_loc_48_load_reg_5463; +wire [31:0] in1_loc_49_q0; +reg signed [31:0] in1_loc_49_load_reg_5468; +wire [31:0] in1_loc_50_q0; +reg signed [31:0] in1_loc_50_load_reg_5473; +wire [31:0] in1_loc_51_q0; +reg signed [31:0] in1_loc_51_load_reg_5478; +wire [31:0] in1_loc_52_q0; +reg signed [31:0] in1_loc_52_load_reg_5483; +wire [31:0] in1_loc_53_q0; +reg signed [31:0] in1_loc_53_load_reg_5488; +wire [31:0] in1_loc_54_q0; +reg signed [31:0] in1_loc_54_load_reg_5493; +wire [31:0] in1_loc_55_q0; +reg signed [31:0] in1_loc_55_load_reg_5498; +wire [31:0] in1_loc_56_q0; +reg signed [31:0] in1_loc_56_load_reg_5503; +wire [31:0] in1_loc_59_q0; +reg signed [31:0] in1_loc_59_load_reg_5518; +wire [31:0] in1_loc_60_q0; +reg signed [31:0] in1_loc_60_load_reg_5523; +wire [31:0] in1_loc_62_q0; +reg signed [31:0] in1_loc_62_load_reg_5533; +wire [31:0] in1_loc_63_q0; +reg signed [31:0] in1_loc_63_load_reg_5538; +wire [31:0] in2_loc_0_q0; +reg signed [31:0] in2_loc_0_load_reg_5543; +wire [31:0] in2_loc_1_q0; +reg signed [31:0] in2_loc_1_load_reg_5548; +wire [31:0] in2_loc_2_q0; +reg signed [31:0] in2_loc_2_load_reg_5553; +wire [31:0] in2_loc_3_q0; +reg signed [31:0] in2_loc_3_load_reg_5558; +wire [31:0] in2_loc_4_q0; +reg signed [31:0] in2_loc_4_load_reg_5563; +wire [31:0] in2_loc_5_q0; +reg signed [31:0] in2_loc_5_load_reg_5568; +wire [31:0] in2_loc_6_q0; +reg signed [31:0] in2_loc_6_load_reg_5573; +wire [31:0] in2_loc_7_q0; +reg signed [31:0] in2_loc_7_load_reg_5578; +wire [31:0] in2_loc_8_q0; +reg signed [31:0] in2_loc_8_load_reg_5583; +wire [31:0] in2_loc_9_q0; +reg signed [31:0] in2_loc_9_load_reg_5588; +wire [31:0] in2_loc_10_q0; +reg signed [31:0] in2_loc_10_load_reg_5593; +wire [31:0] in2_loc_11_q0; +reg signed [31:0] in2_loc_11_load_reg_5598; +wire [31:0] in2_loc_12_q0; +reg signed [31:0] in2_loc_12_load_reg_5603; +wire [31:0] in2_loc_13_q0; +reg signed [31:0] in2_loc_13_load_reg_5608; +wire [31:0] in2_loc_14_q0; +reg signed [31:0] in2_loc_14_load_reg_5613; +wire [31:0] in2_loc_15_q0; +reg signed [31:0] in2_loc_15_load_reg_5618; +wire [31:0] in2_loc_16_q0; +reg signed [31:0] in2_loc_16_load_reg_5623; +wire [31:0] in2_loc_17_q0; +reg signed [31:0] in2_loc_17_load_reg_5628; +wire [31:0] in2_loc_18_q0; +reg signed [31:0] in2_loc_18_load_reg_5633; +wire [31:0] in2_loc_19_q0; +reg signed [31:0] in2_loc_19_load_reg_5638; +wire [31:0] in2_loc_20_q0; +reg signed [31:0] in2_loc_20_load_reg_5643; +wire [31:0] in2_loc_21_q0; +reg signed [31:0] in2_loc_21_load_reg_5648; +wire [31:0] in2_loc_22_q0; +reg signed [31:0] in2_loc_22_load_reg_5653; +wire [31:0] in2_loc_23_q0; +reg signed [31:0] in2_loc_23_load_reg_5658; +wire [31:0] in2_loc_24_q0; +reg signed [31:0] in2_loc_24_load_reg_5663; +wire [31:0] in2_loc_25_q0; +reg signed [31:0] in2_loc_25_load_reg_5668; +wire [31:0] in2_loc_26_q0; +reg signed [31:0] in2_loc_26_load_reg_5673; +wire [31:0] in2_loc_27_q0; +reg signed [31:0] in2_loc_27_load_reg_5678; +wire [31:0] in2_loc_28_q0; +reg signed [31:0] in2_loc_28_load_reg_5683; +wire [31:0] in2_loc_29_q0; +reg signed [31:0] in2_loc_29_load_reg_5688; +wire [31:0] in2_loc_30_q0; +reg signed [31:0] in2_loc_30_load_reg_5693; +wire [31:0] in2_loc_31_q0; +reg signed [31:0] in2_loc_31_load_reg_5698; +wire [31:0] in2_loc_32_q0; +reg signed [31:0] in2_loc_32_load_reg_5703; +wire [31:0] in2_loc_33_q0; +reg signed [31:0] in2_loc_33_load_reg_5708; +wire [31:0] in2_loc_34_q0; +reg signed [31:0] in2_loc_34_load_reg_5713; +wire [31:0] in2_loc_35_q0; +reg signed [31:0] in2_loc_35_load_reg_5718; +wire [31:0] in2_loc_36_q0; +reg signed [31:0] in2_loc_36_load_reg_5723; +wire [31:0] in2_loc_37_q0; +reg signed [31:0] in2_loc_37_load_reg_5728; +wire [31:0] in2_loc_38_q0; +reg signed [31:0] in2_loc_38_load_reg_5733; +wire [31:0] in2_loc_39_q0; +reg signed [31:0] in2_loc_39_load_reg_5738; +wire [31:0] in2_loc_40_q0; +reg signed [31:0] in2_loc_40_load_reg_5743; +wire [31:0] in2_loc_43_q0; +reg signed [31:0] in2_loc_43_load_reg_5758; +wire [31:0] in2_loc_44_q0; +reg signed [31:0] in2_loc_44_load_reg_5763; +wire [31:0] in2_loc_47_q0; +reg signed [31:0] in2_loc_47_load_reg_5778; +wire [31:0] in2_loc_48_q0; +reg signed [31:0] in2_loc_48_load_reg_5783; +wire [31:0] in2_loc_49_q0; +reg signed [31:0] in2_loc_49_load_reg_5788; +wire [31:0] in2_loc_50_q0; +reg signed [31:0] in2_loc_50_load_reg_5793; +wire [31:0] in2_loc_51_q0; +reg signed [31:0] in2_loc_51_load_reg_5798; +wire [31:0] in2_loc_52_q0; +reg signed [31:0] in2_loc_52_load_reg_5803; +wire [31:0] in2_loc_53_q0; +reg signed [31:0] in2_loc_53_load_reg_5808; +wire [31:0] in2_loc_54_q0; +reg signed [31:0] in2_loc_54_load_reg_5813; +wire [31:0] in2_loc_55_q0; +reg signed [31:0] in2_loc_55_load_reg_5818; +wire [31:0] in2_loc_56_q0; +reg signed [31:0] in2_loc_56_load_reg_5823; +wire [31:0] in2_loc_59_q0; +reg signed [31:0] in2_loc_59_load_reg_5838; +wire [31:0] in2_loc_60_q0; +reg signed [31:0] in2_loc_60_load_reg_5843; +wire [31:0] in2_loc_62_q0; +reg signed [31:0] in2_loc_62_load_reg_5853; +wire [31:0] in2_loc_63_q0; +reg signed [31:0] in2_loc_63_load_reg_5858; +wire [31:0] in1_loc_41_q0; +reg signed [31:0] in1_loc_41_load_reg_5863; +reg ap_enable_reg_pp2_iter2; +wire [31:0] in1_loc_42_q0; +reg signed [31:0] in1_loc_42_load_reg_5868; +wire [31:0] in1_loc_45_q0; +reg signed [31:0] in1_loc_45_load_reg_5873; +wire [31:0] in1_loc_46_q0; +reg signed [31:0] in1_loc_46_load_reg_5878; +wire [31:0] in1_loc_57_q0; +reg signed [31:0] in1_loc_57_load_reg_5883; +wire [31:0] in1_loc_58_q0; +reg signed [31:0] in1_loc_58_load_reg_5888; +wire [31:0] in1_loc_61_q0; +reg signed [31:0] in1_loc_61_load_reg_5893; +wire [31:0] mul_ln38_fu_3808_p2; +reg [31:0] mul_ln38_reg_5898; +wire [31:0] mul_ln38_1_fu_3812_p2; +reg [31:0] mul_ln38_1_reg_5903; +wire [31:0] mul_ln38_2_fu_3816_p2; +reg [31:0] mul_ln38_2_reg_5908; +wire [31:0] mul_ln38_3_fu_3820_p2; +reg [31:0] mul_ln38_3_reg_5913; +wire [31:0] mul_ln38_4_fu_3824_p2; +reg [31:0] mul_ln38_4_reg_5918; +wire [31:0] mul_ln38_5_fu_3828_p2; +reg [31:0] mul_ln38_5_reg_5923; +wire [31:0] mul_ln38_6_fu_3832_p2; +reg [31:0] mul_ln38_6_reg_5928; +wire [31:0] mul_ln38_7_fu_3836_p2; +reg [31:0] mul_ln38_7_reg_5933; +wire [31:0] mul_ln38_8_fu_3840_p2; +reg [31:0] mul_ln38_8_reg_5938; +wire [31:0] mul_ln38_9_fu_3844_p2; +reg [31:0] mul_ln38_9_reg_5943; +wire [31:0] mul_ln38_10_fu_3848_p2; +reg [31:0] mul_ln38_10_reg_5948; +wire [31:0] mul_ln38_11_fu_3852_p2; +reg [31:0] mul_ln38_11_reg_5953; +wire [31:0] mul_ln38_12_fu_3856_p2; +reg [31:0] mul_ln38_12_reg_5958; +wire [31:0] mul_ln38_13_fu_3860_p2; +reg [31:0] mul_ln38_13_reg_5963; +wire [31:0] mul_ln38_14_fu_3864_p2; +reg [31:0] mul_ln38_14_reg_5968; +wire [31:0] mul_ln38_15_fu_3868_p2; +reg [31:0] mul_ln38_15_reg_5973; +wire [31:0] mul_ln38_16_fu_3872_p2; +reg [31:0] mul_ln38_16_reg_5978; +wire [31:0] mul_ln38_17_fu_3876_p2; +reg [31:0] mul_ln38_17_reg_5983; +wire [31:0] mul_ln38_18_fu_3880_p2; +reg [31:0] mul_ln38_18_reg_5988; +wire [31:0] mul_ln38_19_fu_3884_p2; +reg [31:0] mul_ln38_19_reg_5993; +wire [31:0] mul_ln38_20_fu_3888_p2; +reg [31:0] mul_ln38_20_reg_5998; +wire [31:0] mul_ln38_21_fu_3892_p2; +reg [31:0] mul_ln38_21_reg_6003; +wire [31:0] mul_ln38_22_fu_3896_p2; +reg [31:0] mul_ln38_22_reg_6008; +wire [31:0] mul_ln38_23_fu_3900_p2; +reg [31:0] mul_ln38_23_reg_6013; +wire [31:0] mul_ln38_24_fu_3904_p2; +reg [31:0] mul_ln38_24_reg_6018; +wire [31:0] mul_ln38_25_fu_3908_p2; +reg [31:0] mul_ln38_25_reg_6023; +wire [31:0] mul_ln38_26_fu_3912_p2; +reg [31:0] mul_ln38_26_reg_6028; +wire [31:0] mul_ln38_27_fu_3916_p2; +reg [31:0] mul_ln38_27_reg_6033; +wire [31:0] mul_ln38_28_fu_3920_p2; +reg [31:0] mul_ln38_28_reg_6038; +wire [31:0] mul_ln38_29_fu_3924_p2; +reg [31:0] mul_ln38_29_reg_6043; +wire [31:0] mul_ln38_30_fu_3928_p2; +reg [31:0] mul_ln38_30_reg_6048; +wire [31:0] mul_ln38_31_fu_3932_p2; +reg [31:0] mul_ln38_31_reg_6053; +wire [31:0] mul_ln38_32_fu_3936_p2; +reg [31:0] mul_ln38_32_reg_6058; +wire [31:0] mul_ln38_33_fu_3940_p2; +reg [31:0] mul_ln38_33_reg_6063; +wire [31:0] mul_ln38_34_fu_3944_p2; +reg [31:0] mul_ln38_34_reg_6068; +wire [31:0] mul_ln38_35_fu_3948_p2; +reg [31:0] mul_ln38_35_reg_6073; +wire [31:0] mul_ln38_36_fu_3952_p2; +reg [31:0] mul_ln38_36_reg_6078; +wire [31:0] mul_ln38_37_fu_3956_p2; +reg [31:0] mul_ln38_37_reg_6083; +wire [31:0] mul_ln38_38_fu_3960_p2; +reg [31:0] mul_ln38_38_reg_6088; +wire [31:0] mul_ln38_39_fu_3964_p2; +reg [31:0] mul_ln38_39_reg_6093; +wire [31:0] mul_ln38_40_fu_3968_p2; +reg [31:0] mul_ln38_40_reg_6098; +wire [31:0] in2_loc_41_q0; +reg signed [31:0] in2_loc_41_load_reg_6103; +wire [31:0] in2_loc_42_q0; +reg signed [31:0] in2_loc_42_load_reg_6108; +wire [31:0] mul_ln38_43_fu_3972_p2; +reg [31:0] mul_ln38_43_reg_6113; +wire [31:0] mul_ln38_44_fu_3976_p2; +reg [31:0] mul_ln38_44_reg_6118; +wire [31:0] in2_loc_45_q0; +reg signed [31:0] in2_loc_45_load_reg_6123; +wire [31:0] in2_loc_46_q0; +reg signed [31:0] in2_loc_46_load_reg_6128; +wire [31:0] mul_ln38_47_fu_3980_p2; +reg [31:0] mul_ln38_47_reg_6133; +wire [31:0] mul_ln38_48_fu_3984_p2; +reg [31:0] mul_ln38_48_reg_6138; +wire [31:0] mul_ln38_49_fu_3988_p2; +reg [31:0] mul_ln38_49_reg_6143; +wire [31:0] mul_ln38_50_fu_3992_p2; +reg [31:0] mul_ln38_50_reg_6148; +wire [31:0] mul_ln38_51_fu_3996_p2; +reg [31:0] mul_ln38_51_reg_6153; +wire [31:0] mul_ln38_52_fu_4000_p2; +reg [31:0] mul_ln38_52_reg_6158; +wire [31:0] mul_ln38_53_fu_4004_p2; +reg [31:0] mul_ln38_53_reg_6163; +wire [31:0] mul_ln38_54_fu_4008_p2; +reg [31:0] mul_ln38_54_reg_6168; +wire [31:0] mul_ln38_55_fu_4012_p2; +reg [31:0] mul_ln38_55_reg_6173; +wire [31:0] mul_ln38_56_fu_4016_p2; +reg [31:0] mul_ln38_56_reg_6178; +wire [31:0] in2_loc_57_q0; +reg signed [31:0] in2_loc_57_load_reg_6183; +wire [31:0] in2_loc_58_q0; +reg signed [31:0] in2_loc_58_load_reg_6188; +wire [31:0] mul_ln38_59_fu_4020_p2; +reg [31:0] mul_ln38_59_reg_6193; +wire [31:0] mul_ln38_60_fu_4024_p2; +reg [31:0] mul_ln38_60_reg_6198; +wire [31:0] in2_loc_61_q0; +reg signed [31:0] in2_loc_61_load_reg_6203; +wire [31:0] mul_ln38_62_fu_4028_p2; +reg [31:0] mul_ln38_62_reg_6208; +wire [31:0] mul_ln38_63_fu_4032_p2; +reg [31:0] mul_ln38_63_reg_6213; +wire [31:0] mul_ln38_41_fu_4036_p2; +reg [31:0] mul_ln38_41_reg_6218; +wire [31:0] mul_ln38_42_fu_4040_p2; +reg [31:0] mul_ln38_42_reg_6223; +wire [31:0] mul_ln38_45_fu_4044_p2; +reg [31:0] mul_ln38_45_reg_6228; +wire [31:0] mul_ln38_46_fu_4048_p2; +reg [31:0] mul_ln38_46_reg_6233; +wire [31:0] mul_ln38_57_fu_4052_p2; +reg [31:0] mul_ln38_57_reg_6238; +wire [31:0] mul_ln38_58_fu_4056_p2; +reg [31:0] mul_ln38_58_reg_6243; +wire [31:0] mul_ln38_61_fu_4060_p2; +reg [31:0] mul_ln38_61_reg_6248; +wire [31:0] add_ln38_6_fu_4093_p2; +reg [31:0] add_ln38_6_reg_6253; +wire [31:0] add_ln38_9_fu_4107_p2; +reg [31:0] add_ln38_9_reg_6258; +wire [31:0] add_ln38_12_fu_4121_p2; +reg [31:0] add_ln38_12_reg_6263; +wire [31:0] add_ln38_21_fu_4155_p2; +reg [31:0] add_ln38_21_reg_6268; +wire [31:0] add_ln38_28_fu_4189_p2; +reg [31:0] add_ln38_28_reg_6273; +wire [31:0] add_ln38_37_fu_4223_p2; +reg [31:0] add_ln38_37_reg_6278; +wire [31:0] add_ln38_38_fu_4229_p2; +reg [31:0] add_ln38_38_reg_6283; +wire [31:0] add_ln38_41_fu_4233_p2; +reg [31:0] add_ln38_41_reg_6288; +wire [31:0] add_ln38_52_fu_4265_p2; +reg [31:0] add_ln38_52_reg_6293; +wire [31:0] add_ln38_53_fu_4271_p2; +reg [31:0] add_ln38_53_reg_6298; +wire [31:0] add_ln38_56_fu_4275_p2; +reg [31:0] add_ln38_56_reg_6303; +wire [31:0] add_ln38_57_fu_4279_p2; +reg [31:0] add_ln38_57_reg_6308; +wire [0:0] icmp_ln42_fu_4373_p2; +wire ap_CS_fsm_pp3_stage0; +wire ap_block_state29_pp3_stage0_iter0; +wire ap_block_state30_pp3_stage0_iter1; +wire ap_block_state31_pp3_stage0_iter2; +reg ap_block_state31_io; +reg ap_block_pp3_stage0_11001; +wire [12:0] add_ln42_fu_4379_p2; +reg ap_enable_reg_pp3_iter0; +wire [31:0] out_loc_q0; +reg [31:0] out_loc_load_reg_6327; +reg ap_enable_reg_pp3_iter1; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +wire ap_block_pp2_stage0_subdone; +reg ap_condition_pp2_exit_iter0_state23; +reg ap_enable_reg_pp2_iter3; +reg ap_enable_reg_pp2_iter4; +reg ap_block_pp3_stage0_subdone; +reg ap_condition_pp3_exit_iter0_state29; +reg [5:0] in1_loc_0_address0; +reg in1_loc_0_ce0; +reg in1_loc_0_we0; +reg [5:0] in1_loc_1_address0; +reg in1_loc_1_ce0; +reg in1_loc_1_we0; +reg [5:0] in1_loc_2_address0; +reg in1_loc_2_ce0; +reg in1_loc_2_we0; +reg [5:0] in1_loc_3_address0; +reg in1_loc_3_ce0; +reg in1_loc_3_we0; +reg [5:0] in1_loc_4_address0; +reg in1_loc_4_ce0; +reg in1_loc_4_we0; +reg [5:0] in1_loc_5_address0; +reg in1_loc_5_ce0; +reg in1_loc_5_we0; +reg [5:0] in1_loc_6_address0; +reg in1_loc_6_ce0; +reg in1_loc_6_we0; +reg [5:0] in1_loc_7_address0; +reg in1_loc_7_ce0; +reg in1_loc_7_we0; +reg [5:0] in1_loc_8_address0; +reg in1_loc_8_ce0; +reg in1_loc_8_we0; +reg [5:0] in1_loc_9_address0; +reg in1_loc_9_ce0; +reg in1_loc_9_we0; +reg [5:0] in1_loc_10_address0; +reg in1_loc_10_ce0; +reg in1_loc_10_we0; +reg [5:0] in1_loc_11_address0; +reg in1_loc_11_ce0; +reg in1_loc_11_we0; +reg [5:0] in1_loc_12_address0; +reg in1_loc_12_ce0; +reg in1_loc_12_we0; +reg [5:0] in1_loc_13_address0; +reg in1_loc_13_ce0; +reg in1_loc_13_we0; +reg [5:0] in1_loc_14_address0; +reg in1_loc_14_ce0; +reg in1_loc_14_we0; +reg [5:0] in1_loc_15_address0; +reg in1_loc_15_ce0; +reg in1_loc_15_we0; +reg [5:0] in1_loc_16_address0; +reg in1_loc_16_ce0; +reg in1_loc_16_we0; +reg [5:0] in1_loc_17_address0; +reg in1_loc_17_ce0; +reg in1_loc_17_we0; +reg [5:0] in1_loc_18_address0; +reg in1_loc_18_ce0; +reg in1_loc_18_we0; +reg [5:0] in1_loc_19_address0; +reg in1_loc_19_ce0; +reg in1_loc_19_we0; +reg [5:0] in1_loc_20_address0; +reg in1_loc_20_ce0; +reg in1_loc_20_we0; +reg [5:0] in1_loc_21_address0; +reg in1_loc_21_ce0; +reg in1_loc_21_we0; +reg [5:0] in1_loc_22_address0; +reg in1_loc_22_ce0; +reg in1_loc_22_we0; +reg [5:0] in1_loc_23_address0; +reg in1_loc_23_ce0; +reg in1_loc_23_we0; +reg [5:0] in1_loc_24_address0; +reg in1_loc_24_ce0; +reg in1_loc_24_we0; +reg [5:0] in1_loc_25_address0; +reg in1_loc_25_ce0; +reg in1_loc_25_we0; +reg [5:0] in1_loc_26_address0; +reg in1_loc_26_ce0; +reg in1_loc_26_we0; +reg [5:0] in1_loc_27_address0; +reg in1_loc_27_ce0; +reg in1_loc_27_we0; +reg [5:0] in1_loc_28_address0; +reg in1_loc_28_ce0; +reg in1_loc_28_we0; +reg [5:0] in1_loc_29_address0; +reg in1_loc_29_ce0; +reg in1_loc_29_we0; +reg [5:0] in1_loc_30_address0; +reg in1_loc_30_ce0; +reg in1_loc_30_we0; +reg [5:0] in1_loc_31_address0; +reg in1_loc_31_ce0; +reg in1_loc_31_we0; +reg [5:0] in1_loc_32_address0; +reg in1_loc_32_ce0; +reg in1_loc_32_we0; +reg [5:0] in1_loc_33_address0; +reg in1_loc_33_ce0; +reg in1_loc_33_we0; +reg [5:0] in1_loc_34_address0; +reg in1_loc_34_ce0; +reg in1_loc_34_we0; +reg [5:0] in1_loc_35_address0; +reg in1_loc_35_ce0; +reg in1_loc_35_we0; +reg [5:0] in1_loc_36_address0; +reg in1_loc_36_ce0; +reg in1_loc_36_we0; +reg [5:0] in1_loc_37_address0; +reg in1_loc_37_ce0; +reg in1_loc_37_we0; +reg [5:0] in1_loc_38_address0; +reg in1_loc_38_ce0; +reg in1_loc_38_we0; +reg [5:0] in1_loc_39_address0; +reg in1_loc_39_ce0; +reg in1_loc_39_we0; +reg [5:0] in1_loc_40_address0; +reg in1_loc_40_ce0; +reg in1_loc_40_we0; +reg [5:0] in1_loc_41_address0; +reg in1_loc_41_ce0; +reg in1_loc_41_we0; +reg [5:0] in1_loc_42_address0; +reg in1_loc_42_ce0; +reg in1_loc_42_we0; +reg [5:0] in1_loc_43_address0; +reg in1_loc_43_ce0; +reg in1_loc_43_we0; +reg [5:0] in1_loc_44_address0; +reg in1_loc_44_ce0; +reg in1_loc_44_we0; +reg [5:0] in1_loc_45_address0; +reg in1_loc_45_ce0; +reg in1_loc_45_we0; +reg [5:0] in1_loc_46_address0; +reg in1_loc_46_ce0; +reg in1_loc_46_we0; +reg [5:0] in1_loc_47_address0; +reg in1_loc_47_ce0; +reg in1_loc_47_we0; +reg [5:0] in1_loc_48_address0; +reg in1_loc_48_ce0; +reg in1_loc_48_we0; +reg [5:0] in1_loc_49_address0; +reg in1_loc_49_ce0; +reg in1_loc_49_we0; +reg [5:0] in1_loc_50_address0; +reg in1_loc_50_ce0; +reg in1_loc_50_we0; +reg [5:0] in1_loc_51_address0; +reg in1_loc_51_ce0; +reg in1_loc_51_we0; +reg [5:0] in1_loc_52_address0; +reg in1_loc_52_ce0; +reg in1_loc_52_we0; +reg [5:0] in1_loc_53_address0; +reg in1_loc_53_ce0; +reg in1_loc_53_we0; +reg [5:0] in1_loc_54_address0; +reg in1_loc_54_ce0; +reg in1_loc_54_we0; +reg [5:0] in1_loc_55_address0; +reg in1_loc_55_ce0; +reg in1_loc_55_we0; +reg [5:0] in1_loc_56_address0; +reg in1_loc_56_ce0; +reg in1_loc_56_we0; +reg [5:0] in1_loc_57_address0; +reg in1_loc_57_ce0; +reg in1_loc_57_we0; +reg [5:0] in1_loc_58_address0; +reg in1_loc_58_ce0; +reg in1_loc_58_we0; +reg [5:0] in1_loc_59_address0; +reg in1_loc_59_ce0; +reg in1_loc_59_we0; +reg [5:0] in1_loc_60_address0; +reg in1_loc_60_ce0; +reg in1_loc_60_we0; +reg [5:0] in1_loc_61_address0; +reg in1_loc_61_ce0; +reg in1_loc_61_we0; +reg [5:0] in1_loc_62_address0; +reg in1_loc_62_ce0; +reg in1_loc_62_we0; +reg [5:0] in1_loc_63_address0; +reg in1_loc_63_ce0; +reg in1_loc_63_we0; +reg [5:0] in2_loc_0_address0; +reg in2_loc_0_ce0; +reg in2_loc_0_we0; +reg [5:0] in2_loc_1_address0; +reg in2_loc_1_ce0; +reg in2_loc_1_we0; +reg [5:0] in2_loc_2_address0; +reg in2_loc_2_ce0; +reg in2_loc_2_we0; +reg [5:0] in2_loc_3_address0; +reg in2_loc_3_ce0; +reg in2_loc_3_we0; +reg [5:0] in2_loc_4_address0; +reg in2_loc_4_ce0; +reg in2_loc_4_we0; +reg [5:0] in2_loc_5_address0; +reg in2_loc_5_ce0; +reg in2_loc_5_we0; +reg [5:0] in2_loc_6_address0; +reg in2_loc_6_ce0; +reg in2_loc_6_we0; +reg [5:0] in2_loc_7_address0; +reg in2_loc_7_ce0; +reg in2_loc_7_we0; +reg [5:0] in2_loc_8_address0; +reg in2_loc_8_ce0; +reg in2_loc_8_we0; +reg [5:0] in2_loc_9_address0; +reg in2_loc_9_ce0; +reg in2_loc_9_we0; +reg [5:0] in2_loc_10_address0; +reg in2_loc_10_ce0; +reg in2_loc_10_we0; +reg [5:0] in2_loc_11_address0; +reg in2_loc_11_ce0; +reg in2_loc_11_we0; +reg [5:0] in2_loc_12_address0; +reg in2_loc_12_ce0; +reg in2_loc_12_we0; +reg [5:0] in2_loc_13_address0; +reg in2_loc_13_ce0; +reg in2_loc_13_we0; +reg [5:0] in2_loc_14_address0; +reg in2_loc_14_ce0; +reg in2_loc_14_we0; +reg [5:0] in2_loc_15_address0; +reg in2_loc_15_ce0; +reg in2_loc_15_we0; +reg [5:0] in2_loc_16_address0; +reg in2_loc_16_ce0; +reg in2_loc_16_we0; +reg [5:0] in2_loc_17_address0; +reg in2_loc_17_ce0; +reg in2_loc_17_we0; +reg [5:0] in2_loc_18_address0; +reg in2_loc_18_ce0; +reg in2_loc_18_we0; +reg [5:0] in2_loc_19_address0; +reg in2_loc_19_ce0; +reg in2_loc_19_we0; +reg [5:0] in2_loc_20_address0; +reg in2_loc_20_ce0; +reg in2_loc_20_we0; +reg [5:0] in2_loc_21_address0; +reg in2_loc_21_ce0; +reg in2_loc_21_we0; +reg [5:0] in2_loc_22_address0; +reg in2_loc_22_ce0; +reg in2_loc_22_we0; +reg [5:0] in2_loc_23_address0; +reg in2_loc_23_ce0; +reg in2_loc_23_we0; +reg [5:0] in2_loc_24_address0; +reg in2_loc_24_ce0; +reg in2_loc_24_we0; +reg [5:0] in2_loc_25_address0; +reg in2_loc_25_ce0; +reg in2_loc_25_we0; +reg [5:0] in2_loc_26_address0; +reg in2_loc_26_ce0; +reg in2_loc_26_we0; +reg [5:0] in2_loc_27_address0; +reg in2_loc_27_ce0; +reg in2_loc_27_we0; +reg [5:0] in2_loc_28_address0; +reg in2_loc_28_ce0; +reg in2_loc_28_we0; +reg [5:0] in2_loc_29_address0; +reg in2_loc_29_ce0; +reg in2_loc_29_we0; +reg [5:0] in2_loc_30_address0; +reg in2_loc_30_ce0; +reg in2_loc_30_we0; +reg [5:0] in2_loc_31_address0; +reg in2_loc_31_ce0; +reg in2_loc_31_we0; +reg [5:0] in2_loc_32_address0; +reg in2_loc_32_ce0; +reg in2_loc_32_we0; +reg [5:0] in2_loc_33_address0; +reg in2_loc_33_ce0; +reg in2_loc_33_we0; +reg [5:0] in2_loc_34_address0; +reg in2_loc_34_ce0; +reg in2_loc_34_we0; +reg [5:0] in2_loc_35_address0; +reg in2_loc_35_ce0; +reg in2_loc_35_we0; +reg [5:0] in2_loc_36_address0; +reg in2_loc_36_ce0; +reg in2_loc_36_we0; +reg [5:0] in2_loc_37_address0; +reg in2_loc_37_ce0; +reg in2_loc_37_we0; +reg [5:0] in2_loc_38_address0; +reg in2_loc_38_ce0; +reg in2_loc_38_we0; +reg [5:0] in2_loc_39_address0; +reg in2_loc_39_ce0; +reg in2_loc_39_we0; +reg [5:0] in2_loc_40_address0; +reg in2_loc_40_ce0; +reg in2_loc_40_we0; +reg [5:0] in2_loc_41_address0; +reg in2_loc_41_ce0; +reg in2_loc_41_we0; +reg [5:0] in2_loc_42_address0; +reg in2_loc_42_ce0; +reg in2_loc_42_we0; +reg [5:0] in2_loc_43_address0; +reg in2_loc_43_ce0; +reg in2_loc_43_we0; +reg [5:0] in2_loc_44_address0; +reg in2_loc_44_ce0; +reg in2_loc_44_we0; +reg [5:0] in2_loc_45_address0; +reg in2_loc_45_ce0; +reg in2_loc_45_we0; +reg [5:0] in2_loc_46_address0; +reg in2_loc_46_ce0; +reg in2_loc_46_we0; +reg [5:0] in2_loc_47_address0; +reg in2_loc_47_ce0; +reg in2_loc_47_we0; +reg [5:0] in2_loc_48_address0; +reg in2_loc_48_ce0; +reg in2_loc_48_we0; +reg [5:0] in2_loc_49_address0; +reg in2_loc_49_ce0; +reg in2_loc_49_we0; +reg [5:0] in2_loc_50_address0; +reg in2_loc_50_ce0; +reg in2_loc_50_we0; +reg [5:0] in2_loc_51_address0; +reg in2_loc_51_ce0; +reg in2_loc_51_we0; +reg [5:0] in2_loc_52_address0; +reg in2_loc_52_ce0; +reg in2_loc_52_we0; +reg [5:0] in2_loc_53_address0; +reg in2_loc_53_ce0; +reg in2_loc_53_we0; +reg [5:0] in2_loc_54_address0; +reg in2_loc_54_ce0; +reg in2_loc_54_we0; +reg [5:0] in2_loc_55_address0; +reg in2_loc_55_ce0; +reg in2_loc_55_we0; +reg [5:0] in2_loc_56_address0; +reg in2_loc_56_ce0; +reg in2_loc_56_we0; +reg [5:0] in2_loc_57_address0; +reg in2_loc_57_ce0; +reg in2_loc_57_we0; +reg [5:0] in2_loc_58_address0; +reg in2_loc_58_ce0; +reg in2_loc_58_we0; +reg [5:0] in2_loc_59_address0; +reg in2_loc_59_ce0; +reg in2_loc_59_we0; +reg [5:0] in2_loc_60_address0; +reg in2_loc_60_ce0; +reg in2_loc_60_we0; +reg [5:0] in2_loc_61_address0; +reg in2_loc_61_ce0; +reg in2_loc_61_we0; +reg [5:0] in2_loc_62_address0; +reg in2_loc_62_ce0; +reg in2_loc_62_we0; +reg [5:0] in2_loc_63_address0; +reg in2_loc_63_ce0; +reg in2_loc_63_we0; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_ce1; +reg out_loc_we1; +wire [31:0] out_loc_d1; +reg [30:0] ap_phi_mux_i_0_phi_fu_3333_p4; +wire ap_block_pp2_stage0; +wire [63:0] zext_ln27_fu_3446_p1; +wire [63:0] zext_ln28_fu_3539_p1; +wire [63:0] zext_ln38_fu_3797_p1; +wire [63:0] zext_ln42_fu_4385_p1; +wire [63:0] empty_8_fu_3392_p1; +wire [63:0] empty_fu_3402_p1; +wire [63:0] empty_7_fu_3411_p1; +wire ap_block_pp3_stage0_01001; +wire [31:0] mul_ln31_fu_3609_p0; +wire [63:0] zext_ln31_fu_3606_p1; +wire [31:0] mul_ln31_fu_3609_p1; +wire [0:0] icmp_ln33_fu_3632_p2; +wire [30:0] i_fu_3626_p2; +wire [7:0] trunc_ln38_fu_3653_p1; +wire signed [31:0] select_ln31_fu_3637_p3; +wire [13:0] tmp_cast_fu_3657_p3; +wire [13:0] trunc_ln38_1_fu_3787_p1; +wire [13:0] add_ln38_64_fu_3791_p2; +wire [31:0] add_ln38_fu_4064_p2; +wire [31:0] add_ln38_1_fu_4069_p2; +wire [31:0] add_ln38_3_fu_4079_p2; +wire [31:0] add_ln38_4_fu_4083_p2; +wire [31:0] add_ln38_2_fu_4073_p2; +wire [31:0] add_ln38_5_fu_4087_p2; +wire [31:0] add_ln38_7_fu_4099_p2; +wire [31:0] add_ln38_8_fu_4103_p2; +wire [31:0] add_ln38_10_fu_4113_p2; +wire [31:0] add_ln38_11_fu_4117_p2; +wire [31:0] add_ln38_15_fu_4127_p2; +wire [31:0] add_ln38_16_fu_4131_p2; +wire [31:0] add_ln38_18_fu_4141_p2; +wire [31:0] add_ln38_19_fu_4145_p2; +wire [31:0] add_ln38_17_fu_4135_p2; +wire [31:0] add_ln38_20_fu_4149_p2; +wire [31:0] add_ln38_22_fu_4161_p2; +wire [31:0] add_ln38_23_fu_4165_p2; +wire [31:0] add_ln38_25_fu_4175_p2; +wire [31:0] add_ln38_26_fu_4179_p2; +wire [31:0] add_ln38_24_fu_4169_p2; +wire [31:0] add_ln38_27_fu_4183_p2; +wire [31:0] add_ln38_31_fu_4195_p2; +wire [31:0] add_ln38_32_fu_4199_p2; +wire [31:0] add_ln38_34_fu_4209_p2; +wire [31:0] add_ln38_35_fu_4213_p2; +wire [31:0] add_ln38_33_fu_4203_p2; +wire [31:0] add_ln38_36_fu_4217_p2; +wire [31:0] add_ln38_46_fu_4237_p2; +wire [31:0] add_ln38_47_fu_4241_p2; +wire [31:0] add_ln38_49_fu_4251_p2; +wire [31:0] add_ln38_50_fu_4255_p2; +wire [31:0] add_ln38_48_fu_4245_p2; +wire [31:0] add_ln38_51_fu_4259_p2; +wire [31:0] add_ln38_13_fu_4283_p2; +wire [31:0] add_ln38_14_fu_4287_p2; +wire [31:0] add_ln38_29_fu_4292_p2; +wire [31:0] add_ln38_39_fu_4302_p2; +wire [31:0] add_ln38_42_fu_4311_p2; +wire [31:0] add_ln38_40_fu_4306_p2; +wire [31:0] add_ln38_43_fu_4315_p2; +wire [31:0] add_ln38_44_fu_4320_p2; +wire [31:0] add_ln38_54_fu_4331_p2; +wire [31:0] add_ln38_58_fu_4340_p2; +wire [31:0] add_ln38_55_fu_4335_p2; +wire [31:0] add_ln38_59_fu_4344_p2; +wire [31:0] add_ln38_60_fu_4349_p2; +wire [31:0] add_ln38_45_fu_4326_p2; +wire [31:0] add_ln38_61_fu_4355_p2; +wire [31:0] add_ln38_30_fu_4296_p2; +wire [31:0] add_ln38_62_fu_4360_p2; +reg [25:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp2; +wire ap_enable_pp2; +reg ap_idle_pp3; +wire ap_enable_pp3; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 26'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp3_iter2 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter1 = 1'b0; +#0 ap_enable_reg_pp2_iter2 = 1'b0; +#0 ap_enable_reg_pp3_iter0 = 1'b0; +#0 ap_enable_reg_pp3_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +#0 ap_enable_reg_pp2_iter3 = 1'b0; +#0 ap_enable_reg_pp2_iter4 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_4423), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_4417), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(out_loc_load_reg_6327), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_0_address0), + .ce0(in1_loc_0_ce0), + .we0(in1_loc_0_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_1_address0), + .ce0(in1_loc_1_ce0), + .we0(in1_loc_1_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_2_address0), + .ce0(in1_loc_2_ce0), + .we0(in1_loc_2_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_3_address0), + .ce0(in1_loc_3_ce0), + .we0(in1_loc_3_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_4_address0), + .ce0(in1_loc_4_ce0), + .we0(in1_loc_4_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_5_address0), + .ce0(in1_loc_5_ce0), + .we0(in1_loc_5_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_6_address0), + .ce0(in1_loc_6_ce0), + .we0(in1_loc_6_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_7_address0), + .ce0(in1_loc_7_ce0), + .we0(in1_loc_7_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_8_address0), + .ce0(in1_loc_8_ce0), + .we0(in1_loc_8_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_9_address0), + .ce0(in1_loc_9_ce0), + .we0(in1_loc_9_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_10_address0), + .ce0(in1_loc_10_ce0), + .we0(in1_loc_10_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_11_address0), + .ce0(in1_loc_11_ce0), + .we0(in1_loc_11_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_12_address0), + .ce0(in1_loc_12_ce0), + .we0(in1_loc_12_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_13_address0), + .ce0(in1_loc_13_ce0), + .we0(in1_loc_13_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_14_address0), + .ce0(in1_loc_14_ce0), + .we0(in1_loc_14_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_15_address0), + .ce0(in1_loc_15_ce0), + .we0(in1_loc_15_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_16_address0), + .ce0(in1_loc_16_ce0), + .we0(in1_loc_16_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_17_address0), + .ce0(in1_loc_17_ce0), + .we0(in1_loc_17_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_18_address0), + .ce0(in1_loc_18_ce0), + .we0(in1_loc_18_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_19_address0), + .ce0(in1_loc_19_ce0), + .we0(in1_loc_19_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_20_address0), + .ce0(in1_loc_20_ce0), + .we0(in1_loc_20_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_21_address0), + .ce0(in1_loc_21_ce0), + .we0(in1_loc_21_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_22_address0), + .ce0(in1_loc_22_ce0), + .we0(in1_loc_22_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_23_address0), + .ce0(in1_loc_23_ce0), + .we0(in1_loc_23_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_24_address0), + .ce0(in1_loc_24_ce0), + .we0(in1_loc_24_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_25_address0), + .ce0(in1_loc_25_ce0), + .we0(in1_loc_25_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_26_address0), + .ce0(in1_loc_26_ce0), + .we0(in1_loc_26_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_27_address0), + .ce0(in1_loc_27_ce0), + .we0(in1_loc_27_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_28_address0), + .ce0(in1_loc_28_ce0), + .we0(in1_loc_28_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_29_address0), + .ce0(in1_loc_29_ce0), + .we0(in1_loc_29_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_30_address0), + .ce0(in1_loc_30_ce0), + .we0(in1_loc_30_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_31_address0), + .ce0(in1_loc_31_ce0), + .we0(in1_loc_31_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_32_address0), + .ce0(in1_loc_32_ce0), + .we0(in1_loc_32_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_33_address0), + .ce0(in1_loc_33_ce0), + .we0(in1_loc_33_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_34_address0), + .ce0(in1_loc_34_ce0), + .we0(in1_loc_34_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_35_address0), + .ce0(in1_loc_35_ce0), + .we0(in1_loc_35_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_36_address0), + .ce0(in1_loc_36_ce0), + .we0(in1_loc_36_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_37_address0), + .ce0(in1_loc_37_ce0), + .we0(in1_loc_37_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_38_address0), + .ce0(in1_loc_38_ce0), + .we0(in1_loc_38_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_39_address0), + .ce0(in1_loc_39_ce0), + .we0(in1_loc_39_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_40_address0), + .ce0(in1_loc_40_ce0), + .we0(in1_loc_40_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_41_address0), + .ce0(in1_loc_41_ce0), + .we0(in1_loc_41_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_42_address0), + .ce0(in1_loc_42_ce0), + .we0(in1_loc_42_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_43_address0), + .ce0(in1_loc_43_ce0), + .we0(in1_loc_43_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_44_address0), + .ce0(in1_loc_44_ce0), + .we0(in1_loc_44_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_45_address0), + .ce0(in1_loc_45_ce0), + .we0(in1_loc_45_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_46_address0), + .ce0(in1_loc_46_ce0), + .we0(in1_loc_46_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_47_address0), + .ce0(in1_loc_47_ce0), + .we0(in1_loc_47_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_48_address0), + .ce0(in1_loc_48_ce0), + .we0(in1_loc_48_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_49_address0), + .ce0(in1_loc_49_ce0), + .we0(in1_loc_49_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_50_address0), + .ce0(in1_loc_50_ce0), + .we0(in1_loc_50_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_51_address0), + .ce0(in1_loc_51_ce0), + .we0(in1_loc_51_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_52_address0), + .ce0(in1_loc_52_ce0), + .we0(in1_loc_52_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_53_address0), + .ce0(in1_loc_53_ce0), + .we0(in1_loc_53_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_54_address0), + .ce0(in1_loc_54_ce0), + .we0(in1_loc_54_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_55_address0), + .ce0(in1_loc_55_ce0), + .we0(in1_loc_55_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_56_address0), + .ce0(in1_loc_56_ce0), + .we0(in1_loc_56_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_57_address0), + .ce0(in1_loc_57_ce0), + .we0(in1_loc_57_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_58_address0), + .ce0(in1_loc_58_ce0), + .we0(in1_loc_58_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_59_address0), + .ce0(in1_loc_59_ce0), + .we0(in1_loc_59_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_60_address0), + .ce0(in1_loc_60_ce0), + .we0(in1_loc_60_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_61_address0), + .ce0(in1_loc_61_ce0), + .we0(in1_loc_61_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_62_address0), + .ce0(in1_loc_62_ce0), + .we0(in1_loc_62_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_63_address0), + .ce0(in1_loc_63_ce0), + .we0(in1_loc_63_we0), + .d0(in1_mem_addr_read_reg_4447), + .q0(in1_loc_63_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_0_address0), + .ce0(in2_loc_0_ce0), + .we0(in2_loc_0_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_1_address0), + .ce0(in2_loc_1_ce0), + .we0(in2_loc_1_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_2_address0), + .ce0(in2_loc_2_ce0), + .we0(in2_loc_2_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_3_address0), + .ce0(in2_loc_3_ce0), + .we0(in2_loc_3_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_4_address0), + .ce0(in2_loc_4_ce0), + .we0(in2_loc_4_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_5_address0), + .ce0(in2_loc_5_ce0), + .we0(in2_loc_5_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_6_address0), + .ce0(in2_loc_6_ce0), + .we0(in2_loc_6_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_7_address0), + .ce0(in2_loc_7_ce0), + .we0(in2_loc_7_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_8_address0), + .ce0(in2_loc_8_ce0), + .we0(in2_loc_8_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_9_address0), + .ce0(in2_loc_9_ce0), + .we0(in2_loc_9_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_10_address0), + .ce0(in2_loc_10_ce0), + .we0(in2_loc_10_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_11_address0), + .ce0(in2_loc_11_ce0), + .we0(in2_loc_11_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_12_address0), + .ce0(in2_loc_12_ce0), + .we0(in2_loc_12_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_13_address0), + .ce0(in2_loc_13_ce0), + .we0(in2_loc_13_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_14_address0), + .ce0(in2_loc_14_ce0), + .we0(in2_loc_14_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_15_address0), + .ce0(in2_loc_15_ce0), + .we0(in2_loc_15_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_16_address0), + .ce0(in2_loc_16_ce0), + .we0(in2_loc_16_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_17_address0), + .ce0(in2_loc_17_ce0), + .we0(in2_loc_17_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_18_address0), + .ce0(in2_loc_18_ce0), + .we0(in2_loc_18_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_19_address0), + .ce0(in2_loc_19_ce0), + .we0(in2_loc_19_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_20_address0), + .ce0(in2_loc_20_ce0), + .we0(in2_loc_20_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_21_address0), + .ce0(in2_loc_21_ce0), + .we0(in2_loc_21_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_22_address0), + .ce0(in2_loc_22_ce0), + .we0(in2_loc_22_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_23_address0), + .ce0(in2_loc_23_ce0), + .we0(in2_loc_23_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_24_address0), + .ce0(in2_loc_24_ce0), + .we0(in2_loc_24_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_25_address0), + .ce0(in2_loc_25_ce0), + .we0(in2_loc_25_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_26_address0), + .ce0(in2_loc_26_ce0), + .we0(in2_loc_26_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_27_address0), + .ce0(in2_loc_27_ce0), + .we0(in2_loc_27_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_28_address0), + .ce0(in2_loc_28_ce0), + .we0(in2_loc_28_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_29_address0), + .ce0(in2_loc_29_ce0), + .we0(in2_loc_29_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_30_address0), + .ce0(in2_loc_30_ce0), + .we0(in2_loc_30_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_31_address0), + .ce0(in2_loc_31_ce0), + .we0(in2_loc_31_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_32_address0), + .ce0(in2_loc_32_ce0), + .we0(in2_loc_32_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_33_address0), + .ce0(in2_loc_33_ce0), + .we0(in2_loc_33_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_34_address0), + .ce0(in2_loc_34_ce0), + .we0(in2_loc_34_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_35_address0), + .ce0(in2_loc_35_ce0), + .we0(in2_loc_35_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_36_address0), + .ce0(in2_loc_36_ce0), + .we0(in2_loc_36_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_37_address0), + .ce0(in2_loc_37_ce0), + .we0(in2_loc_37_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_38_address0), + .ce0(in2_loc_38_ce0), + .we0(in2_loc_38_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_39_address0), + .ce0(in2_loc_39_ce0), + .we0(in2_loc_39_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_40_address0), + .ce0(in2_loc_40_ce0), + .we0(in2_loc_40_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_41_address0), + .ce0(in2_loc_41_ce0), + .we0(in2_loc_41_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_42_address0), + .ce0(in2_loc_42_ce0), + .we0(in2_loc_42_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_43_address0), + .ce0(in2_loc_43_ce0), + .we0(in2_loc_43_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_44_address0), + .ce0(in2_loc_44_ce0), + .we0(in2_loc_44_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_45_address0), + .ce0(in2_loc_45_ce0), + .we0(in2_loc_45_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_46_address0), + .ce0(in2_loc_46_ce0), + .we0(in2_loc_46_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_47_address0), + .ce0(in2_loc_47_ce0), + .we0(in2_loc_47_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_48_address0), + .ce0(in2_loc_48_ce0), + .we0(in2_loc_48_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_49_address0), + .ce0(in2_loc_49_ce0), + .we0(in2_loc_49_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_50_address0), + .ce0(in2_loc_50_ce0), + .we0(in2_loc_50_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_51_address0), + .ce0(in2_loc_51_ce0), + .we0(in2_loc_51_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_52_address0), + .ce0(in2_loc_52_ce0), + .we0(in2_loc_52_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_53_address0), + .ce0(in2_loc_53_ce0), + .we0(in2_loc_53_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_54_address0), + .ce0(in2_loc_54_ce0), + .we0(in2_loc_54_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_55_address0), + .ce0(in2_loc_55_ce0), + .we0(in2_loc_55_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_56_address0), + .ce0(in2_loc_56_ce0), + .we0(in2_loc_56_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_57_address0), + .ce0(in2_loc_57_ce0), + .we0(in2_loc_57_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_58_address0), + .ce0(in2_loc_58_ce0), + .we0(in2_loc_58_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_59_address0), + .ce0(in2_loc_59_ce0), + .we0(in2_loc_59_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_60_address0), + .ce0(in2_loc_60_ce0), + .we0(in2_loc_60_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_61_address0), + .ce0(in2_loc_61_ce0), + .we0(in2_loc_61_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_62_address0), + .ce0(in2_loc_62_ce0), + .we0(in2_loc_62_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_63_address0), + .ce0(in2_loc_63_ce0), + .we0(in2_loc_63_we0), + .d0(in2_mem_addr_read_reg_4533), + .q0(in2_loc_63_q0) +); + +mmult_out_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .q0(out_loc_q0), + .address1(out_loc_addr_reg_4927_pp2_iter3_reg), + .ce1(out_loc_ce1), + .we1(out_loc_we1), + .d1(out_loc_d1) +); + +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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp0_stage0) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b0 == ap_block_pp0_stage0_subdone))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp1_stage0) & (1'b1 == ap_condition_pp1_exit_iter0_state19) & (1'b0 == ap_block_pp1_stage0_subdone))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp2_stage0) & (1'b1 == ap_condition_pp2_exit_iter0_state23) & (1'b0 == ap_block_pp2_stage0_subdone))) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + ap_enable_reg_pp2_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp2_exit_iter0_state23)) begin + ap_enable_reg_pp2_iter1 <= (1'b1 ^ ap_condition_pp2_exit_iter0_state23); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter3 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter3 <= ap_enable_reg_pp2_iter2; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter4 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter4 <= ap_enable_reg_pp2_iter3; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + ap_enable_reg_pp2_iter4 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_condition_pp3_exit_iter0_state29) & (1'b1 == ap_CS_fsm_pp3_stage0) & (1'b0 == ap_block_pp3_stage0_subdone))) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state28))) begin + ap_enable_reg_pp3_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp3_exit_iter0_state29)) begin + ap_enable_reg_pp3_iter1 <= (1'b1 ^ ap_condition_pp3_exit_iter0_state29); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state28))) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606 == 1'd0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + i_0_reg_3329 <= select_ln31_1_reg_4615; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + i_0_reg_3329 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + indvar_flatten_reg_3318 <= add_ln31_fu_3620_p2; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + indvar_flatten_reg_3318 <= 64'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + j_0_reg_3340 <= j_fu_3802_p2; + end else if ((1'b1 == ap_CS_fsm_state22)) begin + j_0_reg_3340 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3420_p2 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_3296 <= add_ln27_fu_3426_p2; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_3296 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_3307 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3513_p2 == 1'd0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_3307 <= add_ln28_fu_3519_p2; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state28))) begin + phi_ln42_reg_3351 <= 13'd0; + end else if (((icmp_ln42_fu_4373_p2 == 1'd0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0) & (1'b0 == ap_block_pp3_stage0_11001))) begin + phi_ln42_reg_3351 <= add_ln42_fu_4379_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606_pp2_iter2_reg == 1'd0))) begin + add_ln38_12_reg_6263 <= add_ln38_12_fu_4121_p2; + add_ln38_21_reg_6268 <= add_ln38_21_fu_4155_p2; + add_ln38_28_reg_6273 <= add_ln38_28_fu_4189_p2; + add_ln38_37_reg_6278 <= add_ln38_37_fu_4223_p2; + add_ln38_38_reg_6283 <= add_ln38_38_fu_4229_p2; + add_ln38_41_reg_6288 <= add_ln38_41_fu_4233_p2; + add_ln38_52_reg_6293 <= add_ln38_52_fu_4265_p2; + add_ln38_53_reg_6298 <= add_ln38_53_fu_4271_p2; + add_ln38_56_reg_6303 <= add_ln38_56_fu_4275_p2; + add_ln38_57_reg_6308 <= add_ln38_57_fu_4279_p2; + add_ln38_6_reg_6253 <= add_ln38_6_fu_4093_p2; + add_ln38_9_reg_6258 <= add_ln38_9_fu_4107_p2; + mul_ln38_41_reg_6218 <= mul_ln38_41_fu_4036_p2; + mul_ln38_42_reg_6223 <= mul_ln38_42_fu_4040_p2; + mul_ln38_45_reg_6228 <= mul_ln38_45_fu_4044_p2; + mul_ln38_46_reg_6233 <= mul_ln38_46_fu_4048_p2; + mul_ln38_57_reg_6238 <= mul_ln38_57_fu_4052_p2; + mul_ln38_58_reg_6243 <= mul_ln38_58_fu_4056_p2; + mul_ln38_61_reg_6248 <= mul_ln38_61_fu_4060_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_4390 <= dim; + in3_reg_4406 <= {{in1[31:2]}}; + in_reg_4401 <= {{in2[31:2]}}; + out5_reg_4396 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + icmp_ln31_reg_4606 <= icmp_ln31_fu_3615_p2; + icmp_ln31_reg_4606_pp2_iter1_reg <= icmp_ln31_reg_4606; + out_loc_addr_reg_4927_pp2_iter1_reg <= out_loc_addr_reg_4927; + end +end + +always @ (posedge ap_clk) begin + if ((1'b0 == ap_block_pp2_stage0_11001)) begin + icmp_ln31_reg_4606_pp2_iter2_reg <= icmp_ln31_reg_4606_pp2_iter1_reg; + icmp_ln31_reg_4606_pp2_iter3_reg <= icmp_ln31_reg_4606_pp2_iter2_reg; + out_loc_addr_reg_4927_pp2_iter2_reg <= out_loc_addr_reg_4927_pp2_iter1_reg; + out_loc_addr_reg_4927_pp2_iter3_reg <= out_loc_addr_reg_4927_pp2_iter2_reg; + end +end + +always @ (posedge ap_clk) begin + if (((1'b1 == ap_CS_fsm_pp3_stage0) & (1'b0 == ap_block_pp3_stage0_11001))) begin + icmp_ln42_reg_6313 <= icmp_ln42_fu_4373_p2; + icmp_ln42_reg_6313_pp3_iter1_reg <= icmp_ln42_reg_6313; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606 == 1'd0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_0_load_reg_5223 <= in1_loc_0_q0; + in1_loc_10_load_reg_5273 <= in1_loc_10_q0; + in1_loc_11_load_reg_5278 <= in1_loc_11_q0; + in1_loc_12_load_reg_5283 <= in1_loc_12_q0; + in1_loc_13_load_reg_5288 <= in1_loc_13_q0; + in1_loc_14_load_reg_5293 <= in1_loc_14_q0; + in1_loc_15_load_reg_5298 <= in1_loc_15_q0; + in1_loc_16_load_reg_5303 <= in1_loc_16_q0; + in1_loc_17_load_reg_5308 <= in1_loc_17_q0; + in1_loc_18_load_reg_5313 <= in1_loc_18_q0; + in1_loc_19_load_reg_5318 <= in1_loc_19_q0; + in1_loc_1_load_reg_5228 <= in1_loc_1_q0; + in1_loc_20_load_reg_5323 <= in1_loc_20_q0; + in1_loc_21_load_reg_5328 <= in1_loc_21_q0; + in1_loc_22_load_reg_5333 <= in1_loc_22_q0; + in1_loc_23_load_reg_5338 <= in1_loc_23_q0; + in1_loc_24_load_reg_5343 <= in1_loc_24_q0; + in1_loc_25_load_reg_5348 <= in1_loc_25_q0; + in1_loc_26_load_reg_5353 <= in1_loc_26_q0; + in1_loc_27_load_reg_5358 <= in1_loc_27_q0; + in1_loc_28_load_reg_5363 <= in1_loc_28_q0; + in1_loc_29_load_reg_5368 <= in1_loc_29_q0; + in1_loc_2_load_reg_5233 <= in1_loc_2_q0; + in1_loc_30_load_reg_5373 <= in1_loc_30_q0; + in1_loc_31_load_reg_5378 <= in1_loc_31_q0; + in1_loc_32_load_reg_5383 <= in1_loc_32_q0; + in1_loc_33_load_reg_5388 <= in1_loc_33_q0; + in1_loc_34_load_reg_5393 <= in1_loc_34_q0; + in1_loc_35_load_reg_5398 <= in1_loc_35_q0; + in1_loc_36_load_reg_5403 <= in1_loc_36_q0; + in1_loc_37_load_reg_5408 <= in1_loc_37_q0; + in1_loc_38_load_reg_5413 <= in1_loc_38_q0; + in1_loc_39_load_reg_5418 <= in1_loc_39_q0; + in1_loc_3_load_reg_5238 <= in1_loc_3_q0; + in1_loc_40_load_reg_5423 <= in1_loc_40_q0; + in1_loc_43_load_reg_5438 <= in1_loc_43_q0; + in1_loc_44_load_reg_5443 <= in1_loc_44_q0; + in1_loc_47_load_reg_5458 <= in1_loc_47_q0; + in1_loc_48_load_reg_5463 <= in1_loc_48_q0; + in1_loc_49_load_reg_5468 <= in1_loc_49_q0; + in1_loc_4_load_reg_5243 <= in1_loc_4_q0; + in1_loc_50_load_reg_5473 <= in1_loc_50_q0; + in1_loc_51_load_reg_5478 <= in1_loc_51_q0; + in1_loc_52_load_reg_5483 <= in1_loc_52_q0; + in1_loc_53_load_reg_5488 <= in1_loc_53_q0; + in1_loc_54_load_reg_5493 <= in1_loc_54_q0; + in1_loc_55_load_reg_5498 <= in1_loc_55_q0; + in1_loc_56_load_reg_5503 <= in1_loc_56_q0; + in1_loc_59_load_reg_5518 <= in1_loc_59_q0; + in1_loc_5_load_reg_5248 <= in1_loc_5_q0; + in1_loc_60_load_reg_5523 <= in1_loc_60_q0; + in1_loc_62_load_reg_5533 <= in1_loc_62_q0; + in1_loc_63_load_reg_5538 <= in1_loc_63_q0; + in1_loc_6_load_reg_5253 <= in1_loc_6_q0; + in1_loc_7_load_reg_5258 <= in1_loc_7_q0; + in1_loc_8_load_reg_5263 <= in1_loc_8_q0; + in1_loc_9_load_reg_5268 <= in1_loc_9_q0; + in2_loc_0_load_reg_5543 <= in2_loc_0_q0; + in2_loc_10_load_reg_5593 <= in2_loc_10_q0; + in2_loc_11_load_reg_5598 <= in2_loc_11_q0; + in2_loc_12_load_reg_5603 <= in2_loc_12_q0; + in2_loc_13_load_reg_5608 <= in2_loc_13_q0; + in2_loc_14_load_reg_5613 <= in2_loc_14_q0; + in2_loc_15_load_reg_5618 <= in2_loc_15_q0; + in2_loc_16_load_reg_5623 <= in2_loc_16_q0; + in2_loc_17_load_reg_5628 <= in2_loc_17_q0; + in2_loc_18_load_reg_5633 <= in2_loc_18_q0; + in2_loc_19_load_reg_5638 <= in2_loc_19_q0; + in2_loc_1_load_reg_5548 <= in2_loc_1_q0; + in2_loc_20_load_reg_5643 <= in2_loc_20_q0; + in2_loc_21_load_reg_5648 <= in2_loc_21_q0; + in2_loc_22_load_reg_5653 <= in2_loc_22_q0; + in2_loc_23_load_reg_5658 <= in2_loc_23_q0; + in2_loc_24_load_reg_5663 <= in2_loc_24_q0; + in2_loc_25_load_reg_5668 <= in2_loc_25_q0; + in2_loc_26_load_reg_5673 <= in2_loc_26_q0; + in2_loc_27_load_reg_5678 <= in2_loc_27_q0; + in2_loc_28_load_reg_5683 <= in2_loc_28_q0; + in2_loc_29_load_reg_5688 <= in2_loc_29_q0; + in2_loc_2_load_reg_5553 <= in2_loc_2_q0; + in2_loc_30_load_reg_5693 <= in2_loc_30_q0; + in2_loc_31_load_reg_5698 <= in2_loc_31_q0; + in2_loc_32_load_reg_5703 <= in2_loc_32_q0; + in2_loc_33_load_reg_5708 <= in2_loc_33_q0; + in2_loc_34_load_reg_5713 <= in2_loc_34_q0; + in2_loc_35_load_reg_5718 <= in2_loc_35_q0; + in2_loc_36_load_reg_5723 <= in2_loc_36_q0; + in2_loc_37_load_reg_5728 <= in2_loc_37_q0; + in2_loc_38_load_reg_5733 <= in2_loc_38_q0; + in2_loc_39_load_reg_5738 <= in2_loc_39_q0; + in2_loc_3_load_reg_5558 <= in2_loc_3_q0; + in2_loc_40_load_reg_5743 <= in2_loc_40_q0; + in2_loc_43_load_reg_5758 <= in2_loc_43_q0; + in2_loc_44_load_reg_5763 <= in2_loc_44_q0; + in2_loc_47_load_reg_5778 <= in2_loc_47_q0; + in2_loc_48_load_reg_5783 <= in2_loc_48_q0; + in2_loc_49_load_reg_5788 <= in2_loc_49_q0; + in2_loc_4_load_reg_5563 <= in2_loc_4_q0; + in2_loc_50_load_reg_5793 <= in2_loc_50_q0; + in2_loc_51_load_reg_5798 <= in2_loc_51_q0; + in2_loc_52_load_reg_5803 <= in2_loc_52_q0; + in2_loc_53_load_reg_5808 <= in2_loc_53_q0; + in2_loc_54_load_reg_5813 <= in2_loc_54_q0; + in2_loc_55_load_reg_5818 <= in2_loc_55_q0; + in2_loc_56_load_reg_5823 <= in2_loc_56_q0; + in2_loc_59_load_reg_5838 <= in2_loc_59_q0; + in2_loc_5_load_reg_5568 <= in2_loc_5_q0; + in2_loc_60_load_reg_5843 <= in2_loc_60_q0; + in2_loc_62_load_reg_5853 <= in2_loc_62_q0; + in2_loc_63_load_reg_5858 <= in2_loc_63_q0; + in2_loc_6_load_reg_5573 <= in2_loc_6_q0; + in2_loc_7_load_reg_5578 <= in2_loc_7_q0; + in2_loc_8_load_reg_5583 <= in2_loc_8_q0; + in2_loc_9_load_reg_5588 <= in2_loc_9_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_41_load_reg_5863 <= in1_loc_41_q0; + in1_loc_42_load_reg_5868 <= in1_loc_42_q0; + in1_loc_45_load_reg_5873 <= in1_loc_45_q0; + in1_loc_46_load_reg_5878 <= in1_loc_46_q0; + in1_loc_57_load_reg_5883 <= in1_loc_57_q0; + in1_loc_58_load_reg_5888 <= in1_loc_58_q0; + in1_loc_61_load_reg_5893 <= in1_loc_61_q0; + in2_loc_41_load_reg_6103 <= in2_loc_41_q0; + in2_loc_42_load_reg_6108 <= in2_loc_42_q0; + in2_loc_45_load_reg_6123 <= in2_loc_45_q0; + in2_loc_46_load_reg_6128 <= in2_loc_46_q0; + in2_loc_57_load_reg_6183 <= in2_loc_57_q0; + in2_loc_58_load_reg_6188 <= in2_loc_58_q0; + in2_loc_61_load_reg_6203 <= in2_loc_61_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_4447 <= in1_mem_RDATA; + lshr_ln_reg_4438_pp0_iter1_reg <= lshr_ln_reg_4438; + trunc_ln27_reg_4443_pp0_iter1_reg <= trunc_ln27_reg_4443; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_4533 <= in2_mem_RDATA; + trunc_ln1_reg_4529_pp1_iter1_reg <= trunc_ln1_reg_4529; + trunc_ln28_reg_4524_pp1_iter1_reg <= trunc_ln28_reg_4524; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_4423[29 : 0] <= empty_7_fu_3411_p1[29 : 0]; + out_mem_addr_reg_4417[29 : 0] <= empty_fu_3402_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3420_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + lshr_ln_reg_4438 <= {{phi_ln27_reg_3296[12:6]}}; + trunc_ln27_reg_4443 <= trunc_ln27_fu_3442_p1; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state22)) begin + mul_ln31_reg_4601 <= mul_ln31_fu_3609_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606_pp2_iter1_reg == 1'd0))) begin + mul_ln38_10_reg_5948 <= mul_ln38_10_fu_3848_p2; + mul_ln38_11_reg_5953 <= mul_ln38_11_fu_3852_p2; + mul_ln38_12_reg_5958 <= mul_ln38_12_fu_3856_p2; + mul_ln38_13_reg_5963 <= mul_ln38_13_fu_3860_p2; + mul_ln38_14_reg_5968 <= mul_ln38_14_fu_3864_p2; + mul_ln38_15_reg_5973 <= mul_ln38_15_fu_3868_p2; + mul_ln38_16_reg_5978 <= mul_ln38_16_fu_3872_p2; + mul_ln38_17_reg_5983 <= mul_ln38_17_fu_3876_p2; + mul_ln38_18_reg_5988 <= mul_ln38_18_fu_3880_p2; + mul_ln38_19_reg_5993 <= mul_ln38_19_fu_3884_p2; + mul_ln38_1_reg_5903 <= mul_ln38_1_fu_3812_p2; + mul_ln38_20_reg_5998 <= mul_ln38_20_fu_3888_p2; + mul_ln38_21_reg_6003 <= mul_ln38_21_fu_3892_p2; + mul_ln38_22_reg_6008 <= mul_ln38_22_fu_3896_p2; + mul_ln38_23_reg_6013 <= mul_ln38_23_fu_3900_p2; + mul_ln38_24_reg_6018 <= mul_ln38_24_fu_3904_p2; + mul_ln38_25_reg_6023 <= mul_ln38_25_fu_3908_p2; + mul_ln38_26_reg_6028 <= mul_ln38_26_fu_3912_p2; + mul_ln38_27_reg_6033 <= mul_ln38_27_fu_3916_p2; + mul_ln38_28_reg_6038 <= mul_ln38_28_fu_3920_p2; + mul_ln38_29_reg_6043 <= mul_ln38_29_fu_3924_p2; + mul_ln38_2_reg_5908 <= mul_ln38_2_fu_3816_p2; + mul_ln38_30_reg_6048 <= mul_ln38_30_fu_3928_p2; + mul_ln38_31_reg_6053 <= mul_ln38_31_fu_3932_p2; + mul_ln38_32_reg_6058 <= mul_ln38_32_fu_3936_p2; + mul_ln38_33_reg_6063 <= mul_ln38_33_fu_3940_p2; + mul_ln38_34_reg_6068 <= mul_ln38_34_fu_3944_p2; + mul_ln38_35_reg_6073 <= mul_ln38_35_fu_3948_p2; + mul_ln38_36_reg_6078 <= mul_ln38_36_fu_3952_p2; + mul_ln38_37_reg_6083 <= mul_ln38_37_fu_3956_p2; + mul_ln38_38_reg_6088 <= mul_ln38_38_fu_3960_p2; + mul_ln38_39_reg_6093 <= mul_ln38_39_fu_3964_p2; + mul_ln38_3_reg_5913 <= mul_ln38_3_fu_3820_p2; + mul_ln38_40_reg_6098 <= mul_ln38_40_fu_3968_p2; + mul_ln38_43_reg_6113 <= mul_ln38_43_fu_3972_p2; + mul_ln38_44_reg_6118 <= mul_ln38_44_fu_3976_p2; + mul_ln38_47_reg_6133 <= mul_ln38_47_fu_3980_p2; + mul_ln38_48_reg_6138 <= mul_ln38_48_fu_3984_p2; + mul_ln38_49_reg_6143 <= mul_ln38_49_fu_3988_p2; + mul_ln38_4_reg_5918 <= mul_ln38_4_fu_3824_p2; + mul_ln38_50_reg_6148 <= mul_ln38_50_fu_3992_p2; + mul_ln38_51_reg_6153 <= mul_ln38_51_fu_3996_p2; + mul_ln38_52_reg_6158 <= mul_ln38_52_fu_4000_p2; + mul_ln38_53_reg_6163 <= mul_ln38_53_fu_4004_p2; + mul_ln38_54_reg_6168 <= mul_ln38_54_fu_4008_p2; + mul_ln38_55_reg_6173 <= mul_ln38_55_fu_4012_p2; + mul_ln38_56_reg_6178 <= mul_ln38_56_fu_4016_p2; + mul_ln38_59_reg_6193 <= mul_ln38_59_fu_4020_p2; + mul_ln38_5_reg_5923 <= mul_ln38_5_fu_3828_p2; + mul_ln38_60_reg_6198 <= mul_ln38_60_fu_4024_p2; + mul_ln38_62_reg_6208 <= mul_ln38_62_fu_4028_p2; + mul_ln38_63_reg_6213 <= mul_ln38_63_fu_4032_p2; + mul_ln38_6_reg_5928 <= mul_ln38_6_fu_3832_p2; + mul_ln38_7_reg_5933 <= mul_ln38_7_fu_3836_p2; + mul_ln38_8_reg_5938 <= mul_ln38_8_fu_3840_p2; + mul_ln38_9_reg_5943 <= mul_ln38_9_fu_3844_p2; + mul_ln38_reg_5898 <= mul_ln38_fu_3808_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + out_loc_addr_reg_4927 <= zext_ln38_fu_3797_p1; + sext_ln38_reg_4916 <= sext_ln38_fu_3726_p1; + zext_ln31_1_reg_4620[30 : 0] <= zext_ln31_1_fu_3665_p1[30 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((icmp_ln42_reg_6313 == 1'd0) & (ap_enable_reg_pp3_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0) & (1'b0 == ap_block_pp3_stage0_11001))) begin + out_loc_load_reg_6327 <= out_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3615_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + select_ln31_1_reg_4615 <= select_ln31_1_fu_3645_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3513_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + trunc_ln1_reg_4529 <= {{phi_ln28_reg_3307[11:6]}}; + trunc_ln28_reg_4524 <= trunc_ln28_fu_3525_p1; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_3420_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_3513_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln31_fu_3615_p2 == 1'd1)) begin + ap_condition_pp2_exit_iter0_state23 = 1'b1; + end else begin + ap_condition_pp2_exit_iter0_state23 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_4373_p2 == 1'd1)) begin + ap_condition_pp3_exit_iter0_state29 = 1'b1; + end else begin + ap_condition_pp3_exit_iter0_state29 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state36))) 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_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp2_iter1 == 1'b0) & (ap_enable_reg_pp2_iter0 == 1'b0) & (ap_enable_reg_pp2_iter4 == 1'b0) & (ap_enable_reg_pp2_iter3 == 1'b0) & (ap_enable_reg_pp2_iter2 == 1'b0))) begin + ap_idle_pp2 = 1'b1; + end else begin + ap_idle_pp2 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp3_iter2 == 1'b0) & (ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b0))) begin + ap_idle_pp3 = 1'b1; + end else begin + ap_idle_pp3 = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln31_reg_4606 == 1'd0) & (1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + ap_phi_mux_i_0_phi_fu_3333_p4 = select_ln31_1_reg_4615; + end else begin + ap_phi_mux_i_0_phi_fu_3333_p4 = i_0_reg_3329; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state36))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_0_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_0_ce0 = 1'b1; + end else begin + in1_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_we0 = 1'b1; + end else begin + in1_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_10_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_10_ce0 = 1'b1; + end else begin + in1_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd10) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_we0 = 1'b1; + end else begin + in1_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_11_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_11_ce0 = 1'b1; + end else begin + in1_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd11) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_we0 = 1'b1; + end else begin + in1_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_12_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_12_ce0 = 1'b1; + end else begin + in1_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd12) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_we0 = 1'b1; + end else begin + in1_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_13_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_13_ce0 = 1'b1; + end else begin + in1_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd13) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_we0 = 1'b1; + end else begin + in1_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_14_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_14_ce0 = 1'b1; + end else begin + in1_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd14) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_we0 = 1'b1; + end else begin + in1_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_15_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_15_ce0 = 1'b1; + end else begin + in1_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd15) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_we0 = 1'b1; + end else begin + in1_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_16_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_16_ce0 = 1'b1; + end else begin + in1_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd16) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_we0 = 1'b1; + end else begin + in1_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_17_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_17_ce0 = 1'b1; + end else begin + in1_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd17) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_we0 = 1'b1; + end else begin + in1_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_18_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_18_ce0 = 1'b1; + end else begin + in1_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd18) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_we0 = 1'b1; + end else begin + in1_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_19_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_19_ce0 = 1'b1; + end else begin + in1_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd19) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_we0 = 1'b1; + end else begin + in1_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_1_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_1_ce0 = 1'b1; + end else begin + in1_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_we0 = 1'b1; + end else begin + in1_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_20_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_20_ce0 = 1'b1; + end else begin + in1_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd20) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_we0 = 1'b1; + end else begin + in1_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_21_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_21_ce0 = 1'b1; + end else begin + in1_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd21) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_we0 = 1'b1; + end else begin + in1_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_22_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_22_ce0 = 1'b1; + end else begin + in1_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd22) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_we0 = 1'b1; + end else begin + in1_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_23_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_23_ce0 = 1'b1; + end else begin + in1_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd23) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_we0 = 1'b1; + end else begin + in1_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_24_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_24_ce0 = 1'b1; + end else begin + in1_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd24) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_we0 = 1'b1; + end else begin + in1_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_25_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_25_ce0 = 1'b1; + end else begin + in1_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd25) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_we0 = 1'b1; + end else begin + in1_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_26_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_26_ce0 = 1'b1; + end else begin + in1_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd26) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_we0 = 1'b1; + end else begin + in1_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_27_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_27_ce0 = 1'b1; + end else begin + in1_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd27) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_we0 = 1'b1; + end else begin + in1_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_28_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_28_ce0 = 1'b1; + end else begin + in1_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd28) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_we0 = 1'b1; + end else begin + in1_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_29_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_29_ce0 = 1'b1; + end else begin + in1_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd29) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_we0 = 1'b1; + end else begin + in1_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_2_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_2_ce0 = 1'b1; + end else begin + in1_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd2) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_we0 = 1'b1; + end else begin + in1_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_30_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_30_ce0 = 1'b1; + end else begin + in1_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd30) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_we0 = 1'b1; + end else begin + in1_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_31_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_31_ce0 = 1'b1; + end else begin + in1_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd31) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_we0 = 1'b1; + end else begin + in1_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_32_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_32_ce0 = 1'b1; + end else begin + in1_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd32) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_we0 = 1'b1; + end else begin + in1_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_33_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_33_ce0 = 1'b1; + end else begin + in1_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd33) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_we0 = 1'b1; + end else begin + in1_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_34_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_34_ce0 = 1'b1; + end else begin + in1_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd34) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_we0 = 1'b1; + end else begin + in1_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_35_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_35_ce0 = 1'b1; + end else begin + in1_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd35) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_we0 = 1'b1; + end else begin + in1_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_36_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_36_ce0 = 1'b1; + end else begin + in1_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd36) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_we0 = 1'b1; + end else begin + in1_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_37_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_37_ce0 = 1'b1; + end else begin + in1_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd37) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_we0 = 1'b1; + end else begin + in1_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_38_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_38_ce0 = 1'b1; + end else begin + in1_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd38) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_we0 = 1'b1; + end else begin + in1_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_39_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_39_ce0 = 1'b1; + end else begin + in1_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd39) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_we0 = 1'b1; + end else begin + in1_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_3_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_3_ce0 = 1'b1; + end else begin + in1_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd3) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_we0 = 1'b1; + end else begin + in1_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_40_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_40_ce0 = 1'b1; + end else begin + in1_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd40) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_we0 = 1'b1; + end else begin + in1_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_41_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_41_ce0 = 1'b1; + end else begin + in1_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd41) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_we0 = 1'b1; + end else begin + in1_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_42_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_42_ce0 = 1'b1; + end else begin + in1_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd42) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_we0 = 1'b1; + end else begin + in1_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_43_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_43_ce0 = 1'b1; + end else begin + in1_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd43) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_we0 = 1'b1; + end else begin + in1_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_44_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_44_ce0 = 1'b1; + end else begin + in1_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd44) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_we0 = 1'b1; + end else begin + in1_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_45_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_45_ce0 = 1'b1; + end else begin + in1_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd45) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_we0 = 1'b1; + end else begin + in1_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_46_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_46_ce0 = 1'b1; + end else begin + in1_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd46) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_we0 = 1'b1; + end else begin + in1_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_47_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_47_ce0 = 1'b1; + end else begin + in1_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd47) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_we0 = 1'b1; + end else begin + in1_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_48_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_48_ce0 = 1'b1; + end else begin + in1_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd48) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_we0 = 1'b1; + end else begin + in1_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_49_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_49_ce0 = 1'b1; + end else begin + in1_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd49) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_we0 = 1'b1; + end else begin + in1_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_4_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_4_ce0 = 1'b1; + end else begin + in1_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd4) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_we0 = 1'b1; + end else begin + in1_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_50_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_50_ce0 = 1'b1; + end else begin + in1_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd50) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_we0 = 1'b1; + end else begin + in1_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_51_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_51_ce0 = 1'b1; + end else begin + in1_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd51) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_we0 = 1'b1; + end else begin + in1_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_52_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_52_ce0 = 1'b1; + end else begin + in1_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd52) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_we0 = 1'b1; + end else begin + in1_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_53_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_53_ce0 = 1'b1; + end else begin + in1_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd53) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_we0 = 1'b1; + end else begin + in1_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_54_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_54_ce0 = 1'b1; + end else begin + in1_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd54) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_we0 = 1'b1; + end else begin + in1_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_55_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_55_ce0 = 1'b1; + end else begin + in1_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd55) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_we0 = 1'b1; + end else begin + in1_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_56_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_56_ce0 = 1'b1; + end else begin + in1_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd56) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_we0 = 1'b1; + end else begin + in1_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_57_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_57_ce0 = 1'b1; + end else begin + in1_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd57) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_we0 = 1'b1; + end else begin + in1_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_58_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_58_ce0 = 1'b1; + end else begin + in1_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd58) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_we0 = 1'b1; + end else begin + in1_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_59_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_59_ce0 = 1'b1; + end else begin + in1_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd59) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_we0 = 1'b1; + end else begin + in1_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_5_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_5_ce0 = 1'b1; + end else begin + in1_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd5) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_we0 = 1'b1; + end else begin + in1_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_60_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_60_ce0 = 1'b1; + end else begin + in1_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd60) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_we0 = 1'b1; + end else begin + in1_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_61_address0 = zext_ln31_1_reg_4620; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_61_ce0 = 1'b1; + end else begin + in1_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd61) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_we0 = 1'b1; + end else begin + in1_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_62_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_62_ce0 = 1'b1; + end else begin + in1_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd62) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_we0 = 1'b1; + end else begin + in1_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_63_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_63_ce0 = 1'b1; + end else begin + in1_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd63) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_we0 = 1'b1; + end else begin + in1_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_6_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_6_ce0 = 1'b1; + end else begin + in1_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd6) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_we0 = 1'b1; + end else begin + in1_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_7_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_7_ce0 = 1'b1; + end else begin + in1_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd7) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_we0 = 1'b1; + end else begin + in1_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_8_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_8_ce0 = 1'b1; + end else begin + in1_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd8) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_we0 = 1'b1; + end else begin + in1_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in1_loc_9_address0 = zext_ln31_1_fu_3665_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_address0 = zext_ln27_fu_3446_p1; + end else begin + in1_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)))) begin + in1_loc_9_ce0 = 1'b1; + end else begin + in1_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg == 6'd9) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_we0 = 1'b1; + end else begin + in1_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 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 + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_0_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_0_ce0 = 1'b1; + end else begin + in2_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd0) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_we0 = 1'b1; + end else begin + in2_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_10_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_10_ce0 = 1'b1; + end else begin + in2_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd10) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_we0 = 1'b1; + end else begin + in2_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_11_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_11_ce0 = 1'b1; + end else begin + in2_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd11) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_we0 = 1'b1; + end else begin + in2_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_12_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_12_ce0 = 1'b1; + end else begin + in2_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd12) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_we0 = 1'b1; + end else begin + in2_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_13_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_13_ce0 = 1'b1; + end else begin + in2_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd13) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_we0 = 1'b1; + end else begin + in2_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_14_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_14_ce0 = 1'b1; + end else begin + in2_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd14) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_we0 = 1'b1; + end else begin + in2_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_15_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_15_ce0 = 1'b1; + end else begin + in2_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd15) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_we0 = 1'b1; + end else begin + in2_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_16_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_16_ce0 = 1'b1; + end else begin + in2_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd16) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_we0 = 1'b1; + end else begin + in2_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_17_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_17_ce0 = 1'b1; + end else begin + in2_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd17) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_we0 = 1'b1; + end else begin + in2_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_18_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_18_ce0 = 1'b1; + end else begin + in2_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd18) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_we0 = 1'b1; + end else begin + in2_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_19_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_19_ce0 = 1'b1; + end else begin + in2_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd19) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_we0 = 1'b1; + end else begin + in2_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_1_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_1_ce0 = 1'b1; + end else begin + in2_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd1) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_we0 = 1'b1; + end else begin + in2_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_20_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_20_ce0 = 1'b1; + end else begin + in2_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd20) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_we0 = 1'b1; + end else begin + in2_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_21_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_21_ce0 = 1'b1; + end else begin + in2_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd21) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_we0 = 1'b1; + end else begin + in2_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_22_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_22_ce0 = 1'b1; + end else begin + in2_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd22) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_we0 = 1'b1; + end else begin + in2_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_23_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_23_ce0 = 1'b1; + end else begin + in2_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd23) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_we0 = 1'b1; + end else begin + in2_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_24_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_24_ce0 = 1'b1; + end else begin + in2_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd24) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_we0 = 1'b1; + end else begin + in2_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_25_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_25_ce0 = 1'b1; + end else begin + in2_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd25) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_we0 = 1'b1; + end else begin + in2_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_26_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_26_ce0 = 1'b1; + end else begin + in2_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd26) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_we0 = 1'b1; + end else begin + in2_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_27_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_27_ce0 = 1'b1; + end else begin + in2_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd27) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_we0 = 1'b1; + end else begin + in2_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_28_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_28_ce0 = 1'b1; + end else begin + in2_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd28) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_we0 = 1'b1; + end else begin + in2_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_29_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_29_ce0 = 1'b1; + end else begin + in2_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd29) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_we0 = 1'b1; + end else begin + in2_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_2_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_2_ce0 = 1'b1; + end else begin + in2_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd2) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_we0 = 1'b1; + end else begin + in2_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_30_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_30_ce0 = 1'b1; + end else begin + in2_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd30) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_we0 = 1'b1; + end else begin + in2_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_31_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_31_ce0 = 1'b1; + end else begin + in2_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd31) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_we0 = 1'b1; + end else begin + in2_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_32_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_32_ce0 = 1'b1; + end else begin + in2_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd32) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_we0 = 1'b1; + end else begin + in2_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_33_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_33_ce0 = 1'b1; + end else begin + in2_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd33) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_we0 = 1'b1; + end else begin + in2_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_34_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_34_ce0 = 1'b1; + end else begin + in2_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd34) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_we0 = 1'b1; + end else begin + in2_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_35_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_35_ce0 = 1'b1; + end else begin + in2_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd35) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_we0 = 1'b1; + end else begin + in2_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_36_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_36_ce0 = 1'b1; + end else begin + in2_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd36) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_we0 = 1'b1; + end else begin + in2_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_37_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_37_ce0 = 1'b1; + end else begin + in2_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd37) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_we0 = 1'b1; + end else begin + in2_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_38_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_38_ce0 = 1'b1; + end else begin + in2_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd38) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_we0 = 1'b1; + end else begin + in2_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_39_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_39_ce0 = 1'b1; + end else begin + in2_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd39) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_we0 = 1'b1; + end else begin + in2_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_3_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_3_ce0 = 1'b1; + end else begin + in2_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd3) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_we0 = 1'b1; + end else begin + in2_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_40_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_40_ce0 = 1'b1; + end else begin + in2_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd40) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_we0 = 1'b1; + end else begin + in2_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_41_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_41_ce0 = 1'b1; + end else begin + in2_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd41) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_we0 = 1'b1; + end else begin + in2_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_42_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_42_ce0 = 1'b1; + end else begin + in2_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd42) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_we0 = 1'b1; + end else begin + in2_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_43_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_43_ce0 = 1'b1; + end else begin + in2_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd43) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_we0 = 1'b1; + end else begin + in2_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_44_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_44_ce0 = 1'b1; + end else begin + in2_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd44) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_we0 = 1'b1; + end else begin + in2_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_45_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_45_ce0 = 1'b1; + end else begin + in2_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd45) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_we0 = 1'b1; + end else begin + in2_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_46_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_46_ce0 = 1'b1; + end else begin + in2_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd46) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_we0 = 1'b1; + end else begin + in2_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_47_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_47_ce0 = 1'b1; + end else begin + in2_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd47) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_we0 = 1'b1; + end else begin + in2_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_48_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_48_ce0 = 1'b1; + end else begin + in2_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd48) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_we0 = 1'b1; + end else begin + in2_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_49_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_49_ce0 = 1'b1; + end else begin + in2_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd49) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_we0 = 1'b1; + end else begin + in2_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_4_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_4_ce0 = 1'b1; + end else begin + in2_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd4) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_we0 = 1'b1; + end else begin + in2_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_50_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_50_ce0 = 1'b1; + end else begin + in2_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd50) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_we0 = 1'b1; + end else begin + in2_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_51_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_51_ce0 = 1'b1; + end else begin + in2_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd51) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_we0 = 1'b1; + end else begin + in2_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_52_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_52_ce0 = 1'b1; + end else begin + in2_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd52) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_we0 = 1'b1; + end else begin + in2_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_53_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_53_ce0 = 1'b1; + end else begin + in2_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd53) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_we0 = 1'b1; + end else begin + in2_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_54_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_54_ce0 = 1'b1; + end else begin + in2_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd54) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_we0 = 1'b1; + end else begin + in2_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_55_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_55_ce0 = 1'b1; + end else begin + in2_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd55) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_we0 = 1'b1; + end else begin + in2_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_56_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_56_ce0 = 1'b1; + end else begin + in2_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd56) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_we0 = 1'b1; + end else begin + in2_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_57_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_57_ce0 = 1'b1; + end else begin + in2_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd57) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_we0 = 1'b1; + end else begin + in2_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_58_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_58_ce0 = 1'b1; + end else begin + in2_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd58) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_we0 = 1'b1; + end else begin + in2_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_59_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_59_ce0 = 1'b1; + end else begin + in2_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd59) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_we0 = 1'b1; + end else begin + in2_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_5_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_5_ce0 = 1'b1; + end else begin + in2_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd5) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_we0 = 1'b1; + end else begin + in2_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_60_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_60_ce0 = 1'b1; + end else begin + in2_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd60) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_we0 = 1'b1; + end else begin + in2_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_61_address0 = sext_ln38_reg_4916; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_61_ce0 = 1'b1; + end else begin + in2_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd61) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_we0 = 1'b1; + end else begin + in2_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_62_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_62_ce0 = 1'b1; + end else begin + in2_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd62) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_we0 = 1'b1; + end else begin + in2_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_63_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_63_ce0 = 1'b1; + end else begin + in2_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd63) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_we0 = 1'b1; + end else begin + in2_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_6_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_6_ce0 = 1'b1; + end else begin + in2_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd6) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_we0 = 1'b1; + end else begin + in2_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_7_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_7_ce0 = 1'b1; + end else begin + in2_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd7) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_we0 = 1'b1; + end else begin + in2_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_8_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_8_ce0 = 1'b1; + end else begin + in2_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd8) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_we0 = 1'b1; + end else begin + in2_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + in2_loc_9_address0 = sext_ln38_fu_3726_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_address0 = zext_ln28_fu_3539_p1; + end else begin + in2_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0)) | ((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)))) begin + in2_loc_9_ce0 = 1'b1; + end else begin + in2_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg == 6'd9) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_we0 = 1'b1; + end else begin + in2_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + out_loc_address0 = zext_ln42_fu_4385_p1; + end else if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + out_loc_address0 = out_loc_addr_reg_4927_pp2_iter1_reg; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)) | ((ap_enable_reg_pp3_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0) & (1'b0 == ap_block_pp3_stage0_11001)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter4 == 1'b1))) begin + out_loc_ce1 = 1'b1; + end else begin + out_loc_ce1 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4606_pp2_iter3_reg == 1'd0) & (ap_enable_reg_pp2_iter4 == 1'b1))) begin + out_loc_we1 = 1'b1; + end else begin + out_loc_we1 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state28))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state36))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_6313_pp3_iter1_reg == 1'd0) & (ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_11001))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state28)) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state36)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_6313_pp3_iter1_reg == 1'd0) & (1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((icmp_ln27_fu_3420_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) & ~((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((icmp_ln27_fu_3420_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) | ((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((icmp_ln28_fu_3513_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) & ~((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((icmp_ln28_fu_3513_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) | ((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + ap_ST_fsm_pp2_stage0 : begin + if ((~((ap_enable_reg_pp2_iter1 == 1'b0) & (icmp_ln31_fu_3615_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone)) & ~((ap_enable_reg_pp2_iter4 == 1'b1) & (ap_enable_reg_pp2_iter3 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if ((((ap_enable_reg_pp2_iter1 == 1'b0) & (icmp_ln31_fu_3615_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b0 == ap_block_pp2_stage0_subdone)) | ((ap_enable_reg_pp2_iter4 == 1'b1) & (ap_enable_reg_pp2_iter3 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state28; + end else begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + end + ap_ST_fsm_state28 : begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state28))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else begin + ap_NS_fsm = ap_ST_fsm_state28; + end + end + ap_ST_fsm_pp3_stage0 : begin + if ((~((ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_4373_p2 == 1'd1)) & ~((ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0)))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else if ((((ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0)) | ((ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (ap_enable_reg_pp3_iter1 == 1'b0) & (icmp_ln42_fu_4373_p2 == 1'd1)))) begin + ap_NS_fsm = ap_ST_fsm_state32; + end else begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end + end + ap_ST_fsm_state32 : begin + ap_NS_fsm = ap_ST_fsm_state33; + end + ap_ST_fsm_state33 : begin + ap_NS_fsm = ap_ST_fsm_state34; + end + ap_ST_fsm_state34 : begin + ap_NS_fsm = ap_ST_fsm_state35; + end + ap_ST_fsm_state35 : begin + ap_NS_fsm = ap_ST_fsm_state36; + end + ap_ST_fsm_state36 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state36))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state36; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_3426_p2 = (phi_ln27_reg_3296 + 13'd1); + +assign add_ln28_fu_3519_p2 = (phi_ln28_reg_3307 + 13'd1); + +assign add_ln31_fu_3620_p2 = (indvar_flatten_reg_3318 + 64'd1); + +assign add_ln38_10_fu_4113_p2 = (mul_ln38_12_reg_5958 + mul_ln38_11_reg_5953); + +assign add_ln38_11_fu_4117_p2 = (mul_ln38_14_reg_5968 + mul_ln38_13_reg_5963); + +assign add_ln38_12_fu_4121_p2 = (add_ln38_10_fu_4113_p2 + add_ln38_11_fu_4117_p2); + +assign add_ln38_13_fu_4283_p2 = (add_ln38_9_reg_6258 + add_ln38_12_reg_6263); + +assign add_ln38_14_fu_4287_p2 = (add_ln38_6_reg_6253 + add_ln38_13_fu_4283_p2); + +assign add_ln38_15_fu_4127_p2 = (mul_ln38_16_reg_5978 + mul_ln38_15_reg_5973); + +assign add_ln38_16_fu_4131_p2 = (mul_ln38_18_reg_5988 + mul_ln38_17_reg_5983); + +assign add_ln38_17_fu_4135_p2 = (add_ln38_15_fu_4127_p2 + add_ln38_16_fu_4131_p2); + +assign add_ln38_18_fu_4141_p2 = (mul_ln38_20_reg_5998 + mul_ln38_19_reg_5993); + +assign add_ln38_19_fu_4145_p2 = (mul_ln38_22_reg_6008 + mul_ln38_21_reg_6003); + +assign add_ln38_1_fu_4069_p2 = (mul_ln38_2_reg_5908 + mul_ln38_1_reg_5903); + +assign add_ln38_20_fu_4149_p2 = (add_ln38_18_fu_4141_p2 + add_ln38_19_fu_4145_p2); + +assign add_ln38_21_fu_4155_p2 = (add_ln38_17_fu_4135_p2 + add_ln38_20_fu_4149_p2); + +assign add_ln38_22_fu_4161_p2 = (mul_ln38_24_reg_6018 + mul_ln38_23_reg_6013); + +assign add_ln38_23_fu_4165_p2 = (mul_ln38_26_reg_6028 + mul_ln38_25_reg_6023); + +assign add_ln38_24_fu_4169_p2 = (add_ln38_22_fu_4161_p2 + add_ln38_23_fu_4165_p2); + +assign add_ln38_25_fu_4175_p2 = (mul_ln38_28_reg_6038 + mul_ln38_27_reg_6033); + +assign add_ln38_26_fu_4179_p2 = (mul_ln38_30_reg_6048 + mul_ln38_29_reg_6043); + +assign add_ln38_27_fu_4183_p2 = (add_ln38_25_fu_4175_p2 + add_ln38_26_fu_4179_p2); + +assign add_ln38_28_fu_4189_p2 = (add_ln38_24_fu_4169_p2 + add_ln38_27_fu_4183_p2); + +assign add_ln38_29_fu_4292_p2 = (add_ln38_21_reg_6268 + add_ln38_28_reg_6273); + +assign add_ln38_2_fu_4073_p2 = (add_ln38_fu_4064_p2 + add_ln38_1_fu_4069_p2); + +assign add_ln38_30_fu_4296_p2 = (add_ln38_14_fu_4287_p2 + add_ln38_29_fu_4292_p2); + +assign add_ln38_31_fu_4195_p2 = (mul_ln38_32_reg_6058 + mul_ln38_31_reg_6053); + +assign add_ln38_32_fu_4199_p2 = (mul_ln38_34_reg_6068 + mul_ln38_33_reg_6063); + +assign add_ln38_33_fu_4203_p2 = (add_ln38_31_fu_4195_p2 + add_ln38_32_fu_4199_p2); + +assign add_ln38_34_fu_4209_p2 = (mul_ln38_36_reg_6078 + mul_ln38_35_reg_6073); + +assign add_ln38_35_fu_4213_p2 = (mul_ln38_38_reg_6088 + mul_ln38_37_reg_6083); + +assign add_ln38_36_fu_4217_p2 = (add_ln38_34_fu_4209_p2 + add_ln38_35_fu_4213_p2); + +assign add_ln38_37_fu_4223_p2 = (add_ln38_33_fu_4203_p2 + add_ln38_36_fu_4217_p2); + +assign add_ln38_38_fu_4229_p2 = (mul_ln38_40_reg_6098 + mul_ln38_39_reg_6093); + +assign add_ln38_39_fu_4302_p2 = (mul_ln38_42_reg_6223 + mul_ln38_41_reg_6218); + +assign add_ln38_3_fu_4079_p2 = (mul_ln38_4_reg_5918 + mul_ln38_3_reg_5913); + +assign add_ln38_40_fu_4306_p2 = (add_ln38_38_reg_6283 + add_ln38_39_fu_4302_p2); + +assign add_ln38_41_fu_4233_p2 = (mul_ln38_44_reg_6118 + mul_ln38_43_reg_6113); + +assign add_ln38_42_fu_4311_p2 = (mul_ln38_46_reg_6233 + mul_ln38_45_reg_6228); + +assign add_ln38_43_fu_4315_p2 = (add_ln38_41_reg_6288 + add_ln38_42_fu_4311_p2); + +assign add_ln38_44_fu_4320_p2 = (add_ln38_40_fu_4306_p2 + add_ln38_43_fu_4315_p2); + +assign add_ln38_45_fu_4326_p2 = (add_ln38_37_reg_6278 + add_ln38_44_fu_4320_p2); + +assign add_ln38_46_fu_4237_p2 = (mul_ln38_48_reg_6138 + mul_ln38_47_reg_6133); + +assign add_ln38_47_fu_4241_p2 = (mul_ln38_50_reg_6148 + mul_ln38_49_reg_6143); + +assign add_ln38_48_fu_4245_p2 = (add_ln38_46_fu_4237_p2 + add_ln38_47_fu_4241_p2); + +assign add_ln38_49_fu_4251_p2 = (mul_ln38_52_reg_6158 + mul_ln38_51_reg_6153); + +assign add_ln38_4_fu_4083_p2 = (mul_ln38_6_reg_5928 + mul_ln38_5_reg_5923); + +assign add_ln38_50_fu_4255_p2 = (mul_ln38_54_reg_6168 + mul_ln38_53_reg_6163); + +assign add_ln38_51_fu_4259_p2 = (add_ln38_49_fu_4251_p2 + add_ln38_50_fu_4255_p2); + +assign add_ln38_52_fu_4265_p2 = (add_ln38_48_fu_4245_p2 + add_ln38_51_fu_4259_p2); + +assign add_ln38_53_fu_4271_p2 = (mul_ln38_56_reg_6178 + mul_ln38_55_reg_6173); + +assign add_ln38_54_fu_4331_p2 = (mul_ln38_58_reg_6243 + mul_ln38_57_reg_6238); + +assign add_ln38_55_fu_4335_p2 = (add_ln38_53_reg_6298 + add_ln38_54_fu_4331_p2); + +assign add_ln38_56_fu_4275_p2 = (mul_ln38_60_reg_6198 + mul_ln38_59_reg_6193); + +assign add_ln38_57_fu_4279_p2 = (mul_ln38_63_reg_6213 + mul_ln38_62_reg_6208); + +assign add_ln38_58_fu_4340_p2 = (mul_ln38_61_reg_6248 + add_ln38_57_reg_6308); + +assign add_ln38_59_fu_4344_p2 = (add_ln38_56_reg_6303 + add_ln38_58_fu_4340_p2); + +assign add_ln38_5_fu_4087_p2 = (add_ln38_3_fu_4079_p2 + add_ln38_4_fu_4083_p2); + +assign add_ln38_60_fu_4349_p2 = (add_ln38_55_fu_4335_p2 + add_ln38_59_fu_4344_p2); + +assign add_ln38_61_fu_4355_p2 = (add_ln38_52_reg_6293 + add_ln38_60_fu_4349_p2); + +assign add_ln38_62_fu_4360_p2 = (add_ln38_45_fu_4326_p2 + add_ln38_61_fu_4355_p2); + +assign add_ln38_64_fu_3791_p2 = (tmp_cast_fu_3657_p3 + trunc_ln38_1_fu_3787_p1); + +assign add_ln38_6_fu_4093_p2 = (add_ln38_2_fu_4073_p2 + add_ln38_5_fu_4087_p2); + +assign add_ln38_7_fu_4099_p2 = (mul_ln38_8_reg_5938 + mul_ln38_7_reg_5933); + +assign add_ln38_8_fu_4103_p2 = (mul_ln38_10_reg_5948 + mul_ln38_9_reg_5943); + +assign add_ln38_9_fu_4107_p2 = (add_ln38_7_fu_4099_p2 + add_ln38_8_fu_4103_p2); + +assign add_ln38_fu_4064_p2 = (mul_ln38_reg_5898 + out_loc_q0); + +assign add_ln42_fu_4379_p2 = (phi_ln42_reg_3351 + 13'd1); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp2_stage0 = ap_CS_fsm[32'd18]; + +assign ap_CS_fsm_pp3_stage0 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state28 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state36 = ap_CS_fsm[32'd25]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp2_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp3_stage0_11001 = ((1'b1 == ap_block_state31_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_pp3_stage0_subdone = ((1'b1 == ap_block_state31_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = (in1_mem_RVALID == 1'b0); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = (in2_mem_RVALID == 1'b0); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state23_pp2_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state24_pp2_stage0_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state25_pp2_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state26_pp2_stage0_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state27_pp2_stage0_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state29_pp3_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state30_pp3_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state31_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_6313_pp3_iter1_reg == 1'd0)); +end + +assign ap_block_state31_pp3_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp2 = (ap_idle_pp2 ^ 1'b1); + +assign ap_enable_pp3 = (ap_idle_pp3 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_7_fu_3411_p1 = in_reg_4401; + +assign empty_8_fu_3392_p1 = in3_reg_4406; + +assign empty_fu_3402_p1 = out5_reg_4396; + +assign i_fu_3626_p2 = (31'd1 + ap_phi_mux_i_0_phi_fu_3333_p4); + +assign icmp_ln27_fu_3420_p2 = ((phi_ln27_reg_3296 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_3513_p2 = ((phi_ln28_reg_3307 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_3615_p2 = ((indvar_flatten_reg_3318 == mul_ln31_reg_4601) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_3632_p2 = ((j_0_reg_3340 == dim_read_reg_4390) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_4373_p2 = ((phi_ln42_reg_3351 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_8_fu_3392_p1; + +assign j_fu_3802_p2 = ($signed(32'd1) + $signed(select_ln31_fu_3637_p3)); + +assign mul_ln31_fu_3609_p0 = zext_ln31_fu_3606_p1; + +assign mul_ln31_fu_3609_p1 = zext_ln31_fu_3606_p1; + +assign mul_ln31_fu_3609_p2 = (mul_ln31_fu_3609_p0 * mul_ln31_fu_3609_p1); + +assign mul_ln38_10_fu_3848_p2 = ($signed(in2_loc_10_load_reg_5593) * $signed(in1_loc_10_load_reg_5273)); + +assign mul_ln38_11_fu_3852_p2 = ($signed(in2_loc_11_load_reg_5598) * $signed(in1_loc_11_load_reg_5278)); + +assign mul_ln38_12_fu_3856_p2 = ($signed(in2_loc_12_load_reg_5603) * $signed(in1_loc_12_load_reg_5283)); + +assign mul_ln38_13_fu_3860_p2 = ($signed(in2_loc_13_load_reg_5608) * $signed(in1_loc_13_load_reg_5288)); + +assign mul_ln38_14_fu_3864_p2 = ($signed(in2_loc_14_load_reg_5613) * $signed(in1_loc_14_load_reg_5293)); + +assign mul_ln38_15_fu_3868_p2 = ($signed(in2_loc_15_load_reg_5618) * $signed(in1_loc_15_load_reg_5298)); + +assign mul_ln38_16_fu_3872_p2 = ($signed(in2_loc_16_load_reg_5623) * $signed(in1_loc_16_load_reg_5303)); + +assign mul_ln38_17_fu_3876_p2 = ($signed(in2_loc_17_load_reg_5628) * $signed(in1_loc_17_load_reg_5308)); + +assign mul_ln38_18_fu_3880_p2 = ($signed(in2_loc_18_load_reg_5633) * $signed(in1_loc_18_load_reg_5313)); + +assign mul_ln38_19_fu_3884_p2 = ($signed(in2_loc_19_load_reg_5638) * $signed(in1_loc_19_load_reg_5318)); + +assign mul_ln38_1_fu_3812_p2 = ($signed(in2_loc_1_load_reg_5548) * $signed(in1_loc_1_load_reg_5228)); + +assign mul_ln38_20_fu_3888_p2 = ($signed(in2_loc_20_load_reg_5643) * $signed(in1_loc_20_load_reg_5323)); + +assign mul_ln38_21_fu_3892_p2 = ($signed(in2_loc_21_load_reg_5648) * $signed(in1_loc_21_load_reg_5328)); + +assign mul_ln38_22_fu_3896_p2 = ($signed(in2_loc_22_load_reg_5653) * $signed(in1_loc_22_load_reg_5333)); + +assign mul_ln38_23_fu_3900_p2 = ($signed(in2_loc_23_load_reg_5658) * $signed(in1_loc_23_load_reg_5338)); + +assign mul_ln38_24_fu_3904_p2 = ($signed(in2_loc_24_load_reg_5663) * $signed(in1_loc_24_load_reg_5343)); + +assign mul_ln38_25_fu_3908_p2 = ($signed(in2_loc_25_load_reg_5668) * $signed(in1_loc_25_load_reg_5348)); + +assign mul_ln38_26_fu_3912_p2 = ($signed(in2_loc_26_load_reg_5673) * $signed(in1_loc_26_load_reg_5353)); + +assign mul_ln38_27_fu_3916_p2 = ($signed(in2_loc_27_load_reg_5678) * $signed(in1_loc_27_load_reg_5358)); + +assign mul_ln38_28_fu_3920_p2 = ($signed(in2_loc_28_load_reg_5683) * $signed(in1_loc_28_load_reg_5363)); + +assign mul_ln38_29_fu_3924_p2 = ($signed(in2_loc_29_load_reg_5688) * $signed(in1_loc_29_load_reg_5368)); + +assign mul_ln38_2_fu_3816_p2 = ($signed(in2_loc_2_load_reg_5553) * $signed(in1_loc_2_load_reg_5233)); + +assign mul_ln38_30_fu_3928_p2 = ($signed(in2_loc_30_load_reg_5693) * $signed(in1_loc_30_load_reg_5373)); + +assign mul_ln38_31_fu_3932_p2 = ($signed(in2_loc_31_load_reg_5698) * $signed(in1_loc_31_load_reg_5378)); + +assign mul_ln38_32_fu_3936_p2 = ($signed(in2_loc_32_load_reg_5703) * $signed(in1_loc_32_load_reg_5383)); + +assign mul_ln38_33_fu_3940_p2 = ($signed(in2_loc_33_load_reg_5708) * $signed(in1_loc_33_load_reg_5388)); + +assign mul_ln38_34_fu_3944_p2 = ($signed(in2_loc_34_load_reg_5713) * $signed(in1_loc_34_load_reg_5393)); + +assign mul_ln38_35_fu_3948_p2 = ($signed(in2_loc_35_load_reg_5718) * $signed(in1_loc_35_load_reg_5398)); + +assign mul_ln38_36_fu_3952_p2 = ($signed(in2_loc_36_load_reg_5723) * $signed(in1_loc_36_load_reg_5403)); + +assign mul_ln38_37_fu_3956_p2 = ($signed(in2_loc_37_load_reg_5728) * $signed(in1_loc_37_load_reg_5408)); + +assign mul_ln38_38_fu_3960_p2 = ($signed(in2_loc_38_load_reg_5733) * $signed(in1_loc_38_load_reg_5413)); + +assign mul_ln38_39_fu_3964_p2 = ($signed(in2_loc_39_load_reg_5738) * $signed(in1_loc_39_load_reg_5418)); + +assign mul_ln38_3_fu_3820_p2 = ($signed(in2_loc_3_load_reg_5558) * $signed(in1_loc_3_load_reg_5238)); + +assign mul_ln38_40_fu_3968_p2 = ($signed(in2_loc_40_load_reg_5743) * $signed(in1_loc_40_load_reg_5423)); + +assign mul_ln38_41_fu_4036_p2 = ($signed(in2_loc_41_load_reg_6103) * $signed(in1_loc_41_load_reg_5863)); + +assign mul_ln38_42_fu_4040_p2 = ($signed(in2_loc_42_load_reg_6108) * $signed(in1_loc_42_load_reg_5868)); + +assign mul_ln38_43_fu_3972_p2 = ($signed(in2_loc_43_load_reg_5758) * $signed(in1_loc_43_load_reg_5438)); + +assign mul_ln38_44_fu_3976_p2 = ($signed(in2_loc_44_load_reg_5763) * $signed(in1_loc_44_load_reg_5443)); + +assign mul_ln38_45_fu_4044_p2 = ($signed(in2_loc_45_load_reg_6123) * $signed(in1_loc_45_load_reg_5873)); + +assign mul_ln38_46_fu_4048_p2 = ($signed(in2_loc_46_load_reg_6128) * $signed(in1_loc_46_load_reg_5878)); + +assign mul_ln38_47_fu_3980_p2 = ($signed(in2_loc_47_load_reg_5778) * $signed(in1_loc_47_load_reg_5458)); + +assign mul_ln38_48_fu_3984_p2 = ($signed(in2_loc_48_load_reg_5783) * $signed(in1_loc_48_load_reg_5463)); + +assign mul_ln38_49_fu_3988_p2 = ($signed(in2_loc_49_load_reg_5788) * $signed(in1_loc_49_load_reg_5468)); + +assign mul_ln38_4_fu_3824_p2 = ($signed(in2_loc_4_load_reg_5563) * $signed(in1_loc_4_load_reg_5243)); + +assign mul_ln38_50_fu_3992_p2 = ($signed(in2_loc_50_load_reg_5793) * $signed(in1_loc_50_load_reg_5473)); + +assign mul_ln38_51_fu_3996_p2 = ($signed(in2_loc_51_load_reg_5798) * $signed(in1_loc_51_load_reg_5478)); + +assign mul_ln38_52_fu_4000_p2 = ($signed(in2_loc_52_load_reg_5803) * $signed(in1_loc_52_load_reg_5483)); + +assign mul_ln38_53_fu_4004_p2 = ($signed(in2_loc_53_load_reg_5808) * $signed(in1_loc_53_load_reg_5488)); + +assign mul_ln38_54_fu_4008_p2 = ($signed(in2_loc_54_load_reg_5813) * $signed(in1_loc_54_load_reg_5493)); + +assign mul_ln38_55_fu_4012_p2 = ($signed(in2_loc_55_load_reg_5818) * $signed(in1_loc_55_load_reg_5498)); + +assign mul_ln38_56_fu_4016_p2 = ($signed(in2_loc_56_load_reg_5823) * $signed(in1_loc_56_load_reg_5503)); + +assign mul_ln38_57_fu_4052_p2 = ($signed(in2_loc_57_load_reg_6183) * $signed(in1_loc_57_load_reg_5883)); + +assign mul_ln38_58_fu_4056_p2 = ($signed(in2_loc_58_load_reg_6188) * $signed(in1_loc_58_load_reg_5888)); + +assign mul_ln38_59_fu_4020_p2 = ($signed(in2_loc_59_load_reg_5838) * $signed(in1_loc_59_load_reg_5518)); + +assign mul_ln38_5_fu_3828_p2 = ($signed(in2_loc_5_load_reg_5568) * $signed(in1_loc_5_load_reg_5248)); + +assign mul_ln38_60_fu_4024_p2 = ($signed(in2_loc_60_load_reg_5843) * $signed(in1_loc_60_load_reg_5523)); + +assign mul_ln38_61_fu_4060_p2 = ($signed(in2_loc_61_load_reg_6203) * $signed(in1_loc_61_load_reg_5893)); + +assign mul_ln38_62_fu_4028_p2 = ($signed(in2_loc_62_load_reg_5853) * $signed(in1_loc_62_load_reg_5533)); + +assign mul_ln38_63_fu_4032_p2 = ($signed(in2_loc_63_load_reg_5858) * $signed(in1_loc_63_load_reg_5538)); + +assign mul_ln38_6_fu_3832_p2 = ($signed(in2_loc_6_load_reg_5573) * $signed(in1_loc_6_load_reg_5253)); + +assign mul_ln38_7_fu_3836_p2 = ($signed(in2_loc_7_load_reg_5578) * $signed(in1_loc_7_load_reg_5258)); + +assign mul_ln38_8_fu_3840_p2 = ($signed(in2_loc_8_load_reg_5583) * $signed(in1_loc_8_load_reg_5263)); + +assign mul_ln38_9_fu_3844_p2 = ($signed(in2_loc_9_load_reg_5588) * $signed(in1_loc_9_load_reg_5268)); + +assign mul_ln38_fu_3808_p2 = ($signed(in2_loc_0_load_reg_5543) * $signed(in1_loc_0_load_reg_5223)); + +assign out_loc_d1 = (add_ln38_30_fu_4296_p2 + add_ln38_62_fu_4360_p2); + +assign select_ln31_1_fu_3645_p3 = ((icmp_ln33_fu_3632_p2[0:0] === 1'b1) ? i_fu_3626_p2 : ap_phi_mux_i_0_phi_fu_3333_p4); + +assign select_ln31_fu_3637_p3 = ((icmp_ln33_fu_3632_p2[0:0] === 1'b1) ? 32'd0 : j_0_reg_3340); + +assign sext_ln38_fu_3726_p1 = select_ln31_fu_3637_p3; + +assign tmp_cast_fu_3657_p3 = {{trunc_ln38_fu_3653_p1}, {6'd0}}; + +assign trunc_ln27_fu_3442_p1 = phi_ln27_reg_3296[5:0]; + +assign trunc_ln28_fu_3525_p1 = phi_ln28_reg_3307[5:0]; + +assign trunc_ln38_1_fu_3787_p1 = select_ln31_fu_3637_p3[13:0]; + +assign trunc_ln38_fu_3653_p1 = select_ln31_1_fu_3645_p3[7:0]; + +assign zext_ln27_fu_3446_p1 = lshr_ln_reg_4438_pp0_iter1_reg; + +assign zext_ln28_fu_3539_p1 = trunc_ln28_reg_4524_pp1_iter1_reg; + +assign zext_ln31_1_fu_3665_p1 = select_ln31_1_fu_3645_p3; + +assign zext_ln31_fu_3606_p1 = dim_read_reg_4390; + +assign zext_ln38_fu_3797_p1 = add_ln38_64_fu_3791_p2; + +assign zext_ln42_fu_4385_p1 = phi_ln42_reg_3351; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_4417[31:30] <= 2'b00; + in2_mem_addr_reg_4423[31:30] <= 2'b00; + zext_ln31_1_reg_4620[63:31] <= 33'b000000000000000000000000000000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_loc_0.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_loc_0.v new file mode 100755 index 0000000..7a7e881 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_loc_0.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_0_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 6; +parameter MEM_SIZE = 64; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc_0( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd64; +parameter AddressWidth = 32'd6; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_in1_loc_0_ram mmult_in1_loc_0_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_loc.v new file mode 100755 index 0000000..9acfd8e --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_loc.v @@ -0,0 +1,83 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_out_loc_ram (addr0, ce0, q0, addr1, ce1, d1, we1, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +output reg[DWIDTH-1:0] q0; +input[AWIDTH-1:0] addr1; +input ce1; +input[DWIDTH-1:0] d1; +input we1; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + q0 <= ram[addr0]; + end +end + + +always @(posedge clk) +begin + if (ce1) begin + if (we1) + ram[addr1] <= d1; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_out_loc( + reset, + clk, + address0, + ce0, + q0, + address1, + ce1, + we1, + d1); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +output[DataWidth - 1:0] q0; +input[AddressWidth - 1:0] address1; +input ce1; +input we1; +input[DataWidth - 1:0] d1; + + + +mmult_out_loc_ram mmult_out_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .q0( q0 ), + .addr1( address1 ), + .ce1( ce1 ), + .we1( we1 ), + .d1( d1 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..fcade3c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult.vhd @@ -0,0 +1,9452 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=5.000000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=4.375000,HLS_SYN_LAT=16415,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=9119,HLS_SYN_LUT=8264,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (25 downto 0) := "00000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (25 downto 0) := "00000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (25 downto 0) := "00000000100000000000000000"; + constant ap_ST_fsm_pp2_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000001000000000000000000"; + constant ap_ST_fsm_state28 : STD_LOGIC_VECTOR (25 downto 0) := "00000010000000000000000000"; + constant ap_ST_fsm_pp3_stage0 : STD_LOGIC_VECTOR (25 downto 0) := "00000100000000000000000000"; + constant ap_ST_fsm_state32 : STD_LOGIC_VECTOR (25 downto 0) := "00001000000000000000000000"; + constant ap_ST_fsm_state33 : STD_LOGIC_VECTOR (25 downto 0) := "00010000000000000000000000"; + constant ap_ST_fsm_state34 : STD_LOGIC_VECTOR (25 downto 0) := "00100000000000000000000000"; + constant ap_ST_fsm_state35 : STD_LOGIC_VECTOR (25 downto 0) := "01000000000000000000000000"; + constant ap_ST_fsm_state36 : STD_LOGIC_VECTOR (25 downto 0) := "10000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_19 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011001"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_12 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010010"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv64_0 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv6_3E : STD_LOGIC_VECTOR (5 downto 0) := "111110"; + constant ap_const_lv6_3D : STD_LOGIC_VECTOR (5 downto 0) := "111101"; + constant ap_const_lv6_3C : STD_LOGIC_VECTOR (5 downto 0) := "111100"; + constant ap_const_lv6_3B : STD_LOGIC_VECTOR (5 downto 0) := "111011"; + constant ap_const_lv6_3A : STD_LOGIC_VECTOR (5 downto 0) := "111010"; + constant ap_const_lv6_39 : STD_LOGIC_VECTOR (5 downto 0) := "111001"; + constant ap_const_lv6_38 : STD_LOGIC_VECTOR (5 downto 0) := "111000"; + constant ap_const_lv6_37 : STD_LOGIC_VECTOR (5 downto 0) := "110111"; + constant ap_const_lv6_36 : STD_LOGIC_VECTOR (5 downto 0) := "110110"; + constant ap_const_lv6_35 : STD_LOGIC_VECTOR (5 downto 0) := "110101"; + constant ap_const_lv6_34 : STD_LOGIC_VECTOR (5 downto 0) := "110100"; + constant ap_const_lv6_33 : STD_LOGIC_VECTOR (5 downto 0) := "110011"; + constant ap_const_lv6_32 : STD_LOGIC_VECTOR (5 downto 0) := "110010"; + constant ap_const_lv6_31 : STD_LOGIC_VECTOR (5 downto 0) := "110001"; + constant ap_const_lv6_30 : STD_LOGIC_VECTOR (5 downto 0) := "110000"; + constant ap_const_lv6_2F : STD_LOGIC_VECTOR (5 downto 0) := "101111"; + constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110"; + constant ap_const_lv6_2D : STD_LOGIC_VECTOR (5 downto 0) := "101101"; + constant ap_const_lv6_2C : STD_LOGIC_VECTOR (5 downto 0) := "101100"; + constant ap_const_lv6_2B : STD_LOGIC_VECTOR (5 downto 0) := "101011"; + constant ap_const_lv6_2A : STD_LOGIC_VECTOR (5 downto 0) := "101010"; + constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001"; + constant ap_const_lv6_28 : STD_LOGIC_VECTOR (5 downto 0) := "101000"; + constant ap_const_lv6_27 : STD_LOGIC_VECTOR (5 downto 0) := "100111"; + constant ap_const_lv6_26 : STD_LOGIC_VECTOR (5 downto 0) := "100110"; + constant ap_const_lv6_25 : STD_LOGIC_VECTOR (5 downto 0) := "100101"; + constant ap_const_lv6_24 : STD_LOGIC_VECTOR (5 downto 0) := "100100"; + constant ap_const_lv6_23 : STD_LOGIC_VECTOR (5 downto 0) := "100011"; + constant ap_const_lv6_22 : STD_LOGIC_VECTOR (5 downto 0) := "100010"; + constant ap_const_lv6_21 : STD_LOGIC_VECTOR (5 downto 0) := "100001"; + constant ap_const_lv6_20 : STD_LOGIC_VECTOR (5 downto 0) := "100000"; + constant ap_const_lv6_1F : STD_LOGIC_VECTOR (5 downto 0) := "011111"; + constant ap_const_lv6_1E : STD_LOGIC_VECTOR (5 downto 0) := "011110"; + constant ap_const_lv6_1D : STD_LOGIC_VECTOR (5 downto 0) := "011101"; + constant ap_const_lv6_1C : STD_LOGIC_VECTOR (5 downto 0) := "011100"; + constant ap_const_lv6_1B : STD_LOGIC_VECTOR (5 downto 0) := "011011"; + constant ap_const_lv6_1A : STD_LOGIC_VECTOR (5 downto 0) := "011010"; + constant ap_const_lv6_19 : STD_LOGIC_VECTOR (5 downto 0) := "011001"; + constant ap_const_lv6_18 : STD_LOGIC_VECTOR (5 downto 0) := "011000"; + constant ap_const_lv6_17 : STD_LOGIC_VECTOR (5 downto 0) := "010111"; + constant ap_const_lv6_16 : STD_LOGIC_VECTOR (5 downto 0) := "010110"; + constant ap_const_lv6_15 : STD_LOGIC_VECTOR (5 downto 0) := "010101"; + constant ap_const_lv6_14 : STD_LOGIC_VECTOR (5 downto 0) := "010100"; + constant ap_const_lv6_13 : STD_LOGIC_VECTOR (5 downto 0) := "010011"; + constant ap_const_lv6_12 : STD_LOGIC_VECTOR (5 downto 0) := "010010"; + constant ap_const_lv6_11 : STD_LOGIC_VECTOR (5 downto 0) := "010001"; + constant ap_const_lv6_10 : STD_LOGIC_VECTOR (5 downto 0) := "010000"; + constant ap_const_lv6_F : STD_LOGIC_VECTOR (5 downto 0) := "001111"; + constant ap_const_lv6_E : STD_LOGIC_VECTOR (5 downto 0) := "001110"; + constant ap_const_lv6_D : STD_LOGIC_VECTOR (5 downto 0) := "001101"; + constant ap_const_lv6_C : STD_LOGIC_VECTOR (5 downto 0) := "001100"; + constant ap_const_lv6_B : STD_LOGIC_VECTOR (5 downto 0) := "001011"; + constant ap_const_lv6_A : STD_LOGIC_VECTOR (5 downto 0) := "001010"; + constant ap_const_lv6_9 : STD_LOGIC_VECTOR (5 downto 0) := "001001"; + constant ap_const_lv6_8 : STD_LOGIC_VECTOR (5 downto 0) := "001000"; + constant ap_const_lv6_7 : STD_LOGIC_VECTOR (5 downto 0) := "000111"; + constant ap_const_lv6_6 : STD_LOGIC_VECTOR (5 downto 0) := "000110"; + constant ap_const_lv6_5 : STD_LOGIC_VECTOR (5 downto 0) := "000101"; + constant ap_const_lv6_4 : STD_LOGIC_VECTOR (5 downto 0) := "000100"; + constant ap_const_lv6_3 : STD_LOGIC_VECTOR (5 downto 0) := "000011"; + constant ap_const_lv6_2 : STD_LOGIC_VECTOR (5 downto 0) := "000010"; + constant ap_const_lv6_1 : STD_LOGIC_VECTOR (5 downto 0) := "000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv6_3F : STD_LOGIC_VECTOR (5 downto 0) := "111111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv32_6 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000110"; + constant ap_const_lv32_C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001100"; + constant ap_const_lv32_B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001011"; + constant ap_const_lv64_1 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (25 downto 0) := "00000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state28 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state28 : signal is "none"; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp3_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0 : BOOLEAN; + signal icmp_ln42_reg_6313 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_6313_pp3_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state36 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state36 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_3296 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_3307 : STD_LOGIC_VECTOR (12 downto 0); + signal indvar_flatten_reg_3318 : STD_LOGIC_VECTOR (63 downto 0); + signal i_0_reg_3329 : STD_LOGIC_VECTOR (30 downto 0); + signal j_0_reg_3340 : STD_LOGIC_VECTOR (31 downto 0); + signal phi_ln42_reg_3351 : STD_LOGIC_VECTOR (12 downto 0); + signal dim_read_reg_4390 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_4396 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_4401 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_4406 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_4417 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_4423 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_3420_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal add_ln27_fu_3426_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal lshr_ln_reg_4438 : STD_LOGIC_VECTOR (6 downto 0); + signal lshr_ln_reg_4438_pp0_iter1_reg : STD_LOGIC_VECTOR (6 downto 0); + signal trunc_ln27_fu_3442_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4443 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4443_pp0_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in1_mem_addr_read_reg_4447 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_3513_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal add_ln28_fu_3519_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal trunc_ln28_fu_3525_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4524 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4524_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4529 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4529_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in2_mem_addr_read_reg_4533 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln31_fu_3609_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal mul_ln31_reg_4601 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal icmp_ln31_fu_3615_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4606 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp2_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp2_stage0 : signal is "none"; + signal ap_block_state23_pp2_stage0_iter0 : BOOLEAN; + signal ap_block_state24_pp2_stage0_iter1 : BOOLEAN; + signal ap_block_state25_pp2_stage0_iter2 : BOOLEAN; + signal ap_block_state26_pp2_stage0_iter3 : BOOLEAN; + signal ap_block_state27_pp2_stage0_iter4 : BOOLEAN; + signal ap_block_pp2_stage0_11001 : BOOLEAN; + signal icmp_ln31_reg_4606_pp2_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4606_pp2_iter2_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4606_pp2_iter3_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln31_fu_3620_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_enable_reg_pp2_iter0 : STD_LOGIC := '0'; + signal select_ln31_1_fu_3645_p3 : STD_LOGIC_VECTOR (30 downto 0); + signal select_ln31_1_reg_4615 : STD_LOGIC_VECTOR (30 downto 0); + signal zext_ln31_1_fu_3665_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln31_1_reg_4620 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_3726_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_reg_4916 : STD_LOGIC_VECTOR (63 downto 0); + signal out_loc_addr_reg_4927 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4927_pp2_iter1_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4927_pp2_iter2_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4927_pp2_iter3_reg : STD_LOGIC_VECTOR (11 downto 0); + signal j_fu_3802_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_0_load_reg_5223 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter1 : STD_LOGIC := '0'; + signal in1_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_1_load_reg_5228 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_load_reg_5233 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_load_reg_5238 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_load_reg_5243 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_load_reg_5248 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_load_reg_5253 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_load_reg_5258 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_load_reg_5263 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_load_reg_5268 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_load_reg_5273 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_load_reg_5278 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_load_reg_5283 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_load_reg_5288 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_load_reg_5293 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_load_reg_5298 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_load_reg_5303 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_load_reg_5308 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_load_reg_5313 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_load_reg_5318 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_load_reg_5323 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_load_reg_5328 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_load_reg_5333 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_load_reg_5338 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_load_reg_5343 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_load_reg_5348 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_load_reg_5353 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_load_reg_5358 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_load_reg_5363 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_load_reg_5368 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_load_reg_5373 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_load_reg_5378 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_load_reg_5383 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_load_reg_5388 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_load_reg_5393 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_load_reg_5398 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_load_reg_5403 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_load_reg_5408 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_load_reg_5413 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_load_reg_5418 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_load_reg_5423 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_load_reg_5438 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_load_reg_5443 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_load_reg_5458 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_load_reg_5463 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_load_reg_5468 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_load_reg_5473 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_load_reg_5478 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_load_reg_5483 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_load_reg_5488 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_load_reg_5493 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_load_reg_5498 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_load_reg_5503 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_load_reg_5518 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_load_reg_5523 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_load_reg_5533 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_load_reg_5538 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_0_load_reg_5543 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_load_reg_5548 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_load_reg_5553 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_load_reg_5558 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_load_reg_5563 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_load_reg_5568 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_load_reg_5573 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_load_reg_5578 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_load_reg_5583 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_load_reg_5588 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_load_reg_5593 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_load_reg_5598 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_load_reg_5603 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_load_reg_5608 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_load_reg_5613 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_load_reg_5618 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_load_reg_5623 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_load_reg_5628 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_load_reg_5633 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_load_reg_5638 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_load_reg_5643 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_load_reg_5648 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_load_reg_5653 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_load_reg_5658 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_load_reg_5663 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_load_reg_5668 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_load_reg_5673 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_load_reg_5678 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_load_reg_5683 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_load_reg_5688 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_load_reg_5693 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_load_reg_5698 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_load_reg_5703 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_load_reg_5708 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_load_reg_5713 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_load_reg_5718 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_load_reg_5723 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_load_reg_5728 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_load_reg_5733 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_load_reg_5738 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_load_reg_5743 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_load_reg_5758 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_load_reg_5763 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_load_reg_5778 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_load_reg_5783 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_load_reg_5788 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_load_reg_5793 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_load_reg_5798 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_load_reg_5803 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_load_reg_5808 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_load_reg_5813 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_load_reg_5818 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_load_reg_5823 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_load_reg_5838 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_load_reg_5843 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_load_reg_5853 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_load_reg_5858 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_load_reg_5863 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter2 : STD_LOGIC := '0'; + signal in1_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_load_reg_5868 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_load_reg_5873 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_load_reg_5878 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_load_reg_5883 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_load_reg_5888 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_load_reg_5893 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_fu_3808_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_reg_5898 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_fu_3812_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_reg_5903 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_fu_3816_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_reg_5908 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_fu_3820_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_reg_5913 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_fu_3824_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_reg_5918 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_fu_3828_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_reg_5923 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_fu_3832_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_reg_5928 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_fu_3836_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_reg_5933 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_fu_3840_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_reg_5938 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_fu_3844_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_reg_5943 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_fu_3848_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_reg_5948 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_fu_3852_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_reg_5953 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_fu_3856_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_reg_5958 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_fu_3860_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_reg_5963 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_fu_3864_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_reg_5968 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_fu_3868_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_reg_5973 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_fu_3872_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_reg_5978 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_fu_3876_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_reg_5983 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_fu_3880_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_reg_5988 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_fu_3884_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_reg_5993 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_fu_3888_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_reg_5998 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_fu_3892_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_reg_6003 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_fu_3896_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_reg_6008 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_fu_3900_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_reg_6013 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_fu_3904_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_reg_6018 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_fu_3908_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_reg_6023 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_fu_3912_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_reg_6028 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_fu_3916_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_reg_6033 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_fu_3920_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_reg_6038 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_fu_3924_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_reg_6043 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_fu_3928_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_reg_6048 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_fu_3932_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_reg_6053 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_fu_3936_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_reg_6058 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_fu_3940_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_reg_6063 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_fu_3944_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_reg_6068 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_fu_3948_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_reg_6073 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_fu_3952_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_reg_6078 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_fu_3956_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_reg_6083 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_fu_3960_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_reg_6088 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_fu_3964_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_reg_6093 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_fu_3968_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_reg_6098 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_load_reg_6103 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_load_reg_6108 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_fu_3972_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_reg_6113 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_fu_3976_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_reg_6118 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_load_reg_6123 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_load_reg_6128 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_fu_3980_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_reg_6133 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_fu_3984_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_reg_6138 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_fu_3988_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_reg_6143 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_fu_3992_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_reg_6148 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_fu_3996_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_reg_6153 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_fu_4000_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_reg_6158 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_fu_4004_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_reg_6163 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_fu_4008_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_reg_6168 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_fu_4012_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_reg_6173 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_fu_4016_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_reg_6178 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_load_reg_6183 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_load_reg_6188 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_fu_4020_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_reg_6193 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_fu_4024_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_reg_6198 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_load_reg_6203 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_fu_4028_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_reg_6208 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_fu_4032_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_reg_6213 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_fu_4036_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_reg_6218 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_fu_4040_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_reg_6223 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_fu_4044_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_reg_6228 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_fu_4048_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_reg_6233 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_fu_4052_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_reg_6238 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_fu_4056_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_reg_6243 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_fu_4060_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_reg_6248 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_fu_4093_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_reg_6253 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_fu_4107_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_reg_6258 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_fu_4121_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_reg_6263 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_fu_4155_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_reg_6268 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_fu_4189_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_reg_6273 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_fu_4223_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_reg_6278 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_fu_4229_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_reg_6283 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_fu_4233_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_reg_6288 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_fu_4265_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_reg_6293 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_fu_4271_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_reg_6298 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_fu_4275_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_reg_6303 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_fu_4279_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_reg_6308 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln42_fu_4373_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp3_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp3_stage0 : signal is "none"; + signal ap_block_state29_pp3_stage0_iter0 : BOOLEAN; + signal ap_block_state30_pp3_stage0_iter1 : BOOLEAN; + signal ap_block_state31_pp3_stage0_iter2 : BOOLEAN; + signal ap_block_state31_io : BOOLEAN; + signal ap_block_pp3_stage0_11001 : BOOLEAN; + signal add_ln42_fu_4379_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp3_iter0 : STD_LOGIC := '0'; + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal out_loc_load_reg_6327 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp3_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0_subdone : BOOLEAN; + signal ap_condition_pp2_exit_iter0_state23 : STD_LOGIC; + signal ap_enable_reg_pp2_iter3 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter4 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0_subdone : BOOLEAN; + signal ap_condition_pp3_exit_iter0_state29 : STD_LOGIC; + signal in1_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_0_ce0 : STD_LOGIC; + signal in1_loc_0_we0 : STD_LOGIC; + signal in1_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_1_ce0 : STD_LOGIC; + signal in1_loc_1_we0 : STD_LOGIC; + signal in1_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_2_ce0 : STD_LOGIC; + signal in1_loc_2_we0 : STD_LOGIC; + signal in1_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_3_ce0 : STD_LOGIC; + signal in1_loc_3_we0 : STD_LOGIC; + signal in1_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_4_ce0 : STD_LOGIC; + signal in1_loc_4_we0 : STD_LOGIC; + signal in1_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_5_ce0 : STD_LOGIC; + signal in1_loc_5_we0 : STD_LOGIC; + signal in1_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_6_ce0 : STD_LOGIC; + signal in1_loc_6_we0 : STD_LOGIC; + signal in1_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_7_ce0 : STD_LOGIC; + signal in1_loc_7_we0 : STD_LOGIC; + signal in1_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_8_ce0 : STD_LOGIC; + signal in1_loc_8_we0 : STD_LOGIC; + signal in1_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_9_ce0 : STD_LOGIC; + signal in1_loc_9_we0 : STD_LOGIC; + signal in1_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_10_ce0 : STD_LOGIC; + signal in1_loc_10_we0 : STD_LOGIC; + signal in1_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_11_ce0 : STD_LOGIC; + signal in1_loc_11_we0 : STD_LOGIC; + signal in1_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_12_ce0 : STD_LOGIC; + signal in1_loc_12_we0 : STD_LOGIC; + signal in1_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_13_ce0 : STD_LOGIC; + signal in1_loc_13_we0 : STD_LOGIC; + signal in1_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_14_ce0 : STD_LOGIC; + signal in1_loc_14_we0 : STD_LOGIC; + signal in1_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_15_ce0 : STD_LOGIC; + signal in1_loc_15_we0 : STD_LOGIC; + signal in1_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_16_ce0 : STD_LOGIC; + signal in1_loc_16_we0 : STD_LOGIC; + signal in1_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_17_ce0 : STD_LOGIC; + signal in1_loc_17_we0 : STD_LOGIC; + signal in1_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_18_ce0 : STD_LOGIC; + signal in1_loc_18_we0 : STD_LOGIC; + signal in1_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_19_ce0 : STD_LOGIC; + signal in1_loc_19_we0 : STD_LOGIC; + signal in1_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_20_ce0 : STD_LOGIC; + signal in1_loc_20_we0 : STD_LOGIC; + signal in1_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_21_ce0 : STD_LOGIC; + signal in1_loc_21_we0 : STD_LOGIC; + signal in1_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_22_ce0 : STD_LOGIC; + signal in1_loc_22_we0 : STD_LOGIC; + signal in1_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_23_ce0 : STD_LOGIC; + signal in1_loc_23_we0 : STD_LOGIC; + signal in1_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_24_ce0 : STD_LOGIC; + signal in1_loc_24_we0 : STD_LOGIC; + signal in1_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_25_ce0 : STD_LOGIC; + signal in1_loc_25_we0 : STD_LOGIC; + signal in1_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_26_ce0 : STD_LOGIC; + signal in1_loc_26_we0 : STD_LOGIC; + signal in1_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_27_ce0 : STD_LOGIC; + signal in1_loc_27_we0 : STD_LOGIC; + signal in1_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_28_ce0 : STD_LOGIC; + signal in1_loc_28_we0 : STD_LOGIC; + signal in1_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_29_ce0 : STD_LOGIC; + signal in1_loc_29_we0 : STD_LOGIC; + signal in1_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_30_ce0 : STD_LOGIC; + signal in1_loc_30_we0 : STD_LOGIC; + signal in1_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_31_ce0 : STD_LOGIC; + signal in1_loc_31_we0 : STD_LOGIC; + signal in1_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_32_ce0 : STD_LOGIC; + signal in1_loc_32_we0 : STD_LOGIC; + signal in1_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_33_ce0 : STD_LOGIC; + signal in1_loc_33_we0 : STD_LOGIC; + signal in1_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_34_ce0 : STD_LOGIC; + signal in1_loc_34_we0 : STD_LOGIC; + signal in1_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_35_ce0 : STD_LOGIC; + signal in1_loc_35_we0 : STD_LOGIC; + signal in1_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_36_ce0 : STD_LOGIC; + signal in1_loc_36_we0 : STD_LOGIC; + signal in1_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_37_ce0 : STD_LOGIC; + signal in1_loc_37_we0 : STD_LOGIC; + signal in1_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_38_ce0 : STD_LOGIC; + signal in1_loc_38_we0 : STD_LOGIC; + signal in1_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_39_ce0 : STD_LOGIC; + signal in1_loc_39_we0 : STD_LOGIC; + signal in1_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_40_ce0 : STD_LOGIC; + signal in1_loc_40_we0 : STD_LOGIC; + signal in1_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_41_ce0 : STD_LOGIC; + signal in1_loc_41_we0 : STD_LOGIC; + signal in1_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_42_ce0 : STD_LOGIC; + signal in1_loc_42_we0 : STD_LOGIC; + signal in1_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_43_ce0 : STD_LOGIC; + signal in1_loc_43_we0 : STD_LOGIC; + signal in1_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_44_ce0 : STD_LOGIC; + signal in1_loc_44_we0 : STD_LOGIC; + signal in1_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_45_ce0 : STD_LOGIC; + signal in1_loc_45_we0 : STD_LOGIC; + signal in1_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_46_ce0 : STD_LOGIC; + signal in1_loc_46_we0 : STD_LOGIC; + signal in1_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_47_ce0 : STD_LOGIC; + signal in1_loc_47_we0 : STD_LOGIC; + signal in1_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_48_ce0 : STD_LOGIC; + signal in1_loc_48_we0 : STD_LOGIC; + signal in1_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_49_ce0 : STD_LOGIC; + signal in1_loc_49_we0 : STD_LOGIC; + signal in1_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_50_ce0 : STD_LOGIC; + signal in1_loc_50_we0 : STD_LOGIC; + signal in1_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_51_ce0 : STD_LOGIC; + signal in1_loc_51_we0 : STD_LOGIC; + signal in1_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_52_ce0 : STD_LOGIC; + signal in1_loc_52_we0 : STD_LOGIC; + signal in1_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_53_ce0 : STD_LOGIC; + signal in1_loc_53_we0 : STD_LOGIC; + signal in1_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_54_ce0 : STD_LOGIC; + signal in1_loc_54_we0 : STD_LOGIC; + signal in1_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_55_ce0 : STD_LOGIC; + signal in1_loc_55_we0 : STD_LOGIC; + signal in1_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_56_ce0 : STD_LOGIC; + signal in1_loc_56_we0 : STD_LOGIC; + signal in1_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_57_ce0 : STD_LOGIC; + signal in1_loc_57_we0 : STD_LOGIC; + signal in1_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_58_ce0 : STD_LOGIC; + signal in1_loc_58_we0 : STD_LOGIC; + signal in1_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_59_ce0 : STD_LOGIC; + signal in1_loc_59_we0 : STD_LOGIC; + signal in1_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_60_ce0 : STD_LOGIC; + signal in1_loc_60_we0 : STD_LOGIC; + signal in1_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_61_ce0 : STD_LOGIC; + signal in1_loc_61_we0 : STD_LOGIC; + signal in1_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_62_ce0 : STD_LOGIC; + signal in1_loc_62_we0 : STD_LOGIC; + signal in1_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_63_ce0 : STD_LOGIC; + signal in1_loc_63_we0 : STD_LOGIC; + signal in2_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_0_ce0 : STD_LOGIC; + signal in2_loc_0_we0 : STD_LOGIC; + signal in2_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_1_ce0 : STD_LOGIC; + signal in2_loc_1_we0 : STD_LOGIC; + signal in2_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_2_ce0 : STD_LOGIC; + signal in2_loc_2_we0 : STD_LOGIC; + signal in2_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_3_ce0 : STD_LOGIC; + signal in2_loc_3_we0 : STD_LOGIC; + signal in2_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_4_ce0 : STD_LOGIC; + signal in2_loc_4_we0 : STD_LOGIC; + signal in2_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_5_ce0 : STD_LOGIC; + signal in2_loc_5_we0 : STD_LOGIC; + signal in2_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_6_ce0 : STD_LOGIC; + signal in2_loc_6_we0 : STD_LOGIC; + signal in2_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_7_ce0 : STD_LOGIC; + signal in2_loc_7_we0 : STD_LOGIC; + signal in2_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_8_ce0 : STD_LOGIC; + signal in2_loc_8_we0 : STD_LOGIC; + signal in2_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_9_ce0 : STD_LOGIC; + signal in2_loc_9_we0 : STD_LOGIC; + signal in2_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_10_ce0 : STD_LOGIC; + signal in2_loc_10_we0 : STD_LOGIC; + signal in2_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_11_ce0 : STD_LOGIC; + signal in2_loc_11_we0 : STD_LOGIC; + signal in2_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_12_ce0 : STD_LOGIC; + signal in2_loc_12_we0 : STD_LOGIC; + signal in2_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_13_ce0 : STD_LOGIC; + signal in2_loc_13_we0 : STD_LOGIC; + signal in2_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_14_ce0 : STD_LOGIC; + signal in2_loc_14_we0 : STD_LOGIC; + signal in2_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_15_ce0 : STD_LOGIC; + signal in2_loc_15_we0 : STD_LOGIC; + signal in2_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_16_ce0 : STD_LOGIC; + signal in2_loc_16_we0 : STD_LOGIC; + signal in2_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_17_ce0 : STD_LOGIC; + signal in2_loc_17_we0 : STD_LOGIC; + signal in2_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_18_ce0 : STD_LOGIC; + signal in2_loc_18_we0 : STD_LOGIC; + signal in2_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_19_ce0 : STD_LOGIC; + signal in2_loc_19_we0 : STD_LOGIC; + signal in2_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_20_ce0 : STD_LOGIC; + signal in2_loc_20_we0 : STD_LOGIC; + signal in2_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_21_ce0 : STD_LOGIC; + signal in2_loc_21_we0 : STD_LOGIC; + signal in2_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_22_ce0 : STD_LOGIC; + signal in2_loc_22_we0 : STD_LOGIC; + signal in2_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_23_ce0 : STD_LOGIC; + signal in2_loc_23_we0 : STD_LOGIC; + signal in2_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_24_ce0 : STD_LOGIC; + signal in2_loc_24_we0 : STD_LOGIC; + signal in2_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_25_ce0 : STD_LOGIC; + signal in2_loc_25_we0 : STD_LOGIC; + signal in2_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_26_ce0 : STD_LOGIC; + signal in2_loc_26_we0 : STD_LOGIC; + signal in2_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_27_ce0 : STD_LOGIC; + signal in2_loc_27_we0 : STD_LOGIC; + signal in2_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_28_ce0 : STD_LOGIC; + signal in2_loc_28_we0 : STD_LOGIC; + signal in2_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_29_ce0 : STD_LOGIC; + signal in2_loc_29_we0 : STD_LOGIC; + signal in2_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_30_ce0 : STD_LOGIC; + signal in2_loc_30_we0 : STD_LOGIC; + signal in2_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_31_ce0 : STD_LOGIC; + signal in2_loc_31_we0 : STD_LOGIC; + signal in2_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_32_ce0 : STD_LOGIC; + signal in2_loc_32_we0 : STD_LOGIC; + signal in2_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_33_ce0 : STD_LOGIC; + signal in2_loc_33_we0 : STD_LOGIC; + signal in2_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_34_ce0 : STD_LOGIC; + signal in2_loc_34_we0 : STD_LOGIC; + signal in2_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_35_ce0 : STD_LOGIC; + signal in2_loc_35_we0 : STD_LOGIC; + signal in2_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_36_ce0 : STD_LOGIC; + signal in2_loc_36_we0 : STD_LOGIC; + signal in2_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_37_ce0 : STD_LOGIC; + signal in2_loc_37_we0 : STD_LOGIC; + signal in2_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_38_ce0 : STD_LOGIC; + signal in2_loc_38_we0 : STD_LOGIC; + signal in2_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_39_ce0 : STD_LOGIC; + signal in2_loc_39_we0 : STD_LOGIC; + signal in2_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_40_ce0 : STD_LOGIC; + signal in2_loc_40_we0 : STD_LOGIC; + signal in2_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_41_ce0 : STD_LOGIC; + signal in2_loc_41_we0 : STD_LOGIC; + signal in2_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_42_ce0 : STD_LOGIC; + signal in2_loc_42_we0 : STD_LOGIC; + signal in2_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_43_ce0 : STD_LOGIC; + signal in2_loc_43_we0 : STD_LOGIC; + signal in2_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_44_ce0 : STD_LOGIC; + signal in2_loc_44_we0 : STD_LOGIC; + signal in2_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_45_ce0 : STD_LOGIC; + signal in2_loc_45_we0 : STD_LOGIC; + signal in2_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_46_ce0 : STD_LOGIC; + signal in2_loc_46_we0 : STD_LOGIC; + signal in2_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_47_ce0 : STD_LOGIC; + signal in2_loc_47_we0 : STD_LOGIC; + signal in2_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_48_ce0 : STD_LOGIC; + signal in2_loc_48_we0 : STD_LOGIC; + signal in2_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_49_ce0 : STD_LOGIC; + signal in2_loc_49_we0 : STD_LOGIC; + signal in2_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_50_ce0 : STD_LOGIC; + signal in2_loc_50_we0 : STD_LOGIC; + signal in2_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_51_ce0 : STD_LOGIC; + signal in2_loc_51_we0 : STD_LOGIC; + signal in2_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_52_ce0 : STD_LOGIC; + signal in2_loc_52_we0 : STD_LOGIC; + signal in2_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_53_ce0 : STD_LOGIC; + signal in2_loc_53_we0 : STD_LOGIC; + signal in2_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_54_ce0 : STD_LOGIC; + signal in2_loc_54_we0 : STD_LOGIC; + signal in2_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_55_ce0 : STD_LOGIC; + signal in2_loc_55_we0 : STD_LOGIC; + signal in2_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_56_ce0 : STD_LOGIC; + signal in2_loc_56_we0 : STD_LOGIC; + signal in2_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_57_ce0 : STD_LOGIC; + signal in2_loc_57_we0 : STD_LOGIC; + signal in2_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_58_ce0 : STD_LOGIC; + signal in2_loc_58_we0 : STD_LOGIC; + signal in2_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_59_ce0 : STD_LOGIC; + signal in2_loc_59_we0 : STD_LOGIC; + signal in2_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_60_ce0 : STD_LOGIC; + signal in2_loc_60_we0 : STD_LOGIC; + signal in2_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_61_ce0 : STD_LOGIC; + signal in2_loc_61_we0 : STD_LOGIC; + signal in2_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_62_ce0 : STD_LOGIC; + signal in2_loc_62_we0 : STD_LOGIC; + signal in2_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_63_ce0 : STD_LOGIC; + signal in2_loc_63_we0 : STD_LOGIC; + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_ce1 : STD_LOGIC; + signal out_loc_we1 : STD_LOGIC; + signal out_loc_d1 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_i_0_phi_fu_3333_p4 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_block_pp2_stage0 : BOOLEAN; + signal zext_ln27_fu_3446_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_3539_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_fu_3797_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_4385_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_8_fu_3392_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_3402_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_7_fu_3411_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp3_stage0_01001 : BOOLEAN; + signal mul_ln31_fu_3609_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln31_fu_3606_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal mul_ln31_fu_3609_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln33_fu_3632_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal i_fu_3626_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal trunc_ln38_fu_3653_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal select_ln31_fu_3637_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal tmp_cast_fu_3657_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal trunc_ln38_1_fu_3787_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_64_fu_3791_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_fu_4064_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_1_fu_4069_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_fu_4079_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_fu_4083_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_fu_4073_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_5_fu_4087_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_fu_4099_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_8_fu_4103_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_fu_4113_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_11_fu_4117_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_fu_4127_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_16_fu_4131_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_fu_4141_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_fu_4145_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_fu_4135_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_20_fu_4149_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_fu_4161_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_23_fu_4165_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_fu_4175_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_fu_4179_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_fu_4169_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_27_fu_4183_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_fu_4195_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_32_fu_4199_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_fu_4209_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_fu_4213_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_fu_4203_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_36_fu_4217_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_fu_4237_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_47_fu_4241_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_fu_4251_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_fu_4255_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_fu_4245_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_51_fu_4259_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_13_fu_4283_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_fu_4287_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_29_fu_4292_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_39_fu_4302_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_42_fu_4311_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_fu_4306_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_fu_4315_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_44_fu_4320_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_54_fu_4331_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_58_fu_4340_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_fu_4335_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_fu_4344_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_60_fu_4349_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_fu_4326_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_fu_4355_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_fu_4296_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_62_fu_4360_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (25 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp2 : STD_LOGIC; + signal ap_enable_pp2 : STD_LOGIC; + signal ap_idle_pp3 : STD_LOGIC; + signal ap_enable_pp3 : STD_LOGIC; + + component mmult_in1_loc_0 IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (5 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_out_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR (31 downto 0); + address1 : IN STD_LOGIC_VECTOR (11 downto 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_4423, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_4417, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => out_loc_load_reg_6327, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_0_address0, + ce0 => in1_loc_0_ce0, + we0 => in1_loc_0_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_0_q0); + + in1_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_1_address0, + ce0 => in1_loc_1_ce0, + we0 => in1_loc_1_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_1_q0); + + in1_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_2_address0, + ce0 => in1_loc_2_ce0, + we0 => in1_loc_2_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_2_q0); + + in1_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_3_address0, + ce0 => in1_loc_3_ce0, + we0 => in1_loc_3_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_3_q0); + + in1_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_4_address0, + ce0 => in1_loc_4_ce0, + we0 => in1_loc_4_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_4_q0); + + in1_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_5_address0, + ce0 => in1_loc_5_ce0, + we0 => in1_loc_5_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_5_q0); + + in1_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_6_address0, + ce0 => in1_loc_6_ce0, + we0 => in1_loc_6_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_6_q0); + + in1_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_7_address0, + ce0 => in1_loc_7_ce0, + we0 => in1_loc_7_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_7_q0); + + in1_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_8_address0, + ce0 => in1_loc_8_ce0, + we0 => in1_loc_8_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_8_q0); + + in1_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_9_address0, + ce0 => in1_loc_9_ce0, + we0 => in1_loc_9_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_9_q0); + + in1_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_10_address0, + ce0 => in1_loc_10_ce0, + we0 => in1_loc_10_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_10_q0); + + in1_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_11_address0, + ce0 => in1_loc_11_ce0, + we0 => in1_loc_11_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_11_q0); + + in1_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_12_address0, + ce0 => in1_loc_12_ce0, + we0 => in1_loc_12_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_12_q0); + + in1_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_13_address0, + ce0 => in1_loc_13_ce0, + we0 => in1_loc_13_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_13_q0); + + in1_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_14_address0, + ce0 => in1_loc_14_ce0, + we0 => in1_loc_14_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_14_q0); + + in1_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_15_address0, + ce0 => in1_loc_15_ce0, + we0 => in1_loc_15_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_15_q0); + + in1_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_16_address0, + ce0 => in1_loc_16_ce0, + we0 => in1_loc_16_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_16_q0); + + in1_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_17_address0, + ce0 => in1_loc_17_ce0, + we0 => in1_loc_17_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_17_q0); + + in1_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_18_address0, + ce0 => in1_loc_18_ce0, + we0 => in1_loc_18_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_18_q0); + + in1_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_19_address0, + ce0 => in1_loc_19_ce0, + we0 => in1_loc_19_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_19_q0); + + in1_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_20_address0, + ce0 => in1_loc_20_ce0, + we0 => in1_loc_20_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_20_q0); + + in1_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_21_address0, + ce0 => in1_loc_21_ce0, + we0 => in1_loc_21_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_21_q0); + + in1_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_22_address0, + ce0 => in1_loc_22_ce0, + we0 => in1_loc_22_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_22_q0); + + in1_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_23_address0, + ce0 => in1_loc_23_ce0, + we0 => in1_loc_23_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_23_q0); + + in1_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_24_address0, + ce0 => in1_loc_24_ce0, + we0 => in1_loc_24_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_24_q0); + + in1_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_25_address0, + ce0 => in1_loc_25_ce0, + we0 => in1_loc_25_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_25_q0); + + in1_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_26_address0, + ce0 => in1_loc_26_ce0, + we0 => in1_loc_26_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_26_q0); + + in1_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_27_address0, + ce0 => in1_loc_27_ce0, + we0 => in1_loc_27_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_27_q0); + + in1_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_28_address0, + ce0 => in1_loc_28_ce0, + we0 => in1_loc_28_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_28_q0); + + in1_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_29_address0, + ce0 => in1_loc_29_ce0, + we0 => in1_loc_29_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_29_q0); + + in1_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_30_address0, + ce0 => in1_loc_30_ce0, + we0 => in1_loc_30_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_30_q0); + + in1_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_31_address0, + ce0 => in1_loc_31_ce0, + we0 => in1_loc_31_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_31_q0); + + in1_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_32_address0, + ce0 => in1_loc_32_ce0, + we0 => in1_loc_32_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_32_q0); + + in1_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_33_address0, + ce0 => in1_loc_33_ce0, + we0 => in1_loc_33_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_33_q0); + + in1_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_34_address0, + ce0 => in1_loc_34_ce0, + we0 => in1_loc_34_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_34_q0); + + in1_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_35_address0, + ce0 => in1_loc_35_ce0, + we0 => in1_loc_35_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_35_q0); + + in1_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_36_address0, + ce0 => in1_loc_36_ce0, + we0 => in1_loc_36_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_36_q0); + + in1_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_37_address0, + ce0 => in1_loc_37_ce0, + we0 => in1_loc_37_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_37_q0); + + in1_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_38_address0, + ce0 => in1_loc_38_ce0, + we0 => in1_loc_38_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_38_q0); + + in1_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_39_address0, + ce0 => in1_loc_39_ce0, + we0 => in1_loc_39_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_39_q0); + + in1_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_40_address0, + ce0 => in1_loc_40_ce0, + we0 => in1_loc_40_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_40_q0); + + in1_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_41_address0, + ce0 => in1_loc_41_ce0, + we0 => in1_loc_41_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_41_q0); + + in1_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_42_address0, + ce0 => in1_loc_42_ce0, + we0 => in1_loc_42_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_42_q0); + + in1_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_43_address0, + ce0 => in1_loc_43_ce0, + we0 => in1_loc_43_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_43_q0); + + in1_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_44_address0, + ce0 => in1_loc_44_ce0, + we0 => in1_loc_44_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_44_q0); + + in1_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_45_address0, + ce0 => in1_loc_45_ce0, + we0 => in1_loc_45_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_45_q0); + + in1_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_46_address0, + ce0 => in1_loc_46_ce0, + we0 => in1_loc_46_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_46_q0); + + in1_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_47_address0, + ce0 => in1_loc_47_ce0, + we0 => in1_loc_47_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_47_q0); + + in1_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_48_address0, + ce0 => in1_loc_48_ce0, + we0 => in1_loc_48_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_48_q0); + + in1_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_49_address0, + ce0 => in1_loc_49_ce0, + we0 => in1_loc_49_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_49_q0); + + in1_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_50_address0, + ce0 => in1_loc_50_ce0, + we0 => in1_loc_50_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_50_q0); + + in1_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_51_address0, + ce0 => in1_loc_51_ce0, + we0 => in1_loc_51_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_51_q0); + + in1_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_52_address0, + ce0 => in1_loc_52_ce0, + we0 => in1_loc_52_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_52_q0); + + in1_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_53_address0, + ce0 => in1_loc_53_ce0, + we0 => in1_loc_53_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_53_q0); + + in1_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_54_address0, + ce0 => in1_loc_54_ce0, + we0 => in1_loc_54_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_54_q0); + + in1_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_55_address0, + ce0 => in1_loc_55_ce0, + we0 => in1_loc_55_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_55_q0); + + in1_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_56_address0, + ce0 => in1_loc_56_ce0, + we0 => in1_loc_56_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_56_q0); + + in1_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_57_address0, + ce0 => in1_loc_57_ce0, + we0 => in1_loc_57_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_57_q0); + + in1_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_58_address0, + ce0 => in1_loc_58_ce0, + we0 => in1_loc_58_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_58_q0); + + in1_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_59_address0, + ce0 => in1_loc_59_ce0, + we0 => in1_loc_59_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_59_q0); + + in1_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_60_address0, + ce0 => in1_loc_60_ce0, + we0 => in1_loc_60_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_60_q0); + + in1_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_61_address0, + ce0 => in1_loc_61_ce0, + we0 => in1_loc_61_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_61_q0); + + in1_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_62_address0, + ce0 => in1_loc_62_ce0, + we0 => in1_loc_62_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_62_q0); + + in1_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_63_address0, + ce0 => in1_loc_63_ce0, + we0 => in1_loc_63_we0, + d0 => in1_mem_addr_read_reg_4447, + q0 => in1_loc_63_q0); + + in2_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_0_address0, + ce0 => in2_loc_0_ce0, + we0 => in2_loc_0_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_0_q0); + + in2_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_1_address0, + ce0 => in2_loc_1_ce0, + we0 => in2_loc_1_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_1_q0); + + in2_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_2_address0, + ce0 => in2_loc_2_ce0, + we0 => in2_loc_2_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_2_q0); + + in2_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_3_address0, + ce0 => in2_loc_3_ce0, + we0 => in2_loc_3_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_3_q0); + + in2_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_4_address0, + ce0 => in2_loc_4_ce0, + we0 => in2_loc_4_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_4_q0); + + in2_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_5_address0, + ce0 => in2_loc_5_ce0, + we0 => in2_loc_5_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_5_q0); + + in2_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_6_address0, + ce0 => in2_loc_6_ce0, + we0 => in2_loc_6_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_6_q0); + + in2_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_7_address0, + ce0 => in2_loc_7_ce0, + we0 => in2_loc_7_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_7_q0); + + in2_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_8_address0, + ce0 => in2_loc_8_ce0, + we0 => in2_loc_8_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_8_q0); + + in2_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_9_address0, + ce0 => in2_loc_9_ce0, + we0 => in2_loc_9_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_9_q0); + + in2_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_10_address0, + ce0 => in2_loc_10_ce0, + we0 => in2_loc_10_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_10_q0); + + in2_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_11_address0, + ce0 => in2_loc_11_ce0, + we0 => in2_loc_11_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_11_q0); + + in2_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_12_address0, + ce0 => in2_loc_12_ce0, + we0 => in2_loc_12_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_12_q0); + + in2_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_13_address0, + ce0 => in2_loc_13_ce0, + we0 => in2_loc_13_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_13_q0); + + in2_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_14_address0, + ce0 => in2_loc_14_ce0, + we0 => in2_loc_14_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_14_q0); + + in2_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_15_address0, + ce0 => in2_loc_15_ce0, + we0 => in2_loc_15_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_15_q0); + + in2_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_16_address0, + ce0 => in2_loc_16_ce0, + we0 => in2_loc_16_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_16_q0); + + in2_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_17_address0, + ce0 => in2_loc_17_ce0, + we0 => in2_loc_17_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_17_q0); + + in2_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_18_address0, + ce0 => in2_loc_18_ce0, + we0 => in2_loc_18_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_18_q0); + + in2_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_19_address0, + ce0 => in2_loc_19_ce0, + we0 => in2_loc_19_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_19_q0); + + in2_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_20_address0, + ce0 => in2_loc_20_ce0, + we0 => in2_loc_20_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_20_q0); + + in2_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_21_address0, + ce0 => in2_loc_21_ce0, + we0 => in2_loc_21_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_21_q0); + + in2_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_22_address0, + ce0 => in2_loc_22_ce0, + we0 => in2_loc_22_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_22_q0); + + in2_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_23_address0, + ce0 => in2_loc_23_ce0, + we0 => in2_loc_23_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_23_q0); + + in2_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_24_address0, + ce0 => in2_loc_24_ce0, + we0 => in2_loc_24_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_24_q0); + + in2_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_25_address0, + ce0 => in2_loc_25_ce0, + we0 => in2_loc_25_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_25_q0); + + in2_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_26_address0, + ce0 => in2_loc_26_ce0, + we0 => in2_loc_26_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_26_q0); + + in2_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_27_address0, + ce0 => in2_loc_27_ce0, + we0 => in2_loc_27_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_27_q0); + + in2_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_28_address0, + ce0 => in2_loc_28_ce0, + we0 => in2_loc_28_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_28_q0); + + in2_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_29_address0, + ce0 => in2_loc_29_ce0, + we0 => in2_loc_29_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_29_q0); + + in2_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_30_address0, + ce0 => in2_loc_30_ce0, + we0 => in2_loc_30_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_30_q0); + + in2_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_31_address0, + ce0 => in2_loc_31_ce0, + we0 => in2_loc_31_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_31_q0); + + in2_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_32_address0, + ce0 => in2_loc_32_ce0, + we0 => in2_loc_32_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_32_q0); + + in2_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_33_address0, + ce0 => in2_loc_33_ce0, + we0 => in2_loc_33_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_33_q0); + + in2_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_34_address0, + ce0 => in2_loc_34_ce0, + we0 => in2_loc_34_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_34_q0); + + in2_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_35_address0, + ce0 => in2_loc_35_ce0, + we0 => in2_loc_35_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_35_q0); + + in2_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_36_address0, + ce0 => in2_loc_36_ce0, + we0 => in2_loc_36_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_36_q0); + + in2_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_37_address0, + ce0 => in2_loc_37_ce0, + we0 => in2_loc_37_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_37_q0); + + in2_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_38_address0, + ce0 => in2_loc_38_ce0, + we0 => in2_loc_38_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_38_q0); + + in2_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_39_address0, + ce0 => in2_loc_39_ce0, + we0 => in2_loc_39_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_39_q0); + + in2_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_40_address0, + ce0 => in2_loc_40_ce0, + we0 => in2_loc_40_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_40_q0); + + in2_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_41_address0, + ce0 => in2_loc_41_ce0, + we0 => in2_loc_41_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_41_q0); + + in2_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_42_address0, + ce0 => in2_loc_42_ce0, + we0 => in2_loc_42_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_42_q0); + + in2_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_43_address0, + ce0 => in2_loc_43_ce0, + we0 => in2_loc_43_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_43_q0); + + in2_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_44_address0, + ce0 => in2_loc_44_ce0, + we0 => in2_loc_44_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_44_q0); + + in2_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_45_address0, + ce0 => in2_loc_45_ce0, + we0 => in2_loc_45_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_45_q0); + + in2_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_46_address0, + ce0 => in2_loc_46_ce0, + we0 => in2_loc_46_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_46_q0); + + in2_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_47_address0, + ce0 => in2_loc_47_ce0, + we0 => in2_loc_47_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_47_q0); + + in2_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_48_address0, + ce0 => in2_loc_48_ce0, + we0 => in2_loc_48_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_48_q0); + + in2_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_49_address0, + ce0 => in2_loc_49_ce0, + we0 => in2_loc_49_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_49_q0); + + in2_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_50_address0, + ce0 => in2_loc_50_ce0, + we0 => in2_loc_50_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_50_q0); + + in2_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_51_address0, + ce0 => in2_loc_51_ce0, + we0 => in2_loc_51_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_51_q0); + + in2_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_52_address0, + ce0 => in2_loc_52_ce0, + we0 => in2_loc_52_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_52_q0); + + in2_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_53_address0, + ce0 => in2_loc_53_ce0, + we0 => in2_loc_53_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_53_q0); + + in2_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_54_address0, + ce0 => in2_loc_54_ce0, + we0 => in2_loc_54_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_54_q0); + + in2_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_55_address0, + ce0 => in2_loc_55_ce0, + we0 => in2_loc_55_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_55_q0); + + in2_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_56_address0, + ce0 => in2_loc_56_ce0, + we0 => in2_loc_56_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_56_q0); + + in2_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_57_address0, + ce0 => in2_loc_57_ce0, + we0 => in2_loc_57_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_57_q0); + + in2_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_58_address0, + ce0 => in2_loc_58_ce0, + we0 => in2_loc_58_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_58_q0); + + in2_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_59_address0, + ce0 => in2_loc_59_ce0, + we0 => in2_loc_59_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_59_q0); + + in2_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_60_address0, + ce0 => in2_loc_60_ce0, + we0 => in2_loc_60_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_60_q0); + + in2_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_61_address0, + ce0 => in2_loc_61_ce0, + we0 => in2_loc_61_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_61_q0); + + in2_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_62_address0, + ce0 => in2_loc_62_ce0, + we0 => in2_loc_62_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_62_q0); + + in2_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_63_address0, + ce0 => in2_loc_63_ce0, + we0 => in2_loc_63_we0, + d0 => in2_mem_addr_read_reg_4533, + q0 => in2_loc_63_q0); + + out_loc_U : component mmult_out_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + q0 => out_loc_q0, + address1 => out_loc_addr_reg_4927_pp2_iter3_reg, + ce1 => out_loc_ce1, + we1 => out_loc_we1, + d1 => out_loc_d1); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp0_stage0) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp1_stage0) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_logic_1 = ap_condition_pp2_exit_iter0_state23) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state23)) then + ap_enable_reg_pp2_iter1 <= (ap_const_logic_1 xor ap_condition_pp2_exit_iter0_state23); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter3_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter3 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter3 <= ap_enable_reg_pp2_iter2; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter4_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter4 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter4 <= ap_enable_reg_pp2_iter3; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + ap_enable_reg_pp2_iter4 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_condition_pp3_exit_iter0_state29) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state28))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp3_exit_iter0_state29)) then + ap_enable_reg_pp3_iter1 <= (ap_const_logic_1 xor ap_condition_pp3_exit_iter0_state29); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state28))) then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_3329_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + i_0_reg_3329 <= select_ln31_1_reg_4615; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + i_0_reg_3329 <= ap_const_lv31_0; + end if; + end if; + end process; + + indvar_flatten_reg_3318_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + indvar_flatten_reg_3318 <= add_ln31_fu_3620_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + indvar_flatten_reg_3318 <= ap_const_lv64_0; + end if; + end if; + end process; + + j_0_reg_3340_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + j_0_reg_3340 <= j_fu_3802_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state22)) then + j_0_reg_3340 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_ln27_reg_3296_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_3296 <= add_ln27_fu_3426_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_3296 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_3307_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_3307 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_3307 <= add_ln28_fu_3519_p2; + end if; + end if; + end process; + + phi_ln42_reg_3351_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state28))) then + phi_ln42_reg_3351 <= ap_const_lv13_0; + elsif (((icmp_ln42_fu_4373_p2 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_boolean_0 = ap_block_pp3_stage0_11001))) then + phi_ln42_reg_3351 <= add_ln42_fu_4379_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606_pp2_iter2_reg = ap_const_lv1_0))) then + add_ln38_12_reg_6263 <= add_ln38_12_fu_4121_p2; + add_ln38_21_reg_6268 <= add_ln38_21_fu_4155_p2; + add_ln38_28_reg_6273 <= add_ln38_28_fu_4189_p2; + add_ln38_37_reg_6278 <= add_ln38_37_fu_4223_p2; + add_ln38_38_reg_6283 <= add_ln38_38_fu_4229_p2; + add_ln38_41_reg_6288 <= add_ln38_41_fu_4233_p2; + add_ln38_52_reg_6293 <= add_ln38_52_fu_4265_p2; + add_ln38_53_reg_6298 <= add_ln38_53_fu_4271_p2; + add_ln38_56_reg_6303 <= add_ln38_56_fu_4275_p2; + add_ln38_57_reg_6308 <= add_ln38_57_fu_4279_p2; + add_ln38_6_reg_6253 <= add_ln38_6_fu_4093_p2; + add_ln38_9_reg_6258 <= add_ln38_9_fu_4107_p2; + mul_ln38_41_reg_6218 <= mul_ln38_41_fu_4036_p2; + mul_ln38_42_reg_6223 <= mul_ln38_42_fu_4040_p2; + mul_ln38_45_reg_6228 <= mul_ln38_45_fu_4044_p2; + mul_ln38_46_reg_6233 <= mul_ln38_46_fu_4048_p2; + mul_ln38_57_reg_6238 <= mul_ln38_57_fu_4052_p2; + mul_ln38_58_reg_6243 <= mul_ln38_58_fu_4056_p2; + mul_ln38_61_reg_6248 <= mul_ln38_61_fu_4060_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_4390 <= dim; + in3_reg_4406 <= in1(31 downto 2); + in_reg_4401 <= in2(31 downto 2); + out5_reg_4396 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + icmp_ln31_reg_4606 <= icmp_ln31_fu_3615_p2; + icmp_ln31_reg_4606_pp2_iter1_reg <= icmp_ln31_reg_4606; + out_loc_addr_reg_4927_pp2_iter1_reg <= out_loc_addr_reg_4927; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_boolean_0 = ap_block_pp2_stage0_11001)) then + icmp_ln31_reg_4606_pp2_iter2_reg <= icmp_ln31_reg_4606_pp2_iter1_reg; + icmp_ln31_reg_4606_pp2_iter3_reg <= icmp_ln31_reg_4606_pp2_iter2_reg; + out_loc_addr_reg_4927_pp2_iter2_reg <= out_loc_addr_reg_4927_pp2_iter1_reg; + out_loc_addr_reg_4927_pp2_iter3_reg <= out_loc_addr_reg_4927_pp2_iter2_reg; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_boolean_0 = ap_block_pp3_stage0_11001))) then + icmp_ln42_reg_6313 <= icmp_ln42_fu_4373_p2; + icmp_ln42_reg_6313_pp3_iter1_reg <= icmp_ln42_reg_6313; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_0_load_reg_5223 <= in1_loc_0_q0; + in1_loc_10_load_reg_5273 <= in1_loc_10_q0; + in1_loc_11_load_reg_5278 <= in1_loc_11_q0; + in1_loc_12_load_reg_5283 <= in1_loc_12_q0; + in1_loc_13_load_reg_5288 <= in1_loc_13_q0; + in1_loc_14_load_reg_5293 <= in1_loc_14_q0; + in1_loc_15_load_reg_5298 <= in1_loc_15_q0; + in1_loc_16_load_reg_5303 <= in1_loc_16_q0; + in1_loc_17_load_reg_5308 <= in1_loc_17_q0; + in1_loc_18_load_reg_5313 <= in1_loc_18_q0; + in1_loc_19_load_reg_5318 <= in1_loc_19_q0; + in1_loc_1_load_reg_5228 <= in1_loc_1_q0; + in1_loc_20_load_reg_5323 <= in1_loc_20_q0; + in1_loc_21_load_reg_5328 <= in1_loc_21_q0; + in1_loc_22_load_reg_5333 <= in1_loc_22_q0; + in1_loc_23_load_reg_5338 <= in1_loc_23_q0; + in1_loc_24_load_reg_5343 <= in1_loc_24_q0; + in1_loc_25_load_reg_5348 <= in1_loc_25_q0; + in1_loc_26_load_reg_5353 <= in1_loc_26_q0; + in1_loc_27_load_reg_5358 <= in1_loc_27_q0; + in1_loc_28_load_reg_5363 <= in1_loc_28_q0; + in1_loc_29_load_reg_5368 <= in1_loc_29_q0; + in1_loc_2_load_reg_5233 <= in1_loc_2_q0; + in1_loc_30_load_reg_5373 <= in1_loc_30_q0; + in1_loc_31_load_reg_5378 <= in1_loc_31_q0; + in1_loc_32_load_reg_5383 <= in1_loc_32_q0; + in1_loc_33_load_reg_5388 <= in1_loc_33_q0; + in1_loc_34_load_reg_5393 <= in1_loc_34_q0; + in1_loc_35_load_reg_5398 <= in1_loc_35_q0; + in1_loc_36_load_reg_5403 <= in1_loc_36_q0; + in1_loc_37_load_reg_5408 <= in1_loc_37_q0; + in1_loc_38_load_reg_5413 <= in1_loc_38_q0; + in1_loc_39_load_reg_5418 <= in1_loc_39_q0; + in1_loc_3_load_reg_5238 <= in1_loc_3_q0; + in1_loc_40_load_reg_5423 <= in1_loc_40_q0; + in1_loc_43_load_reg_5438 <= in1_loc_43_q0; + in1_loc_44_load_reg_5443 <= in1_loc_44_q0; + in1_loc_47_load_reg_5458 <= in1_loc_47_q0; + in1_loc_48_load_reg_5463 <= in1_loc_48_q0; + in1_loc_49_load_reg_5468 <= in1_loc_49_q0; + in1_loc_4_load_reg_5243 <= in1_loc_4_q0; + in1_loc_50_load_reg_5473 <= in1_loc_50_q0; + in1_loc_51_load_reg_5478 <= in1_loc_51_q0; + in1_loc_52_load_reg_5483 <= in1_loc_52_q0; + in1_loc_53_load_reg_5488 <= in1_loc_53_q0; + in1_loc_54_load_reg_5493 <= in1_loc_54_q0; + in1_loc_55_load_reg_5498 <= in1_loc_55_q0; + in1_loc_56_load_reg_5503 <= in1_loc_56_q0; + in1_loc_59_load_reg_5518 <= in1_loc_59_q0; + in1_loc_5_load_reg_5248 <= in1_loc_5_q0; + in1_loc_60_load_reg_5523 <= in1_loc_60_q0; + in1_loc_62_load_reg_5533 <= in1_loc_62_q0; + in1_loc_63_load_reg_5538 <= in1_loc_63_q0; + in1_loc_6_load_reg_5253 <= in1_loc_6_q0; + in1_loc_7_load_reg_5258 <= in1_loc_7_q0; + in1_loc_8_load_reg_5263 <= in1_loc_8_q0; + in1_loc_9_load_reg_5268 <= in1_loc_9_q0; + in2_loc_0_load_reg_5543 <= in2_loc_0_q0; + in2_loc_10_load_reg_5593 <= in2_loc_10_q0; + in2_loc_11_load_reg_5598 <= in2_loc_11_q0; + in2_loc_12_load_reg_5603 <= in2_loc_12_q0; + in2_loc_13_load_reg_5608 <= in2_loc_13_q0; + in2_loc_14_load_reg_5613 <= in2_loc_14_q0; + in2_loc_15_load_reg_5618 <= in2_loc_15_q0; + in2_loc_16_load_reg_5623 <= in2_loc_16_q0; + in2_loc_17_load_reg_5628 <= in2_loc_17_q0; + in2_loc_18_load_reg_5633 <= in2_loc_18_q0; + in2_loc_19_load_reg_5638 <= in2_loc_19_q0; + in2_loc_1_load_reg_5548 <= in2_loc_1_q0; + in2_loc_20_load_reg_5643 <= in2_loc_20_q0; + in2_loc_21_load_reg_5648 <= in2_loc_21_q0; + in2_loc_22_load_reg_5653 <= in2_loc_22_q0; + in2_loc_23_load_reg_5658 <= in2_loc_23_q0; + in2_loc_24_load_reg_5663 <= in2_loc_24_q0; + in2_loc_25_load_reg_5668 <= in2_loc_25_q0; + in2_loc_26_load_reg_5673 <= in2_loc_26_q0; + in2_loc_27_load_reg_5678 <= in2_loc_27_q0; + in2_loc_28_load_reg_5683 <= in2_loc_28_q0; + in2_loc_29_load_reg_5688 <= in2_loc_29_q0; + in2_loc_2_load_reg_5553 <= in2_loc_2_q0; + in2_loc_30_load_reg_5693 <= in2_loc_30_q0; + in2_loc_31_load_reg_5698 <= in2_loc_31_q0; + in2_loc_32_load_reg_5703 <= in2_loc_32_q0; + in2_loc_33_load_reg_5708 <= in2_loc_33_q0; + in2_loc_34_load_reg_5713 <= in2_loc_34_q0; + in2_loc_35_load_reg_5718 <= in2_loc_35_q0; + in2_loc_36_load_reg_5723 <= in2_loc_36_q0; + in2_loc_37_load_reg_5728 <= in2_loc_37_q0; + in2_loc_38_load_reg_5733 <= in2_loc_38_q0; + in2_loc_39_load_reg_5738 <= in2_loc_39_q0; + in2_loc_3_load_reg_5558 <= in2_loc_3_q0; + in2_loc_40_load_reg_5743 <= in2_loc_40_q0; + in2_loc_43_load_reg_5758 <= in2_loc_43_q0; + in2_loc_44_load_reg_5763 <= in2_loc_44_q0; + in2_loc_47_load_reg_5778 <= in2_loc_47_q0; + in2_loc_48_load_reg_5783 <= in2_loc_48_q0; + in2_loc_49_load_reg_5788 <= in2_loc_49_q0; + in2_loc_4_load_reg_5563 <= in2_loc_4_q0; + in2_loc_50_load_reg_5793 <= in2_loc_50_q0; + in2_loc_51_load_reg_5798 <= in2_loc_51_q0; + in2_loc_52_load_reg_5803 <= in2_loc_52_q0; + in2_loc_53_load_reg_5808 <= in2_loc_53_q0; + in2_loc_54_load_reg_5813 <= in2_loc_54_q0; + in2_loc_55_load_reg_5818 <= in2_loc_55_q0; + in2_loc_56_load_reg_5823 <= in2_loc_56_q0; + in2_loc_59_load_reg_5838 <= in2_loc_59_q0; + in2_loc_5_load_reg_5568 <= in2_loc_5_q0; + in2_loc_60_load_reg_5843 <= in2_loc_60_q0; + in2_loc_62_load_reg_5853 <= in2_loc_62_q0; + in2_loc_63_load_reg_5858 <= in2_loc_63_q0; + in2_loc_6_load_reg_5573 <= in2_loc_6_q0; + in2_loc_7_load_reg_5578 <= in2_loc_7_q0; + in2_loc_8_load_reg_5583 <= in2_loc_8_q0; + in2_loc_9_load_reg_5588 <= in2_loc_9_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_41_load_reg_5863 <= in1_loc_41_q0; + in1_loc_42_load_reg_5868 <= in1_loc_42_q0; + in1_loc_45_load_reg_5873 <= in1_loc_45_q0; + in1_loc_46_load_reg_5878 <= in1_loc_46_q0; + in1_loc_57_load_reg_5883 <= in1_loc_57_q0; + in1_loc_58_load_reg_5888 <= in1_loc_58_q0; + in1_loc_61_load_reg_5893 <= in1_loc_61_q0; + in2_loc_41_load_reg_6103 <= in2_loc_41_q0; + in2_loc_42_load_reg_6108 <= in2_loc_42_q0; + in2_loc_45_load_reg_6123 <= in2_loc_45_q0; + in2_loc_46_load_reg_6128 <= in2_loc_46_q0; + in2_loc_57_load_reg_6183 <= in2_loc_57_q0; + in2_loc_58_load_reg_6188 <= in2_loc_58_q0; + in2_loc_61_load_reg_6203 <= in2_loc_61_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_4447 <= in1_mem_RDATA; + lshr_ln_reg_4438_pp0_iter1_reg <= lshr_ln_reg_4438; + trunc_ln27_reg_4443_pp0_iter1_reg <= trunc_ln27_reg_4443; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_4533 <= in2_mem_RDATA; + trunc_ln1_reg_4529_pp1_iter1_reg <= trunc_ln1_reg_4529; + trunc_ln28_reg_4524_pp1_iter1_reg <= trunc_ln28_reg_4524; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_4423(29 downto 0) <= empty_7_fu_3411_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_4417(29 downto 0) <= empty_fu_3402_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3420_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + lshr_ln_reg_4438 <= phi_ln27_reg_3296(12 downto 6); + trunc_ln27_reg_4443 <= trunc_ln27_fu_3442_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state22)) then + mul_ln31_reg_4601 <= mul_ln31_fu_3609_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606_pp2_iter1_reg = ap_const_lv1_0))) then + mul_ln38_10_reg_5948 <= mul_ln38_10_fu_3848_p2; + mul_ln38_11_reg_5953 <= mul_ln38_11_fu_3852_p2; + mul_ln38_12_reg_5958 <= mul_ln38_12_fu_3856_p2; + mul_ln38_13_reg_5963 <= mul_ln38_13_fu_3860_p2; + mul_ln38_14_reg_5968 <= mul_ln38_14_fu_3864_p2; + mul_ln38_15_reg_5973 <= mul_ln38_15_fu_3868_p2; + mul_ln38_16_reg_5978 <= mul_ln38_16_fu_3872_p2; + mul_ln38_17_reg_5983 <= mul_ln38_17_fu_3876_p2; + mul_ln38_18_reg_5988 <= mul_ln38_18_fu_3880_p2; + mul_ln38_19_reg_5993 <= mul_ln38_19_fu_3884_p2; + mul_ln38_1_reg_5903 <= mul_ln38_1_fu_3812_p2; + mul_ln38_20_reg_5998 <= mul_ln38_20_fu_3888_p2; + mul_ln38_21_reg_6003 <= mul_ln38_21_fu_3892_p2; + mul_ln38_22_reg_6008 <= mul_ln38_22_fu_3896_p2; + mul_ln38_23_reg_6013 <= mul_ln38_23_fu_3900_p2; + mul_ln38_24_reg_6018 <= mul_ln38_24_fu_3904_p2; + mul_ln38_25_reg_6023 <= mul_ln38_25_fu_3908_p2; + mul_ln38_26_reg_6028 <= mul_ln38_26_fu_3912_p2; + mul_ln38_27_reg_6033 <= mul_ln38_27_fu_3916_p2; + mul_ln38_28_reg_6038 <= mul_ln38_28_fu_3920_p2; + mul_ln38_29_reg_6043 <= mul_ln38_29_fu_3924_p2; + mul_ln38_2_reg_5908 <= mul_ln38_2_fu_3816_p2; + mul_ln38_30_reg_6048 <= mul_ln38_30_fu_3928_p2; + mul_ln38_31_reg_6053 <= mul_ln38_31_fu_3932_p2; + mul_ln38_32_reg_6058 <= mul_ln38_32_fu_3936_p2; + mul_ln38_33_reg_6063 <= mul_ln38_33_fu_3940_p2; + mul_ln38_34_reg_6068 <= mul_ln38_34_fu_3944_p2; + mul_ln38_35_reg_6073 <= mul_ln38_35_fu_3948_p2; + mul_ln38_36_reg_6078 <= mul_ln38_36_fu_3952_p2; + mul_ln38_37_reg_6083 <= mul_ln38_37_fu_3956_p2; + mul_ln38_38_reg_6088 <= mul_ln38_38_fu_3960_p2; + mul_ln38_39_reg_6093 <= mul_ln38_39_fu_3964_p2; + mul_ln38_3_reg_5913 <= mul_ln38_3_fu_3820_p2; + mul_ln38_40_reg_6098 <= mul_ln38_40_fu_3968_p2; + mul_ln38_43_reg_6113 <= mul_ln38_43_fu_3972_p2; + mul_ln38_44_reg_6118 <= mul_ln38_44_fu_3976_p2; + mul_ln38_47_reg_6133 <= mul_ln38_47_fu_3980_p2; + mul_ln38_48_reg_6138 <= mul_ln38_48_fu_3984_p2; + mul_ln38_49_reg_6143 <= mul_ln38_49_fu_3988_p2; + mul_ln38_4_reg_5918 <= mul_ln38_4_fu_3824_p2; + mul_ln38_50_reg_6148 <= mul_ln38_50_fu_3992_p2; + mul_ln38_51_reg_6153 <= mul_ln38_51_fu_3996_p2; + mul_ln38_52_reg_6158 <= mul_ln38_52_fu_4000_p2; + mul_ln38_53_reg_6163 <= mul_ln38_53_fu_4004_p2; + mul_ln38_54_reg_6168 <= mul_ln38_54_fu_4008_p2; + mul_ln38_55_reg_6173 <= mul_ln38_55_fu_4012_p2; + mul_ln38_56_reg_6178 <= mul_ln38_56_fu_4016_p2; + mul_ln38_59_reg_6193 <= mul_ln38_59_fu_4020_p2; + mul_ln38_5_reg_5923 <= mul_ln38_5_fu_3828_p2; + mul_ln38_60_reg_6198 <= mul_ln38_60_fu_4024_p2; + mul_ln38_62_reg_6208 <= mul_ln38_62_fu_4028_p2; + mul_ln38_63_reg_6213 <= mul_ln38_63_fu_4032_p2; + mul_ln38_6_reg_5928 <= mul_ln38_6_fu_3832_p2; + mul_ln38_7_reg_5933 <= mul_ln38_7_fu_3836_p2; + mul_ln38_8_reg_5938 <= mul_ln38_8_fu_3840_p2; + mul_ln38_9_reg_5943 <= mul_ln38_9_fu_3844_p2; + mul_ln38_reg_5898 <= mul_ln38_fu_3808_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + out_loc_addr_reg_4927 <= zext_ln38_fu_3797_p1(12 - 1 downto 0); + sext_ln38_reg_4916 <= sext_ln38_fu_3726_p1; + zext_ln31_1_reg_4620(30 downto 0) <= zext_ln31_1_fu_3665_p1(30 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((icmp_ln42_reg_6313 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_boolean_0 = ap_block_pp3_stage0_11001))) then + out_loc_load_reg_6327 <= out_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + select_ln31_1_reg_4615 <= select_ln31_1_fu_3645_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3513_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + trunc_ln1_reg_4529 <= phi_ln28_reg_3307(11 downto 6); + trunc_ln28_reg_4524 <= trunc_ln28_fu_3525_p1; + end if; + end if; + end process; + out_mem_addr_reg_4417(31 downto 30) <= "00"; + in2_mem_addr_reg_4423(31 downto 30) <= "00"; + zext_ln31_1_reg_4620(63 downto 31) <= "000000000000000000000000000000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state28, ap_enable_reg_pp3_iter2, ap_CS_fsm_state36, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_AWREADY, out_mem_BVALID, icmp_ln27_fu_3420_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_3513_p2, ap_enable_reg_pp1_iter0, icmp_ln31_fu_3615_p2, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1, icmp_ln42_fu_4373_p2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0_subdone, ap_enable_reg_pp2_iter3, ap_enable_reg_pp2_iter4, ap_block_pp3_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((icmp_ln27_fu_3420_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) and not(((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((icmp_ln27_fu_3420_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) or ((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((icmp_ln28_fu_3513_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) and not(((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((icmp_ln28_fu_3513_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) or ((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + when ap_ST_fsm_pp2_stage0 => + if ((not(((ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) and not(((ap_enable_reg_pp2_iter4 = ap_const_logic_1) and (ap_enable_reg_pp2_iter3 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif ((((ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (icmp_ln31_fu_3615_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) or ((ap_enable_reg_pp2_iter4 = ap_const_logic_1) and (ap_enable_reg_pp2_iter3 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state28; + else + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + end if; + when ap_ST_fsm_state28 => + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state28))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + else + ap_NS_fsm <= ap_ST_fsm_state28; + end if; + when ap_ST_fsm_pp3_stage0 => + if ((not(((ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_4373_p2 = ap_const_lv1_1))) and not(((ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0))))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + elsif ((((ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0)) or ((ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (icmp_ln42_fu_4373_p2 = ap_const_lv1_1)))) then + ap_NS_fsm <= ap_ST_fsm_state32; + else + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + end if; + when ap_ST_fsm_state32 => + ap_NS_fsm <= ap_ST_fsm_state33; + when ap_ST_fsm_state33 => + ap_NS_fsm <= ap_ST_fsm_state34; + when ap_ST_fsm_state34 => + ap_NS_fsm <= ap_ST_fsm_state35; + when ap_ST_fsm_state35 => + ap_NS_fsm <= ap_ST_fsm_state36; + when ap_ST_fsm_state36 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state36))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state36; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_3426_p2 <= std_logic_vector(unsigned(phi_ln27_reg_3296) + unsigned(ap_const_lv13_1)); + add_ln28_fu_3519_p2 <= std_logic_vector(unsigned(phi_ln28_reg_3307) + unsigned(ap_const_lv13_1)); + add_ln31_fu_3620_p2 <= std_logic_vector(unsigned(indvar_flatten_reg_3318) + unsigned(ap_const_lv64_1)); + add_ln38_10_fu_4113_p2 <= std_logic_vector(unsigned(mul_ln38_12_reg_5958) + unsigned(mul_ln38_11_reg_5953)); + add_ln38_11_fu_4117_p2 <= std_logic_vector(unsigned(mul_ln38_14_reg_5968) + unsigned(mul_ln38_13_reg_5963)); + add_ln38_12_fu_4121_p2 <= std_logic_vector(unsigned(add_ln38_10_fu_4113_p2) + unsigned(add_ln38_11_fu_4117_p2)); + add_ln38_13_fu_4283_p2 <= std_logic_vector(unsigned(add_ln38_9_reg_6258) + unsigned(add_ln38_12_reg_6263)); + add_ln38_14_fu_4287_p2 <= std_logic_vector(unsigned(add_ln38_6_reg_6253) + unsigned(add_ln38_13_fu_4283_p2)); + add_ln38_15_fu_4127_p2 <= std_logic_vector(unsigned(mul_ln38_16_reg_5978) + unsigned(mul_ln38_15_reg_5973)); + add_ln38_16_fu_4131_p2 <= std_logic_vector(unsigned(mul_ln38_18_reg_5988) + unsigned(mul_ln38_17_reg_5983)); + add_ln38_17_fu_4135_p2 <= std_logic_vector(unsigned(add_ln38_15_fu_4127_p2) + unsigned(add_ln38_16_fu_4131_p2)); + add_ln38_18_fu_4141_p2 <= std_logic_vector(unsigned(mul_ln38_20_reg_5998) + unsigned(mul_ln38_19_reg_5993)); + add_ln38_19_fu_4145_p2 <= std_logic_vector(unsigned(mul_ln38_22_reg_6008) + unsigned(mul_ln38_21_reg_6003)); + add_ln38_1_fu_4069_p2 <= std_logic_vector(unsigned(mul_ln38_2_reg_5908) + unsigned(mul_ln38_1_reg_5903)); + add_ln38_20_fu_4149_p2 <= std_logic_vector(unsigned(add_ln38_18_fu_4141_p2) + unsigned(add_ln38_19_fu_4145_p2)); + add_ln38_21_fu_4155_p2 <= std_logic_vector(unsigned(add_ln38_17_fu_4135_p2) + unsigned(add_ln38_20_fu_4149_p2)); + add_ln38_22_fu_4161_p2 <= std_logic_vector(unsigned(mul_ln38_24_reg_6018) + unsigned(mul_ln38_23_reg_6013)); + add_ln38_23_fu_4165_p2 <= std_logic_vector(unsigned(mul_ln38_26_reg_6028) + unsigned(mul_ln38_25_reg_6023)); + add_ln38_24_fu_4169_p2 <= std_logic_vector(unsigned(add_ln38_22_fu_4161_p2) + unsigned(add_ln38_23_fu_4165_p2)); + add_ln38_25_fu_4175_p2 <= std_logic_vector(unsigned(mul_ln38_28_reg_6038) + unsigned(mul_ln38_27_reg_6033)); + add_ln38_26_fu_4179_p2 <= std_logic_vector(unsigned(mul_ln38_30_reg_6048) + unsigned(mul_ln38_29_reg_6043)); + add_ln38_27_fu_4183_p2 <= std_logic_vector(unsigned(add_ln38_25_fu_4175_p2) + unsigned(add_ln38_26_fu_4179_p2)); + add_ln38_28_fu_4189_p2 <= std_logic_vector(unsigned(add_ln38_24_fu_4169_p2) + unsigned(add_ln38_27_fu_4183_p2)); + add_ln38_29_fu_4292_p2 <= std_logic_vector(unsigned(add_ln38_21_reg_6268) + unsigned(add_ln38_28_reg_6273)); + add_ln38_2_fu_4073_p2 <= std_logic_vector(unsigned(add_ln38_fu_4064_p2) + unsigned(add_ln38_1_fu_4069_p2)); + add_ln38_30_fu_4296_p2 <= std_logic_vector(unsigned(add_ln38_14_fu_4287_p2) + unsigned(add_ln38_29_fu_4292_p2)); + add_ln38_31_fu_4195_p2 <= std_logic_vector(unsigned(mul_ln38_32_reg_6058) + unsigned(mul_ln38_31_reg_6053)); + add_ln38_32_fu_4199_p2 <= std_logic_vector(unsigned(mul_ln38_34_reg_6068) + unsigned(mul_ln38_33_reg_6063)); + add_ln38_33_fu_4203_p2 <= std_logic_vector(unsigned(add_ln38_31_fu_4195_p2) + unsigned(add_ln38_32_fu_4199_p2)); + add_ln38_34_fu_4209_p2 <= std_logic_vector(unsigned(mul_ln38_36_reg_6078) + unsigned(mul_ln38_35_reg_6073)); + add_ln38_35_fu_4213_p2 <= std_logic_vector(unsigned(mul_ln38_38_reg_6088) + unsigned(mul_ln38_37_reg_6083)); + add_ln38_36_fu_4217_p2 <= std_logic_vector(unsigned(add_ln38_34_fu_4209_p2) + unsigned(add_ln38_35_fu_4213_p2)); + add_ln38_37_fu_4223_p2 <= std_logic_vector(unsigned(add_ln38_33_fu_4203_p2) + unsigned(add_ln38_36_fu_4217_p2)); + add_ln38_38_fu_4229_p2 <= std_logic_vector(unsigned(mul_ln38_40_reg_6098) + unsigned(mul_ln38_39_reg_6093)); + add_ln38_39_fu_4302_p2 <= std_logic_vector(unsigned(mul_ln38_42_reg_6223) + unsigned(mul_ln38_41_reg_6218)); + add_ln38_3_fu_4079_p2 <= std_logic_vector(unsigned(mul_ln38_4_reg_5918) + unsigned(mul_ln38_3_reg_5913)); + add_ln38_40_fu_4306_p2 <= std_logic_vector(unsigned(add_ln38_38_reg_6283) + unsigned(add_ln38_39_fu_4302_p2)); + add_ln38_41_fu_4233_p2 <= std_logic_vector(unsigned(mul_ln38_44_reg_6118) + unsigned(mul_ln38_43_reg_6113)); + add_ln38_42_fu_4311_p2 <= std_logic_vector(unsigned(mul_ln38_46_reg_6233) + unsigned(mul_ln38_45_reg_6228)); + add_ln38_43_fu_4315_p2 <= std_logic_vector(unsigned(add_ln38_41_reg_6288) + unsigned(add_ln38_42_fu_4311_p2)); + add_ln38_44_fu_4320_p2 <= std_logic_vector(unsigned(add_ln38_40_fu_4306_p2) + unsigned(add_ln38_43_fu_4315_p2)); + add_ln38_45_fu_4326_p2 <= std_logic_vector(unsigned(add_ln38_37_reg_6278) + unsigned(add_ln38_44_fu_4320_p2)); + add_ln38_46_fu_4237_p2 <= std_logic_vector(unsigned(mul_ln38_48_reg_6138) + unsigned(mul_ln38_47_reg_6133)); + add_ln38_47_fu_4241_p2 <= std_logic_vector(unsigned(mul_ln38_50_reg_6148) + unsigned(mul_ln38_49_reg_6143)); + add_ln38_48_fu_4245_p2 <= std_logic_vector(unsigned(add_ln38_46_fu_4237_p2) + unsigned(add_ln38_47_fu_4241_p2)); + add_ln38_49_fu_4251_p2 <= std_logic_vector(unsigned(mul_ln38_52_reg_6158) + unsigned(mul_ln38_51_reg_6153)); + add_ln38_4_fu_4083_p2 <= std_logic_vector(unsigned(mul_ln38_6_reg_5928) + unsigned(mul_ln38_5_reg_5923)); + add_ln38_50_fu_4255_p2 <= std_logic_vector(unsigned(mul_ln38_54_reg_6168) + unsigned(mul_ln38_53_reg_6163)); + add_ln38_51_fu_4259_p2 <= std_logic_vector(unsigned(add_ln38_49_fu_4251_p2) + unsigned(add_ln38_50_fu_4255_p2)); + add_ln38_52_fu_4265_p2 <= std_logic_vector(unsigned(add_ln38_48_fu_4245_p2) + unsigned(add_ln38_51_fu_4259_p2)); + add_ln38_53_fu_4271_p2 <= std_logic_vector(unsigned(mul_ln38_56_reg_6178) + unsigned(mul_ln38_55_reg_6173)); + add_ln38_54_fu_4331_p2 <= std_logic_vector(unsigned(mul_ln38_58_reg_6243) + unsigned(mul_ln38_57_reg_6238)); + add_ln38_55_fu_4335_p2 <= std_logic_vector(unsigned(add_ln38_53_reg_6298) + unsigned(add_ln38_54_fu_4331_p2)); + add_ln38_56_fu_4275_p2 <= std_logic_vector(unsigned(mul_ln38_60_reg_6198) + unsigned(mul_ln38_59_reg_6193)); + add_ln38_57_fu_4279_p2 <= std_logic_vector(unsigned(mul_ln38_63_reg_6213) + unsigned(mul_ln38_62_reg_6208)); + add_ln38_58_fu_4340_p2 <= std_logic_vector(unsigned(mul_ln38_61_reg_6248) + unsigned(add_ln38_57_reg_6308)); + add_ln38_59_fu_4344_p2 <= std_logic_vector(unsigned(add_ln38_56_reg_6303) + unsigned(add_ln38_58_fu_4340_p2)); + add_ln38_5_fu_4087_p2 <= std_logic_vector(unsigned(add_ln38_3_fu_4079_p2) + unsigned(add_ln38_4_fu_4083_p2)); + add_ln38_60_fu_4349_p2 <= std_logic_vector(unsigned(add_ln38_55_fu_4335_p2) + unsigned(add_ln38_59_fu_4344_p2)); + add_ln38_61_fu_4355_p2 <= std_logic_vector(unsigned(add_ln38_52_reg_6293) + unsigned(add_ln38_60_fu_4349_p2)); + add_ln38_62_fu_4360_p2 <= std_logic_vector(unsigned(add_ln38_45_fu_4326_p2) + unsigned(add_ln38_61_fu_4355_p2)); + add_ln38_64_fu_3791_p2 <= std_logic_vector(unsigned(tmp_cast_fu_3657_p3) + unsigned(trunc_ln38_1_fu_3787_p1)); + add_ln38_6_fu_4093_p2 <= std_logic_vector(unsigned(add_ln38_2_fu_4073_p2) + unsigned(add_ln38_5_fu_4087_p2)); + add_ln38_7_fu_4099_p2 <= std_logic_vector(unsigned(mul_ln38_8_reg_5938) + unsigned(mul_ln38_7_reg_5933)); + add_ln38_8_fu_4103_p2 <= std_logic_vector(unsigned(mul_ln38_10_reg_5948) + unsigned(mul_ln38_9_reg_5943)); + add_ln38_9_fu_4107_p2 <= std_logic_vector(unsigned(add_ln38_7_fu_4099_p2) + unsigned(add_ln38_8_fu_4103_p2)); + add_ln38_fu_4064_p2 <= std_logic_vector(unsigned(mul_ln38_reg_5898) + unsigned(out_loc_q0)); + add_ln42_fu_4379_p2 <= std_logic_vector(unsigned(phi_ln42_reg_3351) + unsigned(ap_const_lv13_1)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp2_stage0 <= ap_CS_fsm(18); + ap_CS_fsm_pp3_stage0 <= ap_CS_fsm(20); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state28 <= ap_CS_fsm(19); + ap_CS_fsm_state36 <= ap_CS_fsm(25); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp2_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp3_stage0_11001_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state31_io) + begin + ap_block_pp3_stage0_11001 <= ((ap_const_boolean_1 = ap_block_state31_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_pp3_stage0_subdone_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state31_io) + begin + ap_block_pp3_stage0_subdone <= ((ap_const_boolean_1 = ap_block_state31_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= (in1_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= (in2_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state23_pp2_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state24_pp2_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state25_pp2_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state26_pp2_stage0_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state27_pp2_stage0_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state29_pp3_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state30_pp3_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state31_io_assign_proc : process(icmp_ln42_reg_6313_pp3_iter1_reg, out_mem_WREADY) + begin + ap_block_state31_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_6313_pp3_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state31_pp3_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_3420_p2) + begin + if ((icmp_ln27_fu_3420_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_3513_p2) + begin + if ((icmp_ln28_fu_3513_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp2_exit_iter0_state23_assign_proc : process(icmp_ln31_fu_3615_p2) + begin + if ((icmp_ln31_fu_3615_p2 = ap_const_lv1_1)) then + ap_condition_pp2_exit_iter0_state23 <= ap_const_logic_1; + else + ap_condition_pp2_exit_iter0_state23 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp3_exit_iter0_state29_assign_proc : process(icmp_ln42_fu_4373_p2) + begin + if ((icmp_ln42_fu_4373_p2 = ap_const_lv1_1)) then + ap_condition_pp3_exit_iter0_state29 <= ap_const_logic_1; + else + ap_condition_pp3_exit_iter0_state29 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state36, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state36))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp2 <= (ap_idle_pp2 xor ap_const_logic_1); + ap_enable_pp3 <= (ap_idle_pp3 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp2_assign_proc : process(ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter1, ap_enable_reg_pp2_iter2, ap_enable_reg_pp2_iter3, ap_enable_reg_pp2_iter4) + begin + if (((ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_0) and (ap_enable_reg_pp2_iter4 = ap_const_logic_0) and (ap_enable_reg_pp2_iter3 = ap_const_logic_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_0))) then + ap_idle_pp2 <= ap_const_logic_1; + else + ap_idle_pp2 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp3_assign_proc : process(ap_enable_reg_pp3_iter2, ap_enable_reg_pp3_iter0, ap_enable_reg_pp3_iter1) + begin + if (((ap_enable_reg_pp3_iter2 = ap_const_logic_0) and (ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_0))) then + ap_idle_pp3 <= ap_const_logic_1; + else + ap_idle_pp3 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_i_0_phi_fu_3333_p4_assign_proc : process(i_0_reg_3329, icmp_ln31_reg_4606, ap_CS_fsm_pp2_stage0, select_ln31_1_reg_4615, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0) + begin + if (((icmp_ln31_reg_4606 = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + ap_phi_mux_i_0_phi_fu_3333_p4 <= select_ln31_1_reg_4615; + else + ap_phi_mux_i_0_phi_fu_3333_p4 <= i_0_reg_3329; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state36, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state36))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_7_fu_3411_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_4401),64)); + empty_8_fu_3392_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_4406),64)); + empty_fu_3402_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_4396),64)); + i_fu_3626_p2 <= std_logic_vector(unsigned(ap_const_lv31_1) + unsigned(ap_phi_mux_i_0_phi_fu_3333_p4)); + icmp_ln27_fu_3420_p2 <= "1" when (phi_ln27_reg_3296 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_3513_p2 <= "1" when (phi_ln28_reg_3307 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_3615_p2 <= "1" when (indvar_flatten_reg_3318 = mul_ln31_reg_4601) else "0"; + icmp_ln33_fu_3632_p2 <= "1" when (j_0_reg_3340 = dim_read_reg_4390) else "0"; + icmp_ln42_fu_4373_p2 <= "1" when (phi_ln42_reg_3351 = ap_const_lv13_1000) else "0"; + + in1_loc_0_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_0_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_0_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_0_ce0 <= ap_const_logic_1; + else + in1_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_0_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_we0 <= ap_const_logic_1; + else + in1_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_10_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_10_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_10_ce0 <= ap_const_logic_1; + else + in1_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_we0 <= ap_const_logic_1; + else + in1_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_11_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_11_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_11_ce0 <= ap_const_logic_1; + else + in1_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_we0 <= ap_const_logic_1; + else + in1_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_12_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_12_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_12_ce0 <= ap_const_logic_1; + else + in1_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_we0 <= ap_const_logic_1; + else + in1_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_13_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_13_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_13_ce0 <= ap_const_logic_1; + else + in1_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_we0 <= ap_const_logic_1; + else + in1_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_14_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_14_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_14_ce0 <= ap_const_logic_1; + else + in1_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_we0 <= ap_const_logic_1; + else + in1_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_15_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_15_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_15_ce0 <= ap_const_logic_1; + else + in1_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_we0 <= ap_const_logic_1; + else + in1_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_16_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_16_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_16_ce0 <= ap_const_logic_1; + else + in1_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_we0 <= ap_const_logic_1; + else + in1_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_17_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_17_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_17_ce0 <= ap_const_logic_1; + else + in1_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_we0 <= ap_const_logic_1; + else + in1_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_18_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_18_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_18_ce0 <= ap_const_logic_1; + else + in1_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_we0 <= ap_const_logic_1; + else + in1_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_19_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_19_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_19_ce0 <= ap_const_logic_1; + else + in1_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_we0 <= ap_const_logic_1; + else + in1_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_1_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_1_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_1_ce0 <= ap_const_logic_1; + else + in1_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_we0 <= ap_const_logic_1; + else + in1_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_20_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_20_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_20_ce0 <= ap_const_logic_1; + else + in1_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_we0 <= ap_const_logic_1; + else + in1_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_21_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_21_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_21_ce0 <= ap_const_logic_1; + else + in1_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_we0 <= ap_const_logic_1; + else + in1_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_22_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_22_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_22_ce0 <= ap_const_logic_1; + else + in1_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_we0 <= ap_const_logic_1; + else + in1_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_23_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_23_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_23_ce0 <= ap_const_logic_1; + else + in1_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_we0 <= ap_const_logic_1; + else + in1_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_24_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_24_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_24_ce0 <= ap_const_logic_1; + else + in1_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_we0 <= ap_const_logic_1; + else + in1_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_25_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_25_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_25_ce0 <= ap_const_logic_1; + else + in1_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_we0 <= ap_const_logic_1; + else + in1_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_26_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_26_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_26_ce0 <= ap_const_logic_1; + else + in1_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_we0 <= ap_const_logic_1; + else + in1_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_27_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_27_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_27_ce0 <= ap_const_logic_1; + else + in1_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_we0 <= ap_const_logic_1; + else + in1_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_28_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_28_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_28_ce0 <= ap_const_logic_1; + else + in1_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_we0 <= ap_const_logic_1; + else + in1_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_29_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_29_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_29_ce0 <= ap_const_logic_1; + else + in1_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_we0 <= ap_const_logic_1; + else + in1_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_2_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_2_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_2_ce0 <= ap_const_logic_1; + else + in1_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_we0 <= ap_const_logic_1; + else + in1_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_30_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_30_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_30_ce0 <= ap_const_logic_1; + else + in1_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_we0 <= ap_const_logic_1; + else + in1_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_31_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_31_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_31_ce0 <= ap_const_logic_1; + else + in1_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_we0 <= ap_const_logic_1; + else + in1_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_32_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_32_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_32_ce0 <= ap_const_logic_1; + else + in1_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_we0 <= ap_const_logic_1; + else + in1_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_33_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_33_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_33_ce0 <= ap_const_logic_1; + else + in1_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_we0 <= ap_const_logic_1; + else + in1_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_34_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_34_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_34_ce0 <= ap_const_logic_1; + else + in1_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_we0 <= ap_const_logic_1; + else + in1_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_35_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_35_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_35_ce0 <= ap_const_logic_1; + else + in1_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_we0 <= ap_const_logic_1; + else + in1_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_36_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_36_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_36_ce0 <= ap_const_logic_1; + else + in1_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_we0 <= ap_const_logic_1; + else + in1_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_37_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_37_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_37_ce0 <= ap_const_logic_1; + else + in1_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_we0 <= ap_const_logic_1; + else + in1_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_38_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_38_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_38_ce0 <= ap_const_logic_1; + else + in1_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_we0 <= ap_const_logic_1; + else + in1_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_39_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_39_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_39_ce0 <= ap_const_logic_1; + else + in1_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_we0 <= ap_const_logic_1; + else + in1_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_3_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_3_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_3_ce0 <= ap_const_logic_1; + else + in1_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_we0 <= ap_const_logic_1; + else + in1_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_40_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_40_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_40_ce0 <= ap_const_logic_1; + else + in1_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_we0 <= ap_const_logic_1; + else + in1_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_41_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_41_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_41_ce0 <= ap_const_logic_1; + else + in1_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_we0 <= ap_const_logic_1; + else + in1_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_42_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_42_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_42_ce0 <= ap_const_logic_1; + else + in1_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_we0 <= ap_const_logic_1; + else + in1_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_43_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_43_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_43_ce0 <= ap_const_logic_1; + else + in1_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_we0 <= ap_const_logic_1; + else + in1_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_44_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_44_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_44_ce0 <= ap_const_logic_1; + else + in1_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_we0 <= ap_const_logic_1; + else + in1_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_45_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_45_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_45_ce0 <= ap_const_logic_1; + else + in1_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_we0 <= ap_const_logic_1; + else + in1_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_46_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_46_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_46_ce0 <= ap_const_logic_1; + else + in1_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_we0 <= ap_const_logic_1; + else + in1_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_47_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_47_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_47_ce0 <= ap_const_logic_1; + else + in1_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_we0 <= ap_const_logic_1; + else + in1_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_48_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_48_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_48_ce0 <= ap_const_logic_1; + else + in1_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_we0 <= ap_const_logic_1; + else + in1_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_49_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_49_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_49_ce0 <= ap_const_logic_1; + else + in1_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_we0 <= ap_const_logic_1; + else + in1_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_4_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_4_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_4_ce0 <= ap_const_logic_1; + else + in1_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_we0 <= ap_const_logic_1; + else + in1_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_50_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_50_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_50_ce0 <= ap_const_logic_1; + else + in1_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_we0 <= ap_const_logic_1; + else + in1_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_51_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_51_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_51_ce0 <= ap_const_logic_1; + else + in1_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_we0 <= ap_const_logic_1; + else + in1_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_52_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_52_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_52_ce0 <= ap_const_logic_1; + else + in1_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_we0 <= ap_const_logic_1; + else + in1_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_53_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_53_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_53_ce0 <= ap_const_logic_1; + else + in1_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_we0 <= ap_const_logic_1; + else + in1_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_54_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_54_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_54_ce0 <= ap_const_logic_1; + else + in1_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_we0 <= ap_const_logic_1; + else + in1_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_55_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_55_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_55_ce0 <= ap_const_logic_1; + else + in1_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_we0 <= ap_const_logic_1; + else + in1_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_56_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_56_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_56_ce0 <= ap_const_logic_1; + else + in1_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_we0 <= ap_const_logic_1; + else + in1_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_57_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_57_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_57_ce0 <= ap_const_logic_1; + else + in1_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_we0 <= ap_const_logic_1; + else + in1_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_58_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_58_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_58_ce0 <= ap_const_logic_1; + else + in1_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_we0 <= ap_const_logic_1; + else + in1_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_59_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_59_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_59_ce0 <= ap_const_logic_1; + else + in1_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_we0 <= ap_const_logic_1; + else + in1_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_5_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_5_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_5_ce0 <= ap_const_logic_1; + else + in1_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_we0 <= ap_const_logic_1; + else + in1_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_60_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_60_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_60_ce0 <= ap_const_logic_1; + else + in1_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_we0 <= ap_const_logic_1; + else + in1_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_reg_4620, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_61_address0 <= zext_ln31_1_reg_4620(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_61_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_61_ce0 <= ap_const_logic_1; + else + in1_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_we0 <= ap_const_logic_1; + else + in1_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_62_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_62_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_62_ce0 <= ap_const_logic_1; + else + in1_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_we0 <= ap_const_logic_1; + else + in1_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_63_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_63_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_63_ce0 <= ap_const_logic_1; + else + in1_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_we0 <= ap_const_logic_1; + else + in1_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_6_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_6_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_6_ce0 <= ap_const_logic_1; + else + in1_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_we0 <= ap_const_logic_1; + else + in1_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_7_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_7_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_7_ce0 <= ap_const_logic_1; + else + in1_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_we0 <= ap_const_logic_1; + else + in1_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_8_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_8_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_8_ce0 <= ap_const_logic_1; + else + in1_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_we0 <= ap_const_logic_1; + else + in1_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, zext_ln31_1_fu_3665_p1, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3446_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in1_loc_9_address0 <= zext_ln31_1_fu_3665_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_address0 <= zext_ln27_fu_3446_p1(6 - 1 downto 0); + else + in1_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_9_ce0_assign_proc : process(ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)))) then + in1_loc_9_ce0 <= ap_const_logic_1; + else + in1_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4443_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4443_pp0_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_we0 <= ap_const_logic_1; + else + in1_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_8_fu_3392_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_0_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_0_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_0_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_0_ce0 <= ap_const_logic_1; + else + in2_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_0_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_we0 <= ap_const_logic_1; + else + in2_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_10_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_10_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_10_ce0 <= ap_const_logic_1; + else + in2_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_we0 <= ap_const_logic_1; + else + in2_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_11_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_11_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_11_ce0 <= ap_const_logic_1; + else + in2_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_we0 <= ap_const_logic_1; + else + in2_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_12_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_12_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_12_ce0 <= ap_const_logic_1; + else + in2_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_we0 <= ap_const_logic_1; + else + in2_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_13_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_13_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_13_ce0 <= ap_const_logic_1; + else + in2_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_we0 <= ap_const_logic_1; + else + in2_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_14_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_14_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_14_ce0 <= ap_const_logic_1; + else + in2_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_we0 <= ap_const_logic_1; + else + in2_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_15_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_15_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_15_ce0 <= ap_const_logic_1; + else + in2_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_we0 <= ap_const_logic_1; + else + in2_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_16_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_16_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_16_ce0 <= ap_const_logic_1; + else + in2_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_we0 <= ap_const_logic_1; + else + in2_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_17_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_17_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_17_ce0 <= ap_const_logic_1; + else + in2_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_we0 <= ap_const_logic_1; + else + in2_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_18_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_18_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_18_ce0 <= ap_const_logic_1; + else + in2_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_we0 <= ap_const_logic_1; + else + in2_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_19_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_19_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_19_ce0 <= ap_const_logic_1; + else + in2_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_we0 <= ap_const_logic_1; + else + in2_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_1_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_1_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_1_ce0 <= ap_const_logic_1; + else + in2_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_we0 <= ap_const_logic_1; + else + in2_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_20_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_20_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_20_ce0 <= ap_const_logic_1; + else + in2_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_we0 <= ap_const_logic_1; + else + in2_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_21_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_21_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_21_ce0 <= ap_const_logic_1; + else + in2_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_we0 <= ap_const_logic_1; + else + in2_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_22_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_22_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_22_ce0 <= ap_const_logic_1; + else + in2_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_we0 <= ap_const_logic_1; + else + in2_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_23_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_23_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_23_ce0 <= ap_const_logic_1; + else + in2_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_we0 <= ap_const_logic_1; + else + in2_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_24_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_24_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_24_ce0 <= ap_const_logic_1; + else + in2_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_we0 <= ap_const_logic_1; + else + in2_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_25_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_25_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_25_ce0 <= ap_const_logic_1; + else + in2_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_we0 <= ap_const_logic_1; + else + in2_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_26_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_26_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_26_ce0 <= ap_const_logic_1; + else + in2_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_we0 <= ap_const_logic_1; + else + in2_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_27_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_27_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_27_ce0 <= ap_const_logic_1; + else + in2_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_we0 <= ap_const_logic_1; + else + in2_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_28_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_28_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_28_ce0 <= ap_const_logic_1; + else + in2_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_we0 <= ap_const_logic_1; + else + in2_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_29_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_29_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_29_ce0 <= ap_const_logic_1; + else + in2_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_we0 <= ap_const_logic_1; + else + in2_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_2_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_2_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_2_ce0 <= ap_const_logic_1; + else + in2_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_we0 <= ap_const_logic_1; + else + in2_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_30_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_30_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_30_ce0 <= ap_const_logic_1; + else + in2_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_we0 <= ap_const_logic_1; + else + in2_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_31_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_31_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_31_ce0 <= ap_const_logic_1; + else + in2_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_we0 <= ap_const_logic_1; + else + in2_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_32_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_32_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_32_ce0 <= ap_const_logic_1; + else + in2_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_we0 <= ap_const_logic_1; + else + in2_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_33_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_33_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_33_ce0 <= ap_const_logic_1; + else + in2_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_we0 <= ap_const_logic_1; + else + in2_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_34_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_34_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_34_ce0 <= ap_const_logic_1; + else + in2_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_we0 <= ap_const_logic_1; + else + in2_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_35_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_35_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_35_ce0 <= ap_const_logic_1; + else + in2_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_we0 <= ap_const_logic_1; + else + in2_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_36_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_36_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_36_ce0 <= ap_const_logic_1; + else + in2_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_we0 <= ap_const_logic_1; + else + in2_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_37_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_37_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_37_ce0 <= ap_const_logic_1; + else + in2_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_we0 <= ap_const_logic_1; + else + in2_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_38_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_38_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_38_ce0 <= ap_const_logic_1; + else + in2_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_we0 <= ap_const_logic_1; + else + in2_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_39_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_39_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_39_ce0 <= ap_const_logic_1; + else + in2_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_we0 <= ap_const_logic_1; + else + in2_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_3_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_3_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_3_ce0 <= ap_const_logic_1; + else + in2_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_we0 <= ap_const_logic_1; + else + in2_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_40_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_40_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_40_ce0 <= ap_const_logic_1; + else + in2_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_we0 <= ap_const_logic_1; + else + in2_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_41_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_41_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_41_ce0 <= ap_const_logic_1; + else + in2_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_we0 <= ap_const_logic_1; + else + in2_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_42_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_42_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_42_ce0 <= ap_const_logic_1; + else + in2_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_we0 <= ap_const_logic_1; + else + in2_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_43_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_43_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_43_ce0 <= ap_const_logic_1; + else + in2_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_we0 <= ap_const_logic_1; + else + in2_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_44_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_44_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_44_ce0 <= ap_const_logic_1; + else + in2_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_we0 <= ap_const_logic_1; + else + in2_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_45_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_45_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_45_ce0 <= ap_const_logic_1; + else + in2_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_we0 <= ap_const_logic_1; + else + in2_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_46_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_46_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_46_ce0 <= ap_const_logic_1; + else + in2_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_we0 <= ap_const_logic_1; + else + in2_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_47_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_47_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_47_ce0 <= ap_const_logic_1; + else + in2_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_we0 <= ap_const_logic_1; + else + in2_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_48_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_48_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_48_ce0 <= ap_const_logic_1; + else + in2_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_we0 <= ap_const_logic_1; + else + in2_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_49_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_49_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_49_ce0 <= ap_const_logic_1; + else + in2_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_we0 <= ap_const_logic_1; + else + in2_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_4_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_4_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_4_ce0 <= ap_const_logic_1; + else + in2_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_we0 <= ap_const_logic_1; + else + in2_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_50_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_50_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_50_ce0 <= ap_const_logic_1; + else + in2_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_we0 <= ap_const_logic_1; + else + in2_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_51_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_51_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_51_ce0 <= ap_const_logic_1; + else + in2_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_we0 <= ap_const_logic_1; + else + in2_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_52_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_52_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_52_ce0 <= ap_const_logic_1; + else + in2_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_we0 <= ap_const_logic_1; + else + in2_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_53_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_53_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_53_ce0 <= ap_const_logic_1; + else + in2_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_we0 <= ap_const_logic_1; + else + in2_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_54_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_54_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_54_ce0 <= ap_const_logic_1; + else + in2_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_we0 <= ap_const_logic_1; + else + in2_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_55_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_55_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_55_ce0 <= ap_const_logic_1; + else + in2_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_we0 <= ap_const_logic_1; + else + in2_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_56_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_56_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_56_ce0 <= ap_const_logic_1; + else + in2_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_we0 <= ap_const_logic_1; + else + in2_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_57_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_57_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_57_ce0 <= ap_const_logic_1; + else + in2_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_we0 <= ap_const_logic_1; + else + in2_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_58_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_58_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_58_ce0 <= ap_const_logic_1; + else + in2_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_we0 <= ap_const_logic_1; + else + in2_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_59_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_59_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_59_ce0 <= ap_const_logic_1; + else + in2_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_we0 <= ap_const_logic_1; + else + in2_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_5_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_5_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_5_ce0 <= ap_const_logic_1; + else + in2_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_we0 <= ap_const_logic_1; + else + in2_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_60_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_60_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_60_ce0 <= ap_const_logic_1; + else + in2_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_we0 <= ap_const_logic_1; + else + in2_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_reg_4916, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_61_address0 <= sext_ln38_reg_4916(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_61_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter1, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_61_ce0 <= ap_const_logic_1; + else + in2_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_we0 <= ap_const_logic_1; + else + in2_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_62_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_62_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_62_ce0 <= ap_const_logic_1; + else + in2_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_we0 <= ap_const_logic_1; + else + in2_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_63_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_63_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_63_ce0 <= ap_const_logic_1; + else + in2_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_we0 <= ap_const_logic_1; + else + in2_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_6_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_6_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_6_ce0 <= ap_const_logic_1; + else + in2_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_we0 <= ap_const_logic_1; + else + in2_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_7_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_7_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_7_ce0 <= ap_const_logic_1; + else + in2_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_we0 <= ap_const_logic_1; + else + in2_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_8_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_8_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_8_ce0 <= ap_const_logic_1; + else + in2_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_we0 <= ap_const_logic_1; + else + in2_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp2_iter0, sext_ln38_fu_3726_p1, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3539_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + in2_loc_9_address0 <= sext_ln38_fu_3726_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_address0 <= zext_ln28_fu_3539_p1(6 - 1 downto 0); + else + in2_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_9_ce0_assign_proc : process(ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter0, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0)) or ((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)))) then + in2_loc_9_ce0 <= ap_const_logic_1; + else + in2_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4529_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4529_pp1_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_we0 <= ap_const_logic_1; + else + in2_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_3802_p2 <= std_logic_vector(unsigned(ap_const_lv32_1) + unsigned(select_ln31_fu_3637_p3)); + mul_ln31_fu_3609_p0 <= zext_ln31_fu_3606_p1(32 - 1 downto 0); + mul_ln31_fu_3609_p1 <= zext_ln31_fu_3606_p1(32 - 1 downto 0); + mul_ln31_fu_3609_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(mul_ln31_fu_3609_p0) * unsigned(mul_ln31_fu_3609_p1), 64)); + mul_ln38_10_fu_3848_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_10_load_reg_5593) * signed(in1_loc_10_load_reg_5273))), 32)); + mul_ln38_11_fu_3852_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_11_load_reg_5598) * signed(in1_loc_11_load_reg_5278))), 32)); + mul_ln38_12_fu_3856_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_12_load_reg_5603) * signed(in1_loc_12_load_reg_5283))), 32)); + mul_ln38_13_fu_3860_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_13_load_reg_5608) * signed(in1_loc_13_load_reg_5288))), 32)); + mul_ln38_14_fu_3864_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_14_load_reg_5613) * signed(in1_loc_14_load_reg_5293))), 32)); + mul_ln38_15_fu_3868_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_15_load_reg_5618) * signed(in1_loc_15_load_reg_5298))), 32)); + mul_ln38_16_fu_3872_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_16_load_reg_5623) * signed(in1_loc_16_load_reg_5303))), 32)); + mul_ln38_17_fu_3876_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_17_load_reg_5628) * signed(in1_loc_17_load_reg_5308))), 32)); + mul_ln38_18_fu_3880_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_18_load_reg_5633) * signed(in1_loc_18_load_reg_5313))), 32)); + mul_ln38_19_fu_3884_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_19_load_reg_5638) * signed(in1_loc_19_load_reg_5318))), 32)); + mul_ln38_1_fu_3812_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_1_load_reg_5548) * signed(in1_loc_1_load_reg_5228))), 32)); + mul_ln38_20_fu_3888_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_20_load_reg_5643) * signed(in1_loc_20_load_reg_5323))), 32)); + mul_ln38_21_fu_3892_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_21_load_reg_5648) * signed(in1_loc_21_load_reg_5328))), 32)); + mul_ln38_22_fu_3896_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_22_load_reg_5653) * signed(in1_loc_22_load_reg_5333))), 32)); + mul_ln38_23_fu_3900_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_23_load_reg_5658) * signed(in1_loc_23_load_reg_5338))), 32)); + mul_ln38_24_fu_3904_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_24_load_reg_5663) * signed(in1_loc_24_load_reg_5343))), 32)); + mul_ln38_25_fu_3908_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_25_load_reg_5668) * signed(in1_loc_25_load_reg_5348))), 32)); + mul_ln38_26_fu_3912_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_26_load_reg_5673) * signed(in1_loc_26_load_reg_5353))), 32)); + mul_ln38_27_fu_3916_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_27_load_reg_5678) * signed(in1_loc_27_load_reg_5358))), 32)); + mul_ln38_28_fu_3920_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_28_load_reg_5683) * signed(in1_loc_28_load_reg_5363))), 32)); + mul_ln38_29_fu_3924_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_29_load_reg_5688) * signed(in1_loc_29_load_reg_5368))), 32)); + mul_ln38_2_fu_3816_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_2_load_reg_5553) * signed(in1_loc_2_load_reg_5233))), 32)); + mul_ln38_30_fu_3928_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_30_load_reg_5693) * signed(in1_loc_30_load_reg_5373))), 32)); + mul_ln38_31_fu_3932_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_31_load_reg_5698) * signed(in1_loc_31_load_reg_5378))), 32)); + mul_ln38_32_fu_3936_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_32_load_reg_5703) * signed(in1_loc_32_load_reg_5383))), 32)); + mul_ln38_33_fu_3940_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_33_load_reg_5708) * signed(in1_loc_33_load_reg_5388))), 32)); + mul_ln38_34_fu_3944_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_34_load_reg_5713) * signed(in1_loc_34_load_reg_5393))), 32)); + mul_ln38_35_fu_3948_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_35_load_reg_5718) * signed(in1_loc_35_load_reg_5398))), 32)); + mul_ln38_36_fu_3952_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_36_load_reg_5723) * signed(in1_loc_36_load_reg_5403))), 32)); + mul_ln38_37_fu_3956_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_37_load_reg_5728) * signed(in1_loc_37_load_reg_5408))), 32)); + mul_ln38_38_fu_3960_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_38_load_reg_5733) * signed(in1_loc_38_load_reg_5413))), 32)); + mul_ln38_39_fu_3964_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_39_load_reg_5738) * signed(in1_loc_39_load_reg_5418))), 32)); + mul_ln38_3_fu_3820_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_3_load_reg_5558) * signed(in1_loc_3_load_reg_5238))), 32)); + mul_ln38_40_fu_3968_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_40_load_reg_5743) * signed(in1_loc_40_load_reg_5423))), 32)); + mul_ln38_41_fu_4036_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_41_load_reg_6103) * signed(in1_loc_41_load_reg_5863))), 32)); + mul_ln38_42_fu_4040_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_42_load_reg_6108) * signed(in1_loc_42_load_reg_5868))), 32)); + mul_ln38_43_fu_3972_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_43_load_reg_5758) * signed(in1_loc_43_load_reg_5438))), 32)); + mul_ln38_44_fu_3976_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_44_load_reg_5763) * signed(in1_loc_44_load_reg_5443))), 32)); + mul_ln38_45_fu_4044_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_45_load_reg_6123) * signed(in1_loc_45_load_reg_5873))), 32)); + mul_ln38_46_fu_4048_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_46_load_reg_6128) * signed(in1_loc_46_load_reg_5878))), 32)); + mul_ln38_47_fu_3980_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_47_load_reg_5778) * signed(in1_loc_47_load_reg_5458))), 32)); + mul_ln38_48_fu_3984_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_48_load_reg_5783) * signed(in1_loc_48_load_reg_5463))), 32)); + mul_ln38_49_fu_3988_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_49_load_reg_5788) * signed(in1_loc_49_load_reg_5468))), 32)); + mul_ln38_4_fu_3824_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_4_load_reg_5563) * signed(in1_loc_4_load_reg_5243))), 32)); + mul_ln38_50_fu_3992_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_50_load_reg_5793) * signed(in1_loc_50_load_reg_5473))), 32)); + mul_ln38_51_fu_3996_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_51_load_reg_5798) * signed(in1_loc_51_load_reg_5478))), 32)); + mul_ln38_52_fu_4000_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_52_load_reg_5803) * signed(in1_loc_52_load_reg_5483))), 32)); + mul_ln38_53_fu_4004_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_53_load_reg_5808) * signed(in1_loc_53_load_reg_5488))), 32)); + mul_ln38_54_fu_4008_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_54_load_reg_5813) * signed(in1_loc_54_load_reg_5493))), 32)); + mul_ln38_55_fu_4012_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_55_load_reg_5818) * signed(in1_loc_55_load_reg_5498))), 32)); + mul_ln38_56_fu_4016_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_56_load_reg_5823) * signed(in1_loc_56_load_reg_5503))), 32)); + mul_ln38_57_fu_4052_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_57_load_reg_6183) * signed(in1_loc_57_load_reg_5883))), 32)); + mul_ln38_58_fu_4056_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_58_load_reg_6188) * signed(in1_loc_58_load_reg_5888))), 32)); + mul_ln38_59_fu_4020_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_59_load_reg_5838) * signed(in1_loc_59_load_reg_5518))), 32)); + mul_ln38_5_fu_3828_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_5_load_reg_5568) * signed(in1_loc_5_load_reg_5248))), 32)); + mul_ln38_60_fu_4024_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_60_load_reg_5843) * signed(in1_loc_60_load_reg_5523))), 32)); + mul_ln38_61_fu_4060_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_61_load_reg_6203) * signed(in1_loc_61_load_reg_5893))), 32)); + mul_ln38_62_fu_4028_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_62_load_reg_5853) * signed(in1_loc_62_load_reg_5533))), 32)); + mul_ln38_63_fu_4032_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_63_load_reg_5858) * signed(in1_loc_63_load_reg_5538))), 32)); + mul_ln38_6_fu_3832_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_6_load_reg_5573) * signed(in1_loc_6_load_reg_5253))), 32)); + mul_ln38_7_fu_3836_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_7_load_reg_5578) * signed(in1_loc_7_load_reg_5258))), 32)); + mul_ln38_8_fu_3840_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_8_load_reg_5583) * signed(in1_loc_8_load_reg_5263))), 32)); + mul_ln38_9_fu_3844_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_9_load_reg_5588) * signed(in1_loc_9_load_reg_5268))), 32)); + mul_ln38_fu_3808_p2 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(std_logic_vector(signed(in2_loc_0_load_reg_5543) * signed(in1_loc_0_load_reg_5223))), 32)); + + out_loc_address0_assign_proc : process(ap_block_pp3_stage0, out_loc_addr_reg_4927_pp2_iter1_reg, ap_enable_reg_pp2_iter2, ap_CS_fsm_pp3_stage0, ap_enable_reg_pp3_iter0, ap_block_pp2_stage0, zext_ln42_fu_4385_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + out_loc_address0 <= zext_ln42_fu_4385_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + out_loc_address0 <= out_loc_addr_reg_4927_pp2_iter1_reg; + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter2, ap_CS_fsm_pp3_stage0, ap_block_pp3_stage0_11001, ap_enable_reg_pp3_iter0) + begin + if ((((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)) or ((ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_boolean_0 = ap_block_pp3_stage0_11001)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + out_loc_ce1_assign_proc : process(ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter4) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter4 = ap_const_logic_1))) then + out_loc_ce1 <= ap_const_logic_1; + else + out_loc_ce1 <= ap_const_logic_0; + end if; + end process; + + out_loc_d1 <= std_logic_vector(unsigned(add_ln38_30_fu_4296_p2) + unsigned(add_ln38_62_fu_4360_p2)); + + out_loc_we1_assign_proc : process(ap_block_pp2_stage0_11001, icmp_ln31_reg_4606_pp2_iter3_reg, ap_enable_reg_pp2_iter4) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4606_pp2_iter3_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter4 = ap_const_logic_1))) then + out_loc_we1 <= ap_const_logic_1; + else + out_loc_we1 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state28, out_mem_AWREADY) + begin + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state28))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state36, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state36))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp3_iter2, icmp_ln42_reg_6313_pp3_iter1_reg, ap_block_pp3_stage0_11001) + begin + if (((icmp_ln42_reg_6313_pp3_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_11001))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state28) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state28)) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state36) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state36)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp3_iter2, ap_block_pp3_stage0, icmp_ln42_reg_6313_pp3_iter1_reg) + begin + if (((icmp_ln42_reg_6313_pp3_iter1_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + select_ln31_1_fu_3645_p3 <= + i_fu_3626_p2 when (icmp_ln33_fu_3632_p2(0) = '1') else + ap_phi_mux_i_0_phi_fu_3333_p4; + select_ln31_fu_3637_p3 <= + ap_const_lv32_0 when (icmp_ln33_fu_3632_p2(0) = '1') else + j_0_reg_3340; + sext_ln38_fu_3726_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(select_ln31_fu_3637_p3),64)); + + tmp_cast_fu_3657_p3 <= (trunc_ln38_fu_3653_p1 & ap_const_lv6_0); + trunc_ln27_fu_3442_p1 <= phi_ln27_reg_3296(6 - 1 downto 0); + trunc_ln28_fu_3525_p1 <= phi_ln28_reg_3307(6 - 1 downto 0); + trunc_ln38_1_fu_3787_p1 <= select_ln31_fu_3637_p3(14 - 1 downto 0); + trunc_ln38_fu_3653_p1 <= select_ln31_1_fu_3645_p3(8 - 1 downto 0); + zext_ln27_fu_3446_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(lshr_ln_reg_4438_pp0_iter1_reg),64)); + zext_ln28_fu_3539_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(trunc_ln28_reg_4524_pp1_iter1_reg),64)); + zext_ln31_1_fu_3665_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(select_ln31_1_fu_3645_p3),64)); + zext_ln31_fu_3606_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_4390),64)); + zext_ln38_fu_3797_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(add_ln38_64_fu_3791_p2),64)); + zext_ln42_fu_4385_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_3351),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_loc_0.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_loc_0.vhd new file mode 100755 index 0000000..609e4b6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_loc_0.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_0_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 6; + MEM_SIZE : integer := 64 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_0_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc_0 is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 64; + AddressWidth : INTEGER := 6); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc_0 is + component mmult_in1_loc_0_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_0_ram_U : component mmult_in1_loc_0_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_loc.vhd new file mode 100755 index 0000000..ea7bf78 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_loc.vhd @@ -0,0 +1,129 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_out_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + addr1 : in std_logic_vector(AWIDTH-1 downto 0); + ce1 : in std_logic; + d1 : in std_logic_vector(DWIDTH-1 downto 0); + we1 : in std_logic; + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_out_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + end if; + end if; +end process; + + +p_memory_access_1: process (clk) +begin + if (clk'event and clk = '1') then + if (ce1 = '1') then + if (we1 = '1') then + ram(CONV_INTEGER(addr1)) := d1; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_out_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + address1 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_out_loc is + component mmult_out_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR; + addr1 : IN STD_LOGIC_VECTOR; + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_out_loc_ram_U : component mmult_out_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + q0 => q0, + addr1 => address1, + ce1 => ce1, + we1 => we1, + d1 => d1); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/xgui/mmult_v8_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/xgui/mmult_v8_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_8/xgui/mmult_v8_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/component.xml b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/component.xml new file mode 100755 index 0000000..fb30185 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/component.xml @@ -0,0 +1,5614 @@ + + + xilinx.com + hls + mmult + 9.0 + + + s_axi_params + + + + + + + + + AWADDR + + + s_axi_params_AWADDR + + + + + AWVALID + + + s_axi_params_AWVALID + + + + + AWREADY + + + s_axi_params_AWREADY + + + + + WDATA + + + s_axi_params_WDATA + + + + + WSTRB + + + s_axi_params_WSTRB + + + + + WVALID + + + s_axi_params_WVALID + + + + + WREADY + + + s_axi_params_WREADY + + + + + BRESP + + + s_axi_params_BRESP + + + + + BVALID + + + s_axi_params_BVALID + + + + + BREADY + + + s_axi_params_BREADY + + + + + ARADDR + + + s_axi_params_ARADDR + + + + + ARVALID + + + s_axi_params_ARVALID + + + + + ARREADY + + + s_axi_params_ARREADY + + + + + RDATA + + + s_axi_params_RDATA + + + + + RRESP + + + s_axi_params_RRESP + + + + + RVALID + + + s_axi_params_RVALID + + + + + RREADY + + + s_axi_params_RREADY + + + + + + ADDR_WIDTH + 6 + + + DATA_WIDTH + 32 + + + PROTOCOL + AXI4LITE + + + READ_WRITE_MODE + READ_WRITE + + + + + ap_clk + + + + + + + CLK + + + ap_clk + + + + + + ASSOCIATED_BUSIF + s_axi_params:m_axi_in1_mem:m_axi_in2_mem:m_axi_out_mem + + + ASSOCIATED_RESET + ap_rst_n + + + + + ap_rst_n + + + + + + + RST + + + ap_rst_n + + + + + + POLARITY + ACTIVE_LOW + + + + + interrupt + + + + + + + INTERRUPT + + + interrupt + + + + + + SENSITIVITY + LEVEL_HIGH + + + + + m_axi_in1_mem + + + + + + + + + AWID + + + m_axi_in1_mem_AWID + + + + + AWADDR + + + m_axi_in1_mem_AWADDR + + + + + AWLEN + + + m_axi_in1_mem_AWLEN + + + + + AWSIZE + + + m_axi_in1_mem_AWSIZE + + + + + AWBURST + + + m_axi_in1_mem_AWBURST + + + + + AWLOCK + + + m_axi_in1_mem_AWLOCK + + + + + AWREGION + + + m_axi_in1_mem_AWREGION + + + + + AWCACHE + + + m_axi_in1_mem_AWCACHE + + + + + AWPROT + + + m_axi_in1_mem_AWPROT + + + + + AWQOS + + + m_axi_in1_mem_AWQOS + + + + + AWUSER + + + m_axi_in1_mem_AWUSER + + + + + AWVALID + + + m_axi_in1_mem_AWVALID + + + + + AWREADY + + + m_axi_in1_mem_AWREADY + + + + + WID + + + m_axi_in1_mem_WID + + + + + WDATA + + + m_axi_in1_mem_WDATA + + + + + WSTRB + + + m_axi_in1_mem_WSTRB + + + + + WLAST + + + m_axi_in1_mem_WLAST + + + + + WUSER + + + m_axi_in1_mem_WUSER + + + + + WVALID + + + m_axi_in1_mem_WVALID + + + + + WREADY + + + m_axi_in1_mem_WREADY + + + + + BID + + + m_axi_in1_mem_BID + + + + + BRESP + + + m_axi_in1_mem_BRESP + + + + + BUSER + + + m_axi_in1_mem_BUSER + + + + + BVALID + + + m_axi_in1_mem_BVALID + + + + + BREADY + + + m_axi_in1_mem_BREADY + + + + + ARID + + + m_axi_in1_mem_ARID + + + + + ARADDR + + + m_axi_in1_mem_ARADDR + + + + + ARLEN + + + m_axi_in1_mem_ARLEN + + + + + ARSIZE + + + m_axi_in1_mem_ARSIZE + + + + + ARBURST + + + m_axi_in1_mem_ARBURST + + + + + ARLOCK + + + m_axi_in1_mem_ARLOCK + + + + + ARREGION + + + m_axi_in1_mem_ARREGION + + + + + ARCACHE + + + m_axi_in1_mem_ARCACHE + + + + + ARPROT + + + m_axi_in1_mem_ARPROT + + + + + ARQOS + + + m_axi_in1_mem_ARQOS + + + + + ARUSER + + + m_axi_in1_mem_ARUSER + + + + + ARVALID + + + m_axi_in1_mem_ARVALID + + + + + ARREADY + + + m_axi_in1_mem_ARREADY + + + + + RID + + + m_axi_in1_mem_RID + + + + + RDATA + + + m_axi_in1_mem_RDATA + + + + + RRESP + + + m_axi_in1_mem_RRESP + + + + + RLAST + + + m_axi_in1_mem_RLAST + + + + + RUSER + + + m_axi_in1_mem_RUSER + + + + + RVALID + + + m_axi_in1_mem_RVALID + + + + + RREADY + + + m_axi_in1_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_in2_mem + + + + + + + + + AWID + + + m_axi_in2_mem_AWID + + + + + AWADDR + + + m_axi_in2_mem_AWADDR + + + + + AWLEN + + + m_axi_in2_mem_AWLEN + + + + + AWSIZE + + + m_axi_in2_mem_AWSIZE + + + + + AWBURST + + + m_axi_in2_mem_AWBURST + + + + + AWLOCK + + + m_axi_in2_mem_AWLOCK + + + + + AWREGION + + + m_axi_in2_mem_AWREGION + + + + + AWCACHE + + + m_axi_in2_mem_AWCACHE + + + + + AWPROT + + + m_axi_in2_mem_AWPROT + + + + + AWQOS + + + m_axi_in2_mem_AWQOS + + + + + AWUSER + + + m_axi_in2_mem_AWUSER + + + + + AWVALID + + + m_axi_in2_mem_AWVALID + + + + + AWREADY + + + m_axi_in2_mem_AWREADY + + + + + WID + + + m_axi_in2_mem_WID + + + + + WDATA + + + m_axi_in2_mem_WDATA + + + + + WSTRB + + + m_axi_in2_mem_WSTRB + + + + + WLAST + + + m_axi_in2_mem_WLAST + + + + + WUSER + + + m_axi_in2_mem_WUSER + + + + + WVALID + + + m_axi_in2_mem_WVALID + + + + + WREADY + + + m_axi_in2_mem_WREADY + + + + + BID + + + m_axi_in2_mem_BID + + + + + BRESP + + + m_axi_in2_mem_BRESP + + + + + BUSER + + + m_axi_in2_mem_BUSER + + + + + BVALID + + + m_axi_in2_mem_BVALID + + + + + BREADY + + + m_axi_in2_mem_BREADY + + + + + ARID + + + m_axi_in2_mem_ARID + + + + + ARADDR + + + m_axi_in2_mem_ARADDR + + + + + ARLEN + + + m_axi_in2_mem_ARLEN + + + + + ARSIZE + + + m_axi_in2_mem_ARSIZE + + + + + ARBURST + + + m_axi_in2_mem_ARBURST + + + + + ARLOCK + + + m_axi_in2_mem_ARLOCK + + + + + ARREGION + + + m_axi_in2_mem_ARREGION + + + + + ARCACHE + + + m_axi_in2_mem_ARCACHE + + + + + ARPROT + + + m_axi_in2_mem_ARPROT + + + + + ARQOS + + + m_axi_in2_mem_ARQOS + + + + + ARUSER + + + m_axi_in2_mem_ARUSER + + + + + ARVALID + + + m_axi_in2_mem_ARVALID + + + + + ARREADY + + + m_axi_in2_mem_ARREADY + + + + + RID + + + m_axi_in2_mem_RID + + + + + RDATA + + + m_axi_in2_mem_RDATA + + + + + RRESP + + + m_axi_in2_mem_RRESP + + + + + RLAST + + + m_axi_in2_mem_RLAST + + + + + RUSER + + + m_axi_in2_mem_RUSER + + + + + RVALID + + + m_axi_in2_mem_RVALID + + + + + RREADY + + + m_axi_in2_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + m_axi_out_mem + + + + + + + + + AWID + + + m_axi_out_mem_AWID + + + + + AWADDR + + + m_axi_out_mem_AWADDR + + + + + AWLEN + + + m_axi_out_mem_AWLEN + + + + + AWSIZE + + + m_axi_out_mem_AWSIZE + + + + + AWBURST + + + m_axi_out_mem_AWBURST + + + + + AWLOCK + + + m_axi_out_mem_AWLOCK + + + + + AWREGION + + + m_axi_out_mem_AWREGION + + + + + AWCACHE + + + m_axi_out_mem_AWCACHE + + + + + AWPROT + + + m_axi_out_mem_AWPROT + + + + + AWQOS + + + m_axi_out_mem_AWQOS + + + + + AWUSER + + + m_axi_out_mem_AWUSER + + + + + AWVALID + + + m_axi_out_mem_AWVALID + + + + + AWREADY + + + m_axi_out_mem_AWREADY + + + + + WID + + + m_axi_out_mem_WID + + + + + WDATA + + + m_axi_out_mem_WDATA + + + + + WSTRB + + + m_axi_out_mem_WSTRB + + + + + WLAST + + + m_axi_out_mem_WLAST + + + + + WUSER + + + m_axi_out_mem_WUSER + + + + + WVALID + + + m_axi_out_mem_WVALID + + + + + WREADY + + + m_axi_out_mem_WREADY + + + + + BID + + + m_axi_out_mem_BID + + + + + BRESP + + + m_axi_out_mem_BRESP + + + + + BUSER + + + m_axi_out_mem_BUSER + + + + + BVALID + + + m_axi_out_mem_BVALID + + + + + BREADY + + + m_axi_out_mem_BREADY + + + + + ARID + + + m_axi_out_mem_ARID + + + + + ARADDR + + + m_axi_out_mem_ARADDR + + + + + ARLEN + + + m_axi_out_mem_ARLEN + + + + + ARSIZE + + + m_axi_out_mem_ARSIZE + + + + + ARBURST + + + m_axi_out_mem_ARBURST + + + + + ARLOCK + + + m_axi_out_mem_ARLOCK + + + + + ARREGION + + + m_axi_out_mem_ARREGION + + + + + ARCACHE + + + m_axi_out_mem_ARCACHE + + + + + ARPROT + + + m_axi_out_mem_ARPROT + + + + + ARQOS + + + m_axi_out_mem_ARQOS + + + + + ARUSER + + + m_axi_out_mem_ARUSER + + + + + ARVALID + + + m_axi_out_mem_ARVALID + + + + + ARREADY + + + m_axi_out_mem_ARREADY + + + + + RID + + + m_axi_out_mem_RID + + + + + RDATA + + + m_axi_out_mem_RDATA + + + + + RRESP + + + m_axi_out_mem_RRESP + + + + + RLAST + + + m_axi_out_mem_RLAST + + + + + RUSER + + + m_axi_out_mem_RUSER + + + + + RVALID + + + m_axi_out_mem_RVALID + + + + + RREADY + + + m_axi_out_mem_RREADY + + + + + + ADDR_WIDTH + 32 + + + MAX_BURST_LENGTH + 256 + + + NUM_READ_OUTSTANDING + 16 + + + NUM_WRITE_OUTSTANDING + 16 + + + MAX_READ_BURST_LENGTH + 16 + + + MAX_WRITE_BURST_LENGTH + 16 + + + PROTOCOL + AXI4 + + + READ_WRITE_MODE + READ_WRITE + + + HAS_BURST + 0 + + + SUPPORTS_NARROW_BURST + 0 + + + + + + + Data_m_axi_in1_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_in2_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + Data_m_axi_out_mem + 4G + 32 + + + DEPENDENT_ON + s_axi_params + + + PREFERRED_USAGE + MEMORY + + + + + + + s_axi_params + + Reg + 0 + 65536 + 32 + register + read-write + + + OFFSET_BASE_PARAM + C_S_AXI_PARAMS_BASEADDR + + + OFFSET_HIGH_PARAM + C_S_AXI_PARAMS_HIGHADDR + + + + CTRL + CTRL + Control signals + 0 + 32 + read-write + + 0 + + + AP_START + Control signal Register for 'ap_start'. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + AP_DONE + Control signal Register for 'ap_done'. + 1 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_IDLE + Control signal Register for 'ap_idle'. + 2 + 1 + read-only + + 0 + 0 + + modify + false + + + AP_READY + Control signal Register for 'ap_ready'. + 3 + 1 + read-only + + 0 + 0 + + modify + false + + + RESERVED_1 + Reserved. 0s on read. + 4 + 3 + read-only + + 0 + 0 + + modify + false + + + AUTO_RESTART + Control signal Register for 'auto_restart'. + 7 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED_2 + Reserved. 0s on read. + 8 + 24 + read-only + + 0 + 0 + + modify + false + + + + GIER + GIER + Global Interrupt Enable Register + 4 + 32 + read-write + + 0 + + + Enable + Master enable for the device interrupt output to the system interrupt controller: 0 = Disabled, 1 = Enabled + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 1 + 31 + read-only + + 0 + 0 + + modify + false + + + + IP_IER + IP_IER + IP Interrupt Enable Register + 8 + 32 + read-write + + 0 + + + CHAN0_INT_EN + Enable Channel 0 (ap_done) Interrupt. 0 = Disabled, 1 = Enabled. + 0 + 1 + read-write + modify + + 0 + 0 + + false + + + CHAN1_INT_EN + Enable Channel 1 (ap_ready) Interrupt. 0 = Disabled, 1 = Enabled. + 1 + 1 + read-write + modify + + 0 + 0 + + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + IP_ISR + IP_ISR + IP Interrupt Status Register + 12 + 32 + read-write + + 0 + + + CHAN0_INT_ST + Channel 0 (ap_done) Interrupt Status. 0 = No Channel 0 input interrupt, 1 = Channel 0 input interrup + 0 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + CHAN1_INT_ST + Channel 1 (ap_ready) Interrupt Status. 0 = No Channel 1 input interrupt, 1 = Channel 1 input interrup + 1 + 1 + read-only + oneToToggle + + 0 + 0 + + modify + false + + + RESERVED + Reserved. 0s on read. + 2 + 30 + read-only + + 0 + 0 + + modify + false + + + + in1 + in1 + Data signal of in1 + 16 + 32 + write-only + + 0 + + + in1 + Bit 31 to 0 Data signal of in1 + 0 + 32 + write-only + + 0 + 0 + + false + + + + in2 + in2 + Data signal of in2 + 24 + 32 + write-only + + 0 + + + in2 + Bit 31 to 0 Data signal of in2 + 0 + 32 + write-only + + 0 + 0 + + false + + + + out_r + out_r + Data signal of out_r + 32 + 32 + write-only + + 0 + + + out_r + Bit 31 to 0 Data signal of out_r + 0 + 32 + write-only + + 0 + 0 + + false + + + + dim + dim + Data signal of dim + 40 + 32 + write-only + + 0 + + + dim + Bit 31 to 0 Data signal of dim + 0 + 32 + write-only + + 0 + 0 + + false + + + + + + + + + xilinx_verilogsynthesis + Verilog Synthesis + verilogSource:vivado.xilinx.com:synthesis + verilog + mmult + + xilinx_verilogsynthesis_view_fileset + + + + viewChecksum + 91867248 + + + + + xilinx_verilogbehavioralsimulation + Verilog Simulation + verilogSource:vivado.xilinx.com:simulation + verilog + mmult + + xilinx_verilogbehavioralsimulation_view_fileset + + + + viewChecksum + f05ce1d4 + + + + + xilinx_vhdlsynthesis + VHDL Synthesis + vhdlSource:vivado.xilinx.com:synthesis + vhdl + mmult + + xilinx_vhdlsynthesis_view_fileset + + + + viewChecksum + 4708b6eb + + + + + xilinx_vhdlbehavioralsimulation + VHDL Simulation + vhdlSource:vivado.xilinx.com:simulation + vhdl + mmult + + xilinx_vhdlbehavioralsimulation_view_fileset + + + + viewChecksum + 96ae10b2 + + + + + xilinx_softwaredriver + Software Driver + :vivado.xilinx.com:sw.driver + + xilinx_softwaredriver_view_fileset + + + + viewChecksum + 01584106 + + + + + xilinx_documentation + Documentation + :vivado.xilinx.com:docs.all + + xilinx_documentation_view_fileset + + + + xilinx_miscfiles + Miscellaneous + :vivado.xilinx.com:misc.files + + xilinx_miscfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + xilinx_xpgui + UI Layout + :vivado.xilinx.com:xgui.ui + + xilinx_xpgui_view_fileset + + + + viewChecksum + 3f68c42e + + + + + xilinx_utilityxitfiles + Utility XIT/TTCL + :vivado.xilinx.com:xit.util + + xilinx_utilityxitfiles_view_fileset + + + + viewChecksum + 0f05e113 + + + + + + + s_axi_params_AWADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_AWREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WSTRB + + in + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_WREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_BREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARADDR + + in + + 5 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_ARREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RRESP + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + s_axi_params_RREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_clk + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + ap_rst_n + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + interrupt + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in1_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in1_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in1_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_in2_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_in2_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_in2_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_AWVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_AWREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WDATA + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WSTRB + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WLAST + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_WVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_WREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_BRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_BVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_BREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARID + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARADDR + + out + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLEN + + out + + 7 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARSIZE + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARBURST + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARLOCK + + out + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREGION + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARCACHE + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARPROT + + out + + 2 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARQOS + + out + + 3 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARUSER + + out + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_ARVALID + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_ARREADY + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RID + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + false + + + + + + m_axi_out_mem_RDATA + + in + + 31 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RRESP + + in + + 1 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RLAST + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RUSER + + in + + 0 + 0 + + + + std_logic_vector + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + 0 + + + + + + false + + + + + + m_axi_out_mem_RVALID + + in + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + m_axi_out_mem_RREADY + + out + + + std_logic + xilinx_verilogsynthesis + xilinx_verilogbehavioralsimulation + + + + + + + + C_S_AXI_PARAMS_ADDR_WIDTH + 6 + + + C_S_AXI_PARAMS_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN1_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_IN2_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_IN2_MEM_DATA_WIDTH + 32 + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + "0011" + + + C_M_AXI_OUT_MEM_ID_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ADDR_WIDTH + 32 + + + C_M_AXI_OUT_MEM_DATA_WIDTH + 32 + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + "0011" + + + + + + choice_list_40181835 + 32 + 64 + 128 + 256 + 512 + 1024 + + + + + xilinx_verilogsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_mul_32ns_32bkb.v + verilogSource + + + hdl/verilog/mmult_mul_32s_32scud.v + verilogSource + + + hdl/verilog/mmult_out_loc.v + verilogSource + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + + + hdl/verilog/mmult.v + verilogSource + + + + xilinx_verilogbehavioralsimulation_view_fileset + + hdl/verilog/mmult_in1_loc_0.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in1_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_in2_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_mul_32ns_32bkb.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_mul_32s_32scud.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_loc.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_out_mem_m_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult_params_s_axi.v + verilogSource + USED_IN_ipstatic + + + hdl/verilog/mmult.v + verilogSource + USED_IN_ipstatic + + + + xilinx_vhdlsynthesis_view_fileset + + constraints/mmult_ooc.xdc + xdc + USED_IN_out_of_context + + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_mul_32ns_32bkb.vhd + vhdlSource + + + hdl/vhdl/mmult_mul_32s_32scud.vhd + vhdlSource + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + + + hdl/vhdl/mmult.vhd + vhdlSource + CHECKSUM_db20a12c + + + + xilinx_vhdlbehavioralsimulation_view_fileset + + hdl/vhdl/mmult_in1_loc_0.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in1_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_in2_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_mul_32ns_32bkb.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_mul_32s_32scud.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_loc.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_out_mem_m_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult_params_s_axi.vhd + vhdlSource + USED_IN_ipstatic + + + hdl/vhdl/mmult.vhd + vhdlSource + USED_IN_ipstatic + + + + xilinx_softwaredriver_view_fileset + + drivers/mmult_v9_0/data/mmult.mdd + driver_mdd + + + drivers/mmult_v9_0/data/mmult.tcl + driver_tcl + + + drivers/mmult_v9_0/src/Makefile + driver_src + + + drivers/mmult_v9_0/src/xmmult.c + driver_src + + + drivers/mmult_v9_0/src/xmmult.h + driver_src + + + drivers/mmult_v9_0/src/xmmult_hw.h + driver_src + + + drivers/mmult_v9_0/src/xmmult_linux.c + driver_src + + + drivers/mmult_v9_0/src/xmmult_sinit.c + driver_src + + + + xilinx_documentation_view_fileset + + doc/ReleaseNotes.txt + text + + + + xilinx_miscfiles_view_fileset + + misc/logo.png + image + + + + xilinx_xpgui_view_fileset + + xgui/mmult_v9_0.tcl + tclSource + CHECKSUM_3f68c42e + XGUI_VERSION_2 + + + + xilinx_utilityxitfiles_view_fileset + + misc/logo.png + image + LOGO + + + + An IP generated by Vivado HLS + + + C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN1_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN1_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN1_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN1_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN1_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_IN2_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_IN2_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_IN2_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_IN2_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_IN2_MEM_CACHE_VALUE + CACHE value + "0011" + + + C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + Enable ID ports + false + + + C_M_AXI_OUT_MEM_ID_WIDTH + ID width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_DATA_WIDTH + Data width + 32 + + + C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + Enable USER ports + false + + + C_M_AXI_OUT_MEM_AWUSER_WIDTH + AWUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_WUSER_WIDTH + WUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_BUSER_WIDTH + BUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_ARUSER_WIDTH + ARUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_RUSER_WIDTH + RUSER width + 1 + + + + false + + + + + + C_M_AXI_OUT_MEM_USER_VALUE + USER value + 0x00000000 + + + + false + + + + + + C_M_AXI_OUT_MEM_PROT_VALUE + PROT value + "000" + + + C_M_AXI_OUT_MEM_CACHE_VALUE + CACHE value + "0011" + + + Component_Name + mmult_v9_0 + + + clk_period + 3.333 + + + machine + 64 + + + combinational + 0 + + + latency + 16421 + + + II + x + + + + + + zynquplus + + + /VIVADO_HLS_IP + + Mmult + HLS + 2105142056 + 2021-05-14T18:56:37Z + + + 2020.1 + + + + + + + + + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/constraints/mmult_ooc.xdc b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/constraints/mmult_ooc.xdc new file mode 100755 index 0000000..38d0846 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/constraints/mmult_ooc.xdc @@ -0,0 +1,6 @@ +# This constraints file contains default clock frequencies to be used during out-of-context flows such as +# OOC Synthesis and Hierarchical Designs. For best results the frequencies should be modified +# to match the target frequencies. +# This constraints file is not used in normal top-down synthesis (the default flow of Vivado) +create_clock -name ap_clk -period 3.333 [get_ports ap_clk] + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/doc/ReleaseNotes.txt b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/doc/ReleaseNotes.txt new file mode 100755 index 0000000..61c7559 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/doc/ReleaseNotes.txt @@ -0,0 +1,10 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== + +Family : zynquplus +Device : xczu3eg +Package : -sbva484 +Speed Grade : -1-e +Clock Period : 3.333 ns diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.mdd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.mdd new file mode 100755 index 0000000..bef671f --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.mdd @@ -0,0 +1,16 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +OPTION psf_version = 2.1; + +BEGIN driver mmult + + OPTION supported_peripherals = (mmult_v9_0 ); + OPTION driver_state = ACTIVE; + OPTION copyfiles = all; + OPTION name = mmult; + OPTION version = 9.0; + +END driver + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.tcl new file mode 100755 index 0000000..0de7a9c --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/data/mmult.tcl @@ -0,0 +1,21 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +proc generate {drv_handle} { + xdefine_include_file $drv_handle "xparameters.h" "XMmult" \ + "NUM_INSTANCES" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" + + xdefine_config_file $drv_handle "xmmult_g.c" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" + + xdefine_canonical_xpars $drv_handle "xparameters.h" "XMmult" \ + "DEVICE_ID" \ + "C_S_AXI_PARAMS_BASEADDR" \ + "C_S_AXI_PARAMS_HIGHADDR" +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/Makefile b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/Makefile new file mode 100755 index 0000000..7f76086 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/Makefile @@ -0,0 +1,32 @@ +# ============================================================== +# Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +# Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +# ============================================================== +COMPILER= +ARCHIVER= +CP=cp +COMPILER_FLAGS= +EXTRA_COMPILER_FLAGS= +LIB=libxil.a + +RELEASEDIR=../../../lib +INCLUDEDIR=../../../include +INCLUDES=-I./. -I${INCLUDEDIR} + +INCLUDEFILES=*.h +LIBSOURCES=*.c +OUTS = *.o + + +libs: + echo "Compiling mmult" + $(COMPILER) $(COMPILER_FLAGS) $(EXTRA_COMPILER_FLAGS) $(INCLUDES) $(LIBSOURCES) + $(ARCHIVER) -r ${RELEASEDIR}/${LIB} $(OUTS) + make clean + +include: + ${CP} $(INCLUDEFILES) $(INCLUDEDIR) + +clean: + rm -rf ${OUTS} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.c new file mode 100755 index 0000000..fb9a1fb --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.c @@ -0,0 +1,198 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/************************** Function Implementation *************************/ +#ifndef __linux__ +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(ConfigPtr != NULL); + + InstancePtr->Params_BaseAddress = ConfigPtr->Params_BaseAddress; + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} +#endif + +void XMmult_Start(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL) & 0x80; + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, Data | 0x01); +} + +u32 XMmult_IsDone(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 1) & 0x1; +} + +u32 XMmult_IsIdle(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + return (Data >> 2) & 0x1; +} + +u32 XMmult_IsReady(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL); + // check ap_start to see if the pcore is ready for next input + return !(Data & 0x1); +} + +void XMmult_EnableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0x80); +} + +void XMmult_DisableAutoRestart(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_AP_CTRL, 0); +} + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA, Data); +} + +u32 XMmult_Get_in1(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN1_DATA); + return Data; +} + +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA, Data); +} + +u32 XMmult_Get_in2(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IN2_DATA); + return Data; +} + +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA, Data); +} + +u32 XMmult_Get_out_r(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_OUT_R_DATA); + return Data; +} + +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA, Data); +} + +u32 XMmult_Get_dim(XMmult *InstancePtr) { + u32 Data; + + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Data = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_DIM_DATA); + return Data; +} + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 1); +} + +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_GIE, 0); +} + +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register | Mask); +} + +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask) { + u32 Register; + + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + Register = XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER, Register & (~Mask)); +} + +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask) { + Xil_AssertVoid(InstancePtr != NULL); + Xil_AssertVoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + XMmult_WriteReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR, Mask); +} + +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_IER); +} + +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr) { + Xil_AssertNonvoid(InstancePtr != NULL); + Xil_AssertNonvoid(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + return XMmult_ReadReg(InstancePtr->Params_BaseAddress, XMMULT_PARAMS_ADDR_ISR); +} + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.h new file mode 100755 index 0000000..4983669 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult.h @@ -0,0 +1,108 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef XMMULT_H +#define XMMULT_H + +#ifdef __cplusplus +extern "C" { +#endif + +/***************************** Include Files *********************************/ +#ifndef __linux__ +#include "xil_types.h" +#include "xil_assert.h" +#include "xstatus.h" +#include "xil_io.h" +#else +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +#include "xmmult_hw.h" + +/**************************** Type Definitions ******************************/ +#ifdef __linux__ +typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32; +#else +typedef struct { + u16 DeviceId; + u32 Params_BaseAddress; +} XMmult_Config; +#endif + +typedef struct { + u32 Params_BaseAddress; + u32 IsReady; +} XMmult; + +/***************** Macros (Inline Functions) Definitions *********************/ +#ifndef __linux__ +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + Xil_Out32((BaseAddress) + (RegOffset), (u32)(Data)) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + Xil_In32((BaseAddress) + (RegOffset)) +#else +#define XMmult_WriteReg(BaseAddress, RegOffset, Data) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) = (u32)(Data) +#define XMmult_ReadReg(BaseAddress, RegOffset) \ + *(volatile u32*)((BaseAddress) + (RegOffset)) + +#define Xil_AssertVoid(expr) assert(expr) +#define Xil_AssertNonvoid(expr) assert(expr) + +#define XST_SUCCESS 0 +#define XST_DEVICE_NOT_FOUND 2 +#define XST_OPEN_DEVICE_FAILED 3 +#define XIL_COMPONENT_IS_READY 1 +#endif + +/************************** Function Prototypes *****************************/ +#ifndef __linux__ +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId); +XMmult_Config* XMmult_LookupConfig(u16 DeviceId); +int XMmult_CfgInitialize(XMmult *InstancePtr, XMmult_Config *ConfigPtr); +#else +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName); +int XMmult_Release(XMmult *InstancePtr); +#endif + +void XMmult_Start(XMmult *InstancePtr); +u32 XMmult_IsDone(XMmult *InstancePtr); +u32 XMmult_IsIdle(XMmult *InstancePtr); +u32 XMmult_IsReady(XMmult *InstancePtr); +void XMmult_EnableAutoRestart(XMmult *InstancePtr); +void XMmult_DisableAutoRestart(XMmult *InstancePtr); + +void XMmult_Set_in1(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in1(XMmult *InstancePtr); +void XMmult_Set_in2(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_in2(XMmult *InstancePtr); +void XMmult_Set_out_r(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_out_r(XMmult *InstancePtr); +void XMmult_Set_dim(XMmult *InstancePtr, u32 Data); +u32 XMmult_Get_dim(XMmult *InstancePtr); + +void XMmult_InterruptGlobalEnable(XMmult *InstancePtr); +void XMmult_InterruptGlobalDisable(XMmult *InstancePtr); +void XMmult_InterruptEnable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptDisable(XMmult *InstancePtr, u32 Mask); +void XMmult_InterruptClear(XMmult *InstancePtr, u32 Mask); +u32 XMmult_InterruptGetEnabled(XMmult *InstancePtr); +u32 XMmult_InterruptGetStatus(XMmult *InstancePtr); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_hw.h b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_hw.h new file mode 100755 index 0000000..3a0a2a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_hw.h @@ -0,0 +1,50 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +// params +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +#define XMMULT_PARAMS_ADDR_AP_CTRL 0x00 +#define XMMULT_PARAMS_ADDR_GIE 0x04 +#define XMMULT_PARAMS_ADDR_IER 0x08 +#define XMMULT_PARAMS_ADDR_ISR 0x0c +#define XMMULT_PARAMS_ADDR_IN1_DATA 0x10 +#define XMMULT_PARAMS_BITS_IN1_DATA 32 +#define XMMULT_PARAMS_ADDR_IN2_DATA 0x18 +#define XMMULT_PARAMS_BITS_IN2_DATA 32 +#define XMMULT_PARAMS_ADDR_OUT_R_DATA 0x20 +#define XMMULT_PARAMS_BITS_OUT_R_DATA 32 +#define XMMULT_PARAMS_ADDR_DIM_DATA 0x28 +#define XMMULT_PARAMS_BITS_DIM_DATA 32 + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_linux.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_linux.c new file mode 100755 index 0000000..c8dbb33 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_linux.c @@ -0,0 +1,147 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifdef __linux__ + +/***************************** Include Files *********************************/ +#include "xmmult.h" + +/***************** Macros (Inline Functions) Definitions *********************/ +#define MAX_UIO_PATH_SIZE 256 +#define MAX_UIO_NAME_SIZE 64 +#define MAX_UIO_MAPS 5 +#define UIO_INVALID_ADDR 0 + +/**************************** Type Definitions ******************************/ +typedef struct { + u32 addr; + u32 size; +} XMmult_uio_map; + +typedef struct { + int uio_fd; + int uio_num; + char name[ MAX_UIO_NAME_SIZE ]; + char version[ MAX_UIO_NAME_SIZE ]; + XMmult_uio_map maps[ MAX_UIO_MAPS ]; +} XMmult_uio_info; + +/***************** Variable Definitions **************************************/ +static XMmult_uio_info uio_info; + +/************************** Function Implementation *************************/ +static int line_from_file(char* filename, char* linebuf) { + char* s; + int i; + FILE* fp = fopen(filename, "r"); + if (!fp) return -1; + s = fgets(linebuf, MAX_UIO_NAME_SIZE, fp); + fclose(fp); + if (!s) return -2; + for (i=0; (*s)&&(iuio_num); + return line_from_file(file, info->name); +} + +static int uio_info_read_version(XMmult_uio_info* info) { + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/version", info->uio_num); + return line_from_file(file, info->version); +} + +static int uio_info_read_map_addr(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + info->maps[n].addr = UIO_INVALID_ADDR; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/addr", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].addr); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +static int uio_info_read_map_size(XMmult_uio_info* info, int n) { + int ret; + char file[ MAX_UIO_PATH_SIZE ]; + sprintf(file, "/sys/class/uio/uio%d/maps/map%d/size", info->uio_num, n); + FILE* fp = fopen(file, "r"); + if (!fp) return -1; + ret = fscanf(fp, "0x%x", &info->maps[n].size); + fclose(fp); + if (ret < 0) return -2; + return 0; +} + +int XMmult_Initialize(XMmult *InstancePtr, const char* InstanceName) { + XMmult_uio_info *InfoPtr = &uio_info; + struct dirent **namelist; + int i, n; + char* s; + char file[ MAX_UIO_PATH_SIZE ]; + char name[ MAX_UIO_NAME_SIZE ]; + int flag = 0; + + assert(InstancePtr != NULL); + + n = scandir("/sys/class/uio", &namelist, 0, alphasort); + if (n < 0) return XST_DEVICE_NOT_FOUND; + for (i = 0; i < n; i++) { + strcpy(file, "/sys/class/uio/"); + strcat(file, namelist[i]->d_name); + strcat(file, "/name"); + if ((line_from_file(file, name) == 0) && (strcmp(name, InstanceName) == 0)) { + flag = 1; + s = namelist[i]->d_name; + s += 3; // "uio" + InfoPtr->uio_num = atoi(s); + break; + } + } + if (flag == 0) return XST_DEVICE_NOT_FOUND; + + uio_info_read_name(InfoPtr); + uio_info_read_version(InfoPtr); + for (n = 0; n < MAX_UIO_MAPS; ++n) { + uio_info_read_map_addr(InfoPtr, n); + uio_info_read_map_size(InfoPtr, n); + } + + sprintf(file, "/dev/uio%d", InfoPtr->uio_num); + if ((InfoPtr->uio_fd = open(file, O_RDWR)) < 0) { + return XST_OPEN_DEVICE_FAILED; + } + + // NOTE: slave interface 'Params' should be mapped to uioX/map0 + InstancePtr->Params_BaseAddress = (u32)mmap(NULL, InfoPtr->maps[0].size, PROT_READ|PROT_WRITE, MAP_SHARED, InfoPtr->uio_fd, 0 * getpagesize()); + assert(InstancePtr->Params_BaseAddress); + + InstancePtr->IsReady = XIL_COMPONENT_IS_READY; + + return XST_SUCCESS; +} + +int XMmult_Release(XMmult *InstancePtr) { + XMmult_uio_info *InfoPtr = &uio_info; + + assert(InstancePtr != NULL); + assert(InstancePtr->IsReady == XIL_COMPONENT_IS_READY); + + munmap((void*)InstancePtr->Params_BaseAddress, InfoPtr->maps[0].size); + + close(InfoPtr->uio_fd); + + return XST_SUCCESS; +} + +#endif diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_sinit.c b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_sinit.c new file mode 100755 index 0000000..f099590 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/drivers/mmult_v9_0/src/xmmult_sinit.c @@ -0,0 +1,43 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +#ifndef __linux__ + +#include "xstatus.h" +#include "xparameters.h" +#include "xmmult.h" + +extern XMmult_Config XMmult_ConfigTable[]; + +XMmult_Config *XMmult_LookupConfig(u16 DeviceId) { + XMmult_Config *ConfigPtr = NULL; + + int Index; + + for (Index = 0; Index < XPAR_XMMULT_NUM_INSTANCES; Index++) { + if (XMmult_ConfigTable[Index].DeviceId == DeviceId) { + ConfigPtr = &XMmult_ConfigTable[Index]; + break; + } + } + + return ConfigPtr; +} + +int XMmult_Initialize(XMmult *InstancePtr, u16 DeviceId) { + XMmult_Config *ConfigPtr; + + Xil_AssertNonvoid(InstancePtr != NULL); + + ConfigPtr = XMmult_LookupConfig(DeviceId); + if (ConfigPtr == NULL) { + InstancePtr->IsReady = 0; + return (XST_DEVICE_NOT_FOUND); + } + + return XMmult_CfgInitialize(InstancePtr, ConfigPtr); +} + +#endif + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult.v new file mode 100755 index 0000000..b1afd13 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult.v @@ -0,0 +1,9314 @@ +// ============================================================== +// RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +// Version: 2020.1 +// Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +// +// =========================================================== + +`timescale 1 ns / 1 ps + +(* CORE_GENERATION_INFO="mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=3.333000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.916375,HLS_SYN_LAT=16421,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=20363,HLS_SYN_LUT=10157,HLS_VERSION=2020_1}" *) + +module mmult ( + ap_clk, + ap_rst_n, + m_axi_in1_mem_AWVALID, + m_axi_in1_mem_AWREADY, + m_axi_in1_mem_AWADDR, + m_axi_in1_mem_AWID, + m_axi_in1_mem_AWLEN, + m_axi_in1_mem_AWSIZE, + m_axi_in1_mem_AWBURST, + m_axi_in1_mem_AWLOCK, + m_axi_in1_mem_AWCACHE, + m_axi_in1_mem_AWPROT, + m_axi_in1_mem_AWQOS, + m_axi_in1_mem_AWREGION, + m_axi_in1_mem_AWUSER, + m_axi_in1_mem_WVALID, + m_axi_in1_mem_WREADY, + m_axi_in1_mem_WDATA, + m_axi_in1_mem_WSTRB, + m_axi_in1_mem_WLAST, + m_axi_in1_mem_WID, + m_axi_in1_mem_WUSER, + m_axi_in1_mem_ARVALID, + m_axi_in1_mem_ARREADY, + m_axi_in1_mem_ARADDR, + m_axi_in1_mem_ARID, + m_axi_in1_mem_ARLEN, + m_axi_in1_mem_ARSIZE, + m_axi_in1_mem_ARBURST, + m_axi_in1_mem_ARLOCK, + m_axi_in1_mem_ARCACHE, + m_axi_in1_mem_ARPROT, + m_axi_in1_mem_ARQOS, + m_axi_in1_mem_ARREGION, + m_axi_in1_mem_ARUSER, + m_axi_in1_mem_RVALID, + m_axi_in1_mem_RREADY, + m_axi_in1_mem_RDATA, + m_axi_in1_mem_RLAST, + m_axi_in1_mem_RID, + m_axi_in1_mem_RUSER, + m_axi_in1_mem_RRESP, + m_axi_in1_mem_BVALID, + m_axi_in1_mem_BREADY, + m_axi_in1_mem_BRESP, + m_axi_in1_mem_BID, + m_axi_in1_mem_BUSER, + m_axi_in2_mem_AWVALID, + m_axi_in2_mem_AWREADY, + m_axi_in2_mem_AWADDR, + m_axi_in2_mem_AWID, + m_axi_in2_mem_AWLEN, + m_axi_in2_mem_AWSIZE, + m_axi_in2_mem_AWBURST, + m_axi_in2_mem_AWLOCK, + m_axi_in2_mem_AWCACHE, + m_axi_in2_mem_AWPROT, + m_axi_in2_mem_AWQOS, + m_axi_in2_mem_AWREGION, + m_axi_in2_mem_AWUSER, + m_axi_in2_mem_WVALID, + m_axi_in2_mem_WREADY, + m_axi_in2_mem_WDATA, + m_axi_in2_mem_WSTRB, + m_axi_in2_mem_WLAST, + m_axi_in2_mem_WID, + m_axi_in2_mem_WUSER, + m_axi_in2_mem_ARVALID, + m_axi_in2_mem_ARREADY, + m_axi_in2_mem_ARADDR, + m_axi_in2_mem_ARID, + m_axi_in2_mem_ARLEN, + m_axi_in2_mem_ARSIZE, + m_axi_in2_mem_ARBURST, + m_axi_in2_mem_ARLOCK, + m_axi_in2_mem_ARCACHE, + m_axi_in2_mem_ARPROT, + m_axi_in2_mem_ARQOS, + m_axi_in2_mem_ARREGION, + m_axi_in2_mem_ARUSER, + m_axi_in2_mem_RVALID, + m_axi_in2_mem_RREADY, + m_axi_in2_mem_RDATA, + m_axi_in2_mem_RLAST, + m_axi_in2_mem_RID, + m_axi_in2_mem_RUSER, + m_axi_in2_mem_RRESP, + m_axi_in2_mem_BVALID, + m_axi_in2_mem_BREADY, + m_axi_in2_mem_BRESP, + m_axi_in2_mem_BID, + m_axi_in2_mem_BUSER, + m_axi_out_mem_AWVALID, + m_axi_out_mem_AWREADY, + m_axi_out_mem_AWADDR, + m_axi_out_mem_AWID, + m_axi_out_mem_AWLEN, + m_axi_out_mem_AWSIZE, + m_axi_out_mem_AWBURST, + m_axi_out_mem_AWLOCK, + m_axi_out_mem_AWCACHE, + m_axi_out_mem_AWPROT, + m_axi_out_mem_AWQOS, + m_axi_out_mem_AWREGION, + m_axi_out_mem_AWUSER, + m_axi_out_mem_WVALID, + m_axi_out_mem_WREADY, + m_axi_out_mem_WDATA, + m_axi_out_mem_WSTRB, + m_axi_out_mem_WLAST, + m_axi_out_mem_WID, + m_axi_out_mem_WUSER, + m_axi_out_mem_ARVALID, + m_axi_out_mem_ARREADY, + m_axi_out_mem_ARADDR, + m_axi_out_mem_ARID, + m_axi_out_mem_ARLEN, + m_axi_out_mem_ARSIZE, + m_axi_out_mem_ARBURST, + m_axi_out_mem_ARLOCK, + m_axi_out_mem_ARCACHE, + m_axi_out_mem_ARPROT, + m_axi_out_mem_ARQOS, + m_axi_out_mem_ARREGION, + m_axi_out_mem_ARUSER, + m_axi_out_mem_RVALID, + m_axi_out_mem_RREADY, + m_axi_out_mem_RDATA, + m_axi_out_mem_RLAST, + m_axi_out_mem_RID, + m_axi_out_mem_RUSER, + m_axi_out_mem_RRESP, + m_axi_out_mem_BVALID, + m_axi_out_mem_BREADY, + m_axi_out_mem_BRESP, + m_axi_out_mem_BID, + m_axi_out_mem_BUSER, + s_axi_params_AWVALID, + s_axi_params_AWREADY, + s_axi_params_AWADDR, + s_axi_params_WVALID, + s_axi_params_WREADY, + s_axi_params_WDATA, + s_axi_params_WSTRB, + s_axi_params_ARVALID, + s_axi_params_ARREADY, + s_axi_params_ARADDR, + s_axi_params_RVALID, + s_axi_params_RREADY, + s_axi_params_RDATA, + s_axi_params_RRESP, + s_axi_params_BVALID, + s_axi_params_BREADY, + s_axi_params_BRESP, + interrupt +); + +parameter ap_ST_fsm_state1 = 28'd1; +parameter ap_ST_fsm_state2 = 28'd2; +parameter ap_ST_fsm_state3 = 28'd4; +parameter ap_ST_fsm_state4 = 28'd8; +parameter ap_ST_fsm_state5 = 28'd16; +parameter ap_ST_fsm_state6 = 28'd32; +parameter ap_ST_fsm_state7 = 28'd64; +parameter ap_ST_fsm_state8 = 28'd128; +parameter ap_ST_fsm_pp0_stage0 = 28'd256; +parameter ap_ST_fsm_state12 = 28'd512; +parameter ap_ST_fsm_state13 = 28'd1024; +parameter ap_ST_fsm_state14 = 28'd2048; +parameter ap_ST_fsm_state15 = 28'd4096; +parameter ap_ST_fsm_state16 = 28'd8192; +parameter ap_ST_fsm_state17 = 28'd16384; +parameter ap_ST_fsm_state18 = 28'd32768; +parameter ap_ST_fsm_pp1_stage0 = 28'd65536; +parameter ap_ST_fsm_state22 = 28'd131072; +parameter ap_ST_fsm_state23 = 28'd262144; +parameter ap_ST_fsm_state24 = 28'd524288; +parameter ap_ST_fsm_pp2_stage0 = 28'd1048576; +parameter ap_ST_fsm_state34 = 28'd2097152; +parameter ap_ST_fsm_pp3_stage0 = 28'd4194304; +parameter ap_ST_fsm_state38 = 28'd8388608; +parameter ap_ST_fsm_state39 = 28'd16777216; +parameter ap_ST_fsm_state40 = 28'd33554432; +parameter ap_ST_fsm_state41 = 28'd67108864; +parameter ap_ST_fsm_state42 = 28'd134217728; +parameter C_S_AXI_PARAMS_DATA_WIDTH = 32; +parameter C_S_AXI_PARAMS_ADDR_WIDTH = 6; +parameter C_S_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN1_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN1_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN1_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN1_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_ID_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_IN2_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_IN2_MEM_USER_VALUE = 0; +parameter C_M_AXI_IN2_MEM_PROT_VALUE = 0; +parameter C_M_AXI_IN2_MEM_CACHE_VALUE = 3; +parameter C_M_AXI_OUT_MEM_ID_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ADDR_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_DATA_WIDTH = 32; +parameter C_M_AXI_OUT_MEM_AWUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_ARUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_WUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_RUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_BUSER_WIDTH = 1; +parameter C_M_AXI_OUT_MEM_USER_VALUE = 0; +parameter C_M_AXI_OUT_MEM_PROT_VALUE = 0; +parameter C_M_AXI_OUT_MEM_CACHE_VALUE = 3; + +parameter C_S_AXI_PARAMS_WSTRB_WIDTH = (32 / 8); +parameter C_S_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN1_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_IN2_MEM_WSTRB_WIDTH = (32 / 8); +parameter C_M_AXI_OUT_MEM_WSTRB_WIDTH = (32 / 8); + +input ap_clk; +input ap_rst_n; +output m_axi_in1_mem_AWVALID; +input m_axi_in1_mem_AWREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_AWADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_AWID; +output [7:0] m_axi_in1_mem_AWLEN; +output [2:0] m_axi_in1_mem_AWSIZE; +output [1:0] m_axi_in1_mem_AWBURST; +output [1:0] m_axi_in1_mem_AWLOCK; +output [3:0] m_axi_in1_mem_AWCACHE; +output [2:0] m_axi_in1_mem_AWPROT; +output [3:0] m_axi_in1_mem_AWQOS; +output [3:0] m_axi_in1_mem_AWREGION; +output [C_M_AXI_IN1_MEM_AWUSER_WIDTH - 1:0] m_axi_in1_mem_AWUSER; +output m_axi_in1_mem_WVALID; +input m_axi_in1_mem_WREADY; +output [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_WDATA; +output [C_M_AXI_IN1_MEM_WSTRB_WIDTH - 1:0] m_axi_in1_mem_WSTRB; +output m_axi_in1_mem_WLAST; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_WID; +output [C_M_AXI_IN1_MEM_WUSER_WIDTH - 1:0] m_axi_in1_mem_WUSER; +output m_axi_in1_mem_ARVALID; +input m_axi_in1_mem_ARREADY; +output [C_M_AXI_IN1_MEM_ADDR_WIDTH - 1:0] m_axi_in1_mem_ARADDR; +output [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_ARID; +output [7:0] m_axi_in1_mem_ARLEN; +output [2:0] m_axi_in1_mem_ARSIZE; +output [1:0] m_axi_in1_mem_ARBURST; +output [1:0] m_axi_in1_mem_ARLOCK; +output [3:0] m_axi_in1_mem_ARCACHE; +output [2:0] m_axi_in1_mem_ARPROT; +output [3:0] m_axi_in1_mem_ARQOS; +output [3:0] m_axi_in1_mem_ARREGION; +output [C_M_AXI_IN1_MEM_ARUSER_WIDTH - 1:0] m_axi_in1_mem_ARUSER; +input m_axi_in1_mem_RVALID; +output m_axi_in1_mem_RREADY; +input [C_M_AXI_IN1_MEM_DATA_WIDTH - 1:0] m_axi_in1_mem_RDATA; +input m_axi_in1_mem_RLAST; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_RID; +input [C_M_AXI_IN1_MEM_RUSER_WIDTH - 1:0] m_axi_in1_mem_RUSER; +input [1:0] m_axi_in1_mem_RRESP; +input m_axi_in1_mem_BVALID; +output m_axi_in1_mem_BREADY; +input [1:0] m_axi_in1_mem_BRESP; +input [C_M_AXI_IN1_MEM_ID_WIDTH - 1:0] m_axi_in1_mem_BID; +input [C_M_AXI_IN1_MEM_BUSER_WIDTH - 1:0] m_axi_in1_mem_BUSER; +output m_axi_in2_mem_AWVALID; +input m_axi_in2_mem_AWREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_AWADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_AWID; +output [7:0] m_axi_in2_mem_AWLEN; +output [2:0] m_axi_in2_mem_AWSIZE; +output [1:0] m_axi_in2_mem_AWBURST; +output [1:0] m_axi_in2_mem_AWLOCK; +output [3:0] m_axi_in2_mem_AWCACHE; +output [2:0] m_axi_in2_mem_AWPROT; +output [3:0] m_axi_in2_mem_AWQOS; +output [3:0] m_axi_in2_mem_AWREGION; +output [C_M_AXI_IN2_MEM_AWUSER_WIDTH - 1:0] m_axi_in2_mem_AWUSER; +output m_axi_in2_mem_WVALID; +input m_axi_in2_mem_WREADY; +output [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_WDATA; +output [C_M_AXI_IN2_MEM_WSTRB_WIDTH - 1:0] m_axi_in2_mem_WSTRB; +output m_axi_in2_mem_WLAST; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_WID; +output [C_M_AXI_IN2_MEM_WUSER_WIDTH - 1:0] m_axi_in2_mem_WUSER; +output m_axi_in2_mem_ARVALID; +input m_axi_in2_mem_ARREADY; +output [C_M_AXI_IN2_MEM_ADDR_WIDTH - 1:0] m_axi_in2_mem_ARADDR; +output [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_ARID; +output [7:0] m_axi_in2_mem_ARLEN; +output [2:0] m_axi_in2_mem_ARSIZE; +output [1:0] m_axi_in2_mem_ARBURST; +output [1:0] m_axi_in2_mem_ARLOCK; +output [3:0] m_axi_in2_mem_ARCACHE; +output [2:0] m_axi_in2_mem_ARPROT; +output [3:0] m_axi_in2_mem_ARQOS; +output [3:0] m_axi_in2_mem_ARREGION; +output [C_M_AXI_IN2_MEM_ARUSER_WIDTH - 1:0] m_axi_in2_mem_ARUSER; +input m_axi_in2_mem_RVALID; +output m_axi_in2_mem_RREADY; +input [C_M_AXI_IN2_MEM_DATA_WIDTH - 1:0] m_axi_in2_mem_RDATA; +input m_axi_in2_mem_RLAST; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_RID; +input [C_M_AXI_IN2_MEM_RUSER_WIDTH - 1:0] m_axi_in2_mem_RUSER; +input [1:0] m_axi_in2_mem_RRESP; +input m_axi_in2_mem_BVALID; +output m_axi_in2_mem_BREADY; +input [1:0] m_axi_in2_mem_BRESP; +input [C_M_AXI_IN2_MEM_ID_WIDTH - 1:0] m_axi_in2_mem_BID; +input [C_M_AXI_IN2_MEM_BUSER_WIDTH - 1:0] m_axi_in2_mem_BUSER; +output m_axi_out_mem_AWVALID; +input m_axi_out_mem_AWREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_AWADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_AWID; +output [7:0] m_axi_out_mem_AWLEN; +output [2:0] m_axi_out_mem_AWSIZE; +output [1:0] m_axi_out_mem_AWBURST; +output [1:0] m_axi_out_mem_AWLOCK; +output [3:0] m_axi_out_mem_AWCACHE; +output [2:0] m_axi_out_mem_AWPROT; +output [3:0] m_axi_out_mem_AWQOS; +output [3:0] m_axi_out_mem_AWREGION; +output [C_M_AXI_OUT_MEM_AWUSER_WIDTH - 1:0] m_axi_out_mem_AWUSER; +output m_axi_out_mem_WVALID; +input m_axi_out_mem_WREADY; +output [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_WDATA; +output [C_M_AXI_OUT_MEM_WSTRB_WIDTH - 1:0] m_axi_out_mem_WSTRB; +output m_axi_out_mem_WLAST; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_WID; +output [C_M_AXI_OUT_MEM_WUSER_WIDTH - 1:0] m_axi_out_mem_WUSER; +output m_axi_out_mem_ARVALID; +input m_axi_out_mem_ARREADY; +output [C_M_AXI_OUT_MEM_ADDR_WIDTH - 1:0] m_axi_out_mem_ARADDR; +output [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_ARID; +output [7:0] m_axi_out_mem_ARLEN; +output [2:0] m_axi_out_mem_ARSIZE; +output [1:0] m_axi_out_mem_ARBURST; +output [1:0] m_axi_out_mem_ARLOCK; +output [3:0] m_axi_out_mem_ARCACHE; +output [2:0] m_axi_out_mem_ARPROT; +output [3:0] m_axi_out_mem_ARQOS; +output [3:0] m_axi_out_mem_ARREGION; +output [C_M_AXI_OUT_MEM_ARUSER_WIDTH - 1:0] m_axi_out_mem_ARUSER; +input m_axi_out_mem_RVALID; +output m_axi_out_mem_RREADY; +input [C_M_AXI_OUT_MEM_DATA_WIDTH - 1:0] m_axi_out_mem_RDATA; +input m_axi_out_mem_RLAST; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_RID; +input [C_M_AXI_OUT_MEM_RUSER_WIDTH - 1:0] m_axi_out_mem_RUSER; +input [1:0] m_axi_out_mem_RRESP; +input m_axi_out_mem_BVALID; +output m_axi_out_mem_BREADY; +input [1:0] m_axi_out_mem_BRESP; +input [C_M_AXI_OUT_MEM_ID_WIDTH - 1:0] m_axi_out_mem_BID; +input [C_M_AXI_OUT_MEM_BUSER_WIDTH - 1:0] m_axi_out_mem_BUSER; +input s_axi_params_AWVALID; +output s_axi_params_AWREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_AWADDR; +input s_axi_params_WVALID; +output s_axi_params_WREADY; +input [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_WDATA; +input [C_S_AXI_PARAMS_WSTRB_WIDTH - 1:0] s_axi_params_WSTRB; +input s_axi_params_ARVALID; +output s_axi_params_ARREADY; +input [C_S_AXI_PARAMS_ADDR_WIDTH - 1:0] s_axi_params_ARADDR; +output s_axi_params_RVALID; +input s_axi_params_RREADY; +output [C_S_AXI_PARAMS_DATA_WIDTH - 1:0] s_axi_params_RDATA; +output [1:0] s_axi_params_RRESP; +output s_axi_params_BVALID; +input s_axi_params_BREADY; +output [1:0] s_axi_params_BRESP; +output interrupt; + + reg ap_rst_n_inv; +wire ap_start; +reg ap_done; +reg ap_idle; +(* fsm_encoding = "none" *) reg [27:0] ap_CS_fsm; +wire ap_CS_fsm_state1; +reg ap_ready; +wire [31:0] in1; +wire [31:0] in2; +wire [31:0] out_r; +wire [31:0] dim; +reg in1_mem_blk_n_AR; +wire ap_CS_fsm_state2; +reg in1_mem_blk_n_R; +wire ap_CS_fsm_pp0_stage0; +reg ap_enable_reg_pp0_iter1; +wire ap_block_pp0_stage0; +reg in2_mem_blk_n_AR; +wire ap_CS_fsm_state12; +reg in2_mem_blk_n_R; +wire ap_CS_fsm_pp1_stage0; +reg ap_enable_reg_pp1_iter1; +wire ap_block_pp1_stage0; +reg out_mem_blk_n_AW; +wire ap_CS_fsm_state34; +reg out_mem_blk_n_W; +reg ap_enable_reg_pp3_iter2; +wire ap_block_pp3_stage0; +reg [0:0] icmp_ln42_reg_6380; +reg [0:0] icmp_ln42_reg_6380_pp3_iter1_reg; +reg out_mem_blk_n_B; +wire ap_CS_fsm_state42; +wire in1_mem_AWREADY; +wire in1_mem_WREADY; +reg in1_mem_ARVALID; +wire in1_mem_ARREADY; +wire [31:0] in1_mem_ARADDR; +wire in1_mem_RVALID; +reg in1_mem_RREADY; +wire [31:0] in1_mem_RDATA; +wire in1_mem_RLAST; +wire [0:0] in1_mem_RID; +wire [0:0] in1_mem_RUSER; +wire [1:0] in1_mem_RRESP; +wire in1_mem_BVALID; +wire [1:0] in1_mem_BRESP; +wire [0:0] in1_mem_BID; +wire [0:0] in1_mem_BUSER; +wire in2_mem_AWREADY; +wire in2_mem_WREADY; +reg in2_mem_ARVALID; +wire in2_mem_ARREADY; +wire in2_mem_RVALID; +reg in2_mem_RREADY; +wire [31:0] in2_mem_RDATA; +wire in2_mem_RLAST; +wire [0:0] in2_mem_RID; +wire [0:0] in2_mem_RUSER; +wire [1:0] in2_mem_RRESP; +wire in2_mem_BVALID; +wire [1:0] in2_mem_BRESP; +wire [0:0] in2_mem_BID; +wire [0:0] in2_mem_BUSER; +reg out_mem_AWVALID; +wire out_mem_AWREADY; +reg out_mem_WVALID; +wire out_mem_WREADY; +wire out_mem_ARREADY; +wire out_mem_RVALID; +wire [31:0] out_mem_RDATA; +wire out_mem_RLAST; +wire [0:0] out_mem_RID; +wire [0:0] out_mem_RUSER; +wire [1:0] out_mem_RRESP; +wire out_mem_BVALID; +reg out_mem_BREADY; +wire [1:0] out_mem_BRESP; +wire [0:0] out_mem_BID; +wire [0:0] out_mem_BUSER; +reg [12:0] phi_ln27_reg_3296; +reg [12:0] phi_ln28_reg_3307; +reg [63:0] indvar_flatten_reg_3318; +reg [30:0] i_0_reg_3329; +reg [31:0] j_0_reg_3340; +reg [12:0] phi_ln42_reg_3351; +wire [31:0] out_loc_q0; +reg [31:0] reg_3362; +reg ap_enable_reg_pp2_iter5; +wire ap_block_state25_pp2_stage0_iter0; +wire ap_block_state26_pp2_stage0_iter1; +wire ap_block_state27_pp2_stage0_iter2; +wire ap_block_state28_pp2_stage0_iter3; +wire ap_block_state29_pp2_stage0_iter4; +wire ap_block_state30_pp2_stage0_iter5; +wire ap_block_state31_pp2_stage0_iter6; +wire ap_block_state32_pp2_stage0_iter7; +wire ap_block_state33_pp2_stage0_iter8; +wire ap_block_pp2_stage0_11001; +reg [0:0] icmp_ln31_reg_4578; +reg [0:0] icmp_ln31_reg_4578_pp2_iter4_reg; +wire ap_CS_fsm_pp3_stage0; +reg ap_enable_reg_pp3_iter1; +wire ap_block_state35_pp3_stage0_iter0; +wire ap_block_state36_pp3_stage0_iter1; +wire ap_block_state37_pp3_stage0_iter2; +reg ap_block_state37_io; +reg ap_block_pp3_stage0_11001; +reg [31:0] dim_read_reg_4356; +reg [29:0] out5_reg_4362; +reg [29:0] in_reg_4367; +reg [29:0] in3_reg_4372; +reg [31:0] out_mem_addr_reg_4383; +wire ap_CS_fsm_state8; +reg [31:0] in2_mem_addr_reg_4389; +wire [0:0] icmp_ln27_fu_3425_p2; +wire ap_block_state9_pp0_stage0_iter0; +reg ap_block_state10_pp0_stage0_iter1; +wire ap_block_state11_pp0_stage0_iter2; +reg ap_block_pp0_stage0_11001; +wire [12:0] add_ln27_fu_3431_p2; +reg ap_enable_reg_pp0_iter0; +reg [6:0] lshr_ln_reg_4404; +reg [6:0] lshr_ln_reg_4404_pp0_iter1_reg; +wire [5:0] trunc_ln27_fu_3447_p1; +reg [5:0] trunc_ln27_reg_4409; +reg [5:0] trunc_ln27_reg_4409_pp0_iter1_reg; +reg [31:0] in1_mem_addr_read_reg_4413; +wire [0:0] icmp_ln28_fu_3518_p2; +wire ap_block_state19_pp1_stage0_iter0; +reg ap_block_state20_pp1_stage0_iter1; +wire ap_block_state21_pp1_stage0_iter2; +reg ap_block_pp1_stage0_11001; +wire [12:0] add_ln28_fu_3524_p2; +reg ap_enable_reg_pp1_iter0; +wire [5:0] trunc_ln28_fu_3530_p1; +reg [5:0] trunc_ln28_reg_4490; +reg [5:0] trunc_ln28_reg_4490_pp1_iter1_reg; +reg [5:0] trunc_ln1_reg_4495; +reg [5:0] trunc_ln1_reg_4495_pp1_iter1_reg; +reg [31:0] in2_mem_addr_read_reg_4499; +wire [63:0] zext_ln31_fu_3611_p1; +wire ap_CS_fsm_state22; +wire [63:0] grp_fu_3614_p2; +reg [63:0] mul_ln31_reg_4573; +wire ap_CS_fsm_state24; +wire [0:0] icmp_ln31_fu_3620_p2; +wire ap_CS_fsm_pp2_stage0; +reg [0:0] icmp_ln31_reg_4578_pp2_iter1_reg; +reg [0:0] icmp_ln31_reg_4578_pp2_iter2_reg; +reg [0:0] icmp_ln31_reg_4578_pp2_iter3_reg; +reg [0:0] icmp_ln31_reg_4578_pp2_iter5_reg; +reg [0:0] icmp_ln31_reg_4578_pp2_iter6_reg; +reg [0:0] icmp_ln31_reg_4578_pp2_iter7_reg; +wire [63:0] add_ln31_fu_3625_p2; +reg ap_enable_reg_pp2_iter0; +wire signed [31:0] select_ln31_fu_3642_p3; +reg signed [31:0] select_ln31_reg_4587; +wire [30:0] select_ln31_1_fu_3650_p3; +reg [30:0] select_ln31_1_reg_4592; +reg [11:0] out_loc_addr_reg_4598; +reg [11:0] out_loc_addr_reg_4598_pp2_iter1_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter2_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter3_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter4_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter5_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter6_reg; +reg [11:0] out_loc_addr_reg_4598_pp2_iter7_reg; +wire [31:0] j_fu_3685_p2; +wire [63:0] zext_ln31_1_fu_3691_p1; +reg [63:0] zext_ln31_1_reg_4609; +wire signed [63:0] sext_ln38_fu_3739_p1; +reg signed [63:0] sext_ln38_reg_4857; +wire [31:0] in1_loc_0_q0; +reg signed [31:0] in1_loc_0_load_reg_5105; +reg ap_enable_reg_pp2_iter2; +wire [31:0] in1_loc_1_q0; +reg signed [31:0] in1_loc_1_load_reg_5110; +wire [31:0] in1_loc_2_q0; +reg signed [31:0] in1_loc_2_load_reg_5115; +wire [31:0] in1_loc_3_q0; +reg signed [31:0] in1_loc_3_load_reg_5120; +wire [31:0] in1_loc_4_q0; +reg signed [31:0] in1_loc_4_load_reg_5125; +wire [31:0] in1_loc_5_q0; +reg signed [31:0] in1_loc_5_load_reg_5130; +wire [31:0] in1_loc_6_q0; +reg signed [31:0] in1_loc_6_load_reg_5135; +wire [31:0] in1_loc_7_q0; +reg signed [31:0] in1_loc_7_load_reg_5140; +wire [31:0] in1_loc_8_q0; +reg signed [31:0] in1_loc_8_load_reg_5145; +wire [31:0] in1_loc_11_q0; +reg signed [31:0] in1_loc_11_load_reg_5160; +wire [31:0] in1_loc_12_q0; +reg signed [31:0] in1_loc_12_load_reg_5165; +wire [31:0] in1_loc_15_q0; +reg signed [31:0] in1_loc_15_load_reg_5180; +wire [31:0] in1_loc_16_q0; +reg signed [31:0] in1_loc_16_load_reg_5185; +wire [31:0] in1_loc_19_q0; +reg signed [31:0] in1_loc_19_load_reg_5200; +wire [31:0] in1_loc_20_q0; +reg signed [31:0] in1_loc_20_load_reg_5205; +wire [31:0] in1_loc_21_q0; +reg signed [31:0] in1_loc_21_load_reg_5210; +wire [31:0] in1_loc_22_q0; +reg signed [31:0] in1_loc_22_load_reg_5215; +wire [31:0] in1_loc_23_q0; +reg signed [31:0] in1_loc_23_load_reg_5220; +wire [31:0] in1_loc_24_q0; +reg signed [31:0] in1_loc_24_load_reg_5225; +wire [31:0] in1_loc_27_q0; +reg signed [31:0] in1_loc_27_load_reg_5240; +wire [31:0] in1_loc_28_q0; +reg signed [31:0] in1_loc_28_load_reg_5245; +wire [31:0] in1_loc_29_q0; +reg signed [31:0] in1_loc_29_load_reg_5250; +wire [31:0] in1_loc_30_q0; +reg signed [31:0] in1_loc_30_load_reg_5255; +wire [31:0] in1_loc_31_q0; +reg signed [31:0] in1_loc_31_load_reg_5260; +wire [31:0] in1_loc_32_q0; +reg signed [31:0] in1_loc_32_load_reg_5265; +wire [31:0] in1_loc_35_q0; +reg signed [31:0] in1_loc_35_load_reg_5280; +wire [31:0] in1_loc_36_q0; +reg signed [31:0] in1_loc_36_load_reg_5285; +wire [31:0] in1_loc_37_q0; +reg signed [31:0] in1_loc_37_load_reg_5290; +wire [31:0] in1_loc_38_q0; +reg signed [31:0] in1_loc_38_load_reg_5295; +wire [31:0] in1_loc_39_q0; +reg signed [31:0] in1_loc_39_load_reg_5300; +wire [31:0] in1_loc_40_q0; +reg signed [31:0] in1_loc_40_load_reg_5305; +wire [31:0] in1_loc_43_q0; +reg signed [31:0] in1_loc_43_load_reg_5320; +wire [31:0] in1_loc_44_q0; +reg signed [31:0] in1_loc_44_load_reg_5325; +wire [31:0] in1_loc_47_q0; +reg signed [31:0] in1_loc_47_load_reg_5340; +wire [31:0] in1_loc_48_q0; +reg signed [31:0] in1_loc_48_load_reg_5345; +wire [31:0] in1_loc_51_q0; +reg signed [31:0] in1_loc_51_load_reg_5360; +wire [31:0] in1_loc_52_q0; +reg signed [31:0] in1_loc_52_load_reg_5365; +wire [31:0] in1_loc_53_q0; +reg signed [31:0] in1_loc_53_load_reg_5370; +wire [31:0] in1_loc_54_q0; +reg signed [31:0] in1_loc_54_load_reg_5375; +wire [31:0] in1_loc_55_q0; +reg signed [31:0] in1_loc_55_load_reg_5380; +wire [31:0] in1_loc_56_q0; +reg signed [31:0] in1_loc_56_load_reg_5385; +wire [31:0] in1_loc_59_q0; +reg signed [31:0] in1_loc_59_load_reg_5400; +wire [31:0] in1_loc_60_q0; +reg signed [31:0] in1_loc_60_load_reg_5405; +wire [31:0] in1_loc_62_q0; +reg signed [31:0] in1_loc_62_load_reg_5415; +wire [31:0] in1_loc_63_q0; +reg signed [31:0] in1_loc_63_load_reg_5420; +wire [31:0] in2_loc_0_q0; +reg signed [31:0] in2_loc_0_load_reg_5425; +wire [31:0] in2_loc_1_q0; +reg signed [31:0] in2_loc_1_load_reg_5430; +wire [31:0] in2_loc_2_q0; +reg signed [31:0] in2_loc_2_load_reg_5435; +wire [31:0] in2_loc_3_q0; +reg signed [31:0] in2_loc_3_load_reg_5440; +wire [31:0] in2_loc_4_q0; +reg signed [31:0] in2_loc_4_load_reg_5445; +wire [31:0] in2_loc_5_q0; +reg signed [31:0] in2_loc_5_load_reg_5450; +wire [31:0] in2_loc_6_q0; +reg signed [31:0] in2_loc_6_load_reg_5455; +wire [31:0] in2_loc_7_q0; +reg signed [31:0] in2_loc_7_load_reg_5460; +wire [31:0] in2_loc_8_q0; +reg signed [31:0] in2_loc_8_load_reg_5465; +wire [31:0] in2_loc_11_q0; +reg signed [31:0] in2_loc_11_load_reg_5480; +wire [31:0] in2_loc_12_q0; +reg signed [31:0] in2_loc_12_load_reg_5485; +wire [31:0] in2_loc_15_q0; +reg signed [31:0] in2_loc_15_load_reg_5500; +wire [31:0] in2_loc_16_q0; +reg signed [31:0] in2_loc_16_load_reg_5505; +wire [31:0] in2_loc_19_q0; +reg signed [31:0] in2_loc_19_load_reg_5520; +wire [31:0] in2_loc_20_q0; +reg signed [31:0] in2_loc_20_load_reg_5525; +wire [31:0] in2_loc_21_q0; +reg signed [31:0] in2_loc_21_load_reg_5530; +wire [31:0] in2_loc_22_q0; +reg signed [31:0] in2_loc_22_load_reg_5535; +wire [31:0] in2_loc_23_q0; +reg signed [31:0] in2_loc_23_load_reg_5540; +wire [31:0] in2_loc_24_q0; +reg signed [31:0] in2_loc_24_load_reg_5545; +wire [31:0] in2_loc_27_q0; +reg signed [31:0] in2_loc_27_load_reg_5560; +wire [31:0] in2_loc_28_q0; +reg signed [31:0] in2_loc_28_load_reg_5565; +wire [31:0] in2_loc_29_q0; +reg signed [31:0] in2_loc_29_load_reg_5570; +wire [31:0] in2_loc_30_q0; +reg signed [31:0] in2_loc_30_load_reg_5575; +wire [31:0] in2_loc_31_q0; +reg signed [31:0] in2_loc_31_load_reg_5580; +wire [31:0] in2_loc_32_q0; +reg signed [31:0] in2_loc_32_load_reg_5585; +wire [31:0] in2_loc_35_q0; +reg signed [31:0] in2_loc_35_load_reg_5600; +wire [31:0] in2_loc_36_q0; +reg signed [31:0] in2_loc_36_load_reg_5605; +wire [31:0] in2_loc_37_q0; +reg signed [31:0] in2_loc_37_load_reg_5610; +wire [31:0] in2_loc_38_q0; +reg signed [31:0] in2_loc_38_load_reg_5615; +wire [31:0] in2_loc_39_q0; +reg signed [31:0] in2_loc_39_load_reg_5620; +wire [31:0] in2_loc_40_q0; +reg signed [31:0] in2_loc_40_load_reg_5625; +wire [31:0] in2_loc_43_q0; +reg signed [31:0] in2_loc_43_load_reg_5640; +wire [31:0] in2_loc_44_q0; +reg signed [31:0] in2_loc_44_load_reg_5645; +wire [31:0] in2_loc_47_q0; +reg signed [31:0] in2_loc_47_load_reg_5660; +wire [31:0] in2_loc_48_q0; +reg signed [31:0] in2_loc_48_load_reg_5665; +wire [31:0] in2_loc_51_q0; +reg signed [31:0] in2_loc_51_load_reg_5680; +wire [31:0] in2_loc_52_q0; +reg signed [31:0] in2_loc_52_load_reg_5685; +wire [31:0] in2_loc_53_q0; +reg signed [31:0] in2_loc_53_load_reg_5690; +wire [31:0] in2_loc_54_q0; +reg signed [31:0] in2_loc_54_load_reg_5695; +wire [31:0] in2_loc_55_q0; +reg signed [31:0] in2_loc_55_load_reg_5700; +wire [31:0] in2_loc_56_q0; +reg signed [31:0] in2_loc_56_load_reg_5705; +wire [31:0] in2_loc_59_q0; +reg signed [31:0] in2_loc_59_load_reg_5720; +wire [31:0] in2_loc_60_q0; +reg signed [31:0] in2_loc_60_load_reg_5725; +wire [31:0] in2_loc_62_q0; +reg signed [31:0] in2_loc_62_load_reg_5735; +wire [31:0] in2_loc_63_q0; +reg signed [31:0] in2_loc_63_load_reg_5740; +wire [31:0] in1_loc_9_q0; +reg signed [31:0] in1_loc_9_load_reg_5745; +reg ap_enable_reg_pp2_iter3; +wire [31:0] in1_loc_10_q0; +reg signed [31:0] in1_loc_10_load_reg_5750; +wire [31:0] in1_loc_13_q0; +reg signed [31:0] in1_loc_13_load_reg_5755; +wire [31:0] in1_loc_14_q0; +reg signed [31:0] in1_loc_14_load_reg_5760; +wire [31:0] in1_loc_17_q0; +reg signed [31:0] in1_loc_17_load_reg_5765; +wire [31:0] in1_loc_18_q0; +reg signed [31:0] in1_loc_18_load_reg_5770; +wire [31:0] in1_loc_25_q0; +reg signed [31:0] in1_loc_25_load_reg_5775; +wire [31:0] in1_loc_26_q0; +reg signed [31:0] in1_loc_26_load_reg_5780; +wire [31:0] in1_loc_33_q0; +reg signed [31:0] in1_loc_33_load_reg_5785; +wire [31:0] in1_loc_34_q0; +reg signed [31:0] in1_loc_34_load_reg_5790; +wire [31:0] in1_loc_41_q0; +reg signed [31:0] in1_loc_41_load_reg_5795; +wire [31:0] in1_loc_42_q0; +reg signed [31:0] in1_loc_42_load_reg_5800; +wire [31:0] in1_loc_45_q0; +reg signed [31:0] in1_loc_45_load_reg_5805; +wire [31:0] in1_loc_46_q0; +reg signed [31:0] in1_loc_46_load_reg_5810; +wire [31:0] in1_loc_49_q0; +reg signed [31:0] in1_loc_49_load_reg_5815; +wire [31:0] in1_loc_50_q0; +reg signed [31:0] in1_loc_50_load_reg_5820; +wire [31:0] in1_loc_57_q0; +reg signed [31:0] in1_loc_57_load_reg_5825; +wire [31:0] in1_loc_58_q0; +reg signed [31:0] in1_loc_58_load_reg_5830; +wire [31:0] in1_loc_61_q0; +reg signed [31:0] in1_loc_61_load_reg_5835; +wire [31:0] in2_loc_9_q0; +reg signed [31:0] in2_loc_9_load_reg_5840; +wire [31:0] in2_loc_10_q0; +reg signed [31:0] in2_loc_10_load_reg_5845; +wire [31:0] in2_loc_13_q0; +reg signed [31:0] in2_loc_13_load_reg_5850; +wire [31:0] in2_loc_14_q0; +reg signed [31:0] in2_loc_14_load_reg_5855; +wire [31:0] in2_loc_17_q0; +reg signed [31:0] in2_loc_17_load_reg_5860; +wire [31:0] in2_loc_18_q0; +reg signed [31:0] in2_loc_18_load_reg_5865; +wire [31:0] in2_loc_25_q0; +reg signed [31:0] in2_loc_25_load_reg_5870; +wire [31:0] in2_loc_26_q0; +reg signed [31:0] in2_loc_26_load_reg_5875; +wire [31:0] in2_loc_33_q0; +reg signed [31:0] in2_loc_33_load_reg_5880; +wire [31:0] in2_loc_34_q0; +reg signed [31:0] in2_loc_34_load_reg_5885; +wire [31:0] in2_loc_41_q0; +reg signed [31:0] in2_loc_41_load_reg_5890; +wire [31:0] in2_loc_42_q0; +reg signed [31:0] in2_loc_42_load_reg_5895; +wire [31:0] in2_loc_45_q0; +reg signed [31:0] in2_loc_45_load_reg_5900; +wire [31:0] in2_loc_46_q0; +reg signed [31:0] in2_loc_46_load_reg_5905; +wire [31:0] in2_loc_49_q0; +reg signed [31:0] in2_loc_49_load_reg_5910; +wire [31:0] in2_loc_50_q0; +reg signed [31:0] in2_loc_50_load_reg_5915; +wire [31:0] in2_loc_57_q0; +reg signed [31:0] in2_loc_57_load_reg_5920; +wire [31:0] in2_loc_58_q0; +reg signed [31:0] in2_loc_58_load_reg_5925; +wire [31:0] in2_loc_61_q0; +reg signed [31:0] in2_loc_61_load_reg_5930; +wire [31:0] grp_fu_3787_p2; +reg [31:0] mul_ln38_reg_5935; +wire [31:0] grp_fu_3791_p2; +reg [31:0] mul_ln38_1_reg_5940; +wire [31:0] grp_fu_3795_p2; +reg [31:0] mul_ln38_2_reg_5945; +wire [31:0] grp_fu_3799_p2; +reg [31:0] mul_ln38_3_reg_5950; +wire [31:0] grp_fu_3803_p2; +reg [31:0] mul_ln38_4_reg_5955; +wire [31:0] grp_fu_3807_p2; +reg [31:0] mul_ln38_5_reg_5960; +wire [31:0] grp_fu_3811_p2; +reg [31:0] mul_ln38_6_reg_5965; +wire [31:0] grp_fu_3815_p2; +reg [31:0] mul_ln38_7_reg_5970; +wire [31:0] grp_fu_3819_p2; +reg [31:0] mul_ln38_8_reg_5975; +wire [31:0] grp_fu_3823_p2; +reg [31:0] mul_ln38_11_reg_5980; +wire [31:0] grp_fu_3827_p2; +reg [31:0] mul_ln38_12_reg_5985; +wire [31:0] grp_fu_3831_p2; +reg [31:0] mul_ln38_15_reg_5990; +wire [31:0] grp_fu_3835_p2; +reg [31:0] mul_ln38_16_reg_5995; +wire [31:0] grp_fu_3839_p2; +reg [31:0] mul_ln38_19_reg_6000; +wire [31:0] grp_fu_3843_p2; +reg [31:0] mul_ln38_20_reg_6005; +wire [31:0] grp_fu_3847_p2; +reg [31:0] mul_ln38_21_reg_6010; +wire [31:0] grp_fu_3851_p2; +reg [31:0] mul_ln38_22_reg_6015; +wire [31:0] grp_fu_3855_p2; +reg [31:0] mul_ln38_23_reg_6020; +wire [31:0] grp_fu_3859_p2; +reg [31:0] mul_ln38_24_reg_6025; +wire [31:0] grp_fu_3863_p2; +reg [31:0] mul_ln38_27_reg_6030; +wire [31:0] grp_fu_3867_p2; +reg [31:0] mul_ln38_28_reg_6035; +wire [31:0] grp_fu_3871_p2; +reg [31:0] mul_ln38_29_reg_6040; +wire [31:0] grp_fu_3875_p2; +reg [31:0] mul_ln38_30_reg_6045; +wire [31:0] grp_fu_3879_p2; +reg [31:0] mul_ln38_31_reg_6050; +wire [31:0] grp_fu_3883_p2; +reg [31:0] mul_ln38_32_reg_6055; +wire [31:0] grp_fu_3887_p2; +reg [31:0] mul_ln38_35_reg_6060; +wire [31:0] grp_fu_3891_p2; +reg [31:0] mul_ln38_36_reg_6065; +wire [31:0] grp_fu_3895_p2; +reg [31:0] mul_ln38_37_reg_6070; +wire [31:0] grp_fu_3899_p2; +reg [31:0] mul_ln38_38_reg_6075; +wire [31:0] grp_fu_3903_p2; +reg [31:0] mul_ln38_39_reg_6080; +wire [31:0] grp_fu_3907_p2; +reg [31:0] mul_ln38_40_reg_6085; +wire [31:0] grp_fu_3911_p2; +reg [31:0] mul_ln38_43_reg_6090; +wire [31:0] grp_fu_3915_p2; +reg [31:0] mul_ln38_44_reg_6095; +wire [31:0] grp_fu_3919_p2; +reg [31:0] mul_ln38_47_reg_6100; +wire [31:0] grp_fu_3923_p2; +reg [31:0] mul_ln38_48_reg_6105; +wire [31:0] grp_fu_3927_p2; +reg [31:0] mul_ln38_51_reg_6110; +wire [31:0] grp_fu_3931_p2; +reg [31:0] mul_ln38_52_reg_6115; +wire [31:0] grp_fu_3935_p2; +reg [31:0] mul_ln38_53_reg_6120; +wire [31:0] grp_fu_3939_p2; +reg [31:0] mul_ln38_54_reg_6125; +wire [31:0] grp_fu_3943_p2; +reg [31:0] mul_ln38_55_reg_6130; +wire [31:0] grp_fu_3947_p2; +reg [31:0] mul_ln38_56_reg_6135; +wire [31:0] grp_fu_3951_p2; +reg [31:0] mul_ln38_59_reg_6140; +wire [31:0] grp_fu_3955_p2; +reg [31:0] mul_ln38_60_reg_6145; +wire [31:0] grp_fu_3959_p2; +reg [31:0] mul_ln38_62_reg_6150; +wire [31:0] grp_fu_3963_p2; +reg [31:0] mul_ln38_63_reg_6155; +wire [31:0] grp_fu_3967_p2; +reg [31:0] mul_ln38_9_reg_6160; +wire [31:0] grp_fu_3971_p2; +reg [31:0] mul_ln38_10_reg_6165; +wire [31:0] grp_fu_3975_p2; +reg [31:0] mul_ln38_13_reg_6170; +wire [31:0] grp_fu_3979_p2; +reg [31:0] mul_ln38_14_reg_6175; +wire [31:0] grp_fu_3983_p2; +reg [31:0] mul_ln38_17_reg_6180; +wire [31:0] grp_fu_3987_p2; +reg [31:0] mul_ln38_18_reg_6185; +wire [31:0] grp_fu_3991_p2; +reg [31:0] mul_ln38_25_reg_6190; +wire [31:0] grp_fu_3995_p2; +reg [31:0] mul_ln38_26_reg_6195; +wire [31:0] grp_fu_3999_p2; +reg [31:0] mul_ln38_33_reg_6200; +wire [31:0] grp_fu_4003_p2; +reg [31:0] mul_ln38_34_reg_6205; +wire [31:0] grp_fu_4007_p2; +reg [31:0] mul_ln38_41_reg_6210; +wire [31:0] grp_fu_4011_p2; +reg [31:0] mul_ln38_42_reg_6215; +wire [31:0] grp_fu_4015_p2; +reg [31:0] mul_ln38_45_reg_6220; +wire [31:0] grp_fu_4019_p2; +reg [31:0] mul_ln38_46_reg_6225; +wire [31:0] grp_fu_4023_p2; +reg [31:0] mul_ln38_49_reg_6230; +wire [31:0] grp_fu_4027_p2; +reg [31:0] mul_ln38_50_reg_6235; +wire [31:0] grp_fu_4031_p2; +reg [31:0] mul_ln38_57_reg_6240; +wire [31:0] grp_fu_4035_p2; +reg [31:0] mul_ln38_58_reg_6245; +wire [31:0] grp_fu_4039_p2; +reg [31:0] mul_ln38_61_reg_6250; +wire [31:0] add_ln38_2_fu_4052_p2; +reg [31:0] add_ln38_2_reg_6255; +wire [31:0] add_ln38_3_fu_4058_p2; +reg [31:0] add_ln38_3_reg_6260; +wire [31:0] add_ln38_4_fu_4062_p2; +reg [31:0] add_ln38_4_reg_6265; +wire [31:0] add_ln38_7_fu_4066_p2; +reg [31:0] add_ln38_7_reg_6270; +wire [31:0] add_ln38_10_fu_4070_p2; +reg [31:0] add_ln38_10_reg_6275; +wire [31:0] add_ln38_15_fu_4074_p2; +reg [31:0] add_ln38_15_reg_6280; +wire [31:0] add_ln38_18_fu_4078_p2; +reg [31:0] add_ln38_18_reg_6285; +wire [31:0] add_ln38_19_fu_4082_p2; +reg [31:0] add_ln38_19_reg_6290; +wire [31:0] add_ln38_22_fu_4086_p2; +reg [31:0] add_ln38_22_reg_6295; +wire [31:0] add_ln38_25_fu_4090_p2; +reg [31:0] add_ln38_25_reg_6300; +wire [31:0] add_ln38_26_fu_4094_p2; +reg [31:0] add_ln38_26_reg_6305; +wire [31:0] add_ln38_31_fu_4098_p2; +reg [31:0] add_ln38_31_reg_6310; +wire [31:0] add_ln38_34_fu_4102_p2; +reg [31:0] add_ln38_34_reg_6315; +wire [31:0] add_ln38_35_fu_4106_p2; +reg [31:0] add_ln38_35_reg_6320; +wire [31:0] add_ln38_38_fu_4110_p2; +reg [31:0] add_ln38_38_reg_6325; +wire [31:0] add_ln38_41_fu_4114_p2; +reg [31:0] add_ln38_41_reg_6330; +wire [31:0] add_ln38_46_fu_4118_p2; +reg [31:0] add_ln38_46_reg_6335; +wire [31:0] add_ln38_49_fu_4122_p2; +reg [31:0] add_ln38_49_reg_6340; +wire [31:0] add_ln38_50_fu_4126_p2; +reg [31:0] add_ln38_50_reg_6345; +wire [31:0] add_ln38_53_fu_4130_p2; +reg [31:0] add_ln38_53_reg_6350; +wire [31:0] add_ln38_56_fu_4134_p2; +reg [31:0] add_ln38_56_reg_6355; +wire [31:0] add_ln38_57_fu_4138_p2; +reg [31:0] add_ln38_57_reg_6360; +wire [31:0] add_ln38_30_fu_4225_p2; +reg [31:0] add_ln38_30_reg_6365; +wire [31:0] add_ln38_45_fu_4274_p2; +reg [31:0] add_ln38_45_reg_6370; +wire [31:0] add_ln38_61_fu_4323_p2; +reg [31:0] add_ln38_61_reg_6375; +wire [0:0] icmp_ln42_fu_4339_p2; +wire [12:0] add_ln42_fu_4345_p2; +reg ap_enable_reg_pp3_iter0; +reg ap_block_pp0_stage0_subdone; +reg ap_condition_pp0_exit_iter0_state9; +reg ap_enable_reg_pp0_iter2; +wire ap_CS_fsm_state18; +reg ap_block_pp1_stage0_subdone; +reg ap_condition_pp1_exit_iter0_state19; +reg ap_enable_reg_pp1_iter2; +wire ap_block_pp2_stage0_subdone; +reg ap_condition_pp2_exit_iter0_state25; +reg ap_enable_reg_pp2_iter1; +reg ap_enable_reg_pp2_iter4; +reg ap_enable_reg_pp2_iter6; +reg ap_enable_reg_pp2_iter7; +reg ap_enable_reg_pp2_iter8; +reg ap_block_pp3_stage0_subdone; +reg ap_condition_pp3_exit_iter0_state35; +reg [5:0] in1_loc_0_address0; +reg in1_loc_0_ce0; +reg in1_loc_0_we0; +reg [5:0] in1_loc_1_address0; +reg in1_loc_1_ce0; +reg in1_loc_1_we0; +reg [5:0] in1_loc_2_address0; +reg in1_loc_2_ce0; +reg in1_loc_2_we0; +reg [5:0] in1_loc_3_address0; +reg in1_loc_3_ce0; +reg in1_loc_3_we0; +reg [5:0] in1_loc_4_address0; +reg in1_loc_4_ce0; +reg in1_loc_4_we0; +reg [5:0] in1_loc_5_address0; +reg in1_loc_5_ce0; +reg in1_loc_5_we0; +reg [5:0] in1_loc_6_address0; +reg in1_loc_6_ce0; +reg in1_loc_6_we0; +reg [5:0] in1_loc_7_address0; +reg in1_loc_7_ce0; +reg in1_loc_7_we0; +reg [5:0] in1_loc_8_address0; +reg in1_loc_8_ce0; +reg in1_loc_8_we0; +reg [5:0] in1_loc_9_address0; +reg in1_loc_9_ce0; +reg in1_loc_9_we0; +reg [5:0] in1_loc_10_address0; +reg in1_loc_10_ce0; +reg in1_loc_10_we0; +reg [5:0] in1_loc_11_address0; +reg in1_loc_11_ce0; +reg in1_loc_11_we0; +reg [5:0] in1_loc_12_address0; +reg in1_loc_12_ce0; +reg in1_loc_12_we0; +reg [5:0] in1_loc_13_address0; +reg in1_loc_13_ce0; +reg in1_loc_13_we0; +reg [5:0] in1_loc_14_address0; +reg in1_loc_14_ce0; +reg in1_loc_14_we0; +reg [5:0] in1_loc_15_address0; +reg in1_loc_15_ce0; +reg in1_loc_15_we0; +reg [5:0] in1_loc_16_address0; +reg in1_loc_16_ce0; +reg in1_loc_16_we0; +reg [5:0] in1_loc_17_address0; +reg in1_loc_17_ce0; +reg in1_loc_17_we0; +reg [5:0] in1_loc_18_address0; +reg in1_loc_18_ce0; +reg in1_loc_18_we0; +reg [5:0] in1_loc_19_address0; +reg in1_loc_19_ce0; +reg in1_loc_19_we0; +reg [5:0] in1_loc_20_address0; +reg in1_loc_20_ce0; +reg in1_loc_20_we0; +reg [5:0] in1_loc_21_address0; +reg in1_loc_21_ce0; +reg in1_loc_21_we0; +reg [5:0] in1_loc_22_address0; +reg in1_loc_22_ce0; +reg in1_loc_22_we0; +reg [5:0] in1_loc_23_address0; +reg in1_loc_23_ce0; +reg in1_loc_23_we0; +reg [5:0] in1_loc_24_address0; +reg in1_loc_24_ce0; +reg in1_loc_24_we0; +reg [5:0] in1_loc_25_address0; +reg in1_loc_25_ce0; +reg in1_loc_25_we0; +reg [5:0] in1_loc_26_address0; +reg in1_loc_26_ce0; +reg in1_loc_26_we0; +reg [5:0] in1_loc_27_address0; +reg in1_loc_27_ce0; +reg in1_loc_27_we0; +reg [5:0] in1_loc_28_address0; +reg in1_loc_28_ce0; +reg in1_loc_28_we0; +reg [5:0] in1_loc_29_address0; +reg in1_loc_29_ce0; +reg in1_loc_29_we0; +reg [5:0] in1_loc_30_address0; +reg in1_loc_30_ce0; +reg in1_loc_30_we0; +reg [5:0] in1_loc_31_address0; +reg in1_loc_31_ce0; +reg in1_loc_31_we0; +reg [5:0] in1_loc_32_address0; +reg in1_loc_32_ce0; +reg in1_loc_32_we0; +reg [5:0] in1_loc_33_address0; +reg in1_loc_33_ce0; +reg in1_loc_33_we0; +reg [5:0] in1_loc_34_address0; +reg in1_loc_34_ce0; +reg in1_loc_34_we0; +reg [5:0] in1_loc_35_address0; +reg in1_loc_35_ce0; +reg in1_loc_35_we0; +reg [5:0] in1_loc_36_address0; +reg in1_loc_36_ce0; +reg in1_loc_36_we0; +reg [5:0] in1_loc_37_address0; +reg in1_loc_37_ce0; +reg in1_loc_37_we0; +reg [5:0] in1_loc_38_address0; +reg in1_loc_38_ce0; +reg in1_loc_38_we0; +reg [5:0] in1_loc_39_address0; +reg in1_loc_39_ce0; +reg in1_loc_39_we0; +reg [5:0] in1_loc_40_address0; +reg in1_loc_40_ce0; +reg in1_loc_40_we0; +reg [5:0] in1_loc_41_address0; +reg in1_loc_41_ce0; +reg in1_loc_41_we0; +reg [5:0] in1_loc_42_address0; +reg in1_loc_42_ce0; +reg in1_loc_42_we0; +reg [5:0] in1_loc_43_address0; +reg in1_loc_43_ce0; +reg in1_loc_43_we0; +reg [5:0] in1_loc_44_address0; +reg in1_loc_44_ce0; +reg in1_loc_44_we0; +reg [5:0] in1_loc_45_address0; +reg in1_loc_45_ce0; +reg in1_loc_45_we0; +reg [5:0] in1_loc_46_address0; +reg in1_loc_46_ce0; +reg in1_loc_46_we0; +reg [5:0] in1_loc_47_address0; +reg in1_loc_47_ce0; +reg in1_loc_47_we0; +reg [5:0] in1_loc_48_address0; +reg in1_loc_48_ce0; +reg in1_loc_48_we0; +reg [5:0] in1_loc_49_address0; +reg in1_loc_49_ce0; +reg in1_loc_49_we0; +reg [5:0] in1_loc_50_address0; +reg in1_loc_50_ce0; +reg in1_loc_50_we0; +reg [5:0] in1_loc_51_address0; +reg in1_loc_51_ce0; +reg in1_loc_51_we0; +reg [5:0] in1_loc_52_address0; +reg in1_loc_52_ce0; +reg in1_loc_52_we0; +reg [5:0] in1_loc_53_address0; +reg in1_loc_53_ce0; +reg in1_loc_53_we0; +reg [5:0] in1_loc_54_address0; +reg in1_loc_54_ce0; +reg in1_loc_54_we0; +reg [5:0] in1_loc_55_address0; +reg in1_loc_55_ce0; +reg in1_loc_55_we0; +reg [5:0] in1_loc_56_address0; +reg in1_loc_56_ce0; +reg in1_loc_56_we0; +reg [5:0] in1_loc_57_address0; +reg in1_loc_57_ce0; +reg in1_loc_57_we0; +reg [5:0] in1_loc_58_address0; +reg in1_loc_58_ce0; +reg in1_loc_58_we0; +reg [5:0] in1_loc_59_address0; +reg in1_loc_59_ce0; +reg in1_loc_59_we0; +reg [5:0] in1_loc_60_address0; +reg in1_loc_60_ce0; +reg in1_loc_60_we0; +reg [5:0] in1_loc_61_address0; +reg in1_loc_61_ce0; +reg in1_loc_61_we0; +reg [5:0] in1_loc_62_address0; +reg in1_loc_62_ce0; +reg in1_loc_62_we0; +reg [5:0] in1_loc_63_address0; +reg in1_loc_63_ce0; +reg in1_loc_63_we0; +reg [5:0] in2_loc_0_address0; +reg in2_loc_0_ce0; +reg in2_loc_0_we0; +reg [5:0] in2_loc_1_address0; +reg in2_loc_1_ce0; +reg in2_loc_1_we0; +reg [5:0] in2_loc_2_address0; +reg in2_loc_2_ce0; +reg in2_loc_2_we0; +reg [5:0] in2_loc_3_address0; +reg in2_loc_3_ce0; +reg in2_loc_3_we0; +reg [5:0] in2_loc_4_address0; +reg in2_loc_4_ce0; +reg in2_loc_4_we0; +reg [5:0] in2_loc_5_address0; +reg in2_loc_5_ce0; +reg in2_loc_5_we0; +reg [5:0] in2_loc_6_address0; +reg in2_loc_6_ce0; +reg in2_loc_6_we0; +reg [5:0] in2_loc_7_address0; +reg in2_loc_7_ce0; +reg in2_loc_7_we0; +reg [5:0] in2_loc_8_address0; +reg in2_loc_8_ce0; +reg in2_loc_8_we0; +reg [5:0] in2_loc_9_address0; +reg in2_loc_9_ce0; +reg in2_loc_9_we0; +reg [5:0] in2_loc_10_address0; +reg in2_loc_10_ce0; +reg in2_loc_10_we0; +reg [5:0] in2_loc_11_address0; +reg in2_loc_11_ce0; +reg in2_loc_11_we0; +reg [5:0] in2_loc_12_address0; +reg in2_loc_12_ce0; +reg in2_loc_12_we0; +reg [5:0] in2_loc_13_address0; +reg in2_loc_13_ce0; +reg in2_loc_13_we0; +reg [5:0] in2_loc_14_address0; +reg in2_loc_14_ce0; +reg in2_loc_14_we0; +reg [5:0] in2_loc_15_address0; +reg in2_loc_15_ce0; +reg in2_loc_15_we0; +reg [5:0] in2_loc_16_address0; +reg in2_loc_16_ce0; +reg in2_loc_16_we0; +reg [5:0] in2_loc_17_address0; +reg in2_loc_17_ce0; +reg in2_loc_17_we0; +reg [5:0] in2_loc_18_address0; +reg in2_loc_18_ce0; +reg in2_loc_18_we0; +reg [5:0] in2_loc_19_address0; +reg in2_loc_19_ce0; +reg in2_loc_19_we0; +reg [5:0] in2_loc_20_address0; +reg in2_loc_20_ce0; +reg in2_loc_20_we0; +reg [5:0] in2_loc_21_address0; +reg in2_loc_21_ce0; +reg in2_loc_21_we0; +reg [5:0] in2_loc_22_address0; +reg in2_loc_22_ce0; +reg in2_loc_22_we0; +reg [5:0] in2_loc_23_address0; +reg in2_loc_23_ce0; +reg in2_loc_23_we0; +reg [5:0] in2_loc_24_address0; +reg in2_loc_24_ce0; +reg in2_loc_24_we0; +reg [5:0] in2_loc_25_address0; +reg in2_loc_25_ce0; +reg in2_loc_25_we0; +reg [5:0] in2_loc_26_address0; +reg in2_loc_26_ce0; +reg in2_loc_26_we0; +reg [5:0] in2_loc_27_address0; +reg in2_loc_27_ce0; +reg in2_loc_27_we0; +reg [5:0] in2_loc_28_address0; +reg in2_loc_28_ce0; +reg in2_loc_28_we0; +reg [5:0] in2_loc_29_address0; +reg in2_loc_29_ce0; +reg in2_loc_29_we0; +reg [5:0] in2_loc_30_address0; +reg in2_loc_30_ce0; +reg in2_loc_30_we0; +reg [5:0] in2_loc_31_address0; +reg in2_loc_31_ce0; +reg in2_loc_31_we0; +reg [5:0] in2_loc_32_address0; +reg in2_loc_32_ce0; +reg in2_loc_32_we0; +reg [5:0] in2_loc_33_address0; +reg in2_loc_33_ce0; +reg in2_loc_33_we0; +reg [5:0] in2_loc_34_address0; +reg in2_loc_34_ce0; +reg in2_loc_34_we0; +reg [5:0] in2_loc_35_address0; +reg in2_loc_35_ce0; +reg in2_loc_35_we0; +reg [5:0] in2_loc_36_address0; +reg in2_loc_36_ce0; +reg in2_loc_36_we0; +reg [5:0] in2_loc_37_address0; +reg in2_loc_37_ce0; +reg in2_loc_37_we0; +reg [5:0] in2_loc_38_address0; +reg in2_loc_38_ce0; +reg in2_loc_38_we0; +reg [5:0] in2_loc_39_address0; +reg in2_loc_39_ce0; +reg in2_loc_39_we0; +reg [5:0] in2_loc_40_address0; +reg in2_loc_40_ce0; +reg in2_loc_40_we0; +reg [5:0] in2_loc_41_address0; +reg in2_loc_41_ce0; +reg in2_loc_41_we0; +reg [5:0] in2_loc_42_address0; +reg in2_loc_42_ce0; +reg in2_loc_42_we0; +reg [5:0] in2_loc_43_address0; +reg in2_loc_43_ce0; +reg in2_loc_43_we0; +reg [5:0] in2_loc_44_address0; +reg in2_loc_44_ce0; +reg in2_loc_44_we0; +reg [5:0] in2_loc_45_address0; +reg in2_loc_45_ce0; +reg in2_loc_45_we0; +reg [5:0] in2_loc_46_address0; +reg in2_loc_46_ce0; +reg in2_loc_46_we0; +reg [5:0] in2_loc_47_address0; +reg in2_loc_47_ce0; +reg in2_loc_47_we0; +reg [5:0] in2_loc_48_address0; +reg in2_loc_48_ce0; +reg in2_loc_48_we0; +reg [5:0] in2_loc_49_address0; +reg in2_loc_49_ce0; +reg in2_loc_49_we0; +reg [5:0] in2_loc_50_address0; +reg in2_loc_50_ce0; +reg in2_loc_50_we0; +reg [5:0] in2_loc_51_address0; +reg in2_loc_51_ce0; +reg in2_loc_51_we0; +reg [5:0] in2_loc_52_address0; +reg in2_loc_52_ce0; +reg in2_loc_52_we0; +reg [5:0] in2_loc_53_address0; +reg in2_loc_53_ce0; +reg in2_loc_53_we0; +reg [5:0] in2_loc_54_address0; +reg in2_loc_54_ce0; +reg in2_loc_54_we0; +reg [5:0] in2_loc_55_address0; +reg in2_loc_55_ce0; +reg in2_loc_55_we0; +reg [5:0] in2_loc_56_address0; +reg in2_loc_56_ce0; +reg in2_loc_56_we0; +reg [5:0] in2_loc_57_address0; +reg in2_loc_57_ce0; +reg in2_loc_57_we0; +reg [5:0] in2_loc_58_address0; +reg in2_loc_58_ce0; +reg in2_loc_58_we0; +reg [5:0] in2_loc_59_address0; +reg in2_loc_59_ce0; +reg in2_loc_59_we0; +reg [5:0] in2_loc_60_address0; +reg in2_loc_60_ce0; +reg in2_loc_60_we0; +reg [5:0] in2_loc_61_address0; +reg in2_loc_61_ce0; +reg in2_loc_61_we0; +reg [5:0] in2_loc_62_address0; +reg in2_loc_62_ce0; +reg in2_loc_62_we0; +reg [5:0] in2_loc_63_address0; +reg in2_loc_63_ce0; +reg in2_loc_63_we0; +reg [11:0] out_loc_address0; +reg out_loc_ce0; +reg out_loc_ce1; +reg out_loc_we1; +wire [31:0] out_loc_d1; +reg [30:0] ap_phi_mux_i_0_phi_fu_3333_p4; +wire ap_block_pp2_stage0; +wire [63:0] zext_ln27_fu_3451_p1; +wire [63:0] zext_ln28_fu_3544_p1; +wire [63:0] zext_ln38_fu_3680_p1; +wire [63:0] zext_ln42_fu_4351_p1; +wire [63:0] empty_8_fu_3397_p1; +wire [63:0] empty_fu_3407_p1; +wire [63:0] empty_7_fu_3416_p1; +wire ap_block_pp3_stage0_01001; +wire [31:0] grp_fu_3614_p0; +wire [31:0] grp_fu_3614_p1; +wire [0:0] icmp_ln33_fu_3637_p2; +wire [30:0] i_fu_3631_p2; +wire [7:0] trunc_ln38_fu_3658_p1; +wire [13:0] tmp_cast_fu_3662_p3; +wire [13:0] trunc_ln38_1_fu_3670_p1; +wire [13:0] add_ln38_64_fu_3674_p2; +wire [31:0] add_ln38_fu_4043_p2; +wire [31:0] add_ln38_1_fu_4048_p2; +wire [31:0] add_ln38_5_fu_4142_p2; +wire [31:0] add_ln38_8_fu_4151_p2; +wire [31:0] add_ln38_11_fu_4160_p2; +wire [31:0] add_ln38_9_fu_4155_p2; +wire [31:0] add_ln38_12_fu_4164_p2; +wire [31:0] add_ln38_6_fu_4146_p2; +wire [31:0] add_ln38_13_fu_4169_p2; +wire [31:0] add_ln38_16_fu_4181_p2; +wire [31:0] add_ln38_17_fu_4185_p2; +wire [31:0] add_ln38_20_fu_4190_p2; +wire [31:0] add_ln38_23_fu_4200_p2; +wire [31:0] add_ln38_24_fu_4204_p2; +wire [31:0] add_ln38_27_fu_4209_p2; +wire [31:0] add_ln38_21_fu_4194_p2; +wire [31:0] add_ln38_28_fu_4213_p2; +wire [31:0] add_ln38_14_fu_4175_p2; +wire [31:0] add_ln38_29_fu_4219_p2; +wire [31:0] add_ln38_32_fu_4231_p2; +wire [31:0] add_ln38_33_fu_4235_p2; +wire [31:0] add_ln38_36_fu_4240_p2; +wire [31:0] add_ln38_39_fu_4250_p2; +wire [31:0] add_ln38_42_fu_4259_p2; +wire [31:0] add_ln38_40_fu_4254_p2; +wire [31:0] add_ln38_43_fu_4263_p2; +wire [31:0] add_ln38_37_fu_4244_p2; +wire [31:0] add_ln38_44_fu_4268_p2; +wire [31:0] add_ln38_47_fu_4280_p2; +wire [31:0] add_ln38_48_fu_4284_p2; +wire [31:0] add_ln38_51_fu_4289_p2; +wire [31:0] add_ln38_54_fu_4299_p2; +wire [31:0] add_ln38_58_fu_4308_p2; +wire [31:0] add_ln38_55_fu_4303_p2; +wire [31:0] add_ln38_59_fu_4312_p2; +wire [31:0] add_ln38_52_fu_4293_p2; +wire [31:0] add_ln38_60_fu_4317_p2; +wire [31:0] add_ln38_62_fu_4329_p2; +reg [27:0] ap_NS_fsm; +reg ap_idle_pp0; +wire ap_enable_pp0; +reg ap_idle_pp1; +wire ap_enable_pp1; +reg ap_idle_pp2; +wire ap_enable_pp2; +reg ap_idle_pp3; +wire ap_enable_pp3; + +// power-on initialization +initial begin +#0 ap_CS_fsm = 28'd1; +#0 ap_enable_reg_pp0_iter1 = 1'b0; +#0 ap_enable_reg_pp1_iter1 = 1'b0; +#0 ap_enable_reg_pp3_iter2 = 1'b0; +#0 ap_enable_reg_pp2_iter5 = 1'b0; +#0 ap_enable_reg_pp3_iter1 = 1'b0; +#0 ap_enable_reg_pp0_iter0 = 1'b0; +#0 ap_enable_reg_pp1_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter0 = 1'b0; +#0 ap_enable_reg_pp2_iter2 = 1'b0; +#0 ap_enable_reg_pp2_iter3 = 1'b0; +#0 ap_enable_reg_pp3_iter0 = 1'b0; +#0 ap_enable_reg_pp0_iter2 = 1'b0; +#0 ap_enable_reg_pp1_iter2 = 1'b0; +#0 ap_enable_reg_pp2_iter1 = 1'b0; +#0 ap_enable_reg_pp2_iter4 = 1'b0; +#0 ap_enable_reg_pp2_iter6 = 1'b0; +#0 ap_enable_reg_pp2_iter7 = 1'b0; +#0 ap_enable_reg_pp2_iter8 = 1'b0; +end + +mmult_params_s_axi #( + .C_S_AXI_ADDR_WIDTH( C_S_AXI_PARAMS_ADDR_WIDTH ), + .C_S_AXI_DATA_WIDTH( C_S_AXI_PARAMS_DATA_WIDTH )) +mmult_params_s_axi_U( + .AWVALID(s_axi_params_AWVALID), + .AWREADY(s_axi_params_AWREADY), + .AWADDR(s_axi_params_AWADDR), + .WVALID(s_axi_params_WVALID), + .WREADY(s_axi_params_WREADY), + .WDATA(s_axi_params_WDATA), + .WSTRB(s_axi_params_WSTRB), + .ARVALID(s_axi_params_ARVALID), + .ARREADY(s_axi_params_ARREADY), + .ARADDR(s_axi_params_ARADDR), + .RVALID(s_axi_params_RVALID), + .RREADY(s_axi_params_RREADY), + .RDATA(s_axi_params_RDATA), + .RRESP(s_axi_params_RRESP), + .BVALID(s_axi_params_BVALID), + .BREADY(s_axi_params_BREADY), + .BRESP(s_axi_params_BRESP), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .ap_start(ap_start), + .interrupt(interrupt), + .ap_ready(ap_ready), + .ap_done(ap_done), + .ap_idle(ap_idle), + .in1(in1), + .in2(in2), + .out_r(out_r), + .dim(dim) +); + +mmult_in1_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN1_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN1_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN1_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN1_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN1_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN1_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN1_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN1_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN1_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN1_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN1_MEM_CACHE_VALUE )) +mmult_in1_mem_m_axi_U( + .AWVALID(m_axi_in1_mem_AWVALID), + .AWREADY(m_axi_in1_mem_AWREADY), + .AWADDR(m_axi_in1_mem_AWADDR), + .AWID(m_axi_in1_mem_AWID), + .AWLEN(m_axi_in1_mem_AWLEN), + .AWSIZE(m_axi_in1_mem_AWSIZE), + .AWBURST(m_axi_in1_mem_AWBURST), + .AWLOCK(m_axi_in1_mem_AWLOCK), + .AWCACHE(m_axi_in1_mem_AWCACHE), + .AWPROT(m_axi_in1_mem_AWPROT), + .AWQOS(m_axi_in1_mem_AWQOS), + .AWREGION(m_axi_in1_mem_AWREGION), + .AWUSER(m_axi_in1_mem_AWUSER), + .WVALID(m_axi_in1_mem_WVALID), + .WREADY(m_axi_in1_mem_WREADY), + .WDATA(m_axi_in1_mem_WDATA), + .WSTRB(m_axi_in1_mem_WSTRB), + .WLAST(m_axi_in1_mem_WLAST), + .WID(m_axi_in1_mem_WID), + .WUSER(m_axi_in1_mem_WUSER), + .ARVALID(m_axi_in1_mem_ARVALID), + .ARREADY(m_axi_in1_mem_ARREADY), + .ARADDR(m_axi_in1_mem_ARADDR), + .ARID(m_axi_in1_mem_ARID), + .ARLEN(m_axi_in1_mem_ARLEN), + .ARSIZE(m_axi_in1_mem_ARSIZE), + .ARBURST(m_axi_in1_mem_ARBURST), + .ARLOCK(m_axi_in1_mem_ARLOCK), + .ARCACHE(m_axi_in1_mem_ARCACHE), + .ARPROT(m_axi_in1_mem_ARPROT), + .ARQOS(m_axi_in1_mem_ARQOS), + .ARREGION(m_axi_in1_mem_ARREGION), + .ARUSER(m_axi_in1_mem_ARUSER), + .RVALID(m_axi_in1_mem_RVALID), + .RREADY(m_axi_in1_mem_RREADY), + .RDATA(m_axi_in1_mem_RDATA), + .RLAST(m_axi_in1_mem_RLAST), + .RID(m_axi_in1_mem_RID), + .RUSER(m_axi_in1_mem_RUSER), + .RRESP(m_axi_in1_mem_RRESP), + .BVALID(m_axi_in1_mem_BVALID), + .BREADY(m_axi_in1_mem_BREADY), + .BRESP(m_axi_in1_mem_BRESP), + .BID(m_axi_in1_mem_BID), + .BUSER(m_axi_in1_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in1_mem_ARVALID), + .I_ARREADY(in1_mem_ARREADY), + .I_ARADDR(in1_mem_ARADDR), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in1_mem_RVALID), + .I_RREADY(in1_mem_RREADY), + .I_RDATA(in1_mem_RDATA), + .I_RID(in1_mem_RID), + .I_RUSER(in1_mem_RUSER), + .I_RRESP(in1_mem_RRESP), + .I_RLAST(in1_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in1_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in1_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in1_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in1_mem_BRESP), + .I_BID(in1_mem_BID), + .I_BUSER(in1_mem_BUSER) +); + +mmult_in2_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_IN2_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_IN2_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_IN2_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_IN2_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_IN2_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_IN2_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_IN2_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_IN2_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_IN2_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_IN2_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_IN2_MEM_CACHE_VALUE )) +mmult_in2_mem_m_axi_U( + .AWVALID(m_axi_in2_mem_AWVALID), + .AWREADY(m_axi_in2_mem_AWREADY), + .AWADDR(m_axi_in2_mem_AWADDR), + .AWID(m_axi_in2_mem_AWID), + .AWLEN(m_axi_in2_mem_AWLEN), + .AWSIZE(m_axi_in2_mem_AWSIZE), + .AWBURST(m_axi_in2_mem_AWBURST), + .AWLOCK(m_axi_in2_mem_AWLOCK), + .AWCACHE(m_axi_in2_mem_AWCACHE), + .AWPROT(m_axi_in2_mem_AWPROT), + .AWQOS(m_axi_in2_mem_AWQOS), + .AWREGION(m_axi_in2_mem_AWREGION), + .AWUSER(m_axi_in2_mem_AWUSER), + .WVALID(m_axi_in2_mem_WVALID), + .WREADY(m_axi_in2_mem_WREADY), + .WDATA(m_axi_in2_mem_WDATA), + .WSTRB(m_axi_in2_mem_WSTRB), + .WLAST(m_axi_in2_mem_WLAST), + .WID(m_axi_in2_mem_WID), + .WUSER(m_axi_in2_mem_WUSER), + .ARVALID(m_axi_in2_mem_ARVALID), + .ARREADY(m_axi_in2_mem_ARREADY), + .ARADDR(m_axi_in2_mem_ARADDR), + .ARID(m_axi_in2_mem_ARID), + .ARLEN(m_axi_in2_mem_ARLEN), + .ARSIZE(m_axi_in2_mem_ARSIZE), + .ARBURST(m_axi_in2_mem_ARBURST), + .ARLOCK(m_axi_in2_mem_ARLOCK), + .ARCACHE(m_axi_in2_mem_ARCACHE), + .ARPROT(m_axi_in2_mem_ARPROT), + .ARQOS(m_axi_in2_mem_ARQOS), + .ARREGION(m_axi_in2_mem_ARREGION), + .ARUSER(m_axi_in2_mem_ARUSER), + .RVALID(m_axi_in2_mem_RVALID), + .RREADY(m_axi_in2_mem_RREADY), + .RDATA(m_axi_in2_mem_RDATA), + .RLAST(m_axi_in2_mem_RLAST), + .RID(m_axi_in2_mem_RID), + .RUSER(m_axi_in2_mem_RUSER), + .RRESP(m_axi_in2_mem_RRESP), + .BVALID(m_axi_in2_mem_BVALID), + .BREADY(m_axi_in2_mem_BREADY), + .BRESP(m_axi_in2_mem_BRESP), + .BID(m_axi_in2_mem_BID), + .BUSER(m_axi_in2_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(in2_mem_ARVALID), + .I_ARREADY(in2_mem_ARREADY), + .I_ARADDR(in2_mem_addr_reg_4389), + .I_ARID(1'd0), + .I_ARLEN(32'd4096), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(in2_mem_RVALID), + .I_RREADY(in2_mem_RREADY), + .I_RDATA(in2_mem_RDATA), + .I_RID(in2_mem_RID), + .I_RUSER(in2_mem_RUSER), + .I_RRESP(in2_mem_RRESP), + .I_RLAST(in2_mem_RLAST), + .I_AWVALID(1'b0), + .I_AWREADY(in2_mem_AWREADY), + .I_AWADDR(32'd0), + .I_AWID(1'd0), + .I_AWLEN(32'd0), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(1'b0), + .I_WREADY(in2_mem_WREADY), + .I_WDATA(32'd0), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd0), + .I_BVALID(in2_mem_BVALID), + .I_BREADY(1'b0), + .I_BRESP(in2_mem_BRESP), + .I_BID(in2_mem_BID), + .I_BUSER(in2_mem_BUSER) +); + +mmult_out_mem_m_axi #( + .CONSERVATIVE( 0 ), + .USER_DW( 32 ), + .USER_AW( 32 ), + .USER_MAXREQS( 5 ), + .NUM_READ_OUTSTANDING( 16 ), + .NUM_WRITE_OUTSTANDING( 16 ), + .MAX_READ_BURST_LENGTH( 16 ), + .MAX_WRITE_BURST_LENGTH( 16 ), + .C_M_AXI_ID_WIDTH( C_M_AXI_OUT_MEM_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH( C_M_AXI_OUT_MEM_ADDR_WIDTH ), + .C_M_AXI_DATA_WIDTH( C_M_AXI_OUT_MEM_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH( C_M_AXI_OUT_MEM_AWUSER_WIDTH ), + .C_M_AXI_ARUSER_WIDTH( C_M_AXI_OUT_MEM_ARUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH( C_M_AXI_OUT_MEM_WUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH( C_M_AXI_OUT_MEM_RUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH( C_M_AXI_OUT_MEM_BUSER_WIDTH ), + .C_USER_VALUE( C_M_AXI_OUT_MEM_USER_VALUE ), + .C_PROT_VALUE( C_M_AXI_OUT_MEM_PROT_VALUE ), + .C_CACHE_VALUE( C_M_AXI_OUT_MEM_CACHE_VALUE )) +mmult_out_mem_m_axi_U( + .AWVALID(m_axi_out_mem_AWVALID), + .AWREADY(m_axi_out_mem_AWREADY), + .AWADDR(m_axi_out_mem_AWADDR), + .AWID(m_axi_out_mem_AWID), + .AWLEN(m_axi_out_mem_AWLEN), + .AWSIZE(m_axi_out_mem_AWSIZE), + .AWBURST(m_axi_out_mem_AWBURST), + .AWLOCK(m_axi_out_mem_AWLOCK), + .AWCACHE(m_axi_out_mem_AWCACHE), + .AWPROT(m_axi_out_mem_AWPROT), + .AWQOS(m_axi_out_mem_AWQOS), + .AWREGION(m_axi_out_mem_AWREGION), + .AWUSER(m_axi_out_mem_AWUSER), + .WVALID(m_axi_out_mem_WVALID), + .WREADY(m_axi_out_mem_WREADY), + .WDATA(m_axi_out_mem_WDATA), + .WSTRB(m_axi_out_mem_WSTRB), + .WLAST(m_axi_out_mem_WLAST), + .WID(m_axi_out_mem_WID), + .WUSER(m_axi_out_mem_WUSER), + .ARVALID(m_axi_out_mem_ARVALID), + .ARREADY(m_axi_out_mem_ARREADY), + .ARADDR(m_axi_out_mem_ARADDR), + .ARID(m_axi_out_mem_ARID), + .ARLEN(m_axi_out_mem_ARLEN), + .ARSIZE(m_axi_out_mem_ARSIZE), + .ARBURST(m_axi_out_mem_ARBURST), + .ARLOCK(m_axi_out_mem_ARLOCK), + .ARCACHE(m_axi_out_mem_ARCACHE), + .ARPROT(m_axi_out_mem_ARPROT), + .ARQOS(m_axi_out_mem_ARQOS), + .ARREGION(m_axi_out_mem_ARREGION), + .ARUSER(m_axi_out_mem_ARUSER), + .RVALID(m_axi_out_mem_RVALID), + .RREADY(m_axi_out_mem_RREADY), + .RDATA(m_axi_out_mem_RDATA), + .RLAST(m_axi_out_mem_RLAST), + .RID(m_axi_out_mem_RID), + .RUSER(m_axi_out_mem_RUSER), + .RRESP(m_axi_out_mem_RRESP), + .BVALID(m_axi_out_mem_BVALID), + .BREADY(m_axi_out_mem_BREADY), + .BRESP(m_axi_out_mem_BRESP), + .BID(m_axi_out_mem_BID), + .BUSER(m_axi_out_mem_BUSER), + .ACLK(ap_clk), + .ARESET(ap_rst_n_inv), + .ACLK_EN(1'b1), + .I_ARVALID(1'b0), + .I_ARREADY(out_mem_ARREADY), + .I_ARADDR(32'd0), + .I_ARID(1'd0), + .I_ARLEN(32'd0), + .I_ARSIZE(3'd0), + .I_ARLOCK(2'd0), + .I_ARCACHE(4'd0), + .I_ARQOS(4'd0), + .I_ARPROT(3'd0), + .I_ARUSER(1'd0), + .I_ARBURST(2'd0), + .I_ARREGION(4'd0), + .I_RVALID(out_mem_RVALID), + .I_RREADY(1'b0), + .I_RDATA(out_mem_RDATA), + .I_RID(out_mem_RID), + .I_RUSER(out_mem_RUSER), + .I_RRESP(out_mem_RRESP), + .I_RLAST(out_mem_RLAST), + .I_AWVALID(out_mem_AWVALID), + .I_AWREADY(out_mem_AWREADY), + .I_AWADDR(out_mem_addr_reg_4383), + .I_AWID(1'd0), + .I_AWLEN(32'd4096), + .I_AWSIZE(3'd0), + .I_AWLOCK(2'd0), + .I_AWCACHE(4'd0), + .I_AWQOS(4'd0), + .I_AWPROT(3'd0), + .I_AWUSER(1'd0), + .I_AWBURST(2'd0), + .I_AWREGION(4'd0), + .I_WVALID(out_mem_WVALID), + .I_WREADY(out_mem_WREADY), + .I_WDATA(reg_3362), + .I_WID(1'd0), + .I_WUSER(1'd0), + .I_WLAST(1'b0), + .I_WSTRB(4'd15), + .I_BVALID(out_mem_BVALID), + .I_BREADY(out_mem_BREADY), + .I_BRESP(out_mem_BRESP), + .I_BID(out_mem_BID), + .I_BUSER(out_mem_BUSER) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_0_address0), + .ce0(in1_loc_0_ce0), + .we0(in1_loc_0_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_1_address0), + .ce0(in1_loc_1_ce0), + .we0(in1_loc_1_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_2_address0), + .ce0(in1_loc_2_ce0), + .we0(in1_loc_2_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_3_address0), + .ce0(in1_loc_3_ce0), + .we0(in1_loc_3_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_4_address0), + .ce0(in1_loc_4_ce0), + .we0(in1_loc_4_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_5_address0), + .ce0(in1_loc_5_ce0), + .we0(in1_loc_5_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_6_address0), + .ce0(in1_loc_6_ce0), + .we0(in1_loc_6_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_7_address0), + .ce0(in1_loc_7_ce0), + .we0(in1_loc_7_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_8_address0), + .ce0(in1_loc_8_ce0), + .we0(in1_loc_8_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_9_address0), + .ce0(in1_loc_9_ce0), + .we0(in1_loc_9_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_10_address0), + .ce0(in1_loc_10_ce0), + .we0(in1_loc_10_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_11_address0), + .ce0(in1_loc_11_ce0), + .we0(in1_loc_11_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_12_address0), + .ce0(in1_loc_12_ce0), + .we0(in1_loc_12_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_13_address0), + .ce0(in1_loc_13_ce0), + .we0(in1_loc_13_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_14_address0), + .ce0(in1_loc_14_ce0), + .we0(in1_loc_14_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_15_address0), + .ce0(in1_loc_15_ce0), + .we0(in1_loc_15_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_16_address0), + .ce0(in1_loc_16_ce0), + .we0(in1_loc_16_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_17_address0), + .ce0(in1_loc_17_ce0), + .we0(in1_loc_17_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_18_address0), + .ce0(in1_loc_18_ce0), + .we0(in1_loc_18_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_19_address0), + .ce0(in1_loc_19_ce0), + .we0(in1_loc_19_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_20_address0), + .ce0(in1_loc_20_ce0), + .we0(in1_loc_20_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_21_address0), + .ce0(in1_loc_21_ce0), + .we0(in1_loc_21_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_22_address0), + .ce0(in1_loc_22_ce0), + .we0(in1_loc_22_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_23_address0), + .ce0(in1_loc_23_ce0), + .we0(in1_loc_23_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_24_address0), + .ce0(in1_loc_24_ce0), + .we0(in1_loc_24_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_25_address0), + .ce0(in1_loc_25_ce0), + .we0(in1_loc_25_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_26_address0), + .ce0(in1_loc_26_ce0), + .we0(in1_loc_26_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_27_address0), + .ce0(in1_loc_27_ce0), + .we0(in1_loc_27_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_28_address0), + .ce0(in1_loc_28_ce0), + .we0(in1_loc_28_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_29_address0), + .ce0(in1_loc_29_ce0), + .we0(in1_loc_29_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_30_address0), + .ce0(in1_loc_30_ce0), + .we0(in1_loc_30_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_31_address0), + .ce0(in1_loc_31_ce0), + .we0(in1_loc_31_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_32_address0), + .ce0(in1_loc_32_ce0), + .we0(in1_loc_32_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_33_address0), + .ce0(in1_loc_33_ce0), + .we0(in1_loc_33_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_34_address0), + .ce0(in1_loc_34_ce0), + .we0(in1_loc_34_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_35_address0), + .ce0(in1_loc_35_ce0), + .we0(in1_loc_35_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_36_address0), + .ce0(in1_loc_36_ce0), + .we0(in1_loc_36_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_37_address0), + .ce0(in1_loc_37_ce0), + .we0(in1_loc_37_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_38_address0), + .ce0(in1_loc_38_ce0), + .we0(in1_loc_38_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_39_address0), + .ce0(in1_loc_39_ce0), + .we0(in1_loc_39_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_40_address0), + .ce0(in1_loc_40_ce0), + .we0(in1_loc_40_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_41_address0), + .ce0(in1_loc_41_ce0), + .we0(in1_loc_41_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_42_address0), + .ce0(in1_loc_42_ce0), + .we0(in1_loc_42_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_43_address0), + .ce0(in1_loc_43_ce0), + .we0(in1_loc_43_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_44_address0), + .ce0(in1_loc_44_ce0), + .we0(in1_loc_44_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_45_address0), + .ce0(in1_loc_45_ce0), + .we0(in1_loc_45_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_46_address0), + .ce0(in1_loc_46_ce0), + .we0(in1_loc_46_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_47_address0), + .ce0(in1_loc_47_ce0), + .we0(in1_loc_47_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_48_address0), + .ce0(in1_loc_48_ce0), + .we0(in1_loc_48_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_49_address0), + .ce0(in1_loc_49_ce0), + .we0(in1_loc_49_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_50_address0), + .ce0(in1_loc_50_ce0), + .we0(in1_loc_50_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_51_address0), + .ce0(in1_loc_51_ce0), + .we0(in1_loc_51_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_52_address0), + .ce0(in1_loc_52_ce0), + .we0(in1_loc_52_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_53_address0), + .ce0(in1_loc_53_ce0), + .we0(in1_loc_53_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_54_address0), + .ce0(in1_loc_54_ce0), + .we0(in1_loc_54_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_55_address0), + .ce0(in1_loc_55_ce0), + .we0(in1_loc_55_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_56_address0), + .ce0(in1_loc_56_ce0), + .we0(in1_loc_56_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_57_address0), + .ce0(in1_loc_57_ce0), + .we0(in1_loc_57_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_58_address0), + .ce0(in1_loc_58_ce0), + .we0(in1_loc_58_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_59_address0), + .ce0(in1_loc_59_ce0), + .we0(in1_loc_59_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_60_address0), + .ce0(in1_loc_60_ce0), + .we0(in1_loc_60_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_61_address0), + .ce0(in1_loc_61_ce0), + .we0(in1_loc_61_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_62_address0), + .ce0(in1_loc_62_ce0), + .we0(in1_loc_62_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in1_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in1_loc_63_address0), + .ce0(in1_loc_63_ce0), + .we0(in1_loc_63_we0), + .d0(in1_mem_addr_read_reg_4413), + .q0(in1_loc_63_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_0_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_0_address0), + .ce0(in2_loc_0_ce0), + .we0(in2_loc_0_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_0_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_1_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_1_address0), + .ce0(in2_loc_1_ce0), + .we0(in2_loc_1_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_1_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_2_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_2_address0), + .ce0(in2_loc_2_ce0), + .we0(in2_loc_2_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_2_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_3_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_3_address0), + .ce0(in2_loc_3_ce0), + .we0(in2_loc_3_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_3_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_4_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_4_address0), + .ce0(in2_loc_4_ce0), + .we0(in2_loc_4_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_4_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_5_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_5_address0), + .ce0(in2_loc_5_ce0), + .we0(in2_loc_5_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_5_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_6_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_6_address0), + .ce0(in2_loc_6_ce0), + .we0(in2_loc_6_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_6_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_7_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_7_address0), + .ce0(in2_loc_7_ce0), + .we0(in2_loc_7_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_7_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_8_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_8_address0), + .ce0(in2_loc_8_ce0), + .we0(in2_loc_8_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_8_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_9_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_9_address0), + .ce0(in2_loc_9_ce0), + .we0(in2_loc_9_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_9_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_10_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_10_address0), + .ce0(in2_loc_10_ce0), + .we0(in2_loc_10_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_10_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_11_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_11_address0), + .ce0(in2_loc_11_ce0), + .we0(in2_loc_11_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_11_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_12_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_12_address0), + .ce0(in2_loc_12_ce0), + .we0(in2_loc_12_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_12_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_13_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_13_address0), + .ce0(in2_loc_13_ce0), + .we0(in2_loc_13_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_13_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_14_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_14_address0), + .ce0(in2_loc_14_ce0), + .we0(in2_loc_14_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_14_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_15_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_15_address0), + .ce0(in2_loc_15_ce0), + .we0(in2_loc_15_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_15_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_16_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_16_address0), + .ce0(in2_loc_16_ce0), + .we0(in2_loc_16_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_16_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_17_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_17_address0), + .ce0(in2_loc_17_ce0), + .we0(in2_loc_17_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_17_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_18_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_18_address0), + .ce0(in2_loc_18_ce0), + .we0(in2_loc_18_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_18_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_19_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_19_address0), + .ce0(in2_loc_19_ce0), + .we0(in2_loc_19_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_19_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_20_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_20_address0), + .ce0(in2_loc_20_ce0), + .we0(in2_loc_20_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_20_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_21_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_21_address0), + .ce0(in2_loc_21_ce0), + .we0(in2_loc_21_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_21_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_22_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_22_address0), + .ce0(in2_loc_22_ce0), + .we0(in2_loc_22_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_22_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_23_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_23_address0), + .ce0(in2_loc_23_ce0), + .we0(in2_loc_23_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_23_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_24_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_24_address0), + .ce0(in2_loc_24_ce0), + .we0(in2_loc_24_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_24_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_25_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_25_address0), + .ce0(in2_loc_25_ce0), + .we0(in2_loc_25_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_25_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_26_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_26_address0), + .ce0(in2_loc_26_ce0), + .we0(in2_loc_26_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_26_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_27_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_27_address0), + .ce0(in2_loc_27_ce0), + .we0(in2_loc_27_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_27_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_28_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_28_address0), + .ce0(in2_loc_28_ce0), + .we0(in2_loc_28_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_28_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_29_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_29_address0), + .ce0(in2_loc_29_ce0), + .we0(in2_loc_29_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_29_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_30_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_30_address0), + .ce0(in2_loc_30_ce0), + .we0(in2_loc_30_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_30_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_31_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_31_address0), + .ce0(in2_loc_31_ce0), + .we0(in2_loc_31_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_31_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_32_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_32_address0), + .ce0(in2_loc_32_ce0), + .we0(in2_loc_32_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_32_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_33_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_33_address0), + .ce0(in2_loc_33_ce0), + .we0(in2_loc_33_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_33_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_34_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_34_address0), + .ce0(in2_loc_34_ce0), + .we0(in2_loc_34_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_34_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_35_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_35_address0), + .ce0(in2_loc_35_ce0), + .we0(in2_loc_35_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_35_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_36_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_36_address0), + .ce0(in2_loc_36_ce0), + .we0(in2_loc_36_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_36_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_37_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_37_address0), + .ce0(in2_loc_37_ce0), + .we0(in2_loc_37_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_37_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_38_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_38_address0), + .ce0(in2_loc_38_ce0), + .we0(in2_loc_38_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_38_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_39_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_39_address0), + .ce0(in2_loc_39_ce0), + .we0(in2_loc_39_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_39_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_40_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_40_address0), + .ce0(in2_loc_40_ce0), + .we0(in2_loc_40_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_40_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_41_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_41_address0), + .ce0(in2_loc_41_ce0), + .we0(in2_loc_41_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_41_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_42_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_42_address0), + .ce0(in2_loc_42_ce0), + .we0(in2_loc_42_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_42_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_43_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_43_address0), + .ce0(in2_loc_43_ce0), + .we0(in2_loc_43_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_43_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_44_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_44_address0), + .ce0(in2_loc_44_ce0), + .we0(in2_loc_44_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_44_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_45_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_45_address0), + .ce0(in2_loc_45_ce0), + .we0(in2_loc_45_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_45_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_46_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_46_address0), + .ce0(in2_loc_46_ce0), + .we0(in2_loc_46_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_46_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_47_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_47_address0), + .ce0(in2_loc_47_ce0), + .we0(in2_loc_47_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_47_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_48_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_48_address0), + .ce0(in2_loc_48_ce0), + .we0(in2_loc_48_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_48_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_49_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_49_address0), + .ce0(in2_loc_49_ce0), + .we0(in2_loc_49_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_49_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_50_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_50_address0), + .ce0(in2_loc_50_ce0), + .we0(in2_loc_50_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_50_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_51_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_51_address0), + .ce0(in2_loc_51_ce0), + .we0(in2_loc_51_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_51_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_52_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_52_address0), + .ce0(in2_loc_52_ce0), + .we0(in2_loc_52_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_52_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_53_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_53_address0), + .ce0(in2_loc_53_ce0), + .we0(in2_loc_53_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_53_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_54_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_54_address0), + .ce0(in2_loc_54_ce0), + .we0(in2_loc_54_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_54_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_55_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_55_address0), + .ce0(in2_loc_55_ce0), + .we0(in2_loc_55_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_55_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_56_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_56_address0), + .ce0(in2_loc_56_ce0), + .we0(in2_loc_56_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_56_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_57_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_57_address0), + .ce0(in2_loc_57_ce0), + .we0(in2_loc_57_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_57_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_58_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_58_address0), + .ce0(in2_loc_58_ce0), + .we0(in2_loc_58_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_58_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_59_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_59_address0), + .ce0(in2_loc_59_ce0), + .we0(in2_loc_59_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_59_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_60_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_60_address0), + .ce0(in2_loc_60_ce0), + .we0(in2_loc_60_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_60_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_61_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_61_address0), + .ce0(in2_loc_61_ce0), + .we0(in2_loc_61_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_61_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_62_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_62_address0), + .ce0(in2_loc_62_ce0), + .we0(in2_loc_62_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_62_q0) +); + +mmult_in1_loc_0 #( + .DataWidth( 32 ), + .AddressRange( 64 ), + .AddressWidth( 6 )) +in2_loc_63_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(in2_loc_63_address0), + .ce0(in2_loc_63_ce0), + .we0(in2_loc_63_we0), + .d0(in2_mem_addr_read_reg_4499), + .q0(in2_loc_63_q0) +); + +mmult_out_loc #( + .DataWidth( 32 ), + .AddressRange( 4096 ), + .AddressWidth( 12 )) +out_loc_U( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .address0(out_loc_address0), + .ce0(out_loc_ce0), + .q0(out_loc_q0), + .address1(out_loc_addr_reg_4598_pp2_iter7_reg), + .ce1(out_loc_ce1), + .we1(out_loc_we1), + .d1(out_loc_d1) +); + +mmult_mul_32ns_32bkb #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 64 )) +mmult_mul_32ns_32bkb_U1( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(grp_fu_3614_p0), + .din1(grp_fu_3614_p1), + .ce(1'b1), + .dout(grp_fu_3614_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U2( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_0_load_reg_5425), + .din1(in1_loc_0_load_reg_5105), + .ce(1'b1), + .dout(grp_fu_3787_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U3( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_1_load_reg_5430), + .din1(in1_loc_1_load_reg_5110), + .ce(1'b1), + .dout(grp_fu_3791_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U4( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_2_load_reg_5435), + .din1(in1_loc_2_load_reg_5115), + .ce(1'b1), + .dout(grp_fu_3795_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U5( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_3_load_reg_5440), + .din1(in1_loc_3_load_reg_5120), + .ce(1'b1), + .dout(grp_fu_3799_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U6( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_4_load_reg_5445), + .din1(in1_loc_4_load_reg_5125), + .ce(1'b1), + .dout(grp_fu_3803_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U7( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_5_load_reg_5450), + .din1(in1_loc_5_load_reg_5130), + .ce(1'b1), + .dout(grp_fu_3807_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U8( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_6_load_reg_5455), + .din1(in1_loc_6_load_reg_5135), + .ce(1'b1), + .dout(grp_fu_3811_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U9( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_7_load_reg_5460), + .din1(in1_loc_7_load_reg_5140), + .ce(1'b1), + .dout(grp_fu_3815_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U10( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_8_load_reg_5465), + .din1(in1_loc_8_load_reg_5145), + .ce(1'b1), + .dout(grp_fu_3819_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U11( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_11_load_reg_5480), + .din1(in1_loc_11_load_reg_5160), + .ce(1'b1), + .dout(grp_fu_3823_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U12( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_12_load_reg_5485), + .din1(in1_loc_12_load_reg_5165), + .ce(1'b1), + .dout(grp_fu_3827_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U13( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_15_load_reg_5500), + .din1(in1_loc_15_load_reg_5180), + .ce(1'b1), + .dout(grp_fu_3831_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U14( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_16_load_reg_5505), + .din1(in1_loc_16_load_reg_5185), + .ce(1'b1), + .dout(grp_fu_3835_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U15( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_19_load_reg_5520), + .din1(in1_loc_19_load_reg_5200), + .ce(1'b1), + .dout(grp_fu_3839_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U16( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_20_load_reg_5525), + .din1(in1_loc_20_load_reg_5205), + .ce(1'b1), + .dout(grp_fu_3843_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U17( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_21_load_reg_5530), + .din1(in1_loc_21_load_reg_5210), + .ce(1'b1), + .dout(grp_fu_3847_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U18( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_22_load_reg_5535), + .din1(in1_loc_22_load_reg_5215), + .ce(1'b1), + .dout(grp_fu_3851_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U19( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_23_load_reg_5540), + .din1(in1_loc_23_load_reg_5220), + .ce(1'b1), + .dout(grp_fu_3855_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U20( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_24_load_reg_5545), + .din1(in1_loc_24_load_reg_5225), + .ce(1'b1), + .dout(grp_fu_3859_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U21( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_27_load_reg_5560), + .din1(in1_loc_27_load_reg_5240), + .ce(1'b1), + .dout(grp_fu_3863_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U22( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_28_load_reg_5565), + .din1(in1_loc_28_load_reg_5245), + .ce(1'b1), + .dout(grp_fu_3867_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U23( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_29_load_reg_5570), + .din1(in1_loc_29_load_reg_5250), + .ce(1'b1), + .dout(grp_fu_3871_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U24( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_30_load_reg_5575), + .din1(in1_loc_30_load_reg_5255), + .ce(1'b1), + .dout(grp_fu_3875_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U25( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_31_load_reg_5580), + .din1(in1_loc_31_load_reg_5260), + .ce(1'b1), + .dout(grp_fu_3879_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U26( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_32_load_reg_5585), + .din1(in1_loc_32_load_reg_5265), + .ce(1'b1), + .dout(grp_fu_3883_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U27( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_35_load_reg_5600), + .din1(in1_loc_35_load_reg_5280), + .ce(1'b1), + .dout(grp_fu_3887_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U28( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_36_load_reg_5605), + .din1(in1_loc_36_load_reg_5285), + .ce(1'b1), + .dout(grp_fu_3891_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U29( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_37_load_reg_5610), + .din1(in1_loc_37_load_reg_5290), + .ce(1'b1), + .dout(grp_fu_3895_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U30( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_38_load_reg_5615), + .din1(in1_loc_38_load_reg_5295), + .ce(1'b1), + .dout(grp_fu_3899_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U31( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_39_load_reg_5620), + .din1(in1_loc_39_load_reg_5300), + .ce(1'b1), + .dout(grp_fu_3903_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U32( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_40_load_reg_5625), + .din1(in1_loc_40_load_reg_5305), + .ce(1'b1), + .dout(grp_fu_3907_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U33( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_43_load_reg_5640), + .din1(in1_loc_43_load_reg_5320), + .ce(1'b1), + .dout(grp_fu_3911_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U34( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_44_load_reg_5645), + .din1(in1_loc_44_load_reg_5325), + .ce(1'b1), + .dout(grp_fu_3915_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U35( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_47_load_reg_5660), + .din1(in1_loc_47_load_reg_5340), + .ce(1'b1), + .dout(grp_fu_3919_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U36( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_48_load_reg_5665), + .din1(in1_loc_48_load_reg_5345), + .ce(1'b1), + .dout(grp_fu_3923_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U37( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_51_load_reg_5680), + .din1(in1_loc_51_load_reg_5360), + .ce(1'b1), + .dout(grp_fu_3927_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U38( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_52_load_reg_5685), + .din1(in1_loc_52_load_reg_5365), + .ce(1'b1), + .dout(grp_fu_3931_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U39( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_53_load_reg_5690), + .din1(in1_loc_53_load_reg_5370), + .ce(1'b1), + .dout(grp_fu_3935_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U40( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_54_load_reg_5695), + .din1(in1_loc_54_load_reg_5375), + .ce(1'b1), + .dout(grp_fu_3939_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U41( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_55_load_reg_5700), + .din1(in1_loc_55_load_reg_5380), + .ce(1'b1), + .dout(grp_fu_3943_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U42( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_56_load_reg_5705), + .din1(in1_loc_56_load_reg_5385), + .ce(1'b1), + .dout(grp_fu_3947_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U43( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_59_load_reg_5720), + .din1(in1_loc_59_load_reg_5400), + .ce(1'b1), + .dout(grp_fu_3951_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U44( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_60_load_reg_5725), + .din1(in1_loc_60_load_reg_5405), + .ce(1'b1), + .dout(grp_fu_3955_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U45( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_62_load_reg_5735), + .din1(in1_loc_62_load_reg_5415), + .ce(1'b1), + .dout(grp_fu_3959_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U46( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_63_load_reg_5740), + .din1(in1_loc_63_load_reg_5420), + .ce(1'b1), + .dout(grp_fu_3963_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U47( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_9_load_reg_5840), + .din1(in1_loc_9_load_reg_5745), + .ce(1'b1), + .dout(grp_fu_3967_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U48( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_10_load_reg_5845), + .din1(in1_loc_10_load_reg_5750), + .ce(1'b1), + .dout(grp_fu_3971_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U49( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_13_load_reg_5850), + .din1(in1_loc_13_load_reg_5755), + .ce(1'b1), + .dout(grp_fu_3975_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U50( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_14_load_reg_5855), + .din1(in1_loc_14_load_reg_5760), + .ce(1'b1), + .dout(grp_fu_3979_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U51( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_17_load_reg_5860), + .din1(in1_loc_17_load_reg_5765), + .ce(1'b1), + .dout(grp_fu_3983_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U52( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_18_load_reg_5865), + .din1(in1_loc_18_load_reg_5770), + .ce(1'b1), + .dout(grp_fu_3987_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U53( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_25_load_reg_5870), + .din1(in1_loc_25_load_reg_5775), + .ce(1'b1), + .dout(grp_fu_3991_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U54( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_26_load_reg_5875), + .din1(in1_loc_26_load_reg_5780), + .ce(1'b1), + .dout(grp_fu_3995_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U55( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_33_load_reg_5880), + .din1(in1_loc_33_load_reg_5785), + .ce(1'b1), + .dout(grp_fu_3999_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U56( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_34_load_reg_5885), + .din1(in1_loc_34_load_reg_5790), + .ce(1'b1), + .dout(grp_fu_4003_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U57( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_41_load_reg_5890), + .din1(in1_loc_41_load_reg_5795), + .ce(1'b1), + .dout(grp_fu_4007_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U58( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_42_load_reg_5895), + .din1(in1_loc_42_load_reg_5800), + .ce(1'b1), + .dout(grp_fu_4011_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U59( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_45_load_reg_5900), + .din1(in1_loc_45_load_reg_5805), + .ce(1'b1), + .dout(grp_fu_4015_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U60( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_46_load_reg_5905), + .din1(in1_loc_46_load_reg_5810), + .ce(1'b1), + .dout(grp_fu_4019_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U61( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_49_load_reg_5910), + .din1(in1_loc_49_load_reg_5815), + .ce(1'b1), + .dout(grp_fu_4023_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U62( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_50_load_reg_5915), + .din1(in1_loc_50_load_reg_5820), + .ce(1'b1), + .dout(grp_fu_4027_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U63( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_57_load_reg_5920), + .din1(in1_loc_57_load_reg_5825), + .ce(1'b1), + .dout(grp_fu_4031_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U64( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_58_load_reg_5925), + .din1(in1_loc_58_load_reg_5830), + .ce(1'b1), + .dout(grp_fu_4035_p2) +); + +mmult_mul_32s_32scud #( + .ID( 1 ), + .NUM_STAGE( 3 ), + .din0_WIDTH( 32 ), + .din1_WIDTH( 32 ), + .dout_WIDTH( 32 )) +mmult_mul_32s_32scud_U65( + .clk(ap_clk), + .reset(ap_rst_n_inv), + .din0(in2_loc_61_load_reg_5930), + .din1(in1_loc_61_load_reg_5835), + .ce(1'b1), + .dout(grp_fu_4039_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 + ap_enable_reg_pp0_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp0_stage0) & (1'b1 == ap_condition_pp0_exit_iter0_state9) & (1'b0 == ap_block_pp0_stage0_subdone))) begin + ap_enable_reg_pp0_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp0_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp0_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp0_exit_iter0_state9)) begin + ap_enable_reg_pp0_iter1 <= (1'b1 ^ ap_condition_pp0_exit_iter0_state9); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 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 ((1'b1 == ap_CS_fsm_state8)) begin + ap_enable_reg_pp0_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp1_stage0) & (1'b1 == ap_condition_pp1_exit_iter0_state19) & (1'b0 == ap_block_pp1_stage0_subdone))) begin + ap_enable_reg_pp1_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp1_exit_iter0_state19)) begin + ap_enable_reg_pp1_iter1 <= (1'b1 ^ ap_condition_pp1_exit_iter0_state19); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp1_stage0_subdone)) begin + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + end else if ((1'b1 == ap_CS_fsm_state18)) begin + ap_enable_reg_pp1_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp2_stage0) & (1'b1 == ap_condition_pp2_exit_iter0_state25) & (1'b0 == ap_block_pp2_stage0_subdone))) begin + ap_enable_reg_pp2_iter0 <= 1'b0; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + ap_enable_reg_pp2_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp2_exit_iter0_state25)) begin + ap_enable_reg_pp2_iter1 <= (1'b1 ^ ap_condition_pp2_exit_iter0_state25); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter3 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter3 <= ap_enable_reg_pp2_iter2; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter4 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter4 <= ap_enable_reg_pp2_iter3; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter5 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter5 <= ap_enable_reg_pp2_iter4; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter6 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter6 <= ap_enable_reg_pp2_iter5; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter7 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter7 <= ap_enable_reg_pp2_iter6; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp2_iter8 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp2_stage0_subdone)) begin + ap_enable_reg_pp2_iter8 <= ap_enable_reg_pp2_iter7; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + ap_enable_reg_pp2_iter8 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else begin + if (((1'b1 == ap_CS_fsm_pp3_stage0) & (1'b1 == ap_condition_pp3_exit_iter0_state35) & (1'b0 == ap_block_pp3_stage0_subdone))) begin + ap_enable_reg_pp3_iter0 <= 1'b0; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + ap_enable_reg_pp3_iter0 <= 1'b1; + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter1 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + if ((1'b1 == ap_condition_pp3_exit_iter0_state35)) begin + ap_enable_reg_pp3_iter1 <= (1'b1 ^ ap_condition_pp3_exit_iter0_state35); + end else if ((1'b1 == 1'b1)) begin + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end + end + end +end + +always @ (posedge ap_clk) begin + if (ap_rst_n_inv == 1'b1) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end else begin + if ((1'b0 == ap_block_pp3_stage0_subdone)) begin + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + end else if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + ap_enable_reg_pp3_iter2 <= 1'b0; + end + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + i_0_reg_3329 <= select_ln31_1_reg_4592; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + i_0_reg_3329 <= 31'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3620_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + indvar_flatten_reg_3318 <= add_ln31_fu_3625_p2; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + indvar_flatten_reg_3318 <= 64'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3620_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + j_0_reg_3340 <= j_fu_3685_p2; + end else if ((1'b1 == ap_CS_fsm_state24)) begin + j_0_reg_3340 <= 32'd0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3425_p2 == 1'd0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + phi_ln27_reg_3296 <= add_ln27_fu_3431_p2; + end else if ((1'b1 == ap_CS_fsm_state8)) begin + phi_ln27_reg_3296 <= 13'd0; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state18)) begin + phi_ln28_reg_3307 <= 13'd0; + end else if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3518_p2 == 1'd0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + phi_ln28_reg_3307 <= add_ln28_fu_3524_p2; + end +end + +always @ (posedge ap_clk) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + phi_ln42_reg_3351 <= 13'd0; + end else if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_fu_4339_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1))) begin + phi_ln42_reg_3351 <= add_ln42_fu_4345_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter5_reg == 1'd0))) begin + add_ln38_10_reg_6275 <= add_ln38_10_fu_4070_p2; + add_ln38_15_reg_6280 <= add_ln38_15_fu_4074_p2; + add_ln38_18_reg_6285 <= add_ln38_18_fu_4078_p2; + add_ln38_19_reg_6290 <= add_ln38_19_fu_4082_p2; + add_ln38_22_reg_6295 <= add_ln38_22_fu_4086_p2; + add_ln38_25_reg_6300 <= add_ln38_25_fu_4090_p2; + add_ln38_26_reg_6305 <= add_ln38_26_fu_4094_p2; + add_ln38_2_reg_6255 <= add_ln38_2_fu_4052_p2; + add_ln38_31_reg_6310 <= add_ln38_31_fu_4098_p2; + add_ln38_34_reg_6315 <= add_ln38_34_fu_4102_p2; + add_ln38_35_reg_6320 <= add_ln38_35_fu_4106_p2; + add_ln38_38_reg_6325 <= add_ln38_38_fu_4110_p2; + add_ln38_3_reg_6260 <= add_ln38_3_fu_4058_p2; + add_ln38_41_reg_6330 <= add_ln38_41_fu_4114_p2; + add_ln38_46_reg_6335 <= add_ln38_46_fu_4118_p2; + add_ln38_49_reg_6340 <= add_ln38_49_fu_4122_p2; + add_ln38_4_reg_6265 <= add_ln38_4_fu_4062_p2; + add_ln38_50_reg_6345 <= add_ln38_50_fu_4126_p2; + add_ln38_53_reg_6350 <= add_ln38_53_fu_4130_p2; + add_ln38_56_reg_6355 <= add_ln38_56_fu_4134_p2; + add_ln38_57_reg_6360 <= add_ln38_57_fu_4138_p2; + add_ln38_7_reg_6270 <= add_ln38_7_fu_4066_p2; + mul_ln38_10_reg_6165 <= grp_fu_3971_p2; + mul_ln38_13_reg_6170 <= grp_fu_3975_p2; + mul_ln38_14_reg_6175 <= grp_fu_3979_p2; + mul_ln38_17_reg_6180 <= grp_fu_3983_p2; + mul_ln38_18_reg_6185 <= grp_fu_3987_p2; + mul_ln38_25_reg_6190 <= grp_fu_3991_p2; + mul_ln38_26_reg_6195 <= grp_fu_3995_p2; + mul_ln38_33_reg_6200 <= grp_fu_3999_p2; + mul_ln38_34_reg_6205 <= grp_fu_4003_p2; + mul_ln38_41_reg_6210 <= grp_fu_4007_p2; + mul_ln38_42_reg_6215 <= grp_fu_4011_p2; + mul_ln38_45_reg_6220 <= grp_fu_4015_p2; + mul_ln38_46_reg_6225 <= grp_fu_4019_p2; + mul_ln38_49_reg_6230 <= grp_fu_4023_p2; + mul_ln38_50_reg_6235 <= grp_fu_4027_p2; + mul_ln38_57_reg_6240 <= grp_fu_4031_p2; + mul_ln38_58_reg_6245 <= grp_fu_4035_p2; + mul_ln38_61_reg_6250 <= grp_fu_4039_p2; + mul_ln38_9_reg_6160 <= grp_fu_3967_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter6_reg == 1'd0))) begin + add_ln38_30_reg_6365 <= add_ln38_30_fu_4225_p2; + add_ln38_45_reg_6370 <= add_ln38_45_fu_4274_p2; + add_ln38_61_reg_6375 <= add_ln38_61_fu_4323_p2; + end +end + +always @ (posedge ap_clk) begin + if (((ap_start == 1'b1) & (1'b1 == ap_CS_fsm_state1))) begin + dim_read_reg_4356 <= dim; + in3_reg_4372 <= {{in1[31:2]}}; + in_reg_4367 <= {{in2[31:2]}}; + out5_reg_4362 <= {{out_r[31:2]}}; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + icmp_ln31_reg_4578 <= icmp_ln31_fu_3620_p2; + icmp_ln31_reg_4578_pp2_iter1_reg <= icmp_ln31_reg_4578; + out_loc_addr_reg_4598_pp2_iter1_reg <= out_loc_addr_reg_4598; + end +end + +always @ (posedge ap_clk) begin + if ((1'b0 == ap_block_pp2_stage0_11001)) begin + icmp_ln31_reg_4578_pp2_iter2_reg <= icmp_ln31_reg_4578_pp2_iter1_reg; + icmp_ln31_reg_4578_pp2_iter3_reg <= icmp_ln31_reg_4578_pp2_iter2_reg; + icmp_ln31_reg_4578_pp2_iter4_reg <= icmp_ln31_reg_4578_pp2_iter3_reg; + icmp_ln31_reg_4578_pp2_iter5_reg <= icmp_ln31_reg_4578_pp2_iter4_reg; + icmp_ln31_reg_4578_pp2_iter6_reg <= icmp_ln31_reg_4578_pp2_iter5_reg; + icmp_ln31_reg_4578_pp2_iter7_reg <= icmp_ln31_reg_4578_pp2_iter6_reg; + out_loc_addr_reg_4598_pp2_iter2_reg <= out_loc_addr_reg_4598_pp2_iter1_reg; + out_loc_addr_reg_4598_pp2_iter3_reg <= out_loc_addr_reg_4598_pp2_iter2_reg; + out_loc_addr_reg_4598_pp2_iter4_reg <= out_loc_addr_reg_4598_pp2_iter3_reg; + out_loc_addr_reg_4598_pp2_iter5_reg <= out_loc_addr_reg_4598_pp2_iter4_reg; + out_loc_addr_reg_4598_pp2_iter6_reg <= out_loc_addr_reg_4598_pp2_iter5_reg; + out_loc_addr_reg_4598_pp2_iter7_reg <= out_loc_addr_reg_4598_pp2_iter6_reg; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (1'b1 == ap_CS_fsm_pp3_stage0))) begin + icmp_ln42_reg_6380 <= icmp_ln42_fu_4339_p2; + icmp_ln42_reg_6380_pp3_iter1_reg <= icmp_ln42_reg_6380; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter1_reg == 1'd0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_0_load_reg_5105 <= in1_loc_0_q0; + in1_loc_11_load_reg_5160 <= in1_loc_11_q0; + in1_loc_12_load_reg_5165 <= in1_loc_12_q0; + in1_loc_15_load_reg_5180 <= in1_loc_15_q0; + in1_loc_16_load_reg_5185 <= in1_loc_16_q0; + in1_loc_19_load_reg_5200 <= in1_loc_19_q0; + in1_loc_1_load_reg_5110 <= in1_loc_1_q0; + in1_loc_20_load_reg_5205 <= in1_loc_20_q0; + in1_loc_21_load_reg_5210 <= in1_loc_21_q0; + in1_loc_22_load_reg_5215 <= in1_loc_22_q0; + in1_loc_23_load_reg_5220 <= in1_loc_23_q0; + in1_loc_24_load_reg_5225 <= in1_loc_24_q0; + in1_loc_27_load_reg_5240 <= in1_loc_27_q0; + in1_loc_28_load_reg_5245 <= in1_loc_28_q0; + in1_loc_29_load_reg_5250 <= in1_loc_29_q0; + in1_loc_2_load_reg_5115 <= in1_loc_2_q0; + in1_loc_30_load_reg_5255 <= in1_loc_30_q0; + in1_loc_31_load_reg_5260 <= in1_loc_31_q0; + in1_loc_32_load_reg_5265 <= in1_loc_32_q0; + in1_loc_35_load_reg_5280 <= in1_loc_35_q0; + in1_loc_36_load_reg_5285 <= in1_loc_36_q0; + in1_loc_37_load_reg_5290 <= in1_loc_37_q0; + in1_loc_38_load_reg_5295 <= in1_loc_38_q0; + in1_loc_39_load_reg_5300 <= in1_loc_39_q0; + in1_loc_3_load_reg_5120 <= in1_loc_3_q0; + in1_loc_40_load_reg_5305 <= in1_loc_40_q0; + in1_loc_43_load_reg_5320 <= in1_loc_43_q0; + in1_loc_44_load_reg_5325 <= in1_loc_44_q0; + in1_loc_47_load_reg_5340 <= in1_loc_47_q0; + in1_loc_48_load_reg_5345 <= in1_loc_48_q0; + in1_loc_4_load_reg_5125 <= in1_loc_4_q0; + in1_loc_51_load_reg_5360 <= in1_loc_51_q0; + in1_loc_52_load_reg_5365 <= in1_loc_52_q0; + in1_loc_53_load_reg_5370 <= in1_loc_53_q0; + in1_loc_54_load_reg_5375 <= in1_loc_54_q0; + in1_loc_55_load_reg_5380 <= in1_loc_55_q0; + in1_loc_56_load_reg_5385 <= in1_loc_56_q0; + in1_loc_59_load_reg_5400 <= in1_loc_59_q0; + in1_loc_5_load_reg_5130 <= in1_loc_5_q0; + in1_loc_60_load_reg_5405 <= in1_loc_60_q0; + in1_loc_62_load_reg_5415 <= in1_loc_62_q0; + in1_loc_63_load_reg_5420 <= in1_loc_63_q0; + in1_loc_6_load_reg_5135 <= in1_loc_6_q0; + in1_loc_7_load_reg_5140 <= in1_loc_7_q0; + in1_loc_8_load_reg_5145 <= in1_loc_8_q0; + in2_loc_0_load_reg_5425 <= in2_loc_0_q0; + in2_loc_11_load_reg_5480 <= in2_loc_11_q0; + in2_loc_12_load_reg_5485 <= in2_loc_12_q0; + in2_loc_15_load_reg_5500 <= in2_loc_15_q0; + in2_loc_16_load_reg_5505 <= in2_loc_16_q0; + in2_loc_19_load_reg_5520 <= in2_loc_19_q0; + in2_loc_1_load_reg_5430 <= in2_loc_1_q0; + in2_loc_20_load_reg_5525 <= in2_loc_20_q0; + in2_loc_21_load_reg_5530 <= in2_loc_21_q0; + in2_loc_22_load_reg_5535 <= in2_loc_22_q0; + in2_loc_23_load_reg_5540 <= in2_loc_23_q0; + in2_loc_24_load_reg_5545 <= in2_loc_24_q0; + in2_loc_27_load_reg_5560 <= in2_loc_27_q0; + in2_loc_28_load_reg_5565 <= in2_loc_28_q0; + in2_loc_29_load_reg_5570 <= in2_loc_29_q0; + in2_loc_2_load_reg_5435 <= in2_loc_2_q0; + in2_loc_30_load_reg_5575 <= in2_loc_30_q0; + in2_loc_31_load_reg_5580 <= in2_loc_31_q0; + in2_loc_32_load_reg_5585 <= in2_loc_32_q0; + in2_loc_35_load_reg_5600 <= in2_loc_35_q0; + in2_loc_36_load_reg_5605 <= in2_loc_36_q0; + in2_loc_37_load_reg_5610 <= in2_loc_37_q0; + in2_loc_38_load_reg_5615 <= in2_loc_38_q0; + in2_loc_39_load_reg_5620 <= in2_loc_39_q0; + in2_loc_3_load_reg_5440 <= in2_loc_3_q0; + in2_loc_40_load_reg_5625 <= in2_loc_40_q0; + in2_loc_43_load_reg_5640 <= in2_loc_43_q0; + in2_loc_44_load_reg_5645 <= in2_loc_44_q0; + in2_loc_47_load_reg_5660 <= in2_loc_47_q0; + in2_loc_48_load_reg_5665 <= in2_loc_48_q0; + in2_loc_4_load_reg_5445 <= in2_loc_4_q0; + in2_loc_51_load_reg_5680 <= in2_loc_51_q0; + in2_loc_52_load_reg_5685 <= in2_loc_52_q0; + in2_loc_53_load_reg_5690 <= in2_loc_53_q0; + in2_loc_54_load_reg_5695 <= in2_loc_54_q0; + in2_loc_55_load_reg_5700 <= in2_loc_55_q0; + in2_loc_56_load_reg_5705 <= in2_loc_56_q0; + in2_loc_59_load_reg_5720 <= in2_loc_59_q0; + in2_loc_5_load_reg_5450 <= in2_loc_5_q0; + in2_loc_60_load_reg_5725 <= in2_loc_60_q0; + in2_loc_62_load_reg_5735 <= in2_loc_62_q0; + in2_loc_63_load_reg_5740 <= in2_loc_63_q0; + in2_loc_6_load_reg_5455 <= in2_loc_6_q0; + in2_loc_7_load_reg_5460 <= in2_loc_7_q0; + in2_loc_8_load_reg_5465 <= in2_loc_8_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter2_reg == 1'd0) & (ap_enable_reg_pp2_iter3 == 1'b1))) begin + in1_loc_10_load_reg_5750 <= in1_loc_10_q0; + in1_loc_13_load_reg_5755 <= in1_loc_13_q0; + in1_loc_14_load_reg_5760 <= in1_loc_14_q0; + in1_loc_17_load_reg_5765 <= in1_loc_17_q0; + in1_loc_18_load_reg_5770 <= in1_loc_18_q0; + in1_loc_25_load_reg_5775 <= in1_loc_25_q0; + in1_loc_26_load_reg_5780 <= in1_loc_26_q0; + in1_loc_33_load_reg_5785 <= in1_loc_33_q0; + in1_loc_34_load_reg_5790 <= in1_loc_34_q0; + in1_loc_41_load_reg_5795 <= in1_loc_41_q0; + in1_loc_42_load_reg_5800 <= in1_loc_42_q0; + in1_loc_45_load_reg_5805 <= in1_loc_45_q0; + in1_loc_46_load_reg_5810 <= in1_loc_46_q0; + in1_loc_49_load_reg_5815 <= in1_loc_49_q0; + in1_loc_50_load_reg_5820 <= in1_loc_50_q0; + in1_loc_57_load_reg_5825 <= in1_loc_57_q0; + in1_loc_58_load_reg_5830 <= in1_loc_58_q0; + in1_loc_61_load_reg_5835 <= in1_loc_61_q0; + in1_loc_9_load_reg_5745 <= in1_loc_9_q0; + in2_loc_10_load_reg_5845 <= in2_loc_10_q0; + in2_loc_13_load_reg_5850 <= in2_loc_13_q0; + in2_loc_14_load_reg_5855 <= in2_loc_14_q0; + in2_loc_17_load_reg_5860 <= in2_loc_17_q0; + in2_loc_18_load_reg_5865 <= in2_loc_18_q0; + in2_loc_25_load_reg_5870 <= in2_loc_25_q0; + in2_loc_26_load_reg_5875 <= in2_loc_26_q0; + in2_loc_33_load_reg_5880 <= in2_loc_33_q0; + in2_loc_34_load_reg_5885 <= in2_loc_34_q0; + in2_loc_41_load_reg_5890 <= in2_loc_41_q0; + in2_loc_42_load_reg_5895 <= in2_loc_42_q0; + in2_loc_45_load_reg_5900 <= in2_loc_45_q0; + in2_loc_46_load_reg_5905 <= in2_loc_46_q0; + in2_loc_49_load_reg_5910 <= in2_loc_49_q0; + in2_loc_50_load_reg_5915 <= in2_loc_50_q0; + in2_loc_57_load_reg_5920 <= in2_loc_57_q0; + in2_loc_58_load_reg_5925 <= in2_loc_58_q0; + in2_loc_61_load_reg_5930 <= in2_loc_61_q0; + in2_loc_9_load_reg_5840 <= in2_loc_9_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_addr_read_reg_4413 <= in1_mem_RDATA; + lshr_ln_reg_4404_pp0_iter1_reg <= lshr_ln_reg_4404; + trunc_ln27_reg_4409_pp0_iter1_reg <= trunc_ln27_reg_4409; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_addr_read_reg_4499 <= in2_mem_RDATA; + trunc_ln1_reg_4495_pp1_iter1_reg <= trunc_ln1_reg_4495; + trunc_ln28_reg_4490_pp1_iter1_reg <= trunc_ln28_reg_4490; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state8)) begin + in2_mem_addr_reg_4389[29 : 0] <= empty_7_fu_3416_p1[29 : 0]; + out_mem_addr_reg_4383[29 : 0] <= empty_fu_3407_p1[29 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp0_stage0_11001) & (icmp_ln27_fu_3425_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + lshr_ln_reg_4404 <= {{phi_ln27_reg_3296[12:6]}}; + trunc_ln27_reg_4409 <= trunc_ln27_fu_3447_p1; + end +end + +always @ (posedge ap_clk) begin + if ((1'b1 == ap_CS_fsm_state24)) begin + mul_ln31_reg_4573 <= grp_fu_3614_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter4_reg == 1'd0))) begin + mul_ln38_11_reg_5980 <= grp_fu_3823_p2; + mul_ln38_12_reg_5985 <= grp_fu_3827_p2; + mul_ln38_15_reg_5990 <= grp_fu_3831_p2; + mul_ln38_16_reg_5995 <= grp_fu_3835_p2; + mul_ln38_19_reg_6000 <= grp_fu_3839_p2; + mul_ln38_1_reg_5940 <= grp_fu_3791_p2; + mul_ln38_20_reg_6005 <= grp_fu_3843_p2; + mul_ln38_21_reg_6010 <= grp_fu_3847_p2; + mul_ln38_22_reg_6015 <= grp_fu_3851_p2; + mul_ln38_23_reg_6020 <= grp_fu_3855_p2; + mul_ln38_24_reg_6025 <= grp_fu_3859_p2; + mul_ln38_27_reg_6030 <= grp_fu_3863_p2; + mul_ln38_28_reg_6035 <= grp_fu_3867_p2; + mul_ln38_29_reg_6040 <= grp_fu_3871_p2; + mul_ln38_2_reg_5945 <= grp_fu_3795_p2; + mul_ln38_30_reg_6045 <= grp_fu_3875_p2; + mul_ln38_31_reg_6050 <= grp_fu_3879_p2; + mul_ln38_32_reg_6055 <= grp_fu_3883_p2; + mul_ln38_35_reg_6060 <= grp_fu_3887_p2; + mul_ln38_36_reg_6065 <= grp_fu_3891_p2; + mul_ln38_37_reg_6070 <= grp_fu_3895_p2; + mul_ln38_38_reg_6075 <= grp_fu_3899_p2; + mul_ln38_39_reg_6080 <= grp_fu_3903_p2; + mul_ln38_3_reg_5950 <= grp_fu_3799_p2; + mul_ln38_40_reg_6085 <= grp_fu_3907_p2; + mul_ln38_43_reg_6090 <= grp_fu_3911_p2; + mul_ln38_44_reg_6095 <= grp_fu_3915_p2; + mul_ln38_47_reg_6100 <= grp_fu_3919_p2; + mul_ln38_48_reg_6105 <= grp_fu_3923_p2; + mul_ln38_4_reg_5955 <= grp_fu_3803_p2; + mul_ln38_51_reg_6110 <= grp_fu_3927_p2; + mul_ln38_52_reg_6115 <= grp_fu_3931_p2; + mul_ln38_53_reg_6120 <= grp_fu_3935_p2; + mul_ln38_54_reg_6125 <= grp_fu_3939_p2; + mul_ln38_55_reg_6130 <= grp_fu_3943_p2; + mul_ln38_56_reg_6135 <= grp_fu_3947_p2; + mul_ln38_59_reg_6140 <= grp_fu_3951_p2; + mul_ln38_5_reg_5960 <= grp_fu_3807_p2; + mul_ln38_60_reg_6145 <= grp_fu_3955_p2; + mul_ln38_62_reg_6150 <= grp_fu_3959_p2; + mul_ln38_63_reg_6155 <= grp_fu_3963_p2; + mul_ln38_6_reg_5965 <= grp_fu_3811_p2; + mul_ln38_7_reg_5970 <= grp_fu_3815_p2; + mul_ln38_8_reg_5975 <= grp_fu_3819_p2; + mul_ln38_reg_5935 <= grp_fu_3787_p2; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3620_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + out_loc_addr_reg_4598 <= zext_ln38_fu_3680_p1; + select_ln31_reg_4587 <= select_ln31_fu_3642_p3; + end +end + +always @ (posedge ap_clk) begin + if ((((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_6380 == 1'd0) & (ap_enable_reg_pp3_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp3_stage0)) | ((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter4_reg == 1'd0) & (ap_enable_reg_pp2_iter5 == 1'b1)))) begin + reg_3362 <= out_loc_q0; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_fu_3620_p2 == 1'd0) & (ap_enable_reg_pp2_iter0 == 1'b1) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + select_ln31_1_reg_4592 <= select_ln31_1_fu_3650_p3; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0))) begin + sext_ln38_reg_4857 <= sext_ln38_fu_3739_p1; + zext_ln31_1_reg_4609[30 : 0] <= zext_ln31_1_fu_3691_p1[30 : 0]; + end +end + +always @ (posedge ap_clk) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (icmp_ln28_fu_3518_p2 == 1'd0) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + trunc_ln1_reg_4495 <= {{phi_ln28_reg_3307[11:6]}}; + trunc_ln28_reg_4490 <= trunc_ln28_fu_3530_p1; + end +end + +always @ (*) begin + if ((icmp_ln27_fu_3425_p2 == 1'd1)) begin + ap_condition_pp0_exit_iter0_state9 = 1'b1; + end else begin + ap_condition_pp0_exit_iter0_state9 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln28_fu_3518_p2 == 1'd1)) begin + ap_condition_pp1_exit_iter0_state19 = 1'b1; + end else begin + ap_condition_pp1_exit_iter0_state19 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln31_fu_3620_p2 == 1'd1)) begin + ap_condition_pp2_exit_iter0_state25 = 1'b1; + end else begin + ap_condition_pp2_exit_iter0_state25 = 1'b0; + end +end + +always @ (*) begin + if ((icmp_ln42_fu_4339_p2 == 1'd1)) begin + ap_condition_pp3_exit_iter0_state35 = 1'b1; + end else begin + ap_condition_pp3_exit_iter0_state35 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state42))) 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_iter0 == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b0))) begin + ap_idle_pp0 = 1'b1; + end else begin + ap_idle_pp0 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp1_iter0 == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b0))) begin + ap_idle_pp1 = 1'b1; + end else begin + ap_idle_pp1 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp2_iter2 == 1'b0) & (ap_enable_reg_pp2_iter0 == 1'b0) & (ap_enable_reg_pp2_iter5 == 1'b0) & (ap_enable_reg_pp2_iter8 == 1'b0) & (ap_enable_reg_pp2_iter7 == 1'b0) & (ap_enable_reg_pp2_iter6 == 1'b0) & (ap_enable_reg_pp2_iter4 == 1'b0) & (ap_enable_reg_pp2_iter1 == 1'b0) & (ap_enable_reg_pp2_iter3 == 1'b0))) begin + ap_idle_pp2 = 1'b1; + end else begin + ap_idle_pp2 = 1'b0; + end +end + +always @ (*) begin + if (((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b0))) begin + ap_idle_pp3 = 1'b1; + end else begin + ap_idle_pp3 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (icmp_ln31_reg_4578 == 1'd0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + ap_phi_mux_i_0_phi_fu_3333_p4 = select_ln31_1_reg_4592; + end else begin + ap_phi_mux_i_0_phi_fu_3333_p4 = i_0_reg_3329; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state42))) begin + ap_ready = 1'b1; + end else begin + ap_ready = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_0_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_0_ce0 = 1'b1; + end else begin + in1_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd0) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_0_we0 = 1'b1; + end else begin + in1_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_10_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_10_ce0 = 1'b1; + end else begin + in1_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd10) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_10_we0 = 1'b1; + end else begin + in1_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_11_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_11_ce0 = 1'b1; + end else begin + in1_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd11) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_11_we0 = 1'b1; + end else begin + in1_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_12_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_12_ce0 = 1'b1; + end else begin + in1_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd12) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_12_we0 = 1'b1; + end else begin + in1_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_13_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_13_ce0 = 1'b1; + end else begin + in1_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd13) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_13_we0 = 1'b1; + end else begin + in1_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_14_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_14_ce0 = 1'b1; + end else begin + in1_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd14) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_14_we0 = 1'b1; + end else begin + in1_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_15_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_15_ce0 = 1'b1; + end else begin + in1_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd15) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_15_we0 = 1'b1; + end else begin + in1_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_16_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_16_ce0 = 1'b1; + end else begin + in1_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd16) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_16_we0 = 1'b1; + end else begin + in1_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_17_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_17_ce0 = 1'b1; + end else begin + in1_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd17) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_17_we0 = 1'b1; + end else begin + in1_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_18_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_18_ce0 = 1'b1; + end else begin + in1_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd18) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_18_we0 = 1'b1; + end else begin + in1_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_19_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_19_ce0 = 1'b1; + end else begin + in1_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd19) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_19_we0 = 1'b1; + end else begin + in1_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_1_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_1_ce0 = 1'b1; + end else begin + in1_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd1) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_1_we0 = 1'b1; + end else begin + in1_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_20_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_20_ce0 = 1'b1; + end else begin + in1_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd20) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_20_we0 = 1'b1; + end else begin + in1_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_21_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_21_ce0 = 1'b1; + end else begin + in1_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd21) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_21_we0 = 1'b1; + end else begin + in1_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_22_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_22_ce0 = 1'b1; + end else begin + in1_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd22) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_22_we0 = 1'b1; + end else begin + in1_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_23_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_23_ce0 = 1'b1; + end else begin + in1_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd23) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_23_we0 = 1'b1; + end else begin + in1_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_24_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_24_ce0 = 1'b1; + end else begin + in1_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd24) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_24_we0 = 1'b1; + end else begin + in1_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_25_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_25_ce0 = 1'b1; + end else begin + in1_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd25) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_25_we0 = 1'b1; + end else begin + in1_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_26_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_26_ce0 = 1'b1; + end else begin + in1_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd26) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_26_we0 = 1'b1; + end else begin + in1_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_27_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_27_ce0 = 1'b1; + end else begin + in1_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd27) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_27_we0 = 1'b1; + end else begin + in1_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_28_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_28_ce0 = 1'b1; + end else begin + in1_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd28) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_28_we0 = 1'b1; + end else begin + in1_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_29_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_29_ce0 = 1'b1; + end else begin + in1_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd29) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_29_we0 = 1'b1; + end else begin + in1_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_2_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_2_ce0 = 1'b1; + end else begin + in1_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd2) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_2_we0 = 1'b1; + end else begin + in1_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_30_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_30_ce0 = 1'b1; + end else begin + in1_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd30) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_30_we0 = 1'b1; + end else begin + in1_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_31_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_31_ce0 = 1'b1; + end else begin + in1_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd31) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_31_we0 = 1'b1; + end else begin + in1_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_32_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_32_ce0 = 1'b1; + end else begin + in1_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd32) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_32_we0 = 1'b1; + end else begin + in1_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_33_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_33_ce0 = 1'b1; + end else begin + in1_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd33) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_33_we0 = 1'b1; + end else begin + in1_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_34_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_34_ce0 = 1'b1; + end else begin + in1_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd34) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_34_we0 = 1'b1; + end else begin + in1_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_35_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_35_ce0 = 1'b1; + end else begin + in1_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd35) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_35_we0 = 1'b1; + end else begin + in1_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_36_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_36_ce0 = 1'b1; + end else begin + in1_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd36) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_36_we0 = 1'b1; + end else begin + in1_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_37_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_37_ce0 = 1'b1; + end else begin + in1_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd37) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_37_we0 = 1'b1; + end else begin + in1_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_38_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_38_ce0 = 1'b1; + end else begin + in1_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd38) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_38_we0 = 1'b1; + end else begin + in1_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_39_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_39_ce0 = 1'b1; + end else begin + in1_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd39) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_39_we0 = 1'b1; + end else begin + in1_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_3_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_3_ce0 = 1'b1; + end else begin + in1_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd3) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_3_we0 = 1'b1; + end else begin + in1_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_40_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_40_ce0 = 1'b1; + end else begin + in1_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd40) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_40_we0 = 1'b1; + end else begin + in1_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_41_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_41_ce0 = 1'b1; + end else begin + in1_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd41) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_41_we0 = 1'b1; + end else begin + in1_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_42_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_42_ce0 = 1'b1; + end else begin + in1_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd42) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_42_we0 = 1'b1; + end else begin + in1_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_43_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_43_ce0 = 1'b1; + end else begin + in1_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd43) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_43_we0 = 1'b1; + end else begin + in1_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_44_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_44_ce0 = 1'b1; + end else begin + in1_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd44) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_44_we0 = 1'b1; + end else begin + in1_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_45_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_45_ce0 = 1'b1; + end else begin + in1_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd45) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_45_we0 = 1'b1; + end else begin + in1_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_46_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_46_ce0 = 1'b1; + end else begin + in1_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd46) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_46_we0 = 1'b1; + end else begin + in1_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_47_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_47_ce0 = 1'b1; + end else begin + in1_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd47) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_47_we0 = 1'b1; + end else begin + in1_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_48_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_48_ce0 = 1'b1; + end else begin + in1_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd48) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_48_we0 = 1'b1; + end else begin + in1_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_49_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_49_ce0 = 1'b1; + end else begin + in1_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd49) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_49_we0 = 1'b1; + end else begin + in1_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_4_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_4_ce0 = 1'b1; + end else begin + in1_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd4) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_4_we0 = 1'b1; + end else begin + in1_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_50_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_50_ce0 = 1'b1; + end else begin + in1_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd50) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_50_we0 = 1'b1; + end else begin + in1_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_51_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_51_ce0 = 1'b1; + end else begin + in1_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd51) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_51_we0 = 1'b1; + end else begin + in1_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_52_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_52_ce0 = 1'b1; + end else begin + in1_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd52) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_52_we0 = 1'b1; + end else begin + in1_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_53_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_53_ce0 = 1'b1; + end else begin + in1_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd53) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_53_we0 = 1'b1; + end else begin + in1_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_54_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_54_ce0 = 1'b1; + end else begin + in1_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd54) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_54_we0 = 1'b1; + end else begin + in1_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_55_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_55_ce0 = 1'b1; + end else begin + in1_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd55) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_55_we0 = 1'b1; + end else begin + in1_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_56_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_56_ce0 = 1'b1; + end else begin + in1_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd56) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_56_we0 = 1'b1; + end else begin + in1_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_57_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_57_ce0 = 1'b1; + end else begin + in1_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd57) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_57_we0 = 1'b1; + end else begin + in1_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_58_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_58_ce0 = 1'b1; + end else begin + in1_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd58) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_58_we0 = 1'b1; + end else begin + in1_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_59_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_59_ce0 = 1'b1; + end else begin + in1_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd59) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_59_we0 = 1'b1; + end else begin + in1_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_5_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_5_ce0 = 1'b1; + end else begin + in1_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd5) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_5_we0 = 1'b1; + end else begin + in1_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_60_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_60_ce0 = 1'b1; + end else begin + in1_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd60) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_60_we0 = 1'b1; + end else begin + in1_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_61_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_61_ce0 = 1'b1; + end else begin + in1_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd61) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_61_we0 = 1'b1; + end else begin + in1_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_62_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_62_ce0 = 1'b1; + end else begin + in1_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd62) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_62_we0 = 1'b1; + end else begin + in1_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_63_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_63_ce0 = 1'b1; + end else begin + in1_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd63) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_63_we0 = 1'b1; + end else begin + in1_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_6_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_6_ce0 = 1'b1; + end else begin + in1_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd6) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_6_we0 = 1'b1; + end else begin + in1_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_7_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_7_ce0 = 1'b1; + end else begin + in1_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd7) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_7_we0 = 1'b1; + end else begin + in1_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in1_loc_8_address0 = zext_ln31_1_fu_3691_p1; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in1_loc_8_ce0 = 1'b1; + end else begin + in1_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd8) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_8_we0 = 1'b1; + end else begin + in1_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in1_loc_9_address0 = zext_ln31_1_reg_4609; + end else if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_address0 = zext_ln27_fu_3451_p1; + end else begin + in1_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in1_loc_9_ce0 = 1'b1; + end else begin + in1_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg == 6'd9) & (1'b0 == ap_block_pp0_stage0_11001) & (ap_enable_reg_pp0_iter2 == 1'b1))) begin + in1_loc_9_we0 = 1'b1; + end else begin + in1_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in1_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state2))) begin + in1_mem_ARVALID = 1'b1; + end else begin + in1_mem_ARVALID = 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 + in1_mem_RREADY = 1'b1; + end else begin + in1_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state2)) begin + in1_mem_blk_n_AR = m_axi_in1_mem_ARREADY; + end else begin + in1_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp0_stage0) & (ap_enable_reg_pp0_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp0_stage0))) begin + in1_mem_blk_n_R = m_axi_in1_mem_RVALID; + end else begin + in1_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_0_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_0_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_0_ce0 = 1'b1; + end else begin + in2_loc_0_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd0) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_0_we0 = 1'b1; + end else begin + in2_loc_0_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_10_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_10_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_10_ce0 = 1'b1; + end else begin + in2_loc_10_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd10) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_10_we0 = 1'b1; + end else begin + in2_loc_10_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_11_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_11_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_11_ce0 = 1'b1; + end else begin + in2_loc_11_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd11) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_11_we0 = 1'b1; + end else begin + in2_loc_11_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_12_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_12_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_12_ce0 = 1'b1; + end else begin + in2_loc_12_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd12) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_12_we0 = 1'b1; + end else begin + in2_loc_12_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_13_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_13_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_13_ce0 = 1'b1; + end else begin + in2_loc_13_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd13) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_13_we0 = 1'b1; + end else begin + in2_loc_13_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_14_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_14_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_14_ce0 = 1'b1; + end else begin + in2_loc_14_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd14) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_14_we0 = 1'b1; + end else begin + in2_loc_14_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_15_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_15_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_15_ce0 = 1'b1; + end else begin + in2_loc_15_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd15) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_15_we0 = 1'b1; + end else begin + in2_loc_15_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_16_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_16_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_16_ce0 = 1'b1; + end else begin + in2_loc_16_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd16) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_16_we0 = 1'b1; + end else begin + in2_loc_16_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_17_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_17_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_17_ce0 = 1'b1; + end else begin + in2_loc_17_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd17) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_17_we0 = 1'b1; + end else begin + in2_loc_17_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_18_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_18_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_18_ce0 = 1'b1; + end else begin + in2_loc_18_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd18) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_18_we0 = 1'b1; + end else begin + in2_loc_18_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_19_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_19_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_19_ce0 = 1'b1; + end else begin + in2_loc_19_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd19) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_19_we0 = 1'b1; + end else begin + in2_loc_19_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_1_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_1_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_1_ce0 = 1'b1; + end else begin + in2_loc_1_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd1) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_1_we0 = 1'b1; + end else begin + in2_loc_1_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_20_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_20_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_20_ce0 = 1'b1; + end else begin + in2_loc_20_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd20) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_20_we0 = 1'b1; + end else begin + in2_loc_20_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_21_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_21_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_21_ce0 = 1'b1; + end else begin + in2_loc_21_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd21) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_21_we0 = 1'b1; + end else begin + in2_loc_21_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_22_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_22_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_22_ce0 = 1'b1; + end else begin + in2_loc_22_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd22) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_22_we0 = 1'b1; + end else begin + in2_loc_22_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_23_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_23_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_23_ce0 = 1'b1; + end else begin + in2_loc_23_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd23) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_23_we0 = 1'b1; + end else begin + in2_loc_23_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_24_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_24_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_24_ce0 = 1'b1; + end else begin + in2_loc_24_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd24) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_24_we0 = 1'b1; + end else begin + in2_loc_24_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_25_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_25_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_25_ce0 = 1'b1; + end else begin + in2_loc_25_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd25) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_25_we0 = 1'b1; + end else begin + in2_loc_25_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_26_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_26_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_26_ce0 = 1'b1; + end else begin + in2_loc_26_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd26) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_26_we0 = 1'b1; + end else begin + in2_loc_26_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_27_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_27_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_27_ce0 = 1'b1; + end else begin + in2_loc_27_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd27) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_27_we0 = 1'b1; + end else begin + in2_loc_27_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_28_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_28_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_28_ce0 = 1'b1; + end else begin + in2_loc_28_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd28) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_28_we0 = 1'b1; + end else begin + in2_loc_28_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_29_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_29_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_29_ce0 = 1'b1; + end else begin + in2_loc_29_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd29) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_29_we0 = 1'b1; + end else begin + in2_loc_29_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_2_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_2_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_2_ce0 = 1'b1; + end else begin + in2_loc_2_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd2) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_2_we0 = 1'b1; + end else begin + in2_loc_2_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_30_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_30_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_30_ce0 = 1'b1; + end else begin + in2_loc_30_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd30) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_30_we0 = 1'b1; + end else begin + in2_loc_30_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_31_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_31_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_31_ce0 = 1'b1; + end else begin + in2_loc_31_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd31) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_31_we0 = 1'b1; + end else begin + in2_loc_31_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_32_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_32_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_32_ce0 = 1'b1; + end else begin + in2_loc_32_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd32) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_32_we0 = 1'b1; + end else begin + in2_loc_32_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_33_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_33_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_33_ce0 = 1'b1; + end else begin + in2_loc_33_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd33) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_33_we0 = 1'b1; + end else begin + in2_loc_33_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_34_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_34_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_34_ce0 = 1'b1; + end else begin + in2_loc_34_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd34) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_34_we0 = 1'b1; + end else begin + in2_loc_34_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_35_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_35_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_35_ce0 = 1'b1; + end else begin + in2_loc_35_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd35) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_35_we0 = 1'b1; + end else begin + in2_loc_35_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_36_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_36_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_36_ce0 = 1'b1; + end else begin + in2_loc_36_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd36) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_36_we0 = 1'b1; + end else begin + in2_loc_36_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_37_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_37_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_37_ce0 = 1'b1; + end else begin + in2_loc_37_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd37) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_37_we0 = 1'b1; + end else begin + in2_loc_37_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_38_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_38_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_38_ce0 = 1'b1; + end else begin + in2_loc_38_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd38) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_38_we0 = 1'b1; + end else begin + in2_loc_38_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_39_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_39_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_39_ce0 = 1'b1; + end else begin + in2_loc_39_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd39) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_39_we0 = 1'b1; + end else begin + in2_loc_39_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_3_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_3_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_3_ce0 = 1'b1; + end else begin + in2_loc_3_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd3) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_3_we0 = 1'b1; + end else begin + in2_loc_3_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_40_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_40_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_40_ce0 = 1'b1; + end else begin + in2_loc_40_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd40) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_40_we0 = 1'b1; + end else begin + in2_loc_40_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_41_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_41_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_41_ce0 = 1'b1; + end else begin + in2_loc_41_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd41) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_41_we0 = 1'b1; + end else begin + in2_loc_41_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_42_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_42_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_42_ce0 = 1'b1; + end else begin + in2_loc_42_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd42) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_42_we0 = 1'b1; + end else begin + in2_loc_42_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_43_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_43_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_43_ce0 = 1'b1; + end else begin + in2_loc_43_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd43) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_43_we0 = 1'b1; + end else begin + in2_loc_43_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_44_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_44_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_44_ce0 = 1'b1; + end else begin + in2_loc_44_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd44) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_44_we0 = 1'b1; + end else begin + in2_loc_44_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_45_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_45_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_45_ce0 = 1'b1; + end else begin + in2_loc_45_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd45) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_45_we0 = 1'b1; + end else begin + in2_loc_45_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_46_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_46_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_46_ce0 = 1'b1; + end else begin + in2_loc_46_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd46) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_46_we0 = 1'b1; + end else begin + in2_loc_46_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_47_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_47_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_47_ce0 = 1'b1; + end else begin + in2_loc_47_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd47) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_47_we0 = 1'b1; + end else begin + in2_loc_47_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_48_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_48_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_48_ce0 = 1'b1; + end else begin + in2_loc_48_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd48) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_48_we0 = 1'b1; + end else begin + in2_loc_48_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_49_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_49_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_49_ce0 = 1'b1; + end else begin + in2_loc_49_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd49) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_49_we0 = 1'b1; + end else begin + in2_loc_49_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_4_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_4_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_4_ce0 = 1'b1; + end else begin + in2_loc_4_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd4) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_4_we0 = 1'b1; + end else begin + in2_loc_4_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_50_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_50_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_50_ce0 = 1'b1; + end else begin + in2_loc_50_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd50) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_50_we0 = 1'b1; + end else begin + in2_loc_50_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_51_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_51_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_51_ce0 = 1'b1; + end else begin + in2_loc_51_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd51) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_51_we0 = 1'b1; + end else begin + in2_loc_51_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_52_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_52_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_52_ce0 = 1'b1; + end else begin + in2_loc_52_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd52) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_52_we0 = 1'b1; + end else begin + in2_loc_52_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_53_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_53_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_53_ce0 = 1'b1; + end else begin + in2_loc_53_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd53) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_53_we0 = 1'b1; + end else begin + in2_loc_53_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_54_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_54_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_54_ce0 = 1'b1; + end else begin + in2_loc_54_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd54) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_54_we0 = 1'b1; + end else begin + in2_loc_54_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_55_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_55_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_55_ce0 = 1'b1; + end else begin + in2_loc_55_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd55) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_55_we0 = 1'b1; + end else begin + in2_loc_55_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_56_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_56_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_56_ce0 = 1'b1; + end else begin + in2_loc_56_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd56) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_56_we0 = 1'b1; + end else begin + in2_loc_56_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_57_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_57_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_57_ce0 = 1'b1; + end else begin + in2_loc_57_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd57) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_57_we0 = 1'b1; + end else begin + in2_loc_57_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_58_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_58_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_58_ce0 = 1'b1; + end else begin + in2_loc_58_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd58) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_58_we0 = 1'b1; + end else begin + in2_loc_58_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_59_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_59_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_59_ce0 = 1'b1; + end else begin + in2_loc_59_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd59) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_59_we0 = 1'b1; + end else begin + in2_loc_59_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_5_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_5_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_5_ce0 = 1'b1; + end else begin + in2_loc_5_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd5) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_5_we0 = 1'b1; + end else begin + in2_loc_5_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_60_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_60_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_60_ce0 = 1'b1; + end else begin + in2_loc_60_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd60) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_60_we0 = 1'b1; + end else begin + in2_loc_60_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_61_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_61_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_61_ce0 = 1'b1; + end else begin + in2_loc_61_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd61) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_61_we0 = 1'b1; + end else begin + in2_loc_61_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_62_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_62_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_62_ce0 = 1'b1; + end else begin + in2_loc_62_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd62) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_62_we0 = 1'b1; + end else begin + in2_loc_62_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_63_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_63_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_63_ce0 = 1'b1; + end else begin + in2_loc_63_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd63) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_63_we0 = 1'b1; + end else begin + in2_loc_63_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_6_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_6_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_6_ce0 = 1'b1; + end else begin + in2_loc_6_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd6) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_6_we0 = 1'b1; + end else begin + in2_loc_6_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_7_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_7_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_7_ce0 = 1'b1; + end else begin + in2_loc_7_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd7) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_7_we0 = 1'b1; + end else begin + in2_loc_7_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1))) begin + in2_loc_8_address0 = sext_ln38_fu_3739_p1; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_8_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (1'b1 == ap_CS_fsm_pp2_stage0) & (ap_enable_reg_pp2_iter1 == 1'b1)))) begin + in2_loc_8_ce0 = 1'b1; + end else begin + in2_loc_8_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd8) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_8_we0 = 1'b1; + end else begin + in2_loc_8_we0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter2 == 1'b1))) begin + in2_loc_9_address0 = sext_ln38_reg_4857; + end else if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_address0 = zext_ln28_fu_3544_p1; + end else begin + in2_loc_9_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter2 == 1'b1)))) begin + in2_loc_9_ce0 = 1'b1; + end else begin + in2_loc_9_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg == 6'd9) & (1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter2 == 1'b1))) begin + in2_loc_9_we0 = 1'b1; + end else begin + in2_loc_9_we0 = 1'b0; + end +end + +always @ (*) begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) begin + in2_mem_ARVALID = 1'b1; + end else begin + in2_mem_ARVALID = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0_11001) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_RREADY = 1'b1; + end else begin + in2_mem_RREADY = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state12)) begin + in2_mem_blk_n_AR = m_axi_in2_mem_ARREADY; + end else begin + in2_mem_blk_n_AR = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp1_stage0) & (ap_enable_reg_pp1_iter1 == 1'b1) & (1'b1 == ap_CS_fsm_pp1_stage0))) begin + in2_mem_blk_n_R = m_axi_in2_mem_RVALID; + end else begin + in2_mem_blk_n_R = 1'b1; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0) & (1'b1 == ap_CS_fsm_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1))) begin + out_loc_address0 = zext_ln42_fu_4351_p1; + end else if (((1'b0 == ap_block_pp2_stage0) & (ap_enable_reg_pp2_iter4 == 1'b1))) begin + out_loc_address0 = out_loc_addr_reg_4598_pp2_iter3_reg; + end else begin + out_loc_address0 = 'bx; + end +end + +always @ (*) begin + if ((((1'b0 == ap_block_pp3_stage0_11001) & (1'b1 == ap_CS_fsm_pp3_stage0) & (ap_enable_reg_pp3_iter0 == 1'b1)) | ((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter4 == 1'b1)))) begin + out_loc_ce0 = 1'b1; + end else begin + out_loc_ce0 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (ap_enable_reg_pp2_iter8 == 1'b1))) begin + out_loc_ce1 = 1'b1; + end else begin + out_loc_ce1 = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp2_stage0_11001) & (icmp_ln31_reg_4578_pp2_iter7_reg == 1'd0) & (ap_enable_reg_pp2_iter8 == 1'b1))) begin + out_loc_we1 = 1'b1; + end else begin + out_loc_we1 = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + out_mem_AWVALID = 1'b1; + end else begin + out_mem_AWVALID = 1'b0; + end +end + +always @ (*) begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state42))) begin + out_mem_BREADY = 1'b1; + end else begin + out_mem_BREADY = 1'b0; + end +end + +always @ (*) begin + if (((1'b0 == ap_block_pp3_stage0_11001) & (icmp_ln42_reg_6380_pp3_iter1_reg == 1'd0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_WVALID = 1'b1; + end else begin + out_mem_WVALID = 1'b0; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state34)) begin + out_mem_blk_n_AW = m_axi_out_mem_AWREADY; + end else begin + out_mem_blk_n_AW = 1'b1; + end +end + +always @ (*) begin + if ((1'b1 == ap_CS_fsm_state42)) begin + out_mem_blk_n_B = m_axi_out_mem_BVALID; + end else begin + out_mem_blk_n_B = 1'b1; + end +end + +always @ (*) begin + if (((icmp_ln42_reg_6380_pp3_iter1_reg == 1'd0) & (1'b0 == ap_block_pp3_stage0) & (ap_enable_reg_pp3_iter2 == 1'b1))) begin + out_mem_blk_n_W = m_axi_out_mem_WREADY; + end else begin + out_mem_blk_n_W = 1'b1; + 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 + if (((in1_mem_ARREADY == 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 + ap_NS_fsm = ap_ST_fsm_state8; + end + ap_ST_fsm_state8 : begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + ap_ST_fsm_pp0_stage0 : begin + if ((~((icmp_ln27_fu_3425_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) & ~((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end else if ((((icmp_ln27_fu_3425_p2 == 1'd1) & (ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter0 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)) | ((ap_enable_reg_pp0_iter1 == 1'b0) & (ap_enable_reg_pp0_iter2 == 1'b1) & (1'b0 == ap_block_pp0_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state12; + end else begin + ap_NS_fsm = ap_ST_fsm_pp0_stage0; + end + end + ap_ST_fsm_state12 : begin + if (((in2_mem_ARREADY == 1'b1) & (1'b1 == ap_CS_fsm_state12))) 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 + ap_NS_fsm = ap_ST_fsm_state14; + end + ap_ST_fsm_state14 : begin + ap_NS_fsm = ap_ST_fsm_state15; + end + ap_ST_fsm_state15 : begin + ap_NS_fsm = ap_ST_fsm_state16; + end + ap_ST_fsm_state16 : begin + ap_NS_fsm = ap_ST_fsm_state17; + end + ap_ST_fsm_state17 : begin + ap_NS_fsm = ap_ST_fsm_state18; + end + ap_ST_fsm_state18 : begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + ap_ST_fsm_pp1_stage0 : begin + if ((~((icmp_ln28_fu_3518_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) & ~((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end else if ((((icmp_ln28_fu_3518_p2 == 1'd1) & (ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter0 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)) | ((ap_enable_reg_pp1_iter1 == 1'b0) & (ap_enable_reg_pp1_iter2 == 1'b1) & (1'b0 == ap_block_pp1_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state22; + end else begin + ap_NS_fsm = ap_ST_fsm_pp1_stage0; + end + end + ap_ST_fsm_state22 : begin + ap_NS_fsm = ap_ST_fsm_state23; + end + ap_ST_fsm_state23 : begin + ap_NS_fsm = ap_ST_fsm_state24; + end + ap_ST_fsm_state24 : begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + ap_ST_fsm_pp2_stage0 : begin + if ((~((icmp_ln31_fu_3620_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)) & ~((ap_enable_reg_pp2_iter8 == 1'b1) & (ap_enable_reg_pp2_iter7 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end else if ((((icmp_ln31_fu_3620_p2 == 1'd1) & (ap_enable_reg_pp2_iter0 == 1'b1) & (ap_enable_reg_pp2_iter1 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)) | ((ap_enable_reg_pp2_iter8 == 1'b1) & (ap_enable_reg_pp2_iter7 == 1'b0) & (1'b0 == ap_block_pp2_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_state34; + end else begin + ap_NS_fsm = ap_ST_fsm_pp2_stage0; + end + end + ap_ST_fsm_state34 : begin + if (((out_mem_AWREADY == 1'b1) & (1'b1 == ap_CS_fsm_state34))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else begin + ap_NS_fsm = ap_ST_fsm_state34; + end + end + ap_ST_fsm_pp3_stage0 : begin + if ((~((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (icmp_ln42_fu_4339_p2 == 1'd1)) & ~((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)))) begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end else if ((((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter2 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone)) | ((ap_enable_reg_pp3_iter1 == 1'b0) & (ap_enable_reg_pp3_iter0 == 1'b1) & (1'b0 == ap_block_pp3_stage0_subdone) & (icmp_ln42_fu_4339_p2 == 1'd1)))) begin + ap_NS_fsm = ap_ST_fsm_state38; + end else begin + ap_NS_fsm = ap_ST_fsm_pp3_stage0; + end + end + ap_ST_fsm_state38 : begin + ap_NS_fsm = ap_ST_fsm_state39; + end + ap_ST_fsm_state39 : begin + ap_NS_fsm = ap_ST_fsm_state40; + end + ap_ST_fsm_state40 : begin + ap_NS_fsm = ap_ST_fsm_state41; + end + ap_ST_fsm_state41 : begin + ap_NS_fsm = ap_ST_fsm_state42; + end + ap_ST_fsm_state42 : begin + if (((out_mem_BVALID == 1'b1) & (1'b1 == ap_CS_fsm_state42))) begin + ap_NS_fsm = ap_ST_fsm_state1; + end else begin + ap_NS_fsm = ap_ST_fsm_state42; + end + end + default : begin + ap_NS_fsm = 'bx; + end + endcase +end + +assign add_ln27_fu_3431_p2 = (phi_ln27_reg_3296 + 13'd1); + +assign add_ln28_fu_3524_p2 = (phi_ln28_reg_3307 + 13'd1); + +assign add_ln31_fu_3625_p2 = (indvar_flatten_reg_3318 + 64'd1); + +assign add_ln38_10_fu_4070_p2 = (mul_ln38_12_reg_5985 + mul_ln38_11_reg_5980); + +assign add_ln38_11_fu_4160_p2 = (mul_ln38_14_reg_6175 + mul_ln38_13_reg_6170); + +assign add_ln38_12_fu_4164_p2 = (add_ln38_10_reg_6275 + add_ln38_11_fu_4160_p2); + +assign add_ln38_13_fu_4169_p2 = (add_ln38_9_fu_4155_p2 + add_ln38_12_fu_4164_p2); + +assign add_ln38_14_fu_4175_p2 = (add_ln38_6_fu_4146_p2 + add_ln38_13_fu_4169_p2); + +assign add_ln38_15_fu_4074_p2 = (mul_ln38_16_reg_5995 + mul_ln38_15_reg_5990); + +assign add_ln38_16_fu_4181_p2 = (mul_ln38_18_reg_6185 + mul_ln38_17_reg_6180); + +assign add_ln38_17_fu_4185_p2 = (add_ln38_15_reg_6280 + add_ln38_16_fu_4181_p2); + +assign add_ln38_18_fu_4078_p2 = (mul_ln38_20_reg_6005 + mul_ln38_19_reg_6000); + +assign add_ln38_19_fu_4082_p2 = (mul_ln38_22_reg_6015 + mul_ln38_21_reg_6010); + +assign add_ln38_1_fu_4048_p2 = (mul_ln38_2_reg_5945 + mul_ln38_1_reg_5940); + +assign add_ln38_20_fu_4190_p2 = (add_ln38_18_reg_6285 + add_ln38_19_reg_6290); + +assign add_ln38_21_fu_4194_p2 = (add_ln38_17_fu_4185_p2 + add_ln38_20_fu_4190_p2); + +assign add_ln38_22_fu_4086_p2 = (mul_ln38_24_reg_6025 + mul_ln38_23_reg_6020); + +assign add_ln38_23_fu_4200_p2 = (mul_ln38_26_reg_6195 + mul_ln38_25_reg_6190); + +assign add_ln38_24_fu_4204_p2 = (add_ln38_22_reg_6295 + add_ln38_23_fu_4200_p2); + +assign add_ln38_25_fu_4090_p2 = (mul_ln38_28_reg_6035 + mul_ln38_27_reg_6030); + +assign add_ln38_26_fu_4094_p2 = (mul_ln38_30_reg_6045 + mul_ln38_29_reg_6040); + +assign add_ln38_27_fu_4209_p2 = (add_ln38_25_reg_6300 + add_ln38_26_reg_6305); + +assign add_ln38_28_fu_4213_p2 = (add_ln38_24_fu_4204_p2 + add_ln38_27_fu_4209_p2); + +assign add_ln38_29_fu_4219_p2 = (add_ln38_21_fu_4194_p2 + add_ln38_28_fu_4213_p2); + +assign add_ln38_2_fu_4052_p2 = (add_ln38_fu_4043_p2 + add_ln38_1_fu_4048_p2); + +assign add_ln38_30_fu_4225_p2 = (add_ln38_14_fu_4175_p2 + add_ln38_29_fu_4219_p2); + +assign add_ln38_31_fu_4098_p2 = (mul_ln38_32_reg_6055 + mul_ln38_31_reg_6050); + +assign add_ln38_32_fu_4231_p2 = (mul_ln38_34_reg_6205 + mul_ln38_33_reg_6200); + +assign add_ln38_33_fu_4235_p2 = (add_ln38_31_reg_6310 + add_ln38_32_fu_4231_p2); + +assign add_ln38_34_fu_4102_p2 = (mul_ln38_36_reg_6065 + mul_ln38_35_reg_6060); + +assign add_ln38_35_fu_4106_p2 = (mul_ln38_38_reg_6075 + mul_ln38_37_reg_6070); + +assign add_ln38_36_fu_4240_p2 = (add_ln38_34_reg_6315 + add_ln38_35_reg_6320); + +assign add_ln38_37_fu_4244_p2 = (add_ln38_33_fu_4235_p2 + add_ln38_36_fu_4240_p2); + +assign add_ln38_38_fu_4110_p2 = (mul_ln38_40_reg_6085 + mul_ln38_39_reg_6080); + +assign add_ln38_39_fu_4250_p2 = (mul_ln38_42_reg_6215 + mul_ln38_41_reg_6210); + +assign add_ln38_3_fu_4058_p2 = (mul_ln38_4_reg_5955 + mul_ln38_3_reg_5950); + +assign add_ln38_40_fu_4254_p2 = (add_ln38_38_reg_6325 + add_ln38_39_fu_4250_p2); + +assign add_ln38_41_fu_4114_p2 = (mul_ln38_44_reg_6095 + mul_ln38_43_reg_6090); + +assign add_ln38_42_fu_4259_p2 = (mul_ln38_46_reg_6225 + mul_ln38_45_reg_6220); + +assign add_ln38_43_fu_4263_p2 = (add_ln38_41_reg_6330 + add_ln38_42_fu_4259_p2); + +assign add_ln38_44_fu_4268_p2 = (add_ln38_40_fu_4254_p2 + add_ln38_43_fu_4263_p2); + +assign add_ln38_45_fu_4274_p2 = (add_ln38_37_fu_4244_p2 + add_ln38_44_fu_4268_p2); + +assign add_ln38_46_fu_4118_p2 = (mul_ln38_48_reg_6105 + mul_ln38_47_reg_6100); + +assign add_ln38_47_fu_4280_p2 = (mul_ln38_50_reg_6235 + mul_ln38_49_reg_6230); + +assign add_ln38_48_fu_4284_p2 = (add_ln38_46_reg_6335 + add_ln38_47_fu_4280_p2); + +assign add_ln38_49_fu_4122_p2 = (mul_ln38_52_reg_6115 + mul_ln38_51_reg_6110); + +assign add_ln38_4_fu_4062_p2 = (mul_ln38_6_reg_5965 + mul_ln38_5_reg_5960); + +assign add_ln38_50_fu_4126_p2 = (mul_ln38_54_reg_6125 + mul_ln38_53_reg_6120); + +assign add_ln38_51_fu_4289_p2 = (add_ln38_49_reg_6340 + add_ln38_50_reg_6345); + +assign add_ln38_52_fu_4293_p2 = (add_ln38_48_fu_4284_p2 + add_ln38_51_fu_4289_p2); + +assign add_ln38_53_fu_4130_p2 = (mul_ln38_56_reg_6135 + mul_ln38_55_reg_6130); + +assign add_ln38_54_fu_4299_p2 = (mul_ln38_58_reg_6245 + mul_ln38_57_reg_6240); + +assign add_ln38_55_fu_4303_p2 = (add_ln38_53_reg_6350 + add_ln38_54_fu_4299_p2); + +assign add_ln38_56_fu_4134_p2 = (mul_ln38_60_reg_6145 + mul_ln38_59_reg_6140); + +assign add_ln38_57_fu_4138_p2 = (mul_ln38_63_reg_6155 + mul_ln38_62_reg_6150); + +assign add_ln38_58_fu_4308_p2 = (mul_ln38_61_reg_6250 + add_ln38_57_reg_6360); + +assign add_ln38_59_fu_4312_p2 = (add_ln38_56_reg_6355 + add_ln38_58_fu_4308_p2); + +assign add_ln38_5_fu_4142_p2 = (add_ln38_3_reg_6260 + add_ln38_4_reg_6265); + +assign add_ln38_60_fu_4317_p2 = (add_ln38_55_fu_4303_p2 + add_ln38_59_fu_4312_p2); + +assign add_ln38_61_fu_4323_p2 = (add_ln38_52_fu_4293_p2 + add_ln38_60_fu_4317_p2); + +assign add_ln38_62_fu_4329_p2 = (add_ln38_45_reg_6370 + add_ln38_61_reg_6375); + +assign add_ln38_64_fu_3674_p2 = (tmp_cast_fu_3662_p3 + trunc_ln38_1_fu_3670_p1); + +assign add_ln38_6_fu_4146_p2 = (add_ln38_2_reg_6255 + add_ln38_5_fu_4142_p2); + +assign add_ln38_7_fu_4066_p2 = (mul_ln38_8_reg_5975 + mul_ln38_7_reg_5970); + +assign add_ln38_8_fu_4151_p2 = (mul_ln38_10_reg_6165 + mul_ln38_9_reg_6160); + +assign add_ln38_9_fu_4155_p2 = (add_ln38_7_reg_6270 + add_ln38_8_fu_4151_p2); + +assign add_ln38_fu_4043_p2 = (mul_ln38_reg_5935 + reg_3362); + +assign add_ln42_fu_4345_p2 = (phi_ln42_reg_3351 + 13'd1); + +assign ap_CS_fsm_pp0_stage0 = ap_CS_fsm[32'd8]; + +assign ap_CS_fsm_pp1_stage0 = ap_CS_fsm[32'd16]; + +assign ap_CS_fsm_pp2_stage0 = ap_CS_fsm[32'd20]; + +assign ap_CS_fsm_pp3_stage0 = ap_CS_fsm[32'd22]; + +assign ap_CS_fsm_state1 = ap_CS_fsm[32'd0]; + +assign ap_CS_fsm_state12 = ap_CS_fsm[32'd9]; + +assign ap_CS_fsm_state18 = ap_CS_fsm[32'd15]; + +assign ap_CS_fsm_state2 = ap_CS_fsm[32'd1]; + +assign ap_CS_fsm_state22 = ap_CS_fsm[32'd17]; + +assign ap_CS_fsm_state24 = ap_CS_fsm[32'd19]; + +assign ap_CS_fsm_state34 = ap_CS_fsm[32'd21]; + +assign ap_CS_fsm_state42 = ap_CS_fsm[32'd27]; + +assign ap_CS_fsm_state8 = ap_CS_fsm[32'd7]; + +assign ap_block_pp0_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp0_stage0_11001 = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp0_stage0_subdone = ((in1_mem_RVALID == 1'b0) & (ap_enable_reg_pp0_iter1 == 1'b1)); +end + +assign ap_block_pp1_stage0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp1_stage0_11001 = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +always @ (*) begin + ap_block_pp1_stage0_subdone = ((in2_mem_RVALID == 1'b0) & (ap_enable_reg_pp1_iter1 == 1'b1)); +end + +assign ap_block_pp2_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_11001 = ~(1'b1 == 1'b1); + +assign ap_block_pp2_stage0_subdone = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0 = ~(1'b1 == 1'b1); + +assign ap_block_pp3_stage0_01001 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_pp3_stage0_11001 = ((1'b1 == ap_block_state37_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_pp3_stage0_subdone = ((1'b1 == ap_block_state37_io) & (ap_enable_reg_pp3_iter2 == 1'b1)); +end + +always @ (*) begin + ap_block_state10_pp0_stage0_iter1 = (in1_mem_RVALID == 1'b0); +end + +assign ap_block_state11_pp0_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state19_pp1_stage0_iter0 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state20_pp1_stage0_iter1 = (in2_mem_RVALID == 1'b0); +end + +assign ap_block_state21_pp1_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state25_pp2_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state26_pp2_stage0_iter1 = ~(1'b1 == 1'b1); + +assign ap_block_state27_pp2_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state28_pp2_stage0_iter3 = ~(1'b1 == 1'b1); + +assign ap_block_state29_pp2_stage0_iter4 = ~(1'b1 == 1'b1); + +assign ap_block_state30_pp2_stage0_iter5 = ~(1'b1 == 1'b1); + +assign ap_block_state31_pp2_stage0_iter6 = ~(1'b1 == 1'b1); + +assign ap_block_state32_pp2_stage0_iter7 = ~(1'b1 == 1'b1); + +assign ap_block_state33_pp2_stage0_iter8 = ~(1'b1 == 1'b1); + +assign ap_block_state35_pp3_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_block_state36_pp3_stage0_iter1 = ~(1'b1 == 1'b1); + +always @ (*) begin + ap_block_state37_io = ((out_mem_WREADY == 1'b0) & (icmp_ln42_reg_6380_pp3_iter1_reg == 1'd0)); +end + +assign ap_block_state37_pp3_stage0_iter2 = ~(1'b1 == 1'b1); + +assign ap_block_state9_pp0_stage0_iter0 = ~(1'b1 == 1'b1); + +assign ap_enable_pp0 = (ap_idle_pp0 ^ 1'b1); + +assign ap_enable_pp1 = (ap_idle_pp1 ^ 1'b1); + +assign ap_enable_pp2 = (ap_idle_pp2 ^ 1'b1); + +assign ap_enable_pp3 = (ap_idle_pp3 ^ 1'b1); + +always @ (*) begin + ap_rst_n_inv = ~ap_rst_n; +end + +assign empty_7_fu_3416_p1 = in_reg_4367; + +assign empty_8_fu_3397_p1 = in3_reg_4372; + +assign empty_fu_3407_p1 = out5_reg_4362; + +assign grp_fu_3614_p0 = zext_ln31_fu_3611_p1; + +assign grp_fu_3614_p1 = zext_ln31_fu_3611_p1; + +assign i_fu_3631_p2 = (31'd1 + ap_phi_mux_i_0_phi_fu_3333_p4); + +assign icmp_ln27_fu_3425_p2 = ((phi_ln27_reg_3296 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln28_fu_3518_p2 = ((phi_ln28_reg_3307 == 13'd4096) ? 1'b1 : 1'b0); + +assign icmp_ln31_fu_3620_p2 = ((indvar_flatten_reg_3318 == mul_ln31_reg_4573) ? 1'b1 : 1'b0); + +assign icmp_ln33_fu_3637_p2 = ((j_0_reg_3340 == dim_read_reg_4356) ? 1'b1 : 1'b0); + +assign icmp_ln42_fu_4339_p2 = ((phi_ln42_reg_3351 == 13'd4096) ? 1'b1 : 1'b0); + +assign in1_mem_ARADDR = empty_8_fu_3397_p1; + +assign j_fu_3685_p2 = ($signed(32'd1) + $signed(select_ln31_fu_3642_p3)); + +assign out_loc_d1 = (add_ln38_30_reg_6365 + add_ln38_62_fu_4329_p2); + +assign select_ln31_1_fu_3650_p3 = ((icmp_ln33_fu_3637_p2[0:0] === 1'b1) ? i_fu_3631_p2 : ap_phi_mux_i_0_phi_fu_3333_p4); + +assign select_ln31_fu_3642_p3 = ((icmp_ln33_fu_3637_p2[0:0] === 1'b1) ? 32'd0 : j_0_reg_3340); + +assign sext_ln38_fu_3739_p1 = select_ln31_reg_4587; + +assign tmp_cast_fu_3662_p3 = {{trunc_ln38_fu_3658_p1}, {6'd0}}; + +assign trunc_ln27_fu_3447_p1 = phi_ln27_reg_3296[5:0]; + +assign trunc_ln28_fu_3530_p1 = phi_ln28_reg_3307[5:0]; + +assign trunc_ln38_1_fu_3670_p1 = select_ln31_fu_3642_p3[13:0]; + +assign trunc_ln38_fu_3658_p1 = select_ln31_1_fu_3650_p3[7:0]; + +assign zext_ln27_fu_3451_p1 = lshr_ln_reg_4404_pp0_iter1_reg; + +assign zext_ln28_fu_3544_p1 = trunc_ln28_reg_4490_pp1_iter1_reg; + +assign zext_ln31_1_fu_3691_p1 = select_ln31_1_reg_4592; + +assign zext_ln31_fu_3611_p1 = dim_read_reg_4356; + +assign zext_ln38_fu_3680_p1 = add_ln38_64_fu_3674_p2; + +assign zext_ln42_fu_4351_p1 = phi_ln42_reg_3351; + +always @ (posedge ap_clk) begin + out_mem_addr_reg_4383[31:30] <= 2'b00; + in2_mem_addr_reg_4389[31:30] <= 2'b00; + zext_ln31_1_reg_4609[63:31] <= 33'b000000000000000000000000000000000; +end + +endmodule //mmult diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_loc_0.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_loc_0.v new file mode 100755 index 0000000..7a7e881 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_loc_0.v @@ -0,0 +1,68 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_in1_loc_0_ram (addr0, ce0, d0, we0, q0, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 6; +parameter MEM_SIZE = 64; + +input[AWIDTH-1:0] addr0; +input ce0; +input[DWIDTH-1:0] d0; +input we0; +output reg[DWIDTH-1:0] q0; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + if (we0) + ram[addr0] <= d0; + q0 <= ram[addr0]; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_in1_loc_0( + reset, + clk, + address0, + ce0, + we0, + d0, + q0); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd64; +parameter AddressWidth = 32'd6; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +input we0; +input[DataWidth - 1:0] d0; +output[DataWidth - 1:0] q0; + + + +mmult_in1_loc_0_ram mmult_in1_loc_0_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .we0( we0 ), + .d0( d0 ), + .q0( q0 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_mem_m_axi.v new file mode 100755 index 0000000..81f7248 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in1_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in1_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in1_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in1_mem_m_axi_write +mmult_in1_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in1_mem_m_axi_read +mmult_in1_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in1_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in1_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in1_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in1_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in1_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in1_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in1_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in1_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in2_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in2_mem_m_axi.v new file mode 100755 index 0000000..a2eab07 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_in2_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_in2_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_in2_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_in2_mem_m_axi_write +mmult_in2_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_in2_mem_m_axi_read +mmult_in2_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_in2_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_in2_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_in2_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_in2_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_in2_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_in2_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_in2_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_in2_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32ns_32bkb.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32ns_32bkb.v new file mode 100755 index 0000000..1a8090f --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32ns_32bkb.v @@ -0,0 +1,61 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== + +`timescale 1 ns / 1 ps + +module mmult_mul_32ns_32bkb_MulnS_0(clk, ce, a, b, p); +input clk; +input ce; +input[32 - 1 : 0] a; +input[32 - 1 : 0] b; +output[64 - 1 : 0] p; + +reg [32 - 1 : 0] a_reg0; +reg [32 - 1 : 0] b_reg0; +wire [64 - 1 : 0] tmp_product; +reg [64 - 1 : 0] buff0; + +assign p = buff0; +assign tmp_product = a_reg0 * b_reg0; +always @ (posedge clk) begin + if (ce) begin + a_reg0 <= a; + b_reg0 <= b; + buff0 <= tmp_product; + end +end +endmodule +`timescale 1 ns / 1 ps +module mmult_mul_32ns_32bkb( + 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; + + + +mmult_mul_32ns_32bkb_MulnS_0 mmult_mul_32ns_32bkb_MulnS_0_U( + .clk( clk ), + .ce( ce ), + .a( din0 ), + .b( din1 ), + .p( dout )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32s_32scud.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32s_32scud.v new file mode 100755 index 0000000..88ab6f6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_mul_32s_32scud.v @@ -0,0 +1,61 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== + +`timescale 1 ns / 1 ps + +module mmult_mul_32s_32scud_MulnS_1(clk, ce, a, b, p); +input clk; +input ce; +input[32 - 1 : 0] a; +input[32 - 1 : 0] b; +output[32 - 1 : 0] p; + +reg signed [32 - 1 : 0] a_reg0; +reg signed [32 - 1 : 0] b_reg0; +wire signed [32 - 1 : 0] tmp_product; +reg signed [32 - 1 : 0] buff0; + +assign p = buff0; +assign tmp_product = a_reg0 * b_reg0; +always @ (posedge clk) begin + if (ce) begin + a_reg0 <= a; + b_reg0 <= b; + buff0 <= tmp_product; + end +end +endmodule +`timescale 1 ns / 1 ps +module mmult_mul_32s_32scud( + 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; + + + +mmult_mul_32s_32scud_MulnS_1 mmult_mul_32s_32scud_MulnS_1_U( + .clk( clk ), + .ce( ce ), + .a( din0 ), + .b( din1 ), + .p( dout )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_loc.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_loc.v new file mode 100755 index 0000000..9acfd8e --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_loc.v @@ -0,0 +1,83 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1 ns / 1 ps +module mmult_out_loc_ram (addr0, ce0, q0, addr1, ce1, d1, we1, clk); + +parameter DWIDTH = 32; +parameter AWIDTH = 12; +parameter MEM_SIZE = 4096; + +input[AWIDTH-1:0] addr0; +input ce0; +output reg[DWIDTH-1:0] q0; +input[AWIDTH-1:0] addr1; +input ce1; +input[DWIDTH-1:0] d1; +input we1; +input clk; + +(* ram_style = "block" *)reg [DWIDTH-1:0] ram[0:MEM_SIZE-1]; + + + + +always @(posedge clk) +begin + if (ce0) begin + q0 <= ram[addr0]; + end +end + + +always @(posedge clk) +begin + if (ce1) begin + if (we1) + ram[addr1] <= d1; + end +end + + +endmodule + +`timescale 1 ns / 1 ps +module mmult_out_loc( + reset, + clk, + address0, + ce0, + q0, + address1, + ce1, + we1, + d1); + +parameter DataWidth = 32'd32; +parameter AddressRange = 32'd4096; +parameter AddressWidth = 32'd12; +input reset; +input clk; +input[AddressWidth - 1:0] address0; +input ce0; +output[DataWidth - 1:0] q0; +input[AddressWidth - 1:0] address1; +input ce1; +input we1; +input[DataWidth - 1:0] d1; + + + +mmult_out_loc_ram mmult_out_loc_ram_U( + .clk( clk ), + .addr0( address0 ), + .ce0( ce0 ), + .q0( q0 ), + .addr1( address1 ), + .ce1( ce1 ), + .we1( we1 ), + .d1( d1 )); + +endmodule + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_mem_m_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_mem_m_axi.v new file mode 100755 index 0000000..cc472db --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_out_mem_m_axi.v @@ -0,0 +1,2692 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +`default_nettype none + +module mmult_out_mem_m_axi +#(parameter + CONSERVATIVE = 0, + NUM_READ_OUTSTANDING = 2, + NUM_WRITE_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + + // internal bus ports + // write address + input wire [C_M_AXI_ID_WIDTH-1:0] I_AWID, + input wire [USER_AW-1:0] I_AWADDR, + input wire [31:0] I_AWLEN, + input wire [2:0] I_AWSIZE, + input wire [1:0] I_AWBURST, + input wire [1:0] I_AWLOCK, + input wire [3:0] I_AWCACHE, + input wire [2:0] I_AWPROT, + input wire [3:0] I_AWQOS, + input wire [3:0] I_AWREGION, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] I_AWUSER, + input wire I_AWVALID, + output wire I_AWREADY, + // write data + input wire [C_M_AXI_ID_WIDTH-1:0] I_WID, + input wire [USER_DW-1:0] I_WDATA, + input wire I_WLAST, + input wire [USER_DW/8-1:0] I_WSTRB, + input wire [C_M_AXI_WUSER_WIDTH-1:0] I_WUSER, + input wire I_WVALID, + output wire I_WREADY, + // write response + output wire [C_M_AXI_ID_WIDTH-1:0] I_BID, + output wire [1:0] I_BRESP, + output wire [C_M_AXI_BUSER_WIDTH-1:0] I_BUSER, + output wire I_BVALID, + input wire I_BREADY, + // read address + input wire [C_M_AXI_ID_WIDTH-1:0] I_ARID, + input wire [USER_AW-1:0] I_ARADDR, + input wire [31:0] I_ARLEN, + input wire [2:0] I_ARSIZE, + input wire [1:0] I_ARBURST, + input wire [1:0] I_ARLOCK, + input wire [3:0] I_ARCACHE, + input wire [2:0] I_ARPROT, + input wire [3:0] I_ARQOS, + input wire [3:0] I_ARREGION, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] I_ARUSER, + input wire I_ARVALID, + output wire I_ARREADY, + // read data + output wire [C_M_AXI_ID_WIDTH-1:0] I_RID, + output wire [USER_DW-1:0] I_RDATA, + output wire [1:0] I_RRESP, + output wire I_RLAST, + output wire [C_M_AXI_RUSER_WIDTH-1:0] I_RUSER, + output wire I_RVALID, + input wire I_RREADY +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR_Dummy; +wire [7:0] AWLEN_Dummy; +wire AWVALID_Dummy; +wire AWREADY_Dummy; +wire [C_M_AXI_DATA_WIDTH-1:0] WDATA_Dummy; +wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB_Dummy; +wire WLAST_Dummy; +wire WVALID_Dummy; +wire WREADY_Dummy; + +// Write Address channel throttling unit +mmult_out_mem_m_axi_throttl #( + .USED_FIX(0), + .ADDR_WIDTH(C_M_AXI_ADDR_WIDTH), + .DATA_WIDTH(C_M_AXI_DATA_WIDTH), + .DEPTH(MAX_WRITE_BURST_LENGTH), + .USER_MAXREQS(NUM_WRITE_OUTSTANDING), + .CONSERVATIVE(CONSERVATIVE), + .AVERAGE_MODE(0) +) wreq_throttl ( + .clk(ACLK), + .reset(ARESET), + .ce(ACLK_EN), + .in_addr(AWADDR_Dummy), + .in_len(AWLEN_Dummy), + .in_req_valid(AWVALID_Dummy), + .out_req_ready(AWREADY_Dummy), + .out_addr(AWADDR), + .out_len(AWLEN), + .out_req_valid(AWVALID), + .in_req_ready(AWREADY), + .in_data(WDATA_Dummy), + .in_strb(WSTRB_Dummy), + .in_last(WLAST_Dummy), + .in_data_valid(WVALID_Dummy), + .out_data_ready(WREADY_Dummy), + .out_data(WDATA), + .out_strb(WSTRB), + .out_last(WLAST), + .out_data_valid(WVALID), + .in_data_ready(WREADY) +); +// END of write Address channel throttling unit + +assign I_BID = 1'b0; +assign I_BUSER = C_USER_VALUE; +assign I_RID = 1'b0; +assign I_RLAST = 1'b0; +assign I_RUSER = C_USER_VALUE; +//------------------------Instantiation------------------ + +// mmult_out_mem_m_axi_write +mmult_out_mem_m_axi_write #( + .NUM_WRITE_OUTSTANDING ( NUM_WRITE_OUTSTANDING ), + .MAX_WRITE_BURST_LENGTH ( MAX_WRITE_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_AWUSER_WIDTH ( C_M_AXI_AWUSER_WIDTH ), + .C_M_AXI_WUSER_WIDTH ( C_M_AXI_WUSER_WIDTH ), + .C_M_AXI_BUSER_WIDTH ( C_M_AXI_BUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_write ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .AWID ( AWID ), + .AWADDR ( AWADDR_Dummy ), + .AWLEN ( AWLEN_Dummy ), + .AWSIZE ( AWSIZE ), + .AWBURST ( AWBURST ), + .AWLOCK ( AWLOCK ), + .AWCACHE ( AWCACHE ), + .AWPROT ( AWPROT ), + .AWQOS ( AWQOS ), + .AWREGION ( AWREGION ), + .AWUSER ( AWUSER ), + .AWVALID ( AWVALID_Dummy ), + .AWREADY ( AWREADY_Dummy ), + .WID ( WID), + .WDATA ( WDATA_Dummy ), + .WSTRB ( WSTRB_Dummy ), + .WLAST ( WLAST_Dummy ), + .WUSER ( WUSER), + .WVALID ( WVALID_Dummy ), + .WREADY ( WREADY_Dummy ), + .BID ( BID ), + .BRESP ( BRESP ), + .BUSER ( BUSER ), + .BVALID ( BVALID ), + .BREADY ( BREADY ), + .wreq_valid ( I_AWVALID ), + .wreq_ack ( I_AWREADY ), + .wreq_addr ( I_AWADDR ), + .wreq_length ( I_AWLEN ), + .wreq_cache ( I_AWCACHE ), + .wreq_prot ( I_AWPROT ), + .wreq_qos ( I_AWQOS ), + .wreq_region ( I_AWREGION ), + .wreq_user ( I_AWUSER ), + .wdata_valid ( I_WVALID ), + .wdata_ack ( I_WREADY ), + .wdata_strb ( I_WSTRB ), + .wdata_user ( I_WUSER ), + .wdata_data ( I_WDATA ), + .wrsp_valid ( I_BVALID ), + .wrsp_ack ( I_BREADY ), + .wrsp ( I_BRESP ) +); + +// mmult_out_mem_m_axi_read +mmult_out_mem_m_axi_read #( + .NUM_READ_OUTSTANDING ( NUM_READ_OUTSTANDING ), + .MAX_READ_BURST_LENGTH ( MAX_READ_BURST_LENGTH ), + .C_M_AXI_ID_WIDTH ( C_M_AXI_ID_WIDTH ), + .C_M_AXI_ADDR_WIDTH ( C_M_AXI_ADDR_WIDTH ), + .C_TARGET_ADDR ( C_TARGET_ADDR ), + .C_M_AXI_DATA_WIDTH ( C_M_AXI_DATA_WIDTH ), + .C_M_AXI_ARUSER_WIDTH ( C_M_AXI_ARUSER_WIDTH ), + .C_M_AXI_RUSER_WIDTH ( C_M_AXI_RUSER_WIDTH ), + .C_USER_VALUE ( C_USER_VALUE ), + .C_PROT_VALUE ( C_PROT_VALUE ), + .C_CACHE_VALUE ( C_CACHE_VALUE ), + .USER_DW ( USER_DW ), + .USER_AW ( USER_AW ), + .USER_MAXREQS ( USER_MAXREQS ) +) bus_read ( + .ACLK ( ACLK ), + .ARESET ( ARESET ), + .ACLK_EN ( ACLK_EN ), + .ARID ( ARID ), + .ARADDR ( ARADDR ), + .ARLEN ( ARLEN ), + .ARSIZE ( ARSIZE ), + .ARBURST ( ARBURST ), + .ARLOCK ( ARLOCK ), + .ARCACHE ( ARCACHE ), + .ARPROT ( ARPROT ), + .ARQOS ( ARQOS ), + .ARREGION ( ARREGION ), + .ARUSER ( ARUSER ), + .ARVALID ( ARVALID ), + .ARREADY ( ARREADY ), + .RID ( RID ), + .RDATA ( RDATA ), + .RRESP ( RRESP ), + .RLAST ( RLAST ), + .RUSER ( RUSER ), + .RVALID ( RVALID ), + .RREADY ( RREADY ), + .rreq_valid ( I_ARVALID ), + .rreq_ack ( I_ARREADY ), + .rreq_addr ( I_ARADDR ), + .rreq_length ( I_ARLEN ), + .rreq_cache ( I_ARCACHE ), + .rreq_prot ( I_ARPROT ), + .rreq_qos ( I_ARQOS ), + .rreq_region ( I_ARREGION ), + .rreq_user ( I_ARUSER ), + .rdata_valid ( I_RVALID ), + .rdata_ack ( I_RREADY ), + .rdata_data ( I_RDATA ), + .rrsp ( I_RRESP ) +); +endmodule +`default_nettype wire + +module mmult_out_mem_m_axi_reg_slice +#(parameter + N = 8 // data width +) ( + // system signals + input wire sclk, + input wire reset, + // slave side + input wire [N-1:0] s_data, + input wire s_valid, + output wire s_ready, + // master side + output wire [N-1:0] m_data, + output wire m_valid, + input wire m_ready +); +//------------------------Parameter---------------------- +// state +localparam [1:0] + ZERO = 2'b10, + ONE = 2'b11, + TWO = 2'b01; +//------------------------Local signal------------------- +reg [N-1:0] data_p1; +reg [N-1:0] data_p2; +wire load_p1; +wire load_p2; +wire load_p1_from_p2; +reg s_ready_t; +reg [1:0] state; +reg [1:0] next; +//------------------------Body--------------------------- +assign s_ready = s_ready_t; +assign m_data = data_p1; +assign m_valid = state[0]; + +assign load_p1 = (state == ZERO && s_valid) || + (state == ONE && s_valid && m_ready) || + (state == TWO && m_ready); +assign load_p2 = s_valid & s_ready; +assign load_p1_from_p2 = (state == TWO); + +// data_p1 +always @(posedge sclk) begin + if (load_p1) begin + if (load_p1_from_p2) + data_p1 <= data_p2; + else + data_p1 <= s_data; + end +end + +// data_p2 +always @(posedge sclk) begin + if (load_p2) data_p2 <= s_data; +end + +// s_ready_t +always @(posedge sclk) begin + if (reset) + s_ready_t <= 1'b0; + else if (state == ZERO) + s_ready_t <= 1'b1; + else if (state == ONE && next == TWO) + s_ready_t <= 1'b0; + else if (state == TWO && next == ONE) + s_ready_t <= 1'b1; +end + +// state +always @(posedge sclk) begin + if (reset) + state <= ZERO; + else + state <= next; +end + +// next +always @(*) begin + case (state) + ZERO: + if (s_valid & s_ready) + next = ONE; + else + next = ZERO; + ONE: + if (~s_valid & m_ready) + next = ZERO; + else if (s_valid & ~m_ready) + next = TWO; + else + next = ONE; + TWO: + if (m_ready) + next = ONE; + else + next = TWO; + default: + next = ZERO; + endcase +end + +endmodule + +module mmult_out_mem_m_axi_fifo +#(parameter + DATA_BITS = 8, + DEPTH = 16, + DEPTH_BITS = 4 +)( + input wire sclk, + input wire reset, + input wire sclk_en, + output reg empty_n, + output reg full_n, + input wire rdreq, + input wire wrreq, + output reg [DATA_BITS-1:0] q, + input wire [DATA_BITS-1:0] data +); +//------------------------Parameter---------------------- + +//------------------------Local signal------------------- +wire push; +wire pop; +wire full_cond; +reg data_vld; +reg [DEPTH_BITS-1:0] pout; +reg [DATA_BITS-1:0] mem[0:DEPTH-1]; +//------------------------Body--------------------------- +assign push = full_n & wrreq; +assign pop = data_vld & (~(empty_n & ~rdreq)); +if (DEPTH >= 2) begin +assign full_cond = push && ~pop && pout == DEPTH - 2 && data_vld; +end else begin +assign full_cond = push && ~pop; +end + +// q +always @(posedge sclk) +begin + if (reset) + q <= 0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + q <= mem[pout]; + end +end + +// empty_n +always @(posedge sclk) +begin + if (reset) + empty_n <= 1'b0; + else if (sclk_en) begin + if (~(empty_n & ~rdreq)) + empty_n <= data_vld; + end +end + +// data_vld +always @(posedge sclk) +begin + if (reset) + data_vld <= 1'b0; + else if (sclk_en) begin + if (push) + data_vld <= 1'b1; + else if (~push && pop && pout == 1'b0) + data_vld <= 1'b0; + end +end + +// full_n +always @(posedge sclk) +begin + if (reset) + full_n <= 1'b1; + else if (sclk_en) begin + if (pop) + full_n <= 1'b1; + else if (full_cond) + full_n <= 1'b0; + end +end + +// pout +always @(posedge sclk) +begin + if (reset) + pout <= 1'b0; + else if (sclk_en) begin + if (push & ~pop & data_vld) + pout <= pout + 1'b1; + else if (~push && pop && pout != 1'b0) + pout <= pout - 1'b1; + end +end + +integer i; +always @(posedge sclk) +begin + if (sclk_en) begin + if (push) begin + for (i = 0; i < DEPTH - 1; i = i + 1) begin + mem[i+1] <= mem[i]; + end + mem[0] <= data; + end + end +end +endmodule + +module mmult_out_mem_m_axi_buffer +#(parameter + MEM_STYLE = "block", + DATA_WIDTH = 32, + ADDR_WIDTH = 5, + DEPTH = 32 +) ( + // system signal + input wire clk, + input wire reset, + input wire sclk_en, + + // 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---------------------- + +//------------------------Local signal------------------- +(* ram_style = MEM_STYLE *) +reg [DATA_WIDTH-1:0] mem[0:DEPTH-1]; +reg [DATA_WIDTH-1:0] q_buf = 1'b0; +reg [ADDR_WIDTH-1:0] waddr = 1'b0; +reg [ADDR_WIDTH-1:0] raddr = 1'b0; +wire [ADDR_WIDTH-1:0] wnext; +wire [ADDR_WIDTH-1:0] rnext; +wire push; +wire pop; +reg [ADDR_WIDTH-1:0] usedw = 1'b0; +reg full_n = 1'b1; +reg empty_n = 1'b0; +reg [DATA_WIDTH-1:0] q_tmp = 1'b0; +reg show_ahead = 1'b0; +reg [DATA_WIDTH-1:0] dout_buf = 1'b0; +reg dout_valid = 1'b0; + + +//------------------------Instantiation------------------ + +//------------------------Task and function-------------- + +//------------------------Body--------------------------- +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 == DEPTH - 1) ? 1'b0 : + waddr + 1'b1; +assign rnext = !pop ? raddr : + (raddr == DEPTH - 1) ? 1'b0 : + raddr + 1'b1; + +// waddr +always @(posedge clk) begin + if (reset == 1'b1) + waddr <= 1'b0; + else if (sclk_en) + waddr <= wnext; +end + +// raddr +always @(posedge clk) begin + if (reset == 1'b1) + raddr <= 1'b0; + else if (sclk_en) + raddr <= rnext; +end + +// usedw +always @(posedge clk) begin + if (reset == 1'b1) + usedw <= 1'b0; + else if (sclk_en) + if (push & ~pop) + usedw <= usedw + 1'b1; + else if (~push & pop) + usedw <= usedw - 1'b1; +end + +// full_n +always @(posedge clk) begin + if (reset == 1'b1) + full_n <= 1'b1; + else if (sclk_en) + if (push & ~pop) + full_n <= (usedw != DEPTH - 1); + else if (~push & pop) + full_n <= 1'b1; +end + +// empty_n +always @(posedge clk) begin + if (reset == 1'b1) + empty_n <= 1'b0; + else if (sclk_en) + if (push & ~pop) + empty_n <= 1'b1; + else if (~push & pop) + empty_n <= (usedw != 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 == 1'b1) + q_tmp <= 1'b0; + else if (sclk_en) + if (push) + q_tmp <= if_din; +end + +// show_ahead +always @(posedge clk) begin + if (reset == 1'b1) + show_ahead <= 1'b0; + else if (sclk_en) + if (push && usedw == pop) + show_ahead <= 1'b1; + else + show_ahead <= 1'b0; +end + +// dout_buf +always @(posedge clk) begin + if (reset == 1'b1) + dout_buf <= 1'b0; + else if (sclk_en) + if (pop) + dout_buf <= show_ahead? q_tmp : q_buf; +end + +// dout_valid +always @(posedge clk) begin + if (reset == 1'b1) + dout_valid <= 1'b0; + else if (sclk_en) + if (pop) + dout_valid <= 1'b1; + else if (if_read_ce & if_read) + dout_valid <= 1'b0; +end + +endmodule +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_decoder +#(parameter + DIN_WIDTH = 3 +)( + input wire [DIN_WIDTH-1:0] din, + output reg [2**DIN_WIDTH-1:0] dout +); + integer i; + always @(din) begin + dout = {2**DIN_WIDTH{1'b0}}; + for (i=0; i < din; i = i + 1) + dout[i] = 1'b1; + end +endmodule + + +module mmult_out_mem_m_axi_throttl +#(parameter + USED_FIX = 0, + FIX_VALUE = 4, + ADDR_WIDTH = 32, + DATA_WIDTH = 32, + DEPTH = 16, + USER_MAXREQS = 16, + CONSERVATIVE = 0, + AVERAGE_MODE = 0 +)( + input wire clk, + input wire reset, + input wire ce, + input wire [ADDR_WIDTH-1:0] in_addr, + input wire [7:0] in_len, + input wire in_req_valid, + output wire out_req_ready, + output wire [ADDR_WIDTH-1:0] out_addr, + output wire [7:0] out_len, + output wire out_req_valid, + input wire in_req_ready, + input wire [DATA_WIDTH-1:0] in_data, + input wire [DATA_WIDTH/8-1:0] in_strb, + input wire in_last, + input wire in_data_valid, + output wire out_data_ready, + output wire [DATA_WIDTH-1:0] out_data, + output wire [DATA_WIDTH/8-1:0] out_strb, + output wire out_last, + output wire out_data_valid, + input wire in_data_ready +); + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +generate +if (CONSERVATIVE == 0) begin +localparam threshold = (USED_FIX)? FIX_VALUE-1 : 0; + +wire req_en; +wire handshake; +wire [7:0] load_init; +reg [7:0] throttl_cnt; + +// AW Channel +assign out_addr = in_addr; +assign out_len = in_len; + +// W Channel +assign out_data = in_data; +assign out_strb = in_strb; +assign out_last = in_last; +assign out_data_valid = in_data_valid; +assign out_data_ready = in_data_ready; + +if (USED_FIX) begin + assign load_init = FIX_VALUE-1; + assign handshake = 1'b1; +end else if (AVERAGE_MODE) begin + assign load_init = in_len; + assign handshake = 1'b1; +end else begin + assign load_init = in_len; + assign handshake = out_data_valid & in_data_ready; +end + +assign out_req_valid = in_req_valid & req_en; +assign out_req_ready = in_req_ready & req_en; +assign req_en = (throttl_cnt == 0); + +always @(posedge clk) +begin + if (reset) + throttl_cnt <= 0; + else if (ce) begin + if (in_len > threshold && throttl_cnt == 0 && in_req_valid && in_req_ready) + throttl_cnt <= load_init; //load + else if (throttl_cnt > 0 && handshake) + throttl_cnt <= throttl_cnt - 1'b1; + end +end + +end // AGGRESSIVE end +else begin +localparam CNT_WIDTH = (DEPTH < 4)? 2 : log2(DEPTH); + +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_in; +wire [DATA_WIDTH + DATA_WIDTH/8 : 0] data_out; +wire [ADDR_WIDTH + 7 : 0] req_in; +wire [ADDR_WIDTH + 7 : 0] req_out; +wire req_en; +wire data_en; +wire fifo_valid; +wire read_fifo; +wire req_fifo_valid; +wire read_req; +wire data_push; +wire data_pop; +reg flying_req; +reg [CNT_WIDTH-1 : 0] last_cnt; + +//AW Channel +assign req_in = {in_len, in_addr}; +assign out_addr = req_out[ADDR_WIDTH-1 : 0]; +assign out_len = req_out[ADDR_WIDTH+7 : ADDR_WIDTH]; +assign out_req_valid = req_fifo_valid & req_en; + +assign req_en = ~flying_req & data_en || (flying_req & (out_last & data_pop) & (last_cnt[CNT_WIDTH-1:1] != 0)); +assign read_req = in_req_ready & req_en; + +always @(posedge clk) +begin + if (reset) + flying_req <= 0; + else if (ce) begin + if (out_req_valid & in_req_ready) + flying_req <= 1; + else if (out_last & data_pop) + flying_req <= 0; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(ADDR_WIDTH + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) +) req_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(req_fifo_valid), + .full_n(out_req_ready), + .rdreq(read_req), + .wrreq(in_req_valid), + .q(req_out), + .data(req_in)); + +//W Channel +assign data_in = {in_last, in_strb, in_data}; +assign out_data = data_out[DATA_WIDTH-1 : 0]; +assign out_strb = data_out[DATA_WIDTH+DATA_WIDTH/8-1 : DATA_WIDTH]; +assign out_last = data_out[DATA_WIDTH+DATA_WIDTH/8]; +assign out_data_valid = fifo_valid & data_en & flying_req; + +assign data_en = last_cnt != 0; +assign data_push = in_data_valid & out_data_ready; +assign data_pop = fifo_valid & read_fifo; +assign read_fifo = in_data_ready & data_en & flying_req; + +always @(posedge clk) +begin + if (reset) + last_cnt <= 0; + else if (ce) begin + if ((in_last & data_push) && ~(out_last & data_pop)) + last_cnt <= last_cnt + 1; + else if (~(in_last & data_push) && (out_last & data_pop)) + last_cnt <= last_cnt - 1; + end +end + +mmult_out_mem_m_axi_fifo #( + .DATA_BITS(DATA_WIDTH + DATA_WIDTH/8 + 1), + .DEPTH(DEPTH), + .DEPTH_BITS(log2(DEPTH)) +) data_fifo ( + .sclk(clk), + .reset(reset), + .sclk_en(ce), + .empty_n(fifo_valid), + .full_n(out_data_ready), + .rdreq(read_fifo), + .wrreq(in_data_valid), + .q(data_out), + .data(data_in)); + +end +endgenerate + +endmodule + +`timescale 1ns/1ps + +module mmult_out_mem_m_axi_read +#(parameter + NUM_READ_OUTSTANDING = 2, + MAX_READ_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_ARUSER_WIDTH = 1, + C_M_AXI_RUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // read address channel + output wire [C_M_AXI_ID_WIDTH-1:0] ARID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] ARADDR, + output wire [7:0] ARLEN, + output wire [2:0] ARSIZE, + output wire [1:0] ARBURST, + output wire [1:0] ARLOCK, + output wire [3:0] ARCACHE, + output wire [2:0] ARPROT, + output wire [3:0] ARQOS, + output wire [3:0] ARREGION, + output wire [C_M_AXI_ARUSER_WIDTH-1:0] ARUSER, + output wire ARVALID, + input wire ARREADY, + // read data channel + input wire [C_M_AXI_ID_WIDTH-1:0] RID, + input wire [C_M_AXI_DATA_WIDTH-1:0] RDATA, + input wire [1:0] RRESP, + input wire RLAST, + input wire [C_M_AXI_RUSER_WIDTH-1:0] RUSER, + input wire RVALID, + output wire RREADY, + // read + input wire rreq_valid, + output wire rreq_ack, + input wire [USER_AW-1:0] rreq_addr, + input wire [31:0] rreq_length, + input wire [3:0] rreq_cache, + input wire [2:0] rreq_prot, + input wire [3:0] rreq_qos, + input wire [3:0] rreq_region, + input wire [C_M_AXI_ARUSER_WIDTH-1:0] rreq_user, + output wire [USER_DW-1:0] rdata_data, + output wire [1:0] rrsp, + output wire rdata_valid, + input wire rdata_ack +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_READ_WIDTH = log2(MAX_READ_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AR channel + wire [USER_AW + 31:0] rreq_data; + wire [USER_AW + 31:0] rs2f_rreq_data; + wire rs2f_rreq_valid; + wire rs2f_rreq_ack; + wire [USER_AW + 31:0] fifo_rreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] arlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] araddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire [1:0] ar2r_ardata; + wire fifo_rctl_r; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_rreq_valid; + reg fifo_rreq_valid_buf; + wire fifo_rreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg ARVALID_Dummy; + wire ready_for_sect; + wire next_rreq; + wire ready_for_rreq; + reg rreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // R channel + wire [BUS_DATA_WIDTH + 2:0] fifo_rresp_rdata; + wire [BUS_DATA_WIDTH + 2:0] data_pack; + wire [BUS_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DW + 1:0] rs_rrsp_rdata; + wire [USER_DW + 1:0] rdata_data_pack; + reg [7:0] len_cnt; + wire [1:0] ar2r_rdata; + wire [1:0] tmp_resp; + reg [1:0] resp_buf; + wire tmp_last; + wire tmp_last_2; + wire need_rlast; + wire fifo_rctl_ready; + wire beat_valid; + wire next_beat; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire rdata_ack_t; + reg rdata_valid_t; + +//------------------------AR channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_rreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rreq_data), + .s_valid(rreq_valid), + .s_ready(rreq_ack), + .m_data(rs2f_rreq_data), + .m_valid(rs2f_rreq_valid), + .m_ready(rs2f_rreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_rreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_rreq_ack), + .wrreq(rs2f_rreq_valid), + .data(rs2f_rreq_data), + .empty_n(fifo_rreq_valid), + .rdreq(fifo_rreq_read), + .q(fifo_rreq_data)); + +//------------------------Body--------------------------- + assign rreq_data = {rreq_length, rreq_addr}; + assign tmp_addr = fifo_rreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_rreq_data[USER_AW + 31:USER_AW]; + assign end_addr = start_addr + align_len; + + assign zero_len_event = fifo_rreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_rreq_valid? tmp_len[31] : 0; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_rreq_valid && ready_for_rreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_rreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + fifo_rreq_valid_buf <= fifo_rreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if((fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_rreq = (fifo_rreq_valid || fifo_rreq_valid_buf) && ready_for_rreq; + assign ready_for_rreq = ~(rreq_handling && ~(last_sect && next_sect)); + assign fifo_rreq_read = next_rreq; + + always @(posedge ACLK) + begin + if (ARESET) + rreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_rreq_valid_buf && ~rreq_handling && ~invalid_len_event) + rreq_handling <= 1'b1; + else if ((~fifo_rreq_valid_buf || invalid_len_event) && last_sect && next_sect) + rreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_rreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_rreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_rreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = rreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign ARID = 0; + assign ARSIZE = BUS_ADDR_ALIGN; + assign ARBURST = 2'b01; + assign ARLOCK = 2'b00; + assign ARCACHE = C_CACHE_VALUE; + assign ARPROT = C_PROT_VALUE; + assign ARUSER = C_USER_VALUE; + assign ARQOS = rreq_qos; + assign ARREGION = rreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) begin : must_one_burst + assign ARADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign ARLEN = sect_len_buf; + assign ARVALID = ARVALID_Dummy; + + assign ready_for_sect = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + ARVALID_Dummy <= 1'b0; + else if (next_sect) + ARVALID_Dummy <= 1'b1; + else if (~next_sect && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_sect; + assign ar2r_ardata = {last_sect, 1'b0}; + + assign fifo_burst_w = next_sect; + assign araddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign arlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] araddr_buf; + reg [7:0] arlen_buf; + reg [11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN:0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign ARADDR = araddr_buf; + assign ARLEN = arlen_buf; + assign ARVALID = ARVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_READ_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(ARVALID_Dummy && ~ARREADY) && fifo_burst_ready && fifo_rctl_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (rreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~rreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign araddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (araddr_buf + ((arlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + araddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + araddr_buf <= {araddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign arlen_tmp = (last_loop)? sect_len_buf[NUM_READ_WIDTH - 1:0] : { NUM_READ_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + arlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + arlen_buf <= arlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + ARVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + ARVALID_Dummy <= 1'b0; + else if (next_loop) + ARVALID_Dummy <= 1'b1; + else if (~next_loop && ARREADY) + ARVALID_Dummy <= 1'b0; + end + end + + assign fifo_rctl_r = next_loop; + assign ar2r_ardata = {last_loop, 1'b0}; + + assign fifo_burst_w = next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AR channel end----------------- + +//------------------------R channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(BUS_DATA_WIDTH + 3), + .DEPTH(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + ) buff_rdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(RREADY), + .if_write_ce(1'b1), + .if_write(RVALID), + .if_din(fifo_rresp_rdata), + .if_empty_n(beat_valid), + .if_read_ce(1'b1), + .if_read(next_beat), + .if_dout(data_pack)); + + mmult_out_mem_m_axi_reg_slice #( + .N(USER_DW + 2) + ) rs_rdata ( + .sclk(ACLK), + .reset(ARESET), + .s_data(rs_rrsp_rdata), + .s_valid(rdata_valid_t), + .s_ready(rdata_ack_t), + .m_data(rdata_data_pack), + .m_valid(rdata_valid), + .m_ready(rdata_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_READ_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_READ_OUTSTANDING-1)) + ) fifo_rctl ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_rlast), + .full_n(fifo_rctl_ready), + .rdreq(tmp_last_2), + .wrreq(fifo_rctl_r), + .q(ar2r_rdata), + .data(ar2r_ardata)); + + assign fifo_rresp_rdata = {RLAST, RRESP, RDATA}; + assign tmp_data = data_pack[BUS_DATA_WIDTH - 1:0]; + assign tmp_resp = data_pack[BUS_DATA_WIDTH + 1:BUS_DATA_WIDTH]; + assign tmp_last = data_pack[BUS_DATA_WIDTH + 2] && beat_valid; + assign tmp_last_2 = tmp_last && next_beat; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire ready_for_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = beat_valid && ready_for_data; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_beat) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 1'b0; + else if (ACLK_EN) begin + if (next_beat) + rdata_valid_t <= 1'b1; + else if (ready_for_data) + rdata_valid_t <= 1'b0; + end + end + end + else if (USER_DATA_WIDTH < BUS_DATA_WIDTH) begin : bus_wide_gen + localparam + TOTAL_SPLIT = BUS_DATA_WIDTH / USER_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + wire [2*SPLIT_ALIGN + 7:0] tmp_burst_info; + wire [2*SPLIT_ALIGN + 7:0] burst_pack; + reg [BUS_DATA_WIDTH - 1:0] data_buf; + wire [SPLIT_ALIGN - 1:0] split_cnt; + reg [SPLIT_ALIGN - 1:0] split_cnt_buf; + wire [SPLIT_ALIGN - 1:0] head_split; + wire [SPLIT_ALIGN - 1:0] tail_split; + wire [7:0] arlen_tmp_t; + wire [7:0] burst_len; + wire first_beat; + wire last_beat; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2*SPLIT_ALIGN + 8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign arlen_tmp_t = arlen_tmp; + assign tmp_burst_info = {araddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], arlen_tmp_t}; + assign head_split = burst_pack[2*SPLIT_ALIGN + 7:8 + SPLIT_ALIGN]; + assign tail_split = burst_pack[SPLIT_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_beat = last_split; + assign next_burst = last_beat && last_split; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign first_beat = (len_cnt == 0) && burst_valid && beat_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid && beat_valid; + + assign first_split = (~first_beat)? (split_cnt == 0 && beat_valid && ready_for_data) : ((split_cnt == head_split) && ready_for_data); + assign last_split = (~last_beat)? (split_cnt == (TOTAL_SPLIT - 1) && ready_for_data) : ((split_cnt == tail_split) && ready_for_data); + assign next_split = (~first_beat)? ((split_cnt != 0) && ready_for_data) : ((split_cnt != head_split) && ready_for_data); + + assign split_cnt = (first_beat && (split_cnt_buf == 0))? head_split : split_cnt_buf; + always @(posedge ACLK) + begin + if (ARESET) + split_cnt_buf <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt_buf <= 0; + else if (first_split || next_split) + split_cnt_buf <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (last_beat && last_split) + len_cnt <= 0; + else if (last_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (first_split && first_beat) + data_buf <= tmp_data >> (head_split * USER_DATA_WIDTH); + else if (first_split) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> USER_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (first_split) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (first_split) + rdata_valid_t <= 1; + else if (~(first_split || next_split) && ready_for_data) + rdata_valid_t <= 0; + end + end + + end + else begin: bus_narrow_gen + localparam + TOTAL_PADS = USER_DATA_WIDTH / BUS_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire next_data; + + assign rs_rrsp_rdata = {resp_buf, data_buf[USER_DW - 1:0]}; + assign rrsp = rdata_data_pack[USER_DW + 1:USER_DW]; + assign rdata_data = rdata_data_pack[USER_DW - 1:0]; + + assign fifo_burst_ready = 1'b1; + assign next_beat = next_pad; + assign ready_for_data = ~(rdata_valid_t && ~rdata_ack_t); + + assign next_pad = beat_valid && ready_for_data; + assign last_pad = pad_oh[TOTAL_PADS - 1]; + assign next_data = last_pad && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (beat_valid == 0)? 0 : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*BUS_DATA_WIDTH - 1:(i-1)*BUS_DATA_WIDTH] <= tmp_data; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + resp_buf <= 2'b00; + else if (ACLK_EN) begin + if (next_beat && (resp_buf[0] ==1'b0)) + resp_buf <= tmp_resp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + rdata_valid_t <= 0; + else if (ACLK_EN) begin + if (next_data) + rdata_valid_t <= 1; + else if (ready_for_data) + rdata_valid_t <= 0; + end + end + end + endgenerate + +//------------------------Body--------------------------- +//------------------------R channel end------------------ +endmodule + +module mmult_out_mem_m_axi_write +#(parameter + NUM_WRITE_OUTSTANDING = 2, + MAX_WRITE_BURST_LENGTH = 16, + C_M_AXI_ID_WIDTH = 1, + C_M_AXI_ADDR_WIDTH = 32, + C_TARGET_ADDR = 32'h00000000, + C_M_AXI_DATA_WIDTH = 32, + C_M_AXI_AWUSER_WIDTH = 1, + C_M_AXI_WUSER_WIDTH = 1, + C_M_AXI_BUSER_WIDTH = 1, + C_USER_VALUE = 1'b0, + C_PROT_VALUE = 3'b000, + C_CACHE_VALUE = 4'b0011, + USER_DW = 16, + USER_AW = 32, + USER_MAXREQS = 16 +)( + // system signal + input wire ACLK, + input wire ARESET, + input wire ACLK_EN, + // write address channel + output wire [C_M_AXI_ID_WIDTH-1:0] AWID, + output wire [C_M_AXI_ADDR_WIDTH-1:0] AWADDR, + output wire [7:0] AWLEN, + output wire [2:0] AWSIZE, + output wire [1:0] AWBURST, + output wire [1:0] AWLOCK, + output wire [3:0] AWCACHE, + output wire [2:0] AWPROT, + output wire [3:0] AWQOS, + output wire [3:0] AWREGION, + output wire [C_M_AXI_AWUSER_WIDTH-1:0] AWUSER, + output wire AWVALID, + input wire AWREADY, + // write data channel + output wire [C_M_AXI_ID_WIDTH-1:0] WID, + output wire [C_M_AXI_DATA_WIDTH-1:0] WDATA, + output wire [C_M_AXI_DATA_WIDTH/8-1:0] WSTRB, + output wire WLAST, + output wire [C_M_AXI_WUSER_WIDTH-1:0] WUSER, + output wire WVALID, + input wire WREADY, + // write response channel + input wire [C_M_AXI_ID_WIDTH-1:0] BID, + input wire [1:0] BRESP, + input wire [C_M_AXI_BUSER_WIDTH-1:0] BUSER, + input wire BVALID, + output wire BREADY, + // write request + input wire wreq_valid, + output wire wreq_ack, + input wire [USER_AW-1:0] wreq_addr, + input wire [31:0] wreq_length, + input wire [3:0] wreq_cache, + input wire [2:0] wreq_prot, + input wire [3:0] wreq_qos, + input wire [3:0] wreq_region, + input wire [C_M_AXI_AWUSER_WIDTH-1:0] wreq_user, + input wire wdata_valid, + output wire wdata_ack, + input wire [USER_DW/8-1:0] wdata_strb, + input wire [C_M_AXI_WUSER_WIDTH-1:0] wdata_user, + input wire [USER_DW-1:0] wdata_data, + output wire wrsp_valid, + input wire wrsp_ack, + output wire [1:0] wrsp +); + +//------------------------Parameter---------------------- +localparam + USER_DATA_WIDTH = calc_data_width(USER_DW), + USER_DATA_BYTES = USER_DATA_WIDTH / 8, + USER_ADDR_ALIGN = log2(USER_DATA_BYTES), + BUS_DATA_WIDTH = C_M_AXI_DATA_WIDTH, + BUS_DATA_BYTES = BUS_DATA_WIDTH / 8, + BUS_ADDR_ALIGN = log2(BUS_DATA_BYTES), + NUM_WRITE_WIDTH = log2(MAX_WRITE_BURST_LENGTH), + TARGET_ADDR = C_TARGET_ADDR & (32'hffffffff << USER_ADDR_ALIGN), + BOUNDARY_BEATS = {12-BUS_ADDR_ALIGN{1'b1}}; + +//------------------------Task and function-------------- +function integer calc_data_width; + input integer x; + integer y; +begin + y = 8; + while (y < x) y = y * 2; + calc_data_width = y; +end +endfunction + +function integer log2; + input integer x; + integer n, m; +begin + n = 0; + m = 1; + while (m < x) begin + n = n + 1; + m = m * 2; + end + log2 = n; +end +endfunction + +//------------------------Local signal------------------- + // AW channel + wire [USER_AW + 31:0] wreq_data; + wire [USER_AW + 31:0] rs2f_wreq_data; + wire rs2f_wreq_valid; + wire rs2f_wreq_ack; + wire [USER_AW + 31:0] fifo_wreq_data; + wire [USER_AW - 1:0] tmp_addr; + wire [31:0] tmp_len; + reg [31:0] align_len; + wire [7:0] awlen_tmp; + wire [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_tmp; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] start_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] end_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] end_addr_buf; + wire [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr; + reg [C_M_AXI_ADDR_WIDTH - 1:0] sect_addr_buf; + wire [BUS_ADDR_ALIGN - 1:0] sect_end; + reg [BUS_ADDR_ALIGN - 1:0] sect_end_buf; + wire [BUS_ADDR_ALIGN - 1:0] burst_end; + wire [11 - BUS_ADDR_ALIGN:0] start_to_4k; + wire [11 - BUS_ADDR_ALIGN:0] sect_len; + reg [11 - BUS_ADDR_ALIGN:0] sect_len_buf; + reg [11 - BUS_ADDR_ALIGN:0] beat_len_buf; + wire [1:0] aw2b_awdata; + reg [C_M_AXI_ADDR_WIDTH - 13:0] sect_cnt; + wire zero_len_event; + wire negative_len_event; + reg invalid_len_event; + reg invalid_len_event_reg1; + reg invalid_len_event_reg2; + wire fifo_wreq_valid; + reg fifo_wreq_valid_buf; + wire fifo_wreq_read; + wire fifo_burst_w; + wire fifo_resp_w; + reg AWVALID_Dummy; + reg last_sect_buf; + wire ready_for_sect; + wire next_wreq; + wire ready_for_wreq; + reg wreq_handling; + wire first_sect; + wire last_sect; + wire next_sect; + // W channel + wire [USER_DW + USER_DW/8 - 1:0] fifo_wdata_wstrb; + wire [USER_DW + USER_DW/8 - 1:0] data_pack; + wire [USER_DATA_WIDTH - 1:0] tmp_data; + wire [USER_DATA_BYTES - 1:0] tmp_strb; + reg [7:0] len_cnt; + wire [7:0] burst_len; + wire beat_valid; + wire next_data; + wire burst_valid; + wire fifo_burst_ready; + wire next_burst; + wire data_valid; + reg WVALID_Dummy; + reg WLAST_Dummy; + //B channel + wire [1:0] aw2b_bdata; + reg [1:0] bresp_tmp; + reg next_resp; + wire last_resp; + wire invalid_event; + wire fifo_resp_ready; + wire need_wrsp; + wire resp_match; + wire resp_ready; + +//------------------------AW channel begin--------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_reg_slice #( + .N(USER_AW + 32) + ) rs_wreq ( + .sclk(ACLK), + .reset(ARESET), + .s_data(wreq_data), + .s_valid(wreq_valid), + .s_ready(wreq_ack), + .m_data(rs2f_wreq_data), + .m_valid(rs2f_wreq_valid), + .m_ready(rs2f_wreq_ack)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(USER_AW + 32), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_wreq ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .full_n(rs2f_wreq_ack), + .wrreq(rs2f_wreq_valid), + .data(rs2f_wreq_data), + .empty_n(fifo_wreq_valid), + .rdreq(fifo_wreq_read), + .q(fifo_wreq_data)); + +//------------------------Body--------------------------- + assign wreq_data = {wreq_length, wreq_addr}; + assign tmp_addr = fifo_wreq_data[USER_AW - 1:0]; + assign tmp_len = fifo_wreq_data[USER_AW + 31:USER_AW]; + + assign zero_len_event = fifo_wreq_valid? (tmp_len == 32'b0) : 0; + assign negative_len_event = fifo_wreq_valid? tmp_len[31] : 0; + + assign end_addr = start_addr + align_len; + + always @(posedge ACLK) + begin + if (ARESET) + align_len <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) begin + if (zero_len_event || negative_len_event) + align_len <= 32'b0; + else + align_len <= (tmp_len << USER_ADDR_ALIGN) - 1; + end + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr <= 0; + else if (ACLK_EN) begin + if(fifo_wreq_valid && ready_for_wreq) + start_addr <= TARGET_ADDR + (tmp_addr << USER_ADDR_ALIGN); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + fifo_wreq_valid_buf <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + fifo_wreq_valid_buf <= fifo_wreq_valid; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event <= 1'b0; + else if (ACLK_EN) begin + if(next_wreq) + invalid_len_event <= zero_len_event || negative_len_event; + end + end + + assign next_wreq = (fifo_wreq_valid || fifo_wreq_valid_buf) && ready_for_wreq; + assign ready_for_wreq = ~(wreq_handling && ~(last_sect && next_sect)); + assign fifo_wreq_read = next_wreq; + + always @(posedge ACLK) + begin + if (ARESET) + wreq_handling <= 1'b0; + else if (ACLK_EN) begin + if (fifo_wreq_valid_buf && ~wreq_handling) + wreq_handling <= 1'b1; + else if (~fifo_wreq_valid_buf && last_sect && next_sect) + wreq_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + start_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + start_addr_buf <= start_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + end_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + end_addr_buf <= end_addr; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + beat_len_buf <= 0; + else if (ACLK_EN) begin + if (next_wreq) + beat_len_buf <= (align_len[11:0] + start_addr[BUS_ADDR_ALIGN-1:0]) >> BUS_ADDR_ALIGN; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + sect_cnt <= 0; + else if (ACLK_EN) begin + if (next_wreq) + sect_cnt <= start_addr[C_M_AXI_ADDR_WIDTH-1:12]; + else if (next_sect) + sect_cnt <= sect_cnt + 1; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg1 <= 0; + else if (ACLK_EN) begin + if (next_wreq) begin + invalid_len_event_reg1 <= invalid_len_event; + end + end + end + // end event registers + + assign first_sect = (sect_cnt == start_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign last_sect = (sect_cnt == end_addr_buf[C_M_AXI_ADDR_WIDTH-1:12]); + assign next_sect = wreq_handling && ready_for_sect; + + assign sect_addr = (first_sect)? start_addr_buf : {sect_cnt, {12{1'b0}}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_addr_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_addr_buf <= sect_addr; + end + end + + assign start_to_4k = BOUNDARY_BEATS - start_addr_buf[11:BUS_ADDR_ALIGN]; + assign sect_len = ( first_sect && last_sect)? beat_len_buf : + ( first_sect && ~last_sect)? start_to_4k: + (~first_sect && last_sect)? end_addr_buf[11:BUS_ADDR_ALIGN] : + BOUNDARY_BEATS; + + always @(posedge ACLK) + begin + if (ARESET) + sect_len_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_len_buf <= sect_len; + end + end + + assign sect_end = (last_sect)? end_addr_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + always @(posedge ACLK) + begin + if (ARESET) + sect_end_buf <= 0; + else if (ACLK_EN) begin + if (next_sect) + sect_end_buf <= sect_end; + end + end + + // event registers + always @(posedge ACLK) + begin + if (ARESET) + invalid_len_event_reg2 <= 0; + else if (ACLK_EN) begin + if(next_sect) begin + invalid_len_event_reg2 <= invalid_len_event_reg1; + end + end + end + // end event registers + + assign AWID = 0; + assign AWSIZE = BUS_ADDR_ALIGN; + assign AWBURST = 2'b01; + assign AWLOCK = 2'b00; + assign AWCACHE = C_CACHE_VALUE; + assign AWPROT = C_PROT_VALUE; + assign AWUSER = C_USER_VALUE; + assign AWQOS = wreq_qos; + assign AWREGION = wreq_region; + + generate + if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) begin : must_one_burst + assign AWADDR = {sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + assign AWLEN = sect_len_buf; + assign AWVALID = AWVALID_Dummy; + + assign ready_for_sect = ~(AWVALID_Dummy && ~AWREADY) && fifo_burst_ready && fifo_resp_ready; + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_sect && invalid_len_event_reg1) + AWVALID_Dummy <= 1'b0; + else if (next_sect) + AWVALID_Dummy <= 1'b1; + else if (~next_sect && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_sect; + assign aw2b_awdata = {last_sect, invalid_len_event_reg1}; + + assign fifo_burst_w = ~invalid_len_event_reg1 & next_sect; + assign awaddr_tmp = sect_addr[C_M_AXI_ADDR_WIDTH - 1:0]; + assign awlen_tmp = sect_len; + assign burst_end = sect_end; + end + else begin : could_multi_bursts + reg [C_M_AXI_ADDR_WIDTH - 1:0] awaddr_buf; + reg [7:0] awlen_buf; + reg [11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN : 0] loop_cnt; + reg sect_handling; + wire last_loop; + wire next_loop; + wire ready_for_loop; + + assign AWADDR = awaddr_buf; + assign AWLEN = awlen_buf; + assign AWVALID = AWVALID_Dummy; + + assign last_loop = (loop_cnt == sect_len_buf[11 - BUS_ADDR_ALIGN : NUM_WRITE_WIDTH]); + assign next_loop = sect_handling && ready_for_loop; + assign ready_for_loop = ~(AWVALID_Dummy && ~AWREADY) && fifo_resp_ready && fifo_burst_ready; + assign ready_for_sect = ~(sect_handling && ~(last_loop && next_loop)); + + always @(posedge ACLK) + begin + if (ARESET) + sect_handling <= 1'b0; + else if (ACLK_EN) begin + if (wreq_handling && ~sect_handling) + sect_handling <= 1'b1; + else if (~wreq_handling && last_loop && next_loop) + sect_handling <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + loop_cnt <= 0; + else if (ACLK_EN) begin + if (next_sect) + loop_cnt <= 0; + else if (next_loop) + loop_cnt <= loop_cnt + 1; + end + end + + assign awaddr_tmp = (loop_cnt == 0)? sect_addr_buf[C_M_AXI_ADDR_WIDTH - 1:0] : (awaddr_buf + ((awlen_buf + 1) << BUS_ADDR_ALIGN)); + always @(posedge ACLK) + begin + if (ARESET) + awaddr_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awaddr_buf <= {awaddr_tmp[C_M_AXI_ADDR_WIDTH - 1:BUS_ADDR_ALIGN], {BUS_ADDR_ALIGN{1'b0}}}; + end + end + + assign awlen_tmp = (last_loop)? sect_len_buf[NUM_WRITE_WIDTH - 1:0] : { NUM_WRITE_WIDTH{1'b1} }; + always @(posedge ACLK) + begin + if (ARESET) + awlen_buf <= 0; + else if (ACLK_EN) begin + if (next_loop) + awlen_buf <= awlen_tmp; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + AWVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_loop && invalid_len_event_reg2) + AWVALID_Dummy <= 1'b0; + else if (next_loop) + AWVALID_Dummy <= 1'b1; + else if (~next_loop && AWREADY) + AWVALID_Dummy <= 1'b0; + end + end + + assign fifo_resp_w = next_loop; + assign aw2b_awdata = {(last_loop & last_sect_buf), invalid_len_event_reg2}; + always @(posedge ACLK) + begin + if (ARESET) + last_sect_buf <= 0; + else if (ACLK_EN) begin + if (next_sect && last_sect) + last_sect_buf <= 1; + else if (next_sect) + last_sect_buf <= 0; + end + end + + assign fifo_burst_w = ~invalid_len_event_reg2 & next_loop; + assign burst_end = (last_loop)? sect_end_buf[BUS_ADDR_ALIGN - 1:0] : {BUS_ADDR_ALIGN{1'b1}}; + end + endgenerate +//------------------------AW channel end----------------- + +//------------------------W channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_buffer #( + .DATA_WIDTH(USER_DW + USER_DW/8), + .DEPTH(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH), + .ADDR_WIDTH(log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + ) buff_wdata ( + .clk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .if_full_n(wdata_ack), + .if_write_ce(1'b1), + .if_write(wdata_valid), + .if_din(fifo_wdata_wstrb), + .if_empty_n(data_valid), + .if_read_ce(1'b1), + .if_read(next_data), + .if_dout(data_pack) + ); + +//------------------------Body--------------------------- + assign fifo_wdata_wstrb = {wdata_strb, wdata_data}; + assign tmp_data = data_pack[USER_DW - 1:0]; + assign tmp_strb = data_pack[USER_DW + USER_DW/8 - 1:USER_DW]; + + assign WID = 0; + assign WUSER = C_USER_VALUE; + + generate + if (USER_DATA_WIDTH == BUS_DATA_WIDTH) begin : bus_equal_gen + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [7:0] tmp_burst_info; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = burst_valid && data_valid && ready_for_data; + assign next_burst = (len_cnt == burst_len) && next_data; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 1'b0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1'b1; + else if (ready_for_data) + WVALID_Dummy <= 1'b0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data) + len_cnt <= len_cnt + 1; + end + end + + end + else if (USER_DATA_WIDTH > BUS_DATA_WIDTH) begin : bus_narrow_gen + localparam + TOTAL_SPLIT = USER_DATA_WIDTH / BUS_DATA_WIDTH, + SPLIT_ALIGN = log2(TOTAL_SPLIT); + + reg [USER_DATA_WIDTH - 1:0] data_buf; + reg [USER_DATA_BYTES - 1:0] strb_buf; + reg [SPLIT_ALIGN - 1:0] split_cnt; + wire [7:0] tmp_burst_info; + wire first_split; + wire next_split; + wire last_split; + wire ready_for_data; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_len), + .data(tmp_burst_info)); + + assign WDATA = data_buf[BUS_DATA_WIDTH - 1:0]; + assign WSTRB = strb_buf[BUS_DATA_BYTES - 1:0]; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign tmp_burst_info = awlen_tmp; + + assign next_data = first_split; + assign next_burst = (len_cnt == burst_len) && burst_valid && last_split; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_split = (split_cnt == 0) && data_valid && burst_valid && ready_for_data; + assign last_split = (split_cnt == (TOTAL_SPLIT - 1)) && ready_for_data; + assign next_split = (split_cnt != 0) && ready_for_data; + + always @(posedge ACLK) + begin + if (ARESET) + split_cnt <= 0; + else if (ACLK_EN) begin + if (last_split) + split_cnt <= 0; + else if (first_split || next_split) + split_cnt <= split_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_data || next_split) + len_cnt <= len_cnt + 1; + end + end + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if (next_data) + data_buf <= tmp_data; + else if (next_split) + data_buf <= data_buf >> BUS_DATA_WIDTH; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf <= 0; + else if (ACLK_EN) begin + if (next_data) + strb_buf <= tmp_strb; + else if (next_split) + strb_buf <= strb_buf >> BUS_DATA_BYTES; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_data) + WVALID_Dummy <= 1; + else if (~(first_split || next_split) && ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst && last_split) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + end + else begin: bus_wide_gen + localparam + TOTAL_PADS = BUS_DATA_WIDTH / USER_DATA_WIDTH, + PAD_ALIGN = log2(TOTAL_PADS); + + reg [BUS_DATA_WIDTH - 1:0] data_buf; + reg [BUS_DATA_BYTES - 1:0] strb_buf; + wire [2*PAD_ALIGN + 7:0] burst_pack; + wire [2*PAD_ALIGN + 7:0] tmp_burst_info; + wire [PAD_ALIGN - 1:0] head_pads; + wire [PAD_ALIGN - 1:0] tail_pads; + wire [TOTAL_PADS - 1:0] add_head; + wire [TOTAL_PADS - 1:0] add_tail; + wire [TOTAL_PADS - 1:0] pad_oh; + reg [TOTAL_PADS - 1:0] pad_oh_reg; + wire [TOTAL_PADS - 1:0] head_pad_sel; + wire [0:TOTAL_PADS - 1] tail_pad_sel; + wire [7:0] awlen_tmp_t; + wire ready_for_data; + wire next_pad; + reg first_pad; + wire last_pad; + wire first_beat; + wire last_beat; + wire next_beat; + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(8 + 2*PAD_ALIGN), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_burst ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(burst_valid), + .full_n(fifo_burst_ready), + .rdreq(next_burst), + .wrreq(fifo_burst_w), + .q(burst_pack), + .data(tmp_burst_info)); + + assign WDATA = data_buf; + assign WSTRB = strb_buf; + assign WLAST = WLAST_Dummy; + assign WVALID = WVALID_Dummy; + + assign awlen_tmp_t = awlen_tmp; + assign tmp_burst_info = {awaddr_tmp[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], burst_end[BUS_ADDR_ALIGN - 1:USER_ADDR_ALIGN], awlen_tmp_t}; + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) head_pad_decoder ( + .din(head_pads), + .dout(head_pad_sel)); + + mmult_out_mem_m_axi_decoder #( + .DIN_WIDTH(PAD_ALIGN) + ) tail_pad_decoder ( + .din(tail_pads), + .dout(tail_pad_sel)); + + assign head_pads = burst_pack[2*PAD_ALIGN + 7:8 + PAD_ALIGN]; + assign tail_pads = ~burst_pack[PAD_ALIGN + 7:8]; + assign burst_len = burst_pack[7:0]; + + assign next_data = next_pad; + assign next_burst = last_beat && next_beat; + assign ready_for_data = ~(WVALID_Dummy && ~WREADY); + + assign first_beat = (len_cnt == 0) && burst_valid; + assign last_beat = (len_cnt == burst_len) && burst_valid; + assign next_beat = burst_valid && last_pad && ready_for_data; + + assign next_pad = burst_valid && data_valid && ready_for_data; + assign last_pad = (last_beat)? pad_oh[TOTAL_PADS - tail_pads - 1] : pad_oh[TOTAL_PADS - 1]; + + always @(posedge ACLK) + begin + if (ARESET) + first_pad <= 1; + else if (ACLK_EN) begin + if (next_pad && ~last_pad) + first_pad <= 0; + else if (next_pad && last_pad) + first_pad <= 1; + end + end + + assign pad_oh = (data_valid == 0)? 0 : + (first_pad && first_beat)? 1 << head_pads : + (first_pad)? 1 : + pad_oh_reg; + always @(posedge ACLK) + begin + if (ARESET) + pad_oh_reg <= 0; + else if (ACLK_EN) begin + if (next_pad) + pad_oh_reg <= {pad_oh[TOTAL_PADS - 2:0], 1'b0}; + end + end + + genvar i; + for (i = 1; i <= TOTAL_PADS; i = i + 1) begin : data_gen + assign add_head[i-1] = head_pad_sel[i-1] && first_beat; + assign add_tail[i-1] = tail_pad_sel[i-1] && last_beat; + + always @(posedge ACLK) + begin + if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + data_buf[i*USER_DATA_WIDTH - 1:(i-1)*USER_DATA_WIDTH] <= tmp_data; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (ACLK_EN) begin + if ((add_head[i-1] || add_tail[i-1]) && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= 0; + else if (pad_oh[i-1] == 1'b1 && ready_for_data) + strb_buf[i*USER_DATA_BYTES - 1:(i-1)*USER_DATA_BYTES] <= tmp_strb; + end + end + + end + + always @(posedge ACLK) + begin + if (ARESET) + WVALID_Dummy <= 0; + else if (ACLK_EN) begin + if (next_beat) + WVALID_Dummy <= 1; + else if (ready_for_data) + WVALID_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + WLAST_Dummy <= 0; + else if (ACLK_EN) begin + if (next_burst) + WLAST_Dummy <= 1; + else if (ready_for_data) + WLAST_Dummy <= 0; + end + end + + always @(posedge ACLK) + begin + if (ARESET) + len_cnt <= 0; + else if (ACLK_EN) begin + if (next_burst) + len_cnt <= 0; + else if (next_beat) + len_cnt <= len_cnt + 1; + end + end + + end + endgenerate + +//------------------------W channel end------------------ + +//------------------------B channel begin---------------- +//------------------------Instantiation------------------ + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(NUM_WRITE_OUTSTANDING-1), + .DEPTH_BITS(log2(NUM_WRITE_OUTSTANDING-1)) + ) fifo_resp ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(need_wrsp), + .full_n(fifo_resp_ready), + .rdreq(next_resp), + .wrreq(fifo_resp_w), + .q(aw2b_bdata), + .data(aw2b_awdata)); + + mmult_out_mem_m_axi_fifo #( + .DATA_BITS(2), + .DEPTH(USER_MAXREQS), + .DEPTH_BITS(log2(USER_MAXREQS)) + ) fifo_resp_to_user ( + .sclk(ACLK), + .reset(ARESET), + .sclk_en(ACLK_EN), + .empty_n(wrsp_valid), + .full_n(resp_ready), + .rdreq(wrsp_ack), + .wrreq(resp_match), + .q(wrsp), + .data(bresp_tmp)); + +//------------------------Body--------------------------- + assign BREADY = resp_ready; + assign last_resp = aw2b_bdata[1]; + assign invalid_event = aw2b_bdata[0]; + assign resp_match = (next_resp && (last_resp || invalid_event)) && need_wrsp; + + always @(posedge ACLK) + begin + if (ARESET) + next_resp <= 1'b0; + else if (ACLK_EN) begin + next_resp <= BVALID && resp_ready || (invalid_event && need_wrsp && ~next_resp); + end + end + + always @(posedge ACLK) + begin + if (ARESET) + bresp_tmp <= 2'b00; + else if (ACLK_EN) begin + if (resp_match && ~next_resp) // last resp and no resp for next cycle: reset to 0 + bresp_tmp <= 2'b00; + else if (resp_match && next_resp) // last resp but has resp for next cycle + bresp_tmp <= BRESP; + else if (BVALID && resp_ready && ~bresp_tmp[1]) + bresp_tmp <= BRESP; + end + end + +//------------------------B channel end------------------ +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_params_s_axi.v b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_params_s_axi.v new file mode 100755 index 0000000..d470352 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/verilog/mmult_params_s_axi.v @@ -0,0 +1,393 @@ +// ============================================================== +// Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +// Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +// ============================================================== +`timescale 1ns/1ps +module mmult_params_s_axi +#(parameter + C_S_AXI_ADDR_WIDTH = 6, + 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 ap_start, + input wire ap_done, + input wire ap_ready, + input wire ap_idle, + output wire [31:0] in1, + output wire [31:0] in2, + output wire [31:0] out_r, + output wire [31:0] dim +); +//------------------------Address Info------------------- +// 0x00 : Control signals +// bit 0 - ap_start (Read/Write/COH) +// bit 1 - ap_done (Read/COR) +// bit 2 - ap_idle (Read) +// bit 3 - ap_ready (Read) +// bit 7 - auto_restart (Read/Write) +// others - reserved +// 0x04 : Global Interrupt Enable Register +// bit 0 - Global Interrupt Enable (Read/Write) +// others - reserved +// 0x08 : IP Interrupt Enable Register (Read/Write) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x0c : IP Interrupt Status Register (Read/TOW) +// bit 0 - Channel 0 (ap_done) +// bit 1 - Channel 1 (ap_ready) +// others - reserved +// 0x10 : Data signal of in1 +// bit 31~0 - in1[31:0] (Read/Write) +// 0x14 : reserved +// 0x18 : Data signal of in2 +// bit 31~0 - in2[31:0] (Read/Write) +// 0x1c : reserved +// 0x20 : Data signal of out_r +// bit 31~0 - out_r[31:0] (Read/Write) +// 0x24 : reserved +// 0x28 : Data signal of dim +// bit 31~0 - dim[31:0] (Read/Write) +// 0x2c : reserved +// (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +//------------------------Parameter---------------------- +localparam + ADDR_AP_CTRL = 6'h00, + ADDR_GIE = 6'h04, + ADDR_IER = 6'h08, + ADDR_ISR = 6'h0c, + ADDR_IN1_DATA_0 = 6'h10, + ADDR_IN1_CTRL = 6'h14, + ADDR_IN2_DATA_0 = 6'h18, + ADDR_IN2_CTRL = 6'h1c, + ADDR_OUT_R_DATA_0 = 6'h20, + ADDR_OUT_R_CTRL = 6'h24, + ADDR_DIM_DATA_0 = 6'h28, + ADDR_DIM_CTRL = 6'h2c, + WRIDLE = 2'd0, + WRDATA = 2'd1, + WRRESP = 2'd2, + WRRESET = 2'd3, + RDIDLE = 2'd0, + RDDATA = 2'd1, + RDRESET = 2'd2, + ADDR_BITS = 6; + +//------------------------Local signal------------------- + reg [1:0] wstate = WRRESET; + reg [1:0] wnext; + reg [ADDR_BITS-1:0] waddr; + wire [31:0] wmask; + wire aw_hs; + wire w_hs; + reg [1:0] rstate = RDRESET; + reg [1:0] rnext; + reg [31:0] rdata; + wire ar_hs; + wire [ADDR_BITS-1:0] raddr; + // internal registers + reg int_ap_idle; + reg int_ap_ready; + reg int_ap_done = 1'b0; + reg int_ap_start = 1'b0; + reg int_auto_restart = 1'b0; + reg int_gie = 1'b0; + reg [1:0] int_ier = 2'b0; + reg [1:0] int_isr = 2'b0; + reg [31:0] int_in1 = 'b0; + reg [31:0] int_in2 = 'b0; + reg [31:0] int_out_r = 'b0; + reg [31:0] int_dim = '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 <= 1'b0; + case (raddr) + ADDR_AP_CTRL: begin + rdata[0] <= int_ap_start; + rdata[1] <= int_ap_done; + rdata[2] <= int_ap_idle; + rdata[3] <= int_ap_ready; + rdata[7] <= int_auto_restart; + end + ADDR_GIE: begin + rdata <= int_gie; + end + ADDR_IER: begin + rdata <= int_ier; + end + ADDR_ISR: begin + rdata <= int_isr; + end + ADDR_IN1_DATA_0: begin + rdata <= int_in1[31:0]; + end + ADDR_IN2_DATA_0: begin + rdata <= int_in2[31:0]; + end + ADDR_OUT_R_DATA_0: begin + rdata <= int_out_r[31:0]; + end + ADDR_DIM_DATA_0: begin + rdata <= int_dim[31:0]; + end + endcase + end + end +end + + +//------------------------Register logic----------------- +assign interrupt = int_gie & (|int_isr); +assign ap_start = int_ap_start; +assign in1 = int_in1; +assign in2 = int_in2; +assign out_r = int_out_r; +assign dim = int_dim; +// 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_ready) + int_ap_start <= int_auto_restart; // clear on handshake/auto restart + end +end + +// int_ap_done +always @(posedge ACLK) begin + if (ARESET) + int_ap_done <= 1'b0; + else if (ACLK_EN) begin + if (ap_done) + int_ap_done <= 1'b1; + else if (ar_hs && raddr == ADDR_AP_CTRL) + int_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 + int_ap_ready <= ap_ready; + 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 + +// 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[1:0]; + end +end + +// int_isr[0] +always @(posedge ACLK) begin + if (ARESET) + int_isr[0] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[0] & ap_done) + int_isr[0] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[0] <= int_isr[0] ^ WDATA[0]; // toggle on write + end +end + +// int_isr[1] +always @(posedge ACLK) begin + if (ARESET) + int_isr[1] <= 1'b0; + else if (ACLK_EN) begin + if (int_ier[1] & ap_ready) + int_isr[1] <= 1'b1; + else if (w_hs && waddr == ADDR_ISR && WSTRB[0]) + int_isr[1] <= int_isr[1] ^ WDATA[1]; // toggle on write + end +end + +// int_in1[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in1[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN1_DATA_0) + int_in1[31:0] <= (WDATA[31:0] & wmask) | (int_in1[31:0] & ~wmask); + end +end + +// int_in2[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_in2[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_IN2_DATA_0) + int_in2[31:0] <= (WDATA[31:0] & wmask) | (int_in2[31:0] & ~wmask); + end +end + +// int_out_r[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_out_r[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_OUT_R_DATA_0) + int_out_r[31:0] <= (WDATA[31:0] & wmask) | (int_out_r[31:0] & ~wmask); + end +end + +// int_dim[31:0] +always @(posedge ACLK) begin + if (ARESET) + int_dim[31:0] <= 0; + else if (ACLK_EN) begin + if (w_hs && waddr == ADDR_DIM_DATA_0) + int_dim[31:0] <= (WDATA[31:0] & wmask) | (int_dim[31:0] & ~wmask); + end +end + + +//------------------------Memory logic------------------- + +endmodule diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult.vhd new file mode 100755 index 0000000..8b229a7 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult.vhd @@ -0,0 +1,10532 @@ +-- ============================================================== +-- RTL generated by Vivado(TM) HLS - High-Level Synthesis from C, C++ and OpenCL +-- Version: 2020.1 +-- Copyright (C) 1986-2020 Xilinx, Inc. All Rights Reserved. +-- +-- =========================================================== + +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult is +generic ( + C_M_AXI_IN1_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN1_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN2_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_IN2_MEM_BUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ADDR_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_ID_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_DATA_WIDTH : INTEGER := 32; + C_M_AXI_OUT_MEM_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_OUT_MEM_BUSER_WIDTH : INTEGER := 1; + C_S_AXI_PARAMS_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_PARAMS_DATA_WIDTH : INTEGER := 32; + C_M_AXI_IN1_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN1_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_IN2_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_IN2_MEM_CACHE_VALUE : INTEGER := 3; + C_M_AXI_OUT_MEM_USER_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_PROT_VALUE : INTEGER := 0; + C_M_AXI_OUT_MEM_CACHE_VALUE : INTEGER := 3 ); +port ( + ap_clk : IN STD_LOGIC; + ap_rst_n : IN STD_LOGIC; + m_axi_in1_mem_AWVALID : OUT STD_LOGIC; + m_axi_in1_mem_AWREADY : IN STD_LOGIC; + m_axi_in1_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in1_mem_WVALID : OUT STD_LOGIC; + m_axi_in1_mem_WREADY : IN STD_LOGIC; + m_axi_in1_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in1_mem_WLAST : OUT STD_LOGIC; + m_axi_in1_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in1_mem_ARVALID : OUT STD_LOGIC; + m_axi_in1_mem_ARREADY : IN STD_LOGIC; + m_axi_in1_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in1_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in1_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in1_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in1_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RVALID : IN STD_LOGIC; + m_axi_in1_mem_RREADY : OUT STD_LOGIC; + m_axi_in1_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_DATA_WIDTH-1 downto 0); + m_axi_in1_mem_RLAST : IN STD_LOGIC; + m_axi_in1_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in1_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BVALID : IN STD_LOGIC; + m_axi_in1_mem_BREADY : OUT STD_LOGIC; + m_axi_in1_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in1_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_ID_WIDTH-1 downto 0); + m_axi_in1_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN1_MEM_BUSER_WIDTH-1 downto 0); + m_axi_in2_mem_AWVALID : OUT STD_LOGIC; + m_axi_in2_mem_AWREADY : IN STD_LOGIC; + m_axi_in2_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_in2_mem_WVALID : OUT STD_LOGIC; + m_axi_in2_mem_WREADY : IN STD_LOGIC; + m_axi_in2_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_in2_mem_WLAST : OUT STD_LOGIC; + m_axi_in2_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_WUSER_WIDTH-1 downto 0); + m_axi_in2_mem_ARVALID : OUT STD_LOGIC; + m_axi_in2_mem_ARREADY : IN STD_LOGIC; + m_axi_in2_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ADDR_WIDTH-1 downto 0); + m_axi_in2_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_in2_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_in2_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_in2_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RVALID : IN STD_LOGIC; + m_axi_in2_mem_RREADY : OUT STD_LOGIC; + m_axi_in2_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_DATA_WIDTH-1 downto 0); + m_axi_in2_mem_RLAST : IN STD_LOGIC; + m_axi_in2_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_RUSER_WIDTH-1 downto 0); + m_axi_in2_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BVALID : IN STD_LOGIC; + m_axi_in2_mem_BREADY : OUT STD_LOGIC; + m_axi_in2_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_in2_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_ID_WIDTH-1 downto 0); + m_axi_in2_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_IN2_MEM_BUSER_WIDTH-1 downto 0); + m_axi_out_mem_AWVALID : OUT STD_LOGIC; + m_axi_out_mem_AWREADY : IN STD_LOGIC; + m_axi_out_mem_AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_AWUSER_WIDTH-1 downto 0); + m_axi_out_mem_WVALID : OUT STD_LOGIC; + m_axi_out_mem_WREADY : IN STD_LOGIC; + m_axi_out_mem_WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH/8-1 downto 0); + m_axi_out_mem_WLAST : OUT STD_LOGIC; + m_axi_out_mem_WID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_WUSER_WIDTH-1 downto 0); + m_axi_out_mem_ARVALID : OUT STD_LOGIC; + m_axi_out_mem_ARREADY : IN STD_LOGIC; + m_axi_out_mem_ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ADDR_WIDTH-1 downto 0); + m_axi_out_mem_ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + m_axi_out_mem_ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + m_axi_out_mem_ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + m_axi_out_mem_ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ARUSER_WIDTH-1 downto 0); + m_axi_out_mem_RVALID : IN STD_LOGIC; + m_axi_out_mem_RREADY : OUT STD_LOGIC; + m_axi_out_mem_RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_DATA_WIDTH-1 downto 0); + m_axi_out_mem_RLAST : IN STD_LOGIC; + m_axi_out_mem_RID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_RUSER_WIDTH-1 downto 0); + m_axi_out_mem_RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BVALID : IN STD_LOGIC; + m_axi_out_mem_BREADY : OUT STD_LOGIC; + m_axi_out_mem_BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + m_axi_out_mem_BID : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_ID_WIDTH-1 downto 0); + m_axi_out_mem_BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_OUT_MEM_BUSER_WIDTH-1 downto 0); + s_axi_params_AWVALID : IN STD_LOGIC; + s_axi_params_AWREADY : OUT STD_LOGIC; + s_axi_params_AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_WVALID : IN STD_LOGIC; + s_axi_params_WREADY : OUT STD_LOGIC; + s_axi_params_WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH/8-1 downto 0); + s_axi_params_ARVALID : IN STD_LOGIC; + s_axi_params_ARREADY : OUT STD_LOGIC; + s_axi_params_ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_PARAMS_ADDR_WIDTH-1 downto 0); + s_axi_params_RVALID : OUT STD_LOGIC; + s_axi_params_RREADY : IN STD_LOGIC; + s_axi_params_RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_PARAMS_DATA_WIDTH-1 downto 0); + s_axi_params_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + s_axi_params_BVALID : OUT STD_LOGIC; + s_axi_params_BREADY : IN STD_LOGIC; + s_axi_params_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + interrupt : OUT STD_LOGIC ); +end; + + +architecture behav of mmult is + attribute CORE_GENERATION_INFO : STRING; + attribute CORE_GENERATION_INFO of behav : architecture is + "mmult,hls_ip_2020_1,{HLS_INPUT_TYPE=cxx,HLS_INPUT_FLOAT=0,HLS_INPUT_FIXED=0,HLS_INPUT_PART=xczu3eg-sbva484-1-e,HLS_INPUT_CLOCK=3.333000,HLS_INPUT_ARCH=others,HLS_SYN_CLOCK=2.916375,HLS_SYN_LAT=16421,HLS_SYN_TPT=none,HLS_SYN_MEM=142,HLS_SYN_DSP=260,HLS_SYN_FF=20363,HLS_SYN_LUT=10157,HLS_VERSION=2020_1}"; + constant ap_const_logic_1 : STD_LOGIC := '1'; + constant ap_const_logic_0 : STD_LOGIC := '0'; + constant ap_ST_fsm_state1 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000000001"; + constant ap_ST_fsm_state2 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000000010"; + constant ap_ST_fsm_state3 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000000100"; + constant ap_ST_fsm_state4 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000001000"; + constant ap_ST_fsm_state5 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000010000"; + constant ap_ST_fsm_state6 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000100000"; + constant ap_ST_fsm_state7 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000001000000"; + constant ap_ST_fsm_state8 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000010000000"; + constant ap_ST_fsm_pp0_stage0 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000100000000"; + constant ap_ST_fsm_state12 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000001000000000"; + constant ap_ST_fsm_state13 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000010000000000"; + constant ap_ST_fsm_state14 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000100000000000"; + constant ap_ST_fsm_state15 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000001000000000000"; + constant ap_ST_fsm_state16 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000010000000000000"; + constant ap_ST_fsm_state17 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000100000000000000"; + constant ap_ST_fsm_state18 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000001000000000000000"; + constant ap_ST_fsm_pp1_stage0 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000010000000000000000"; + constant ap_ST_fsm_state22 : STD_LOGIC_VECTOR (27 downto 0) := "0000000000100000000000000000"; + constant ap_ST_fsm_state23 : STD_LOGIC_VECTOR (27 downto 0) := "0000000001000000000000000000"; + constant ap_ST_fsm_state24 : STD_LOGIC_VECTOR (27 downto 0) := "0000000010000000000000000000"; + constant ap_ST_fsm_pp2_stage0 : STD_LOGIC_VECTOR (27 downto 0) := "0000000100000000000000000000"; + constant ap_ST_fsm_state34 : STD_LOGIC_VECTOR (27 downto 0) := "0000001000000000000000000000"; + constant ap_ST_fsm_pp3_stage0 : STD_LOGIC_VECTOR (27 downto 0) := "0000010000000000000000000000"; + constant ap_ST_fsm_state38 : STD_LOGIC_VECTOR (27 downto 0) := "0000100000000000000000000000"; + constant ap_ST_fsm_state39 : STD_LOGIC_VECTOR (27 downto 0) := "0001000000000000000000000000"; + constant ap_ST_fsm_state40 : STD_LOGIC_VECTOR (27 downto 0) := "0010000000000000000000000000"; + constant ap_ST_fsm_state41 : STD_LOGIC_VECTOR (27 downto 0) := "0100000000000000000000000000"; + constant ap_ST_fsm_state42 : STD_LOGIC_VECTOR (27 downto 0) := "1000000000000000000000000000"; + constant ap_const_lv32_0 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000000"; + constant ap_const_boolean_1 : BOOLEAN := true; + constant ap_const_lv32_1 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000001"; + constant ap_const_lv32_8 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001000"; + constant ap_const_boolean_0 : BOOLEAN := false; + constant ap_const_lv32_9 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001001"; + constant ap_const_lv32_10 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010000"; + constant ap_const_lv32_15 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010101"; + constant ap_const_lv1_0 : STD_LOGIC_VECTOR (0 downto 0) := "0"; + constant ap_const_lv32_1B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011011"; + constant C_S_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant C_M_AXI_DATA_WIDTH : INTEGER range 63 downto 0 := 20; + constant ap_const_lv32_16 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010110"; + constant ap_const_lv32_7 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000111"; + constant ap_const_lv32_11 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010001"; + constant ap_const_lv32_13 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010011"; + constant ap_const_lv32_14 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000010100"; + constant ap_const_lv1_1 : STD_LOGIC_VECTOR (0 downto 0) := "1"; + constant ap_const_lv32_F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001111"; + constant ap_const_lv13_0 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000000"; + constant ap_const_lv64_0 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000000"; + constant ap_const_lv31_0 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000000"; + constant ap_const_lv32_1000 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000001000000000000"; + constant ap_const_lv3_0 : STD_LOGIC_VECTOR (2 downto 0) := "000"; + constant ap_const_lv2_0 : STD_LOGIC_VECTOR (1 downto 0) := "00"; + constant ap_const_lv4_0 : STD_LOGIC_VECTOR (3 downto 0) := "0000"; + constant ap_const_lv4_F : STD_LOGIC_VECTOR (3 downto 0) := "1111"; + constant ap_const_lv6_3E : STD_LOGIC_VECTOR (5 downto 0) := "111110"; + constant ap_const_lv6_3D : STD_LOGIC_VECTOR (5 downto 0) := "111101"; + constant ap_const_lv6_3C : STD_LOGIC_VECTOR (5 downto 0) := "111100"; + constant ap_const_lv6_3B : STD_LOGIC_VECTOR (5 downto 0) := "111011"; + constant ap_const_lv6_3A : STD_LOGIC_VECTOR (5 downto 0) := "111010"; + constant ap_const_lv6_39 : STD_LOGIC_VECTOR (5 downto 0) := "111001"; + constant ap_const_lv6_38 : STD_LOGIC_VECTOR (5 downto 0) := "111000"; + constant ap_const_lv6_37 : STD_LOGIC_VECTOR (5 downto 0) := "110111"; + constant ap_const_lv6_36 : STD_LOGIC_VECTOR (5 downto 0) := "110110"; + constant ap_const_lv6_35 : STD_LOGIC_VECTOR (5 downto 0) := "110101"; + constant ap_const_lv6_34 : STD_LOGIC_VECTOR (5 downto 0) := "110100"; + constant ap_const_lv6_33 : STD_LOGIC_VECTOR (5 downto 0) := "110011"; + constant ap_const_lv6_32 : STD_LOGIC_VECTOR (5 downto 0) := "110010"; + constant ap_const_lv6_31 : STD_LOGIC_VECTOR (5 downto 0) := "110001"; + constant ap_const_lv6_30 : STD_LOGIC_VECTOR (5 downto 0) := "110000"; + constant ap_const_lv6_2F : STD_LOGIC_VECTOR (5 downto 0) := "101111"; + constant ap_const_lv6_2E : STD_LOGIC_VECTOR (5 downto 0) := "101110"; + constant ap_const_lv6_2D : STD_LOGIC_VECTOR (5 downto 0) := "101101"; + constant ap_const_lv6_2C : STD_LOGIC_VECTOR (5 downto 0) := "101100"; + constant ap_const_lv6_2B : STD_LOGIC_VECTOR (5 downto 0) := "101011"; + constant ap_const_lv6_2A : STD_LOGIC_VECTOR (5 downto 0) := "101010"; + constant ap_const_lv6_29 : STD_LOGIC_VECTOR (5 downto 0) := "101001"; + constant ap_const_lv6_28 : STD_LOGIC_VECTOR (5 downto 0) := "101000"; + constant ap_const_lv6_27 : STD_LOGIC_VECTOR (5 downto 0) := "100111"; + constant ap_const_lv6_26 : STD_LOGIC_VECTOR (5 downto 0) := "100110"; + constant ap_const_lv6_25 : STD_LOGIC_VECTOR (5 downto 0) := "100101"; + constant ap_const_lv6_24 : STD_LOGIC_VECTOR (5 downto 0) := "100100"; + constant ap_const_lv6_23 : STD_LOGIC_VECTOR (5 downto 0) := "100011"; + constant ap_const_lv6_22 : STD_LOGIC_VECTOR (5 downto 0) := "100010"; + constant ap_const_lv6_21 : STD_LOGIC_VECTOR (5 downto 0) := "100001"; + constant ap_const_lv6_20 : STD_LOGIC_VECTOR (5 downto 0) := "100000"; + constant ap_const_lv6_1F : STD_LOGIC_VECTOR (5 downto 0) := "011111"; + constant ap_const_lv6_1E : STD_LOGIC_VECTOR (5 downto 0) := "011110"; + constant ap_const_lv6_1D : STD_LOGIC_VECTOR (5 downto 0) := "011101"; + constant ap_const_lv6_1C : STD_LOGIC_VECTOR (5 downto 0) := "011100"; + constant ap_const_lv6_1B : STD_LOGIC_VECTOR (5 downto 0) := "011011"; + constant ap_const_lv6_1A : STD_LOGIC_VECTOR (5 downto 0) := "011010"; + constant ap_const_lv6_19 : STD_LOGIC_VECTOR (5 downto 0) := "011001"; + constant ap_const_lv6_18 : STD_LOGIC_VECTOR (5 downto 0) := "011000"; + constant ap_const_lv6_17 : STD_LOGIC_VECTOR (5 downto 0) := "010111"; + constant ap_const_lv6_16 : STD_LOGIC_VECTOR (5 downto 0) := "010110"; + constant ap_const_lv6_15 : STD_LOGIC_VECTOR (5 downto 0) := "010101"; + constant ap_const_lv6_14 : STD_LOGIC_VECTOR (5 downto 0) := "010100"; + constant ap_const_lv6_13 : STD_LOGIC_VECTOR (5 downto 0) := "010011"; + constant ap_const_lv6_12 : STD_LOGIC_VECTOR (5 downto 0) := "010010"; + constant ap_const_lv6_11 : STD_LOGIC_VECTOR (5 downto 0) := "010001"; + constant ap_const_lv6_10 : STD_LOGIC_VECTOR (5 downto 0) := "010000"; + constant ap_const_lv6_F : STD_LOGIC_VECTOR (5 downto 0) := "001111"; + constant ap_const_lv6_E : STD_LOGIC_VECTOR (5 downto 0) := "001110"; + constant ap_const_lv6_D : STD_LOGIC_VECTOR (5 downto 0) := "001101"; + constant ap_const_lv6_C : STD_LOGIC_VECTOR (5 downto 0) := "001100"; + constant ap_const_lv6_B : STD_LOGIC_VECTOR (5 downto 0) := "001011"; + constant ap_const_lv6_A : STD_LOGIC_VECTOR (5 downto 0) := "001010"; + constant ap_const_lv6_9 : STD_LOGIC_VECTOR (5 downto 0) := "001001"; + constant ap_const_lv6_8 : STD_LOGIC_VECTOR (5 downto 0) := "001000"; + constant ap_const_lv6_7 : STD_LOGIC_VECTOR (5 downto 0) := "000111"; + constant ap_const_lv6_6 : STD_LOGIC_VECTOR (5 downto 0) := "000110"; + constant ap_const_lv6_5 : STD_LOGIC_VECTOR (5 downto 0) := "000101"; + constant ap_const_lv6_4 : STD_LOGIC_VECTOR (5 downto 0) := "000100"; + constant ap_const_lv6_3 : STD_LOGIC_VECTOR (5 downto 0) := "000011"; + constant ap_const_lv6_2 : STD_LOGIC_VECTOR (5 downto 0) := "000010"; + constant ap_const_lv6_1 : STD_LOGIC_VECTOR (5 downto 0) := "000001"; + constant ap_const_lv6_0 : STD_LOGIC_VECTOR (5 downto 0) := "000000"; + constant ap_const_lv6_3F : STD_LOGIC_VECTOR (5 downto 0) := "111111"; + constant ap_const_lv32_2 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000010"; + constant ap_const_lv32_1F : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000011111"; + constant ap_const_lv13_1000 : STD_LOGIC_VECTOR (12 downto 0) := "1000000000000"; + constant ap_const_lv13_1 : STD_LOGIC_VECTOR (12 downto 0) := "0000000000001"; + constant ap_const_lv32_6 : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000000110"; + constant ap_const_lv32_C : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001100"; + constant ap_const_lv32_B : STD_LOGIC_VECTOR (31 downto 0) := "00000000000000000000000000001011"; + constant ap_const_lv64_1 : STD_LOGIC_VECTOR (63 downto 0) := "0000000000000000000000000000000000000000000000000000000000000001"; + constant ap_const_lv31_1 : STD_LOGIC_VECTOR (30 downto 0) := "0000000000000000000000000000001"; + + signal ap_rst_n_inv : STD_LOGIC; + signal ap_start : STD_LOGIC; + signal ap_done : STD_LOGIC; + signal ap_idle : STD_LOGIC; + signal ap_CS_fsm : STD_LOGIC_VECTOR (27 downto 0) := "0000000000000000000000000001"; + attribute fsm_encoding : string; + attribute fsm_encoding of ap_CS_fsm : signal is "none"; + signal ap_CS_fsm_state1 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state1 : signal is "none"; + signal ap_ready : STD_LOGIC; + signal in1 : STD_LOGIC_VECTOR (31 downto 0); + signal in2 : STD_LOGIC_VECTOR (31 downto 0); + signal out_r : STD_LOGIC_VECTOR (31 downto 0); + signal dim : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state2 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state2 : signal is "none"; + signal in1_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp0_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp0_stage0 : signal is "none"; + signal ap_enable_reg_pp0_iter1 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0 : BOOLEAN; + signal in2_mem_blk_n_AR : STD_LOGIC; + signal ap_CS_fsm_state12 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state12 : signal is "none"; + signal in2_mem_blk_n_R : STD_LOGIC; + signal ap_CS_fsm_pp1_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp1_stage0 : signal is "none"; + signal ap_enable_reg_pp1_iter1 : STD_LOGIC := '0'; + signal ap_block_pp1_stage0 : BOOLEAN; + signal out_mem_blk_n_AW : STD_LOGIC; + signal ap_CS_fsm_state34 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state34 : signal is "none"; + signal out_mem_blk_n_W : STD_LOGIC; + signal ap_enable_reg_pp3_iter2 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0 : BOOLEAN; + signal icmp_ln42_reg_6380 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln42_reg_6380_pp3_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_blk_n_B : STD_LOGIC; + signal ap_CS_fsm_state42 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state42 : signal is "none"; + signal in1_mem_AWREADY : STD_LOGIC; + signal in1_mem_WREADY : STD_LOGIC; + signal in1_mem_ARVALID : STD_LOGIC; + signal in1_mem_ARREADY : STD_LOGIC; + signal in1_mem_ARADDR : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RVALID : STD_LOGIC; + signal in1_mem_RREADY : STD_LOGIC; + signal in1_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in1_mem_RLAST : STD_LOGIC; + signal in1_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BVALID : STD_LOGIC; + signal in1_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in1_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in1_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_AWREADY : STD_LOGIC; + signal in2_mem_WREADY : STD_LOGIC; + signal in2_mem_ARVALID : STD_LOGIC; + signal in2_mem_ARREADY : STD_LOGIC; + signal in2_mem_RVALID : STD_LOGIC; + signal in2_mem_RREADY : STD_LOGIC; + signal in2_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal in2_mem_RLAST : STD_LOGIC; + signal in2_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BVALID : STD_LOGIC; + signal in2_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal in2_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal in2_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_AWVALID : STD_LOGIC; + signal out_mem_AWREADY : STD_LOGIC; + signal out_mem_WVALID : STD_LOGIC; + signal out_mem_WREADY : STD_LOGIC; + signal out_mem_ARREADY : STD_LOGIC; + signal out_mem_RVALID : STD_LOGIC; + signal out_mem_RDATA : STD_LOGIC_VECTOR (31 downto 0); + signal out_mem_RLAST : STD_LOGIC; + signal out_mem_RID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RUSER : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_RRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BVALID : STD_LOGIC; + signal out_mem_BREADY : STD_LOGIC; + signal out_mem_BRESP : STD_LOGIC_VECTOR (1 downto 0); + signal out_mem_BID : STD_LOGIC_VECTOR (0 downto 0); + signal out_mem_BUSER : STD_LOGIC_VECTOR (0 downto 0); + signal phi_ln27_reg_3296 : STD_LOGIC_VECTOR (12 downto 0); + signal phi_ln28_reg_3307 : STD_LOGIC_VECTOR (12 downto 0); + signal indvar_flatten_reg_3318 : STD_LOGIC_VECTOR (63 downto 0); + signal i_0_reg_3329 : STD_LOGIC_VECTOR (30 downto 0); + signal j_0_reg_3340 : STD_LOGIC_VECTOR (31 downto 0); + signal phi_ln42_reg_3351 : STD_LOGIC_VECTOR (12 downto 0); + signal out_loc_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal reg_3362 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter5 : STD_LOGIC := '0'; + signal ap_block_state25_pp2_stage0_iter0 : BOOLEAN; + signal ap_block_state26_pp2_stage0_iter1 : BOOLEAN; + signal ap_block_state27_pp2_stage0_iter2 : BOOLEAN; + signal ap_block_state28_pp2_stage0_iter3 : BOOLEAN; + signal ap_block_state29_pp2_stage0_iter4 : BOOLEAN; + signal ap_block_state30_pp2_stage0_iter5 : BOOLEAN; + signal ap_block_state31_pp2_stage0_iter6 : BOOLEAN; + signal ap_block_state32_pp2_stage0_iter7 : BOOLEAN; + signal ap_block_state33_pp2_stage0_iter8 : BOOLEAN; + signal ap_block_pp2_stage0_11001 : BOOLEAN; + signal icmp_ln31_reg_4578 : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter4_reg : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp3_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp3_stage0 : signal is "none"; + signal ap_enable_reg_pp3_iter1 : STD_LOGIC := '0'; + signal ap_block_state35_pp3_stage0_iter0 : BOOLEAN; + signal ap_block_state36_pp3_stage0_iter1 : BOOLEAN; + signal ap_block_state37_pp3_stage0_iter2 : BOOLEAN; + signal ap_block_state37_io : BOOLEAN; + signal ap_block_pp3_stage0_11001 : BOOLEAN; + signal dim_read_reg_4356 : STD_LOGIC_VECTOR (31 downto 0); + signal out5_reg_4362 : STD_LOGIC_VECTOR (29 downto 0); + signal in_reg_4367 : STD_LOGIC_VECTOR (29 downto 0); + signal in3_reg_4372 : STD_LOGIC_VECTOR (29 downto 0); + signal out_mem_addr_reg_4383 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_CS_fsm_state8 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state8 : signal is "none"; + signal in2_mem_addr_reg_4389 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln27_fu_3425_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state9_pp0_stage0_iter0 : BOOLEAN; + signal ap_block_state10_pp0_stage0_iter1 : BOOLEAN; + signal ap_block_state11_pp0_stage0_iter2 : BOOLEAN; + signal ap_block_pp0_stage0_11001 : BOOLEAN; + signal add_ln27_fu_3431_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp0_iter0 : STD_LOGIC := '0'; + signal lshr_ln_reg_4404 : STD_LOGIC_VECTOR (6 downto 0); + signal lshr_ln_reg_4404_pp0_iter1_reg : STD_LOGIC_VECTOR (6 downto 0); + signal trunc_ln27_fu_3447_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4409 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln27_reg_4409_pp0_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in1_mem_addr_read_reg_4413 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln28_fu_3518_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_block_state19_pp1_stage0_iter0 : BOOLEAN; + signal ap_block_state20_pp1_stage0_iter1 : BOOLEAN; + signal ap_block_state21_pp1_stage0_iter2 : BOOLEAN; + signal ap_block_pp1_stage0_11001 : BOOLEAN; + signal add_ln28_fu_3524_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp1_iter0 : STD_LOGIC := '0'; + signal trunc_ln28_fu_3530_p1 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4490 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln28_reg_4490_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4495 : STD_LOGIC_VECTOR (5 downto 0); + signal trunc_ln1_reg_4495_pp1_iter1_reg : STD_LOGIC_VECTOR (5 downto 0); + signal in2_mem_addr_read_reg_4499 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln31_fu_3611_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_CS_fsm_state22 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state22 : signal is "none"; + signal grp_fu_3614_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal mul_ln31_reg_4573 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_CS_fsm_state24 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state24 : signal is "none"; + signal icmp_ln31_fu_3620_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal ap_CS_fsm_pp2_stage0 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_pp2_stage0 : signal is "none"; + signal icmp_ln31_reg_4578_pp2_iter1_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter2_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter3_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter5_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter6_reg : STD_LOGIC_VECTOR (0 downto 0); + signal icmp_ln31_reg_4578_pp2_iter7_reg : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln31_fu_3625_p2 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_enable_reg_pp2_iter0 : STD_LOGIC := '0'; + signal select_ln31_fu_3642_p3 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln31_reg_4587 : STD_LOGIC_VECTOR (31 downto 0); + signal select_ln31_1_fu_3650_p3 : STD_LOGIC_VECTOR (30 downto 0); + signal select_ln31_1_reg_4592 : STD_LOGIC_VECTOR (30 downto 0); + signal out_loc_addr_reg_4598 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter1_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter2_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter3_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter4_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter5_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter6_reg : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_addr_reg_4598_pp2_iter7_reg : STD_LOGIC_VECTOR (11 downto 0); + signal j_fu_3685_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal zext_ln31_1_fu_3691_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln31_1_reg_4609 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_fu_3739_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal sext_ln38_reg_4857 : STD_LOGIC_VECTOR (63 downto 0); + signal in1_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_0_load_reg_5105 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter2 : STD_LOGIC := '0'; + signal in1_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_1_load_reg_5110 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_2_load_reg_5115 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_3_load_reg_5120 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_4_load_reg_5125 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_5_load_reg_5130 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_6_load_reg_5135 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_7_load_reg_5140 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_8_load_reg_5145 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_11_load_reg_5160 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_12_load_reg_5165 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_15_load_reg_5180 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_16_load_reg_5185 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_19_load_reg_5200 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_20_load_reg_5205 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_21_load_reg_5210 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_22_load_reg_5215 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_23_load_reg_5220 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_24_load_reg_5225 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_27_load_reg_5240 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_28_load_reg_5245 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_29_load_reg_5250 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_30_load_reg_5255 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_31_load_reg_5260 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_32_load_reg_5265 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_35_load_reg_5280 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_36_load_reg_5285 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_37_load_reg_5290 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_38_load_reg_5295 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_39_load_reg_5300 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_40_load_reg_5305 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_43_load_reg_5320 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_44_load_reg_5325 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_47_load_reg_5340 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_48_load_reg_5345 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_51_load_reg_5360 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_52_load_reg_5365 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_53_load_reg_5370 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_54_load_reg_5375 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_55_load_reg_5380 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_56_load_reg_5385 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_59_load_reg_5400 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_60_load_reg_5405 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_62_load_reg_5415 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_63_load_reg_5420 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_0_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_0_load_reg_5425 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_1_load_reg_5430 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_2_load_reg_5435 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_3_load_reg_5440 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_4_load_reg_5445 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_5_load_reg_5450 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_6_load_reg_5455 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_7_load_reg_5460 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_8_load_reg_5465 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_11_load_reg_5480 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_12_load_reg_5485 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_15_load_reg_5500 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_16_load_reg_5505 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_19_load_reg_5520 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_20_load_reg_5525 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_21_load_reg_5530 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_22_load_reg_5535 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_23_load_reg_5540 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_24_load_reg_5545 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_27_load_reg_5560 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_28_load_reg_5565 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_29_load_reg_5570 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_30_load_reg_5575 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_31_load_reg_5580 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_32_load_reg_5585 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_35_load_reg_5600 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_36_load_reg_5605 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_37_load_reg_5610 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_38_load_reg_5615 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_39_load_reg_5620 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_40_load_reg_5625 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_43_load_reg_5640 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_44_load_reg_5645 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_47_load_reg_5660 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_48_load_reg_5665 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_51_load_reg_5680 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_52_load_reg_5685 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_53_load_reg_5690 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_54_load_reg_5695 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_55_load_reg_5700 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_56_load_reg_5705 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_59_load_reg_5720 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_60_load_reg_5725 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_62_load_reg_5735 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_63_load_reg_5740 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_9_load_reg_5745 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_enable_reg_pp2_iter3 : STD_LOGIC := '0'; + signal in1_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_10_load_reg_5750 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_13_load_reg_5755 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_14_load_reg_5760 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_17_load_reg_5765 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_18_load_reg_5770 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_25_load_reg_5775 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_26_load_reg_5780 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_33_load_reg_5785 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_34_load_reg_5790 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_41_load_reg_5795 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_42_load_reg_5800 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_45_load_reg_5805 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_46_load_reg_5810 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_49_load_reg_5815 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_50_load_reg_5820 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_57_load_reg_5825 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_58_load_reg_5830 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in1_loc_61_load_reg_5835 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_9_load_reg_5840 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_10_load_reg_5845 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_13_load_reg_5850 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_14_load_reg_5855 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_17_load_reg_5860 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_18_load_reg_5865 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_25_load_reg_5870 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_26_load_reg_5875 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_33_load_reg_5880 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_34_load_reg_5885 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_41_load_reg_5890 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_42_load_reg_5895 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_45_load_reg_5900 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_46_load_reg_5905 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_49_load_reg_5910 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_50_load_reg_5915 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_57_load_reg_5920 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_58_load_reg_5925 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_q0 : STD_LOGIC_VECTOR (31 downto 0); + signal in2_loc_61_load_reg_5930 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3787_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_reg_5935 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3791_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_1_reg_5940 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3795_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_2_reg_5945 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3799_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_3_reg_5950 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3803_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_4_reg_5955 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3807_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_5_reg_5960 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3811_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_6_reg_5965 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3815_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_7_reg_5970 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3819_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_8_reg_5975 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3823_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_11_reg_5980 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3827_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_12_reg_5985 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3831_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_15_reg_5990 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3835_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_16_reg_5995 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3839_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_19_reg_6000 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3843_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_20_reg_6005 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3847_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_21_reg_6010 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3851_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_22_reg_6015 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3855_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_23_reg_6020 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3859_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_24_reg_6025 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3863_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_27_reg_6030 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3867_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_28_reg_6035 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3871_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_29_reg_6040 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3875_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_30_reg_6045 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3879_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_31_reg_6050 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3883_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_32_reg_6055 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3887_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_35_reg_6060 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3891_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_36_reg_6065 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3895_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_37_reg_6070 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3899_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_38_reg_6075 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3903_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_39_reg_6080 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3907_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_40_reg_6085 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3911_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_43_reg_6090 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3915_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_44_reg_6095 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3919_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_47_reg_6100 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3923_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_48_reg_6105 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3927_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_51_reg_6110 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3931_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_52_reg_6115 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3935_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_53_reg_6120 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3939_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_54_reg_6125 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3943_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_55_reg_6130 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3947_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_56_reg_6135 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3951_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_59_reg_6140 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3955_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_60_reg_6145 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3959_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_62_reg_6150 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3963_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_63_reg_6155 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3967_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_9_reg_6160 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3971_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_10_reg_6165 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3975_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_13_reg_6170 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3979_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_14_reg_6175 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3983_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_17_reg_6180 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3987_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_18_reg_6185 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3991_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_25_reg_6190 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3995_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_26_reg_6195 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3999_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_33_reg_6200 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4003_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_34_reg_6205 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4007_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_41_reg_6210 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4011_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_42_reg_6215 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4015_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_45_reg_6220 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4019_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_46_reg_6225 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4023_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_49_reg_6230 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4027_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_50_reg_6235 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4031_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_57_reg_6240 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4035_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_58_reg_6245 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_4039_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal mul_ln38_61_reg_6250 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_fu_4052_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_2_reg_6255 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_fu_4058_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_3_reg_6260 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_fu_4062_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_4_reg_6265 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_fu_4066_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_7_reg_6270 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_fu_4070_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_10_reg_6275 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_fu_4074_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_15_reg_6280 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_fu_4078_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_18_reg_6285 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_fu_4082_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_19_reg_6290 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_fu_4086_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_22_reg_6295 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_fu_4090_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_25_reg_6300 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_fu_4094_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_26_reg_6305 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_fu_4098_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_31_reg_6310 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_fu_4102_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_34_reg_6315 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_fu_4106_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_35_reg_6320 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_fu_4110_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_38_reg_6325 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_fu_4114_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_41_reg_6330 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_fu_4118_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_46_reg_6335 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_fu_4122_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_49_reg_6340 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_fu_4126_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_50_reg_6345 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_fu_4130_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_53_reg_6350 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_fu_4134_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_56_reg_6355 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_fu_4138_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_57_reg_6360 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_fu_4225_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_30_reg_6365 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_fu_4274_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_45_reg_6370 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_fu_4323_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_61_reg_6375 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln42_fu_4339_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal add_ln42_fu_4345_p2 : STD_LOGIC_VECTOR (12 downto 0); + signal ap_enable_reg_pp3_iter0 : STD_LOGIC := '0'; + signal ap_block_pp0_stage0_subdone : BOOLEAN; + signal ap_condition_pp0_exit_iter0_state9 : STD_LOGIC; + signal ap_enable_reg_pp0_iter2 : STD_LOGIC := '0'; + signal ap_CS_fsm_state18 : STD_LOGIC; + attribute fsm_encoding of ap_CS_fsm_state18 : signal is "none"; + signal ap_block_pp1_stage0_subdone : BOOLEAN; + signal ap_condition_pp1_exit_iter0_state19 : STD_LOGIC; + signal ap_enable_reg_pp1_iter2 : STD_LOGIC := '0'; + signal ap_block_pp2_stage0_subdone : BOOLEAN; + signal ap_condition_pp2_exit_iter0_state25 : STD_LOGIC; + signal ap_enable_reg_pp2_iter1 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter4 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter6 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter7 : STD_LOGIC := '0'; + signal ap_enable_reg_pp2_iter8 : STD_LOGIC := '0'; + signal ap_block_pp3_stage0_subdone : BOOLEAN; + signal ap_condition_pp3_exit_iter0_state35 : STD_LOGIC; + signal in1_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_0_ce0 : STD_LOGIC; + signal in1_loc_0_we0 : STD_LOGIC; + signal in1_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_1_ce0 : STD_LOGIC; + signal in1_loc_1_we0 : STD_LOGIC; + signal in1_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_2_ce0 : STD_LOGIC; + signal in1_loc_2_we0 : STD_LOGIC; + signal in1_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_3_ce0 : STD_LOGIC; + signal in1_loc_3_we0 : STD_LOGIC; + signal in1_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_4_ce0 : STD_LOGIC; + signal in1_loc_4_we0 : STD_LOGIC; + signal in1_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_5_ce0 : STD_LOGIC; + signal in1_loc_5_we0 : STD_LOGIC; + signal in1_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_6_ce0 : STD_LOGIC; + signal in1_loc_6_we0 : STD_LOGIC; + signal in1_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_7_ce0 : STD_LOGIC; + signal in1_loc_7_we0 : STD_LOGIC; + signal in1_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_8_ce0 : STD_LOGIC; + signal in1_loc_8_we0 : STD_LOGIC; + signal in1_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_9_ce0 : STD_LOGIC; + signal in1_loc_9_we0 : STD_LOGIC; + signal in1_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_10_ce0 : STD_LOGIC; + signal in1_loc_10_we0 : STD_LOGIC; + signal in1_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_11_ce0 : STD_LOGIC; + signal in1_loc_11_we0 : STD_LOGIC; + signal in1_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_12_ce0 : STD_LOGIC; + signal in1_loc_12_we0 : STD_LOGIC; + signal in1_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_13_ce0 : STD_LOGIC; + signal in1_loc_13_we0 : STD_LOGIC; + signal in1_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_14_ce0 : STD_LOGIC; + signal in1_loc_14_we0 : STD_LOGIC; + signal in1_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_15_ce0 : STD_LOGIC; + signal in1_loc_15_we0 : STD_LOGIC; + signal in1_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_16_ce0 : STD_LOGIC; + signal in1_loc_16_we0 : STD_LOGIC; + signal in1_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_17_ce0 : STD_LOGIC; + signal in1_loc_17_we0 : STD_LOGIC; + signal in1_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_18_ce0 : STD_LOGIC; + signal in1_loc_18_we0 : STD_LOGIC; + signal in1_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_19_ce0 : STD_LOGIC; + signal in1_loc_19_we0 : STD_LOGIC; + signal in1_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_20_ce0 : STD_LOGIC; + signal in1_loc_20_we0 : STD_LOGIC; + signal in1_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_21_ce0 : STD_LOGIC; + signal in1_loc_21_we0 : STD_LOGIC; + signal in1_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_22_ce0 : STD_LOGIC; + signal in1_loc_22_we0 : STD_LOGIC; + signal in1_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_23_ce0 : STD_LOGIC; + signal in1_loc_23_we0 : STD_LOGIC; + signal in1_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_24_ce0 : STD_LOGIC; + signal in1_loc_24_we0 : STD_LOGIC; + signal in1_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_25_ce0 : STD_LOGIC; + signal in1_loc_25_we0 : STD_LOGIC; + signal in1_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_26_ce0 : STD_LOGIC; + signal in1_loc_26_we0 : STD_LOGIC; + signal in1_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_27_ce0 : STD_LOGIC; + signal in1_loc_27_we0 : STD_LOGIC; + signal in1_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_28_ce0 : STD_LOGIC; + signal in1_loc_28_we0 : STD_LOGIC; + signal in1_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_29_ce0 : STD_LOGIC; + signal in1_loc_29_we0 : STD_LOGIC; + signal in1_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_30_ce0 : STD_LOGIC; + signal in1_loc_30_we0 : STD_LOGIC; + signal in1_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_31_ce0 : STD_LOGIC; + signal in1_loc_31_we0 : STD_LOGIC; + signal in1_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_32_ce0 : STD_LOGIC; + signal in1_loc_32_we0 : STD_LOGIC; + signal in1_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_33_ce0 : STD_LOGIC; + signal in1_loc_33_we0 : STD_LOGIC; + signal in1_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_34_ce0 : STD_LOGIC; + signal in1_loc_34_we0 : STD_LOGIC; + signal in1_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_35_ce0 : STD_LOGIC; + signal in1_loc_35_we0 : STD_LOGIC; + signal in1_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_36_ce0 : STD_LOGIC; + signal in1_loc_36_we0 : STD_LOGIC; + signal in1_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_37_ce0 : STD_LOGIC; + signal in1_loc_37_we0 : STD_LOGIC; + signal in1_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_38_ce0 : STD_LOGIC; + signal in1_loc_38_we0 : STD_LOGIC; + signal in1_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_39_ce0 : STD_LOGIC; + signal in1_loc_39_we0 : STD_LOGIC; + signal in1_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_40_ce0 : STD_LOGIC; + signal in1_loc_40_we0 : STD_LOGIC; + signal in1_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_41_ce0 : STD_LOGIC; + signal in1_loc_41_we0 : STD_LOGIC; + signal in1_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_42_ce0 : STD_LOGIC; + signal in1_loc_42_we0 : STD_LOGIC; + signal in1_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_43_ce0 : STD_LOGIC; + signal in1_loc_43_we0 : STD_LOGIC; + signal in1_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_44_ce0 : STD_LOGIC; + signal in1_loc_44_we0 : STD_LOGIC; + signal in1_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_45_ce0 : STD_LOGIC; + signal in1_loc_45_we0 : STD_LOGIC; + signal in1_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_46_ce0 : STD_LOGIC; + signal in1_loc_46_we0 : STD_LOGIC; + signal in1_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_47_ce0 : STD_LOGIC; + signal in1_loc_47_we0 : STD_LOGIC; + signal in1_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_48_ce0 : STD_LOGIC; + signal in1_loc_48_we0 : STD_LOGIC; + signal in1_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_49_ce0 : STD_LOGIC; + signal in1_loc_49_we0 : STD_LOGIC; + signal in1_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_50_ce0 : STD_LOGIC; + signal in1_loc_50_we0 : STD_LOGIC; + signal in1_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_51_ce0 : STD_LOGIC; + signal in1_loc_51_we0 : STD_LOGIC; + signal in1_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_52_ce0 : STD_LOGIC; + signal in1_loc_52_we0 : STD_LOGIC; + signal in1_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_53_ce0 : STD_LOGIC; + signal in1_loc_53_we0 : STD_LOGIC; + signal in1_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_54_ce0 : STD_LOGIC; + signal in1_loc_54_we0 : STD_LOGIC; + signal in1_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_55_ce0 : STD_LOGIC; + signal in1_loc_55_we0 : STD_LOGIC; + signal in1_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_56_ce0 : STD_LOGIC; + signal in1_loc_56_we0 : STD_LOGIC; + signal in1_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_57_ce0 : STD_LOGIC; + signal in1_loc_57_we0 : STD_LOGIC; + signal in1_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_58_ce0 : STD_LOGIC; + signal in1_loc_58_we0 : STD_LOGIC; + signal in1_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_59_ce0 : STD_LOGIC; + signal in1_loc_59_we0 : STD_LOGIC; + signal in1_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_60_ce0 : STD_LOGIC; + signal in1_loc_60_we0 : STD_LOGIC; + signal in1_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_61_ce0 : STD_LOGIC; + signal in1_loc_61_we0 : STD_LOGIC; + signal in1_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_62_ce0 : STD_LOGIC; + signal in1_loc_62_we0 : STD_LOGIC; + signal in1_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in1_loc_63_ce0 : STD_LOGIC; + signal in1_loc_63_we0 : STD_LOGIC; + signal in2_loc_0_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_0_ce0 : STD_LOGIC; + signal in2_loc_0_we0 : STD_LOGIC; + signal in2_loc_1_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_1_ce0 : STD_LOGIC; + signal in2_loc_1_we0 : STD_LOGIC; + signal in2_loc_2_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_2_ce0 : STD_LOGIC; + signal in2_loc_2_we0 : STD_LOGIC; + signal in2_loc_3_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_3_ce0 : STD_LOGIC; + signal in2_loc_3_we0 : STD_LOGIC; + signal in2_loc_4_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_4_ce0 : STD_LOGIC; + signal in2_loc_4_we0 : STD_LOGIC; + signal in2_loc_5_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_5_ce0 : STD_LOGIC; + signal in2_loc_5_we0 : STD_LOGIC; + signal in2_loc_6_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_6_ce0 : STD_LOGIC; + signal in2_loc_6_we0 : STD_LOGIC; + signal in2_loc_7_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_7_ce0 : STD_LOGIC; + signal in2_loc_7_we0 : STD_LOGIC; + signal in2_loc_8_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_8_ce0 : STD_LOGIC; + signal in2_loc_8_we0 : STD_LOGIC; + signal in2_loc_9_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_9_ce0 : STD_LOGIC; + signal in2_loc_9_we0 : STD_LOGIC; + signal in2_loc_10_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_10_ce0 : STD_LOGIC; + signal in2_loc_10_we0 : STD_LOGIC; + signal in2_loc_11_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_11_ce0 : STD_LOGIC; + signal in2_loc_11_we0 : STD_LOGIC; + signal in2_loc_12_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_12_ce0 : STD_LOGIC; + signal in2_loc_12_we0 : STD_LOGIC; + signal in2_loc_13_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_13_ce0 : STD_LOGIC; + signal in2_loc_13_we0 : STD_LOGIC; + signal in2_loc_14_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_14_ce0 : STD_LOGIC; + signal in2_loc_14_we0 : STD_LOGIC; + signal in2_loc_15_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_15_ce0 : STD_LOGIC; + signal in2_loc_15_we0 : STD_LOGIC; + signal in2_loc_16_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_16_ce0 : STD_LOGIC; + signal in2_loc_16_we0 : STD_LOGIC; + signal in2_loc_17_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_17_ce0 : STD_LOGIC; + signal in2_loc_17_we0 : STD_LOGIC; + signal in2_loc_18_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_18_ce0 : STD_LOGIC; + signal in2_loc_18_we0 : STD_LOGIC; + signal in2_loc_19_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_19_ce0 : STD_LOGIC; + signal in2_loc_19_we0 : STD_LOGIC; + signal in2_loc_20_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_20_ce0 : STD_LOGIC; + signal in2_loc_20_we0 : STD_LOGIC; + signal in2_loc_21_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_21_ce0 : STD_LOGIC; + signal in2_loc_21_we0 : STD_LOGIC; + signal in2_loc_22_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_22_ce0 : STD_LOGIC; + signal in2_loc_22_we0 : STD_LOGIC; + signal in2_loc_23_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_23_ce0 : STD_LOGIC; + signal in2_loc_23_we0 : STD_LOGIC; + signal in2_loc_24_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_24_ce0 : STD_LOGIC; + signal in2_loc_24_we0 : STD_LOGIC; + signal in2_loc_25_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_25_ce0 : STD_LOGIC; + signal in2_loc_25_we0 : STD_LOGIC; + signal in2_loc_26_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_26_ce0 : STD_LOGIC; + signal in2_loc_26_we0 : STD_LOGIC; + signal in2_loc_27_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_27_ce0 : STD_LOGIC; + signal in2_loc_27_we0 : STD_LOGIC; + signal in2_loc_28_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_28_ce0 : STD_LOGIC; + signal in2_loc_28_we0 : STD_LOGIC; + signal in2_loc_29_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_29_ce0 : STD_LOGIC; + signal in2_loc_29_we0 : STD_LOGIC; + signal in2_loc_30_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_30_ce0 : STD_LOGIC; + signal in2_loc_30_we0 : STD_LOGIC; + signal in2_loc_31_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_31_ce0 : STD_LOGIC; + signal in2_loc_31_we0 : STD_LOGIC; + signal in2_loc_32_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_32_ce0 : STD_LOGIC; + signal in2_loc_32_we0 : STD_LOGIC; + signal in2_loc_33_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_33_ce0 : STD_LOGIC; + signal in2_loc_33_we0 : STD_LOGIC; + signal in2_loc_34_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_34_ce0 : STD_LOGIC; + signal in2_loc_34_we0 : STD_LOGIC; + signal in2_loc_35_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_35_ce0 : STD_LOGIC; + signal in2_loc_35_we0 : STD_LOGIC; + signal in2_loc_36_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_36_ce0 : STD_LOGIC; + signal in2_loc_36_we0 : STD_LOGIC; + signal in2_loc_37_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_37_ce0 : STD_LOGIC; + signal in2_loc_37_we0 : STD_LOGIC; + signal in2_loc_38_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_38_ce0 : STD_LOGIC; + signal in2_loc_38_we0 : STD_LOGIC; + signal in2_loc_39_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_39_ce0 : STD_LOGIC; + signal in2_loc_39_we0 : STD_LOGIC; + signal in2_loc_40_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_40_ce0 : STD_LOGIC; + signal in2_loc_40_we0 : STD_LOGIC; + signal in2_loc_41_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_41_ce0 : STD_LOGIC; + signal in2_loc_41_we0 : STD_LOGIC; + signal in2_loc_42_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_42_ce0 : STD_LOGIC; + signal in2_loc_42_we0 : STD_LOGIC; + signal in2_loc_43_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_43_ce0 : STD_LOGIC; + signal in2_loc_43_we0 : STD_LOGIC; + signal in2_loc_44_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_44_ce0 : STD_LOGIC; + signal in2_loc_44_we0 : STD_LOGIC; + signal in2_loc_45_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_45_ce0 : STD_LOGIC; + signal in2_loc_45_we0 : STD_LOGIC; + signal in2_loc_46_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_46_ce0 : STD_LOGIC; + signal in2_loc_46_we0 : STD_LOGIC; + signal in2_loc_47_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_47_ce0 : STD_LOGIC; + signal in2_loc_47_we0 : STD_LOGIC; + signal in2_loc_48_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_48_ce0 : STD_LOGIC; + signal in2_loc_48_we0 : STD_LOGIC; + signal in2_loc_49_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_49_ce0 : STD_LOGIC; + signal in2_loc_49_we0 : STD_LOGIC; + signal in2_loc_50_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_50_ce0 : STD_LOGIC; + signal in2_loc_50_we0 : STD_LOGIC; + signal in2_loc_51_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_51_ce0 : STD_LOGIC; + signal in2_loc_51_we0 : STD_LOGIC; + signal in2_loc_52_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_52_ce0 : STD_LOGIC; + signal in2_loc_52_we0 : STD_LOGIC; + signal in2_loc_53_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_53_ce0 : STD_LOGIC; + signal in2_loc_53_we0 : STD_LOGIC; + signal in2_loc_54_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_54_ce0 : STD_LOGIC; + signal in2_loc_54_we0 : STD_LOGIC; + signal in2_loc_55_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_55_ce0 : STD_LOGIC; + signal in2_loc_55_we0 : STD_LOGIC; + signal in2_loc_56_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_56_ce0 : STD_LOGIC; + signal in2_loc_56_we0 : STD_LOGIC; + signal in2_loc_57_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_57_ce0 : STD_LOGIC; + signal in2_loc_57_we0 : STD_LOGIC; + signal in2_loc_58_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_58_ce0 : STD_LOGIC; + signal in2_loc_58_we0 : STD_LOGIC; + signal in2_loc_59_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_59_ce0 : STD_LOGIC; + signal in2_loc_59_we0 : STD_LOGIC; + signal in2_loc_60_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_60_ce0 : STD_LOGIC; + signal in2_loc_60_we0 : STD_LOGIC; + signal in2_loc_61_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_61_ce0 : STD_LOGIC; + signal in2_loc_61_we0 : STD_LOGIC; + signal in2_loc_62_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_62_ce0 : STD_LOGIC; + signal in2_loc_62_we0 : STD_LOGIC; + signal in2_loc_63_address0 : STD_LOGIC_VECTOR (5 downto 0); + signal in2_loc_63_ce0 : STD_LOGIC; + signal in2_loc_63_we0 : STD_LOGIC; + signal out_loc_address0 : STD_LOGIC_VECTOR (11 downto 0); + signal out_loc_ce0 : STD_LOGIC; + signal out_loc_ce1 : STD_LOGIC; + signal out_loc_we1 : STD_LOGIC; + signal out_loc_d1 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_phi_mux_i_0_phi_fu_3333_p4 : STD_LOGIC_VECTOR (30 downto 0); + signal ap_block_pp2_stage0 : BOOLEAN; + signal zext_ln27_fu_3451_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln28_fu_3544_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln38_fu_3680_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal zext_ln42_fu_4351_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_8_fu_3397_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_fu_3407_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal empty_7_fu_3416_p1 : STD_LOGIC_VECTOR (63 downto 0); + signal ap_block_pp3_stage0_01001 : BOOLEAN; + signal grp_fu_3614_p0 : STD_LOGIC_VECTOR (31 downto 0); + signal grp_fu_3614_p1 : STD_LOGIC_VECTOR (31 downto 0); + signal icmp_ln33_fu_3637_p2 : STD_LOGIC_VECTOR (0 downto 0); + signal i_fu_3631_p2 : STD_LOGIC_VECTOR (30 downto 0); + signal trunc_ln38_fu_3658_p1 : STD_LOGIC_VECTOR (7 downto 0); + signal tmp_cast_fu_3662_p3 : STD_LOGIC_VECTOR (13 downto 0); + signal trunc_ln38_1_fu_3670_p1 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_64_fu_3674_p2 : STD_LOGIC_VECTOR (13 downto 0); + signal add_ln38_fu_4043_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_1_fu_4048_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_5_fu_4142_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_8_fu_4151_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_11_fu_4160_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_9_fu_4155_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_12_fu_4164_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_6_fu_4146_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_13_fu_4169_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_16_fu_4181_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_17_fu_4185_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_20_fu_4190_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_23_fu_4200_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_24_fu_4204_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_27_fu_4209_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_21_fu_4194_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_28_fu_4213_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_14_fu_4175_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_29_fu_4219_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_32_fu_4231_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_33_fu_4235_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_36_fu_4240_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_39_fu_4250_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_42_fu_4259_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_40_fu_4254_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_43_fu_4263_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_37_fu_4244_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_44_fu_4268_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_47_fu_4280_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_48_fu_4284_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_51_fu_4289_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_54_fu_4299_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_58_fu_4308_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_55_fu_4303_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_59_fu_4312_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_52_fu_4293_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_60_fu_4317_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal add_ln38_62_fu_4329_p2 : STD_LOGIC_VECTOR (31 downto 0); + signal ap_NS_fsm : STD_LOGIC_VECTOR (27 downto 0); + signal ap_idle_pp0 : STD_LOGIC; + signal ap_enable_pp0 : STD_LOGIC; + signal ap_idle_pp1 : STD_LOGIC; + signal ap_enable_pp1 : STD_LOGIC; + signal ap_idle_pp2 : STD_LOGIC; + signal ap_enable_pp2 : STD_LOGIC; + signal ap_idle_pp3 : STD_LOGIC; + signal ap_enable_pp3 : STD_LOGIC; + + component mmult_mul_32ns_32bkb IS + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR (31 downto 0); + din1 : IN STD_LOGIC_VECTOR (31 downto 0); + ce : IN STD_LOGIC; + dout : OUT STD_LOGIC_VECTOR (63 downto 0) ); + end component; + + + component mmult_mul_32s_32scud IS + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR (31 downto 0); + din1 : IN STD_LOGIC_VECTOR (31 downto 0); + ce : IN STD_LOGIC; + dout : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_loc_0 IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (5 downto 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR (31 downto 0); + q0 : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_out_loc IS + generic ( + DataWidth : INTEGER; + AddressRange : INTEGER; + AddressWidth : INTEGER ); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR (11 downto 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR (31 downto 0); + address1 : IN STD_LOGIC_VECTOR (11 downto 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_params_s_axi IS + generic ( + C_S_AXI_ADDR_WIDTH : INTEGER; + C_S_AXI_DATA_WIDTH : INTEGER ); + port ( + AWVALID : IN STD_LOGIC; + AWREADY : OUT STD_LOGIC; + AWADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + WVALID : IN STD_LOGIC; + WREADY : OUT STD_LOGIC; + WDATA : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB : IN STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH/8-1 downto 0); + ARVALID : IN STD_LOGIC; + ARREADY : OUT STD_LOGIC; + ARADDR : IN STD_LOGIC_VECTOR (C_S_AXI_ADDR_WIDTH-1 downto 0); + RVALID : OUT STD_LOGIC; + RREADY : IN STD_LOGIC; + RDATA : OUT STD_LOGIC_VECTOR (C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + BVALID : OUT STD_LOGIC; + BREADY : IN STD_LOGIC; + BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + ap_start : OUT STD_LOGIC; + interrupt : OUT STD_LOGIC; + ap_ready : IN STD_LOGIC; + ap_done : IN STD_LOGIC; + ap_idle : IN STD_LOGIC; + in1 : OUT STD_LOGIC_VECTOR (31 downto 0); + in2 : OUT STD_LOGIC_VECTOR (31 downto 0); + out_r : OUT STD_LOGIC_VECTOR (31 downto 0); + dim : OUT STD_LOGIC_VECTOR (31 downto 0) ); + end component; + + + component mmult_in1_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_in2_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + component mmult_out_mem_m_axi IS + generic ( + CONSERVATIVE : INTEGER; + USER_DW : INTEGER; + USER_AW : INTEGER; + USER_MAXREQS : INTEGER; + NUM_READ_OUTSTANDING : INTEGER; + NUM_WRITE_OUTSTANDING : INTEGER; + MAX_READ_BURST_LENGTH : INTEGER; + MAX_WRITE_BURST_LENGTH : INTEGER; + C_M_AXI_ID_WIDTH : INTEGER; + C_M_AXI_ADDR_WIDTH : INTEGER; + C_M_AXI_DATA_WIDTH : INTEGER; + C_M_AXI_AWUSER_WIDTH : INTEGER; + C_M_AXI_ARUSER_WIDTH : INTEGER; + C_M_AXI_WUSER_WIDTH : INTEGER; + C_M_AXI_RUSER_WIDTH : INTEGER; + C_M_AXI_BUSER_WIDTH : INTEGER; + C_USER_VALUE : INTEGER; + C_PROT_VALUE : INTEGER; + C_CACHE_VALUE : INTEGER ); + port ( + AWVALID : OUT STD_LOGIC; + AWREADY : IN STD_LOGIC; + AWADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + AWID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + AWLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + AWSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + AWBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + AWLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + AWCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + AWPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + AWQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + AWREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + AWUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_AWUSER_WIDTH-1 downto 0); + WVALID : OUT STD_LOGIC; + WREADY : IN STD_LOGIC; + WDATA : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : OUT STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : OUT STD_LOGIC; + WID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + WUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_WUSER_WIDTH-1 downto 0); + ARVALID : OUT STD_LOGIC; + ARREADY : IN STD_LOGIC; + ARADDR : OUT STD_LOGIC_VECTOR (C_M_AXI_ADDR_WIDTH-1 downto 0); + ARID : OUT STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + ARLEN : OUT STD_LOGIC_VECTOR (7 downto 0); + ARSIZE : OUT STD_LOGIC_VECTOR (2 downto 0); + ARBURST : OUT STD_LOGIC_VECTOR (1 downto 0); + ARLOCK : OUT STD_LOGIC_VECTOR (1 downto 0); + ARCACHE : OUT STD_LOGIC_VECTOR (3 downto 0); + ARPROT : OUT STD_LOGIC_VECTOR (2 downto 0); + ARQOS : OUT STD_LOGIC_VECTOR (3 downto 0); + ARREGION : OUT STD_LOGIC_VECTOR (3 downto 0); + ARUSER : OUT STD_LOGIC_VECTOR (C_M_AXI_ARUSER_WIDTH-1 downto 0); + RVALID : IN STD_LOGIC; + RREADY : OUT STD_LOGIC; + RDATA : IN STD_LOGIC_VECTOR (C_M_AXI_DATA_WIDTH-1 downto 0); + RLAST : IN STD_LOGIC; + RID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + RUSER : IN STD_LOGIC_VECTOR (C_M_AXI_RUSER_WIDTH-1 downto 0); + RRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BVALID : IN STD_LOGIC; + BREADY : OUT STD_LOGIC; + BRESP : IN STD_LOGIC_VECTOR (1 downto 0); + BID : IN STD_LOGIC_VECTOR (C_M_AXI_ID_WIDTH-1 downto 0); + BUSER : IN STD_LOGIC_VECTOR (C_M_AXI_BUSER_WIDTH-1 downto 0); + ACLK : IN STD_LOGIC; + ARESET : IN STD_LOGIC; + ACLK_EN : IN STD_LOGIC; + I_ARVALID : IN STD_LOGIC; + I_ARREADY : OUT STD_LOGIC; + I_ARADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARID : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_ARSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_ARPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_ARUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_ARBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_ARREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_RVALID : OUT STD_LOGIC; + I_RREADY : IN STD_LOGIC; + I_RDATA : OUT STD_LOGIC_VECTOR (31 downto 0); + I_RID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RUSER : OUT STD_LOGIC_VECTOR (0 downto 0); + I_RRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_RLAST : OUT STD_LOGIC; + I_AWVALID : IN STD_LOGIC; + I_AWREADY : OUT STD_LOGIC; + I_AWADDR : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWID : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWLEN : IN STD_LOGIC_VECTOR (31 downto 0); + I_AWSIZE : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWLOCK : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWCACHE : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWQOS : IN STD_LOGIC_VECTOR (3 downto 0); + I_AWPROT : IN STD_LOGIC_VECTOR (2 downto 0); + I_AWUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_AWBURST : IN STD_LOGIC_VECTOR (1 downto 0); + I_AWREGION : IN STD_LOGIC_VECTOR (3 downto 0); + I_WVALID : IN STD_LOGIC; + I_WREADY : OUT STD_LOGIC; + I_WDATA : IN STD_LOGIC_VECTOR (31 downto 0); + I_WID : IN STD_LOGIC_VECTOR (0 downto 0); + I_WUSER : IN STD_LOGIC_VECTOR (0 downto 0); + I_WLAST : IN STD_LOGIC; + I_WSTRB : IN STD_LOGIC_VECTOR (3 downto 0); + I_BVALID : OUT STD_LOGIC; + I_BREADY : IN STD_LOGIC; + I_BRESP : OUT STD_LOGIC_VECTOR (1 downto 0); + I_BID : OUT STD_LOGIC_VECTOR (0 downto 0); + I_BUSER : OUT STD_LOGIC_VECTOR (0 downto 0) ); + end component; + + + +begin + mmult_params_s_axi_U : component mmult_params_s_axi + generic map ( + C_S_AXI_ADDR_WIDTH => C_S_AXI_PARAMS_ADDR_WIDTH, + C_S_AXI_DATA_WIDTH => C_S_AXI_PARAMS_DATA_WIDTH) + port map ( + AWVALID => s_axi_params_AWVALID, + AWREADY => s_axi_params_AWREADY, + AWADDR => s_axi_params_AWADDR, + WVALID => s_axi_params_WVALID, + WREADY => s_axi_params_WREADY, + WDATA => s_axi_params_WDATA, + WSTRB => s_axi_params_WSTRB, + ARVALID => s_axi_params_ARVALID, + ARREADY => s_axi_params_ARREADY, + ARADDR => s_axi_params_ARADDR, + RVALID => s_axi_params_RVALID, + RREADY => s_axi_params_RREADY, + RDATA => s_axi_params_RDATA, + RRESP => s_axi_params_RRESP, + BVALID => s_axi_params_BVALID, + BREADY => s_axi_params_BREADY, + BRESP => s_axi_params_BRESP, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + ap_start => ap_start, + interrupt => interrupt, + ap_ready => ap_ready, + ap_done => ap_done, + ap_idle => ap_idle, + in1 => in1, + in2 => in2, + out_r => out_r, + dim => dim); + + mmult_in1_mem_m_axi_U : component mmult_in1_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN1_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN1_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN1_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN1_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN1_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN1_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN1_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN1_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN1_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN1_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN1_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in1_mem_AWVALID, + AWREADY => m_axi_in1_mem_AWREADY, + AWADDR => m_axi_in1_mem_AWADDR, + AWID => m_axi_in1_mem_AWID, + AWLEN => m_axi_in1_mem_AWLEN, + AWSIZE => m_axi_in1_mem_AWSIZE, + AWBURST => m_axi_in1_mem_AWBURST, + AWLOCK => m_axi_in1_mem_AWLOCK, + AWCACHE => m_axi_in1_mem_AWCACHE, + AWPROT => m_axi_in1_mem_AWPROT, + AWQOS => m_axi_in1_mem_AWQOS, + AWREGION => m_axi_in1_mem_AWREGION, + AWUSER => m_axi_in1_mem_AWUSER, + WVALID => m_axi_in1_mem_WVALID, + WREADY => m_axi_in1_mem_WREADY, + WDATA => m_axi_in1_mem_WDATA, + WSTRB => m_axi_in1_mem_WSTRB, + WLAST => m_axi_in1_mem_WLAST, + WID => m_axi_in1_mem_WID, + WUSER => m_axi_in1_mem_WUSER, + ARVALID => m_axi_in1_mem_ARVALID, + ARREADY => m_axi_in1_mem_ARREADY, + ARADDR => m_axi_in1_mem_ARADDR, + ARID => m_axi_in1_mem_ARID, + ARLEN => m_axi_in1_mem_ARLEN, + ARSIZE => m_axi_in1_mem_ARSIZE, + ARBURST => m_axi_in1_mem_ARBURST, + ARLOCK => m_axi_in1_mem_ARLOCK, + ARCACHE => m_axi_in1_mem_ARCACHE, + ARPROT => m_axi_in1_mem_ARPROT, + ARQOS => m_axi_in1_mem_ARQOS, + ARREGION => m_axi_in1_mem_ARREGION, + ARUSER => m_axi_in1_mem_ARUSER, + RVALID => m_axi_in1_mem_RVALID, + RREADY => m_axi_in1_mem_RREADY, + RDATA => m_axi_in1_mem_RDATA, + RLAST => m_axi_in1_mem_RLAST, + RID => m_axi_in1_mem_RID, + RUSER => m_axi_in1_mem_RUSER, + RRESP => m_axi_in1_mem_RRESP, + BVALID => m_axi_in1_mem_BVALID, + BREADY => m_axi_in1_mem_BREADY, + BRESP => m_axi_in1_mem_BRESP, + BID => m_axi_in1_mem_BID, + BUSER => m_axi_in1_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in1_mem_ARVALID, + I_ARREADY => in1_mem_ARREADY, + I_ARADDR => in1_mem_ARADDR, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in1_mem_RVALID, + I_RREADY => in1_mem_RREADY, + I_RDATA => in1_mem_RDATA, + I_RID => in1_mem_RID, + I_RUSER => in1_mem_RUSER, + I_RRESP => in1_mem_RRESP, + I_RLAST => in1_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in1_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in1_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in1_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in1_mem_BRESP, + I_BID => in1_mem_BID, + I_BUSER => in1_mem_BUSER); + + mmult_in2_mem_m_axi_U : component mmult_in2_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_IN2_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_IN2_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_IN2_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_IN2_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_IN2_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_IN2_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_IN2_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_IN2_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_IN2_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_IN2_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_IN2_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_in2_mem_AWVALID, + AWREADY => m_axi_in2_mem_AWREADY, + AWADDR => m_axi_in2_mem_AWADDR, + AWID => m_axi_in2_mem_AWID, + AWLEN => m_axi_in2_mem_AWLEN, + AWSIZE => m_axi_in2_mem_AWSIZE, + AWBURST => m_axi_in2_mem_AWBURST, + AWLOCK => m_axi_in2_mem_AWLOCK, + AWCACHE => m_axi_in2_mem_AWCACHE, + AWPROT => m_axi_in2_mem_AWPROT, + AWQOS => m_axi_in2_mem_AWQOS, + AWREGION => m_axi_in2_mem_AWREGION, + AWUSER => m_axi_in2_mem_AWUSER, + WVALID => m_axi_in2_mem_WVALID, + WREADY => m_axi_in2_mem_WREADY, + WDATA => m_axi_in2_mem_WDATA, + WSTRB => m_axi_in2_mem_WSTRB, + WLAST => m_axi_in2_mem_WLAST, + WID => m_axi_in2_mem_WID, + WUSER => m_axi_in2_mem_WUSER, + ARVALID => m_axi_in2_mem_ARVALID, + ARREADY => m_axi_in2_mem_ARREADY, + ARADDR => m_axi_in2_mem_ARADDR, + ARID => m_axi_in2_mem_ARID, + ARLEN => m_axi_in2_mem_ARLEN, + ARSIZE => m_axi_in2_mem_ARSIZE, + ARBURST => m_axi_in2_mem_ARBURST, + ARLOCK => m_axi_in2_mem_ARLOCK, + ARCACHE => m_axi_in2_mem_ARCACHE, + ARPROT => m_axi_in2_mem_ARPROT, + ARQOS => m_axi_in2_mem_ARQOS, + ARREGION => m_axi_in2_mem_ARREGION, + ARUSER => m_axi_in2_mem_ARUSER, + RVALID => m_axi_in2_mem_RVALID, + RREADY => m_axi_in2_mem_RREADY, + RDATA => m_axi_in2_mem_RDATA, + RLAST => m_axi_in2_mem_RLAST, + RID => m_axi_in2_mem_RID, + RUSER => m_axi_in2_mem_RUSER, + RRESP => m_axi_in2_mem_RRESP, + BVALID => m_axi_in2_mem_BVALID, + BREADY => m_axi_in2_mem_BREADY, + BRESP => m_axi_in2_mem_BRESP, + BID => m_axi_in2_mem_BID, + BUSER => m_axi_in2_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => in2_mem_ARVALID, + I_ARREADY => in2_mem_ARREADY, + I_ARADDR => in2_mem_addr_reg_4389, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_1000, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => in2_mem_RVALID, + I_RREADY => in2_mem_RREADY, + I_RDATA => in2_mem_RDATA, + I_RID => in2_mem_RID, + I_RUSER => in2_mem_RUSER, + I_RRESP => in2_mem_RRESP, + I_RLAST => in2_mem_RLAST, + I_AWVALID => ap_const_logic_0, + I_AWREADY => in2_mem_AWREADY, + I_AWADDR => ap_const_lv32_0, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_0, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => ap_const_logic_0, + I_WREADY => in2_mem_WREADY, + I_WDATA => ap_const_lv32_0, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_0, + I_BVALID => in2_mem_BVALID, + I_BREADY => ap_const_logic_0, + I_BRESP => in2_mem_BRESP, + I_BID => in2_mem_BID, + I_BUSER => in2_mem_BUSER); + + mmult_out_mem_m_axi_U : component mmult_out_mem_m_axi + generic map ( + CONSERVATIVE => 0, + USER_DW => 32, + USER_AW => 32, + USER_MAXREQS => 5, + NUM_READ_OUTSTANDING => 16, + NUM_WRITE_OUTSTANDING => 16, + MAX_READ_BURST_LENGTH => 16, + MAX_WRITE_BURST_LENGTH => 16, + C_M_AXI_ID_WIDTH => C_M_AXI_OUT_MEM_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_OUT_MEM_ADDR_WIDTH, + C_M_AXI_DATA_WIDTH => C_M_AXI_OUT_MEM_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_OUT_MEM_AWUSER_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_OUT_MEM_ARUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_OUT_MEM_WUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_OUT_MEM_RUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_OUT_MEM_BUSER_WIDTH, + C_USER_VALUE => C_M_AXI_OUT_MEM_USER_VALUE, + C_PROT_VALUE => C_M_AXI_OUT_MEM_PROT_VALUE, + C_CACHE_VALUE => C_M_AXI_OUT_MEM_CACHE_VALUE) + port map ( + AWVALID => m_axi_out_mem_AWVALID, + AWREADY => m_axi_out_mem_AWREADY, + AWADDR => m_axi_out_mem_AWADDR, + AWID => m_axi_out_mem_AWID, + AWLEN => m_axi_out_mem_AWLEN, + AWSIZE => m_axi_out_mem_AWSIZE, + AWBURST => m_axi_out_mem_AWBURST, + AWLOCK => m_axi_out_mem_AWLOCK, + AWCACHE => m_axi_out_mem_AWCACHE, + AWPROT => m_axi_out_mem_AWPROT, + AWQOS => m_axi_out_mem_AWQOS, + AWREGION => m_axi_out_mem_AWREGION, + AWUSER => m_axi_out_mem_AWUSER, + WVALID => m_axi_out_mem_WVALID, + WREADY => m_axi_out_mem_WREADY, + WDATA => m_axi_out_mem_WDATA, + WSTRB => m_axi_out_mem_WSTRB, + WLAST => m_axi_out_mem_WLAST, + WID => m_axi_out_mem_WID, + WUSER => m_axi_out_mem_WUSER, + ARVALID => m_axi_out_mem_ARVALID, + ARREADY => m_axi_out_mem_ARREADY, + ARADDR => m_axi_out_mem_ARADDR, + ARID => m_axi_out_mem_ARID, + ARLEN => m_axi_out_mem_ARLEN, + ARSIZE => m_axi_out_mem_ARSIZE, + ARBURST => m_axi_out_mem_ARBURST, + ARLOCK => m_axi_out_mem_ARLOCK, + ARCACHE => m_axi_out_mem_ARCACHE, + ARPROT => m_axi_out_mem_ARPROT, + ARQOS => m_axi_out_mem_ARQOS, + ARREGION => m_axi_out_mem_ARREGION, + ARUSER => m_axi_out_mem_ARUSER, + RVALID => m_axi_out_mem_RVALID, + RREADY => m_axi_out_mem_RREADY, + RDATA => m_axi_out_mem_RDATA, + RLAST => m_axi_out_mem_RLAST, + RID => m_axi_out_mem_RID, + RUSER => m_axi_out_mem_RUSER, + RRESP => m_axi_out_mem_RRESP, + BVALID => m_axi_out_mem_BVALID, + BREADY => m_axi_out_mem_BREADY, + BRESP => m_axi_out_mem_BRESP, + BID => m_axi_out_mem_BID, + BUSER => m_axi_out_mem_BUSER, + ACLK => ap_clk, + ARESET => ap_rst_n_inv, + ACLK_EN => ap_const_logic_1, + I_ARVALID => ap_const_logic_0, + I_ARREADY => out_mem_ARREADY, + I_ARADDR => ap_const_lv32_0, + I_ARID => ap_const_lv1_0, + I_ARLEN => ap_const_lv32_0, + I_ARSIZE => ap_const_lv3_0, + I_ARLOCK => ap_const_lv2_0, + I_ARCACHE => ap_const_lv4_0, + I_ARQOS => ap_const_lv4_0, + I_ARPROT => ap_const_lv3_0, + I_ARUSER => ap_const_lv1_0, + I_ARBURST => ap_const_lv2_0, + I_ARREGION => ap_const_lv4_0, + I_RVALID => out_mem_RVALID, + I_RREADY => ap_const_logic_0, + I_RDATA => out_mem_RDATA, + I_RID => out_mem_RID, + I_RUSER => out_mem_RUSER, + I_RRESP => out_mem_RRESP, + I_RLAST => out_mem_RLAST, + I_AWVALID => out_mem_AWVALID, + I_AWREADY => out_mem_AWREADY, + I_AWADDR => out_mem_addr_reg_4383, + I_AWID => ap_const_lv1_0, + I_AWLEN => ap_const_lv32_1000, + I_AWSIZE => ap_const_lv3_0, + I_AWLOCK => ap_const_lv2_0, + I_AWCACHE => ap_const_lv4_0, + I_AWQOS => ap_const_lv4_0, + I_AWPROT => ap_const_lv3_0, + I_AWUSER => ap_const_lv1_0, + I_AWBURST => ap_const_lv2_0, + I_AWREGION => ap_const_lv4_0, + I_WVALID => out_mem_WVALID, + I_WREADY => out_mem_WREADY, + I_WDATA => reg_3362, + I_WID => ap_const_lv1_0, + I_WUSER => ap_const_lv1_0, + I_WLAST => ap_const_logic_0, + I_WSTRB => ap_const_lv4_F, + I_BVALID => out_mem_BVALID, + I_BREADY => out_mem_BREADY, + I_BRESP => out_mem_BRESP, + I_BID => out_mem_BID, + I_BUSER => out_mem_BUSER); + + in1_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_0_address0, + ce0 => in1_loc_0_ce0, + we0 => in1_loc_0_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_0_q0); + + in1_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_1_address0, + ce0 => in1_loc_1_ce0, + we0 => in1_loc_1_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_1_q0); + + in1_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_2_address0, + ce0 => in1_loc_2_ce0, + we0 => in1_loc_2_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_2_q0); + + in1_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_3_address0, + ce0 => in1_loc_3_ce0, + we0 => in1_loc_3_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_3_q0); + + in1_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_4_address0, + ce0 => in1_loc_4_ce0, + we0 => in1_loc_4_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_4_q0); + + in1_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_5_address0, + ce0 => in1_loc_5_ce0, + we0 => in1_loc_5_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_5_q0); + + in1_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_6_address0, + ce0 => in1_loc_6_ce0, + we0 => in1_loc_6_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_6_q0); + + in1_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_7_address0, + ce0 => in1_loc_7_ce0, + we0 => in1_loc_7_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_7_q0); + + in1_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_8_address0, + ce0 => in1_loc_8_ce0, + we0 => in1_loc_8_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_8_q0); + + in1_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_9_address0, + ce0 => in1_loc_9_ce0, + we0 => in1_loc_9_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_9_q0); + + in1_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_10_address0, + ce0 => in1_loc_10_ce0, + we0 => in1_loc_10_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_10_q0); + + in1_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_11_address0, + ce0 => in1_loc_11_ce0, + we0 => in1_loc_11_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_11_q0); + + in1_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_12_address0, + ce0 => in1_loc_12_ce0, + we0 => in1_loc_12_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_12_q0); + + in1_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_13_address0, + ce0 => in1_loc_13_ce0, + we0 => in1_loc_13_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_13_q0); + + in1_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_14_address0, + ce0 => in1_loc_14_ce0, + we0 => in1_loc_14_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_14_q0); + + in1_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_15_address0, + ce0 => in1_loc_15_ce0, + we0 => in1_loc_15_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_15_q0); + + in1_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_16_address0, + ce0 => in1_loc_16_ce0, + we0 => in1_loc_16_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_16_q0); + + in1_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_17_address0, + ce0 => in1_loc_17_ce0, + we0 => in1_loc_17_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_17_q0); + + in1_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_18_address0, + ce0 => in1_loc_18_ce0, + we0 => in1_loc_18_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_18_q0); + + in1_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_19_address0, + ce0 => in1_loc_19_ce0, + we0 => in1_loc_19_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_19_q0); + + in1_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_20_address0, + ce0 => in1_loc_20_ce0, + we0 => in1_loc_20_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_20_q0); + + in1_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_21_address0, + ce0 => in1_loc_21_ce0, + we0 => in1_loc_21_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_21_q0); + + in1_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_22_address0, + ce0 => in1_loc_22_ce0, + we0 => in1_loc_22_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_22_q0); + + in1_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_23_address0, + ce0 => in1_loc_23_ce0, + we0 => in1_loc_23_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_23_q0); + + in1_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_24_address0, + ce0 => in1_loc_24_ce0, + we0 => in1_loc_24_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_24_q0); + + in1_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_25_address0, + ce0 => in1_loc_25_ce0, + we0 => in1_loc_25_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_25_q0); + + in1_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_26_address0, + ce0 => in1_loc_26_ce0, + we0 => in1_loc_26_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_26_q0); + + in1_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_27_address0, + ce0 => in1_loc_27_ce0, + we0 => in1_loc_27_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_27_q0); + + in1_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_28_address0, + ce0 => in1_loc_28_ce0, + we0 => in1_loc_28_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_28_q0); + + in1_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_29_address0, + ce0 => in1_loc_29_ce0, + we0 => in1_loc_29_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_29_q0); + + in1_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_30_address0, + ce0 => in1_loc_30_ce0, + we0 => in1_loc_30_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_30_q0); + + in1_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_31_address0, + ce0 => in1_loc_31_ce0, + we0 => in1_loc_31_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_31_q0); + + in1_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_32_address0, + ce0 => in1_loc_32_ce0, + we0 => in1_loc_32_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_32_q0); + + in1_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_33_address0, + ce0 => in1_loc_33_ce0, + we0 => in1_loc_33_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_33_q0); + + in1_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_34_address0, + ce0 => in1_loc_34_ce0, + we0 => in1_loc_34_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_34_q0); + + in1_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_35_address0, + ce0 => in1_loc_35_ce0, + we0 => in1_loc_35_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_35_q0); + + in1_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_36_address0, + ce0 => in1_loc_36_ce0, + we0 => in1_loc_36_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_36_q0); + + in1_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_37_address0, + ce0 => in1_loc_37_ce0, + we0 => in1_loc_37_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_37_q0); + + in1_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_38_address0, + ce0 => in1_loc_38_ce0, + we0 => in1_loc_38_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_38_q0); + + in1_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_39_address0, + ce0 => in1_loc_39_ce0, + we0 => in1_loc_39_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_39_q0); + + in1_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_40_address0, + ce0 => in1_loc_40_ce0, + we0 => in1_loc_40_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_40_q0); + + in1_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_41_address0, + ce0 => in1_loc_41_ce0, + we0 => in1_loc_41_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_41_q0); + + in1_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_42_address0, + ce0 => in1_loc_42_ce0, + we0 => in1_loc_42_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_42_q0); + + in1_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_43_address0, + ce0 => in1_loc_43_ce0, + we0 => in1_loc_43_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_43_q0); + + in1_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_44_address0, + ce0 => in1_loc_44_ce0, + we0 => in1_loc_44_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_44_q0); + + in1_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_45_address0, + ce0 => in1_loc_45_ce0, + we0 => in1_loc_45_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_45_q0); + + in1_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_46_address0, + ce0 => in1_loc_46_ce0, + we0 => in1_loc_46_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_46_q0); + + in1_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_47_address0, + ce0 => in1_loc_47_ce0, + we0 => in1_loc_47_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_47_q0); + + in1_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_48_address0, + ce0 => in1_loc_48_ce0, + we0 => in1_loc_48_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_48_q0); + + in1_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_49_address0, + ce0 => in1_loc_49_ce0, + we0 => in1_loc_49_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_49_q0); + + in1_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_50_address0, + ce0 => in1_loc_50_ce0, + we0 => in1_loc_50_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_50_q0); + + in1_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_51_address0, + ce0 => in1_loc_51_ce0, + we0 => in1_loc_51_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_51_q0); + + in1_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_52_address0, + ce0 => in1_loc_52_ce0, + we0 => in1_loc_52_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_52_q0); + + in1_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_53_address0, + ce0 => in1_loc_53_ce0, + we0 => in1_loc_53_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_53_q0); + + in1_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_54_address0, + ce0 => in1_loc_54_ce0, + we0 => in1_loc_54_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_54_q0); + + in1_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_55_address0, + ce0 => in1_loc_55_ce0, + we0 => in1_loc_55_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_55_q0); + + in1_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_56_address0, + ce0 => in1_loc_56_ce0, + we0 => in1_loc_56_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_56_q0); + + in1_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_57_address0, + ce0 => in1_loc_57_ce0, + we0 => in1_loc_57_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_57_q0); + + in1_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_58_address0, + ce0 => in1_loc_58_ce0, + we0 => in1_loc_58_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_58_q0); + + in1_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_59_address0, + ce0 => in1_loc_59_ce0, + we0 => in1_loc_59_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_59_q0); + + in1_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_60_address0, + ce0 => in1_loc_60_ce0, + we0 => in1_loc_60_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_60_q0); + + in1_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_61_address0, + ce0 => in1_loc_61_ce0, + we0 => in1_loc_61_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_61_q0); + + in1_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_62_address0, + ce0 => in1_loc_62_ce0, + we0 => in1_loc_62_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_62_q0); + + in1_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in1_loc_63_address0, + ce0 => in1_loc_63_ce0, + we0 => in1_loc_63_we0, + d0 => in1_mem_addr_read_reg_4413, + q0 => in1_loc_63_q0); + + in2_loc_0_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_0_address0, + ce0 => in2_loc_0_ce0, + we0 => in2_loc_0_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_0_q0); + + in2_loc_1_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_1_address0, + ce0 => in2_loc_1_ce0, + we0 => in2_loc_1_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_1_q0); + + in2_loc_2_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_2_address0, + ce0 => in2_loc_2_ce0, + we0 => in2_loc_2_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_2_q0); + + in2_loc_3_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_3_address0, + ce0 => in2_loc_3_ce0, + we0 => in2_loc_3_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_3_q0); + + in2_loc_4_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_4_address0, + ce0 => in2_loc_4_ce0, + we0 => in2_loc_4_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_4_q0); + + in2_loc_5_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_5_address0, + ce0 => in2_loc_5_ce0, + we0 => in2_loc_5_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_5_q0); + + in2_loc_6_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_6_address0, + ce0 => in2_loc_6_ce0, + we0 => in2_loc_6_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_6_q0); + + in2_loc_7_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_7_address0, + ce0 => in2_loc_7_ce0, + we0 => in2_loc_7_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_7_q0); + + in2_loc_8_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_8_address0, + ce0 => in2_loc_8_ce0, + we0 => in2_loc_8_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_8_q0); + + in2_loc_9_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_9_address0, + ce0 => in2_loc_9_ce0, + we0 => in2_loc_9_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_9_q0); + + in2_loc_10_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_10_address0, + ce0 => in2_loc_10_ce0, + we0 => in2_loc_10_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_10_q0); + + in2_loc_11_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_11_address0, + ce0 => in2_loc_11_ce0, + we0 => in2_loc_11_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_11_q0); + + in2_loc_12_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_12_address0, + ce0 => in2_loc_12_ce0, + we0 => in2_loc_12_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_12_q0); + + in2_loc_13_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_13_address0, + ce0 => in2_loc_13_ce0, + we0 => in2_loc_13_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_13_q0); + + in2_loc_14_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_14_address0, + ce0 => in2_loc_14_ce0, + we0 => in2_loc_14_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_14_q0); + + in2_loc_15_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_15_address0, + ce0 => in2_loc_15_ce0, + we0 => in2_loc_15_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_15_q0); + + in2_loc_16_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_16_address0, + ce0 => in2_loc_16_ce0, + we0 => in2_loc_16_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_16_q0); + + in2_loc_17_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_17_address0, + ce0 => in2_loc_17_ce0, + we0 => in2_loc_17_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_17_q0); + + in2_loc_18_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_18_address0, + ce0 => in2_loc_18_ce0, + we0 => in2_loc_18_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_18_q0); + + in2_loc_19_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_19_address0, + ce0 => in2_loc_19_ce0, + we0 => in2_loc_19_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_19_q0); + + in2_loc_20_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_20_address0, + ce0 => in2_loc_20_ce0, + we0 => in2_loc_20_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_20_q0); + + in2_loc_21_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_21_address0, + ce0 => in2_loc_21_ce0, + we0 => in2_loc_21_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_21_q0); + + in2_loc_22_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_22_address0, + ce0 => in2_loc_22_ce0, + we0 => in2_loc_22_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_22_q0); + + in2_loc_23_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_23_address0, + ce0 => in2_loc_23_ce0, + we0 => in2_loc_23_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_23_q0); + + in2_loc_24_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_24_address0, + ce0 => in2_loc_24_ce0, + we0 => in2_loc_24_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_24_q0); + + in2_loc_25_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_25_address0, + ce0 => in2_loc_25_ce0, + we0 => in2_loc_25_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_25_q0); + + in2_loc_26_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_26_address0, + ce0 => in2_loc_26_ce0, + we0 => in2_loc_26_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_26_q0); + + in2_loc_27_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_27_address0, + ce0 => in2_loc_27_ce0, + we0 => in2_loc_27_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_27_q0); + + in2_loc_28_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_28_address0, + ce0 => in2_loc_28_ce0, + we0 => in2_loc_28_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_28_q0); + + in2_loc_29_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_29_address0, + ce0 => in2_loc_29_ce0, + we0 => in2_loc_29_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_29_q0); + + in2_loc_30_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_30_address0, + ce0 => in2_loc_30_ce0, + we0 => in2_loc_30_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_30_q0); + + in2_loc_31_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_31_address0, + ce0 => in2_loc_31_ce0, + we0 => in2_loc_31_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_31_q0); + + in2_loc_32_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_32_address0, + ce0 => in2_loc_32_ce0, + we0 => in2_loc_32_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_32_q0); + + in2_loc_33_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_33_address0, + ce0 => in2_loc_33_ce0, + we0 => in2_loc_33_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_33_q0); + + in2_loc_34_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_34_address0, + ce0 => in2_loc_34_ce0, + we0 => in2_loc_34_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_34_q0); + + in2_loc_35_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_35_address0, + ce0 => in2_loc_35_ce0, + we0 => in2_loc_35_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_35_q0); + + in2_loc_36_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_36_address0, + ce0 => in2_loc_36_ce0, + we0 => in2_loc_36_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_36_q0); + + in2_loc_37_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_37_address0, + ce0 => in2_loc_37_ce0, + we0 => in2_loc_37_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_37_q0); + + in2_loc_38_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_38_address0, + ce0 => in2_loc_38_ce0, + we0 => in2_loc_38_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_38_q0); + + in2_loc_39_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_39_address0, + ce0 => in2_loc_39_ce0, + we0 => in2_loc_39_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_39_q0); + + in2_loc_40_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_40_address0, + ce0 => in2_loc_40_ce0, + we0 => in2_loc_40_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_40_q0); + + in2_loc_41_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_41_address0, + ce0 => in2_loc_41_ce0, + we0 => in2_loc_41_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_41_q0); + + in2_loc_42_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_42_address0, + ce0 => in2_loc_42_ce0, + we0 => in2_loc_42_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_42_q0); + + in2_loc_43_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_43_address0, + ce0 => in2_loc_43_ce0, + we0 => in2_loc_43_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_43_q0); + + in2_loc_44_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_44_address0, + ce0 => in2_loc_44_ce0, + we0 => in2_loc_44_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_44_q0); + + in2_loc_45_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_45_address0, + ce0 => in2_loc_45_ce0, + we0 => in2_loc_45_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_45_q0); + + in2_loc_46_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_46_address0, + ce0 => in2_loc_46_ce0, + we0 => in2_loc_46_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_46_q0); + + in2_loc_47_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_47_address0, + ce0 => in2_loc_47_ce0, + we0 => in2_loc_47_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_47_q0); + + in2_loc_48_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_48_address0, + ce0 => in2_loc_48_ce0, + we0 => in2_loc_48_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_48_q0); + + in2_loc_49_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_49_address0, + ce0 => in2_loc_49_ce0, + we0 => in2_loc_49_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_49_q0); + + in2_loc_50_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_50_address0, + ce0 => in2_loc_50_ce0, + we0 => in2_loc_50_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_50_q0); + + in2_loc_51_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_51_address0, + ce0 => in2_loc_51_ce0, + we0 => in2_loc_51_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_51_q0); + + in2_loc_52_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_52_address0, + ce0 => in2_loc_52_ce0, + we0 => in2_loc_52_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_52_q0); + + in2_loc_53_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_53_address0, + ce0 => in2_loc_53_ce0, + we0 => in2_loc_53_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_53_q0); + + in2_loc_54_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_54_address0, + ce0 => in2_loc_54_ce0, + we0 => in2_loc_54_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_54_q0); + + in2_loc_55_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_55_address0, + ce0 => in2_loc_55_ce0, + we0 => in2_loc_55_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_55_q0); + + in2_loc_56_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_56_address0, + ce0 => in2_loc_56_ce0, + we0 => in2_loc_56_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_56_q0); + + in2_loc_57_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_57_address0, + ce0 => in2_loc_57_ce0, + we0 => in2_loc_57_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_57_q0); + + in2_loc_58_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_58_address0, + ce0 => in2_loc_58_ce0, + we0 => in2_loc_58_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_58_q0); + + in2_loc_59_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_59_address0, + ce0 => in2_loc_59_ce0, + we0 => in2_loc_59_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_59_q0); + + in2_loc_60_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_60_address0, + ce0 => in2_loc_60_ce0, + we0 => in2_loc_60_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_60_q0); + + in2_loc_61_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_61_address0, + ce0 => in2_loc_61_ce0, + we0 => in2_loc_61_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_61_q0); + + in2_loc_62_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_62_address0, + ce0 => in2_loc_62_ce0, + we0 => in2_loc_62_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_62_q0); + + in2_loc_63_U : component mmult_in1_loc_0 + generic map ( + DataWidth => 32, + AddressRange => 64, + AddressWidth => 6) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => in2_loc_63_address0, + ce0 => in2_loc_63_ce0, + we0 => in2_loc_63_we0, + d0 => in2_mem_addr_read_reg_4499, + q0 => in2_loc_63_q0); + + out_loc_U : component mmult_out_loc + generic map ( + DataWidth => 32, + AddressRange => 4096, + AddressWidth => 12) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + address0 => out_loc_address0, + ce0 => out_loc_ce0, + q0 => out_loc_q0, + address1 => out_loc_addr_reg_4598_pp2_iter7_reg, + ce1 => out_loc_ce1, + we1 => out_loc_we1, + d1 => out_loc_d1); + + mmult_mul_32ns_32bkb_U1 : component mmult_mul_32ns_32bkb + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 64) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => grp_fu_3614_p0, + din1 => grp_fu_3614_p1, + ce => ap_const_logic_1, + dout => grp_fu_3614_p2); + + mmult_mul_32s_32scud_U2 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_0_load_reg_5425, + din1 => in1_loc_0_load_reg_5105, + ce => ap_const_logic_1, + dout => grp_fu_3787_p2); + + mmult_mul_32s_32scud_U3 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_1_load_reg_5430, + din1 => in1_loc_1_load_reg_5110, + ce => ap_const_logic_1, + dout => grp_fu_3791_p2); + + mmult_mul_32s_32scud_U4 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_2_load_reg_5435, + din1 => in1_loc_2_load_reg_5115, + ce => ap_const_logic_1, + dout => grp_fu_3795_p2); + + mmult_mul_32s_32scud_U5 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_3_load_reg_5440, + din1 => in1_loc_3_load_reg_5120, + ce => ap_const_logic_1, + dout => grp_fu_3799_p2); + + mmult_mul_32s_32scud_U6 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_4_load_reg_5445, + din1 => in1_loc_4_load_reg_5125, + ce => ap_const_logic_1, + dout => grp_fu_3803_p2); + + mmult_mul_32s_32scud_U7 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_5_load_reg_5450, + din1 => in1_loc_5_load_reg_5130, + ce => ap_const_logic_1, + dout => grp_fu_3807_p2); + + mmult_mul_32s_32scud_U8 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_6_load_reg_5455, + din1 => in1_loc_6_load_reg_5135, + ce => ap_const_logic_1, + dout => grp_fu_3811_p2); + + mmult_mul_32s_32scud_U9 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_7_load_reg_5460, + din1 => in1_loc_7_load_reg_5140, + ce => ap_const_logic_1, + dout => grp_fu_3815_p2); + + mmult_mul_32s_32scud_U10 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_8_load_reg_5465, + din1 => in1_loc_8_load_reg_5145, + ce => ap_const_logic_1, + dout => grp_fu_3819_p2); + + mmult_mul_32s_32scud_U11 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_11_load_reg_5480, + din1 => in1_loc_11_load_reg_5160, + ce => ap_const_logic_1, + dout => grp_fu_3823_p2); + + mmult_mul_32s_32scud_U12 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_12_load_reg_5485, + din1 => in1_loc_12_load_reg_5165, + ce => ap_const_logic_1, + dout => grp_fu_3827_p2); + + mmult_mul_32s_32scud_U13 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_15_load_reg_5500, + din1 => in1_loc_15_load_reg_5180, + ce => ap_const_logic_1, + dout => grp_fu_3831_p2); + + mmult_mul_32s_32scud_U14 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_16_load_reg_5505, + din1 => in1_loc_16_load_reg_5185, + ce => ap_const_logic_1, + dout => grp_fu_3835_p2); + + mmult_mul_32s_32scud_U15 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_19_load_reg_5520, + din1 => in1_loc_19_load_reg_5200, + ce => ap_const_logic_1, + dout => grp_fu_3839_p2); + + mmult_mul_32s_32scud_U16 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_20_load_reg_5525, + din1 => in1_loc_20_load_reg_5205, + ce => ap_const_logic_1, + dout => grp_fu_3843_p2); + + mmult_mul_32s_32scud_U17 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_21_load_reg_5530, + din1 => in1_loc_21_load_reg_5210, + ce => ap_const_logic_1, + dout => grp_fu_3847_p2); + + mmult_mul_32s_32scud_U18 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_22_load_reg_5535, + din1 => in1_loc_22_load_reg_5215, + ce => ap_const_logic_1, + dout => grp_fu_3851_p2); + + mmult_mul_32s_32scud_U19 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_23_load_reg_5540, + din1 => in1_loc_23_load_reg_5220, + ce => ap_const_logic_1, + dout => grp_fu_3855_p2); + + mmult_mul_32s_32scud_U20 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_24_load_reg_5545, + din1 => in1_loc_24_load_reg_5225, + ce => ap_const_logic_1, + dout => grp_fu_3859_p2); + + mmult_mul_32s_32scud_U21 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_27_load_reg_5560, + din1 => in1_loc_27_load_reg_5240, + ce => ap_const_logic_1, + dout => grp_fu_3863_p2); + + mmult_mul_32s_32scud_U22 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_28_load_reg_5565, + din1 => in1_loc_28_load_reg_5245, + ce => ap_const_logic_1, + dout => grp_fu_3867_p2); + + mmult_mul_32s_32scud_U23 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_29_load_reg_5570, + din1 => in1_loc_29_load_reg_5250, + ce => ap_const_logic_1, + dout => grp_fu_3871_p2); + + mmult_mul_32s_32scud_U24 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_30_load_reg_5575, + din1 => in1_loc_30_load_reg_5255, + ce => ap_const_logic_1, + dout => grp_fu_3875_p2); + + mmult_mul_32s_32scud_U25 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_31_load_reg_5580, + din1 => in1_loc_31_load_reg_5260, + ce => ap_const_logic_1, + dout => grp_fu_3879_p2); + + mmult_mul_32s_32scud_U26 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_32_load_reg_5585, + din1 => in1_loc_32_load_reg_5265, + ce => ap_const_logic_1, + dout => grp_fu_3883_p2); + + mmult_mul_32s_32scud_U27 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_35_load_reg_5600, + din1 => in1_loc_35_load_reg_5280, + ce => ap_const_logic_1, + dout => grp_fu_3887_p2); + + mmult_mul_32s_32scud_U28 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_36_load_reg_5605, + din1 => in1_loc_36_load_reg_5285, + ce => ap_const_logic_1, + dout => grp_fu_3891_p2); + + mmult_mul_32s_32scud_U29 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_37_load_reg_5610, + din1 => in1_loc_37_load_reg_5290, + ce => ap_const_logic_1, + dout => grp_fu_3895_p2); + + mmult_mul_32s_32scud_U30 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_38_load_reg_5615, + din1 => in1_loc_38_load_reg_5295, + ce => ap_const_logic_1, + dout => grp_fu_3899_p2); + + mmult_mul_32s_32scud_U31 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_39_load_reg_5620, + din1 => in1_loc_39_load_reg_5300, + ce => ap_const_logic_1, + dout => grp_fu_3903_p2); + + mmult_mul_32s_32scud_U32 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_40_load_reg_5625, + din1 => in1_loc_40_load_reg_5305, + ce => ap_const_logic_1, + dout => grp_fu_3907_p2); + + mmult_mul_32s_32scud_U33 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_43_load_reg_5640, + din1 => in1_loc_43_load_reg_5320, + ce => ap_const_logic_1, + dout => grp_fu_3911_p2); + + mmult_mul_32s_32scud_U34 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_44_load_reg_5645, + din1 => in1_loc_44_load_reg_5325, + ce => ap_const_logic_1, + dout => grp_fu_3915_p2); + + mmult_mul_32s_32scud_U35 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_47_load_reg_5660, + din1 => in1_loc_47_load_reg_5340, + ce => ap_const_logic_1, + dout => grp_fu_3919_p2); + + mmult_mul_32s_32scud_U36 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_48_load_reg_5665, + din1 => in1_loc_48_load_reg_5345, + ce => ap_const_logic_1, + dout => grp_fu_3923_p2); + + mmult_mul_32s_32scud_U37 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_51_load_reg_5680, + din1 => in1_loc_51_load_reg_5360, + ce => ap_const_logic_1, + dout => grp_fu_3927_p2); + + mmult_mul_32s_32scud_U38 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_52_load_reg_5685, + din1 => in1_loc_52_load_reg_5365, + ce => ap_const_logic_1, + dout => grp_fu_3931_p2); + + mmult_mul_32s_32scud_U39 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_53_load_reg_5690, + din1 => in1_loc_53_load_reg_5370, + ce => ap_const_logic_1, + dout => grp_fu_3935_p2); + + mmult_mul_32s_32scud_U40 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_54_load_reg_5695, + din1 => in1_loc_54_load_reg_5375, + ce => ap_const_logic_1, + dout => grp_fu_3939_p2); + + mmult_mul_32s_32scud_U41 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_55_load_reg_5700, + din1 => in1_loc_55_load_reg_5380, + ce => ap_const_logic_1, + dout => grp_fu_3943_p2); + + mmult_mul_32s_32scud_U42 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_56_load_reg_5705, + din1 => in1_loc_56_load_reg_5385, + ce => ap_const_logic_1, + dout => grp_fu_3947_p2); + + mmult_mul_32s_32scud_U43 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_59_load_reg_5720, + din1 => in1_loc_59_load_reg_5400, + ce => ap_const_logic_1, + dout => grp_fu_3951_p2); + + mmult_mul_32s_32scud_U44 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_60_load_reg_5725, + din1 => in1_loc_60_load_reg_5405, + ce => ap_const_logic_1, + dout => grp_fu_3955_p2); + + mmult_mul_32s_32scud_U45 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_62_load_reg_5735, + din1 => in1_loc_62_load_reg_5415, + ce => ap_const_logic_1, + dout => grp_fu_3959_p2); + + mmult_mul_32s_32scud_U46 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_63_load_reg_5740, + din1 => in1_loc_63_load_reg_5420, + ce => ap_const_logic_1, + dout => grp_fu_3963_p2); + + mmult_mul_32s_32scud_U47 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_9_load_reg_5840, + din1 => in1_loc_9_load_reg_5745, + ce => ap_const_logic_1, + dout => grp_fu_3967_p2); + + mmult_mul_32s_32scud_U48 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_10_load_reg_5845, + din1 => in1_loc_10_load_reg_5750, + ce => ap_const_logic_1, + dout => grp_fu_3971_p2); + + mmult_mul_32s_32scud_U49 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_13_load_reg_5850, + din1 => in1_loc_13_load_reg_5755, + ce => ap_const_logic_1, + dout => grp_fu_3975_p2); + + mmult_mul_32s_32scud_U50 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_14_load_reg_5855, + din1 => in1_loc_14_load_reg_5760, + ce => ap_const_logic_1, + dout => grp_fu_3979_p2); + + mmult_mul_32s_32scud_U51 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_17_load_reg_5860, + din1 => in1_loc_17_load_reg_5765, + ce => ap_const_logic_1, + dout => grp_fu_3983_p2); + + mmult_mul_32s_32scud_U52 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_18_load_reg_5865, + din1 => in1_loc_18_load_reg_5770, + ce => ap_const_logic_1, + dout => grp_fu_3987_p2); + + mmult_mul_32s_32scud_U53 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_25_load_reg_5870, + din1 => in1_loc_25_load_reg_5775, + ce => ap_const_logic_1, + dout => grp_fu_3991_p2); + + mmult_mul_32s_32scud_U54 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_26_load_reg_5875, + din1 => in1_loc_26_load_reg_5780, + ce => ap_const_logic_1, + dout => grp_fu_3995_p2); + + mmult_mul_32s_32scud_U55 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_33_load_reg_5880, + din1 => in1_loc_33_load_reg_5785, + ce => ap_const_logic_1, + dout => grp_fu_3999_p2); + + mmult_mul_32s_32scud_U56 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_34_load_reg_5885, + din1 => in1_loc_34_load_reg_5790, + ce => ap_const_logic_1, + dout => grp_fu_4003_p2); + + mmult_mul_32s_32scud_U57 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_41_load_reg_5890, + din1 => in1_loc_41_load_reg_5795, + ce => ap_const_logic_1, + dout => grp_fu_4007_p2); + + mmult_mul_32s_32scud_U58 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_42_load_reg_5895, + din1 => in1_loc_42_load_reg_5800, + ce => ap_const_logic_1, + dout => grp_fu_4011_p2); + + mmult_mul_32s_32scud_U59 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_45_load_reg_5900, + din1 => in1_loc_45_load_reg_5805, + ce => ap_const_logic_1, + dout => grp_fu_4015_p2); + + mmult_mul_32s_32scud_U60 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_46_load_reg_5905, + din1 => in1_loc_46_load_reg_5810, + ce => ap_const_logic_1, + dout => grp_fu_4019_p2); + + mmult_mul_32s_32scud_U61 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_49_load_reg_5910, + din1 => in1_loc_49_load_reg_5815, + ce => ap_const_logic_1, + dout => grp_fu_4023_p2); + + mmult_mul_32s_32scud_U62 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_50_load_reg_5915, + din1 => in1_loc_50_load_reg_5820, + ce => ap_const_logic_1, + dout => grp_fu_4027_p2); + + mmult_mul_32s_32scud_U63 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_57_load_reg_5920, + din1 => in1_loc_57_load_reg_5825, + ce => ap_const_logic_1, + dout => grp_fu_4031_p2); + + mmult_mul_32s_32scud_U64 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_58_load_reg_5925, + din1 => in1_loc_58_load_reg_5830, + ce => ap_const_logic_1, + dout => grp_fu_4035_p2); + + mmult_mul_32s_32scud_U65 : component mmult_mul_32s_32scud + generic map ( + ID => 1, + NUM_STAGE => 3, + din0_WIDTH => 32, + din1_WIDTH => 32, + dout_WIDTH => 32) + port map ( + clk => ap_clk, + reset => ap_rst_n_inv, + din0 => in2_loc_61_load_reg_5930, + din1 => in1_loc_61_load_reg_5835, + ce => ap_const_logic_1, + dout => grp_fu_4039_p2); + + + + + + ap_CS_fsm_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_CS_fsm <= ap_ST_fsm_state1; + else + ap_CS_fsm <= ap_NS_fsm; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp0_stage0) and (ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp0_exit_iter0_state9)) then + ap_enable_reg_pp0_iter1 <= (ap_const_logic_1 xor ap_condition_pp0_exit_iter0_state9); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp0_iter1 <= ap_enable_reg_pp0_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp0_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) then + ap_enable_reg_pp0_iter2 <= ap_enable_reg_pp0_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + ap_enable_reg_pp0_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp1_stage0) and (ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp1_exit_iter0_state19)) then + ap_enable_reg_pp1_iter1 <= (ap_const_logic_1 xor ap_condition_pp1_exit_iter0_state19); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp1_iter1 <= ap_enable_reg_pp1_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp1_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) then + ap_enable_reg_pp1_iter2 <= ap_enable_reg_pp1_iter1; + elsif ((ap_const_logic_1 = ap_CS_fsm_state18)) then + ap_enable_reg_pp1_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_const_logic_1 = ap_condition_pp2_exit_iter0_state25) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_0; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + ap_enable_reg_pp2_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp2_exit_iter0_state25)) then + ap_enable_reg_pp2_iter1 <= (ap_const_logic_1 xor ap_condition_pp2_exit_iter0_state25); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp2_iter1 <= ap_enable_reg_pp2_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter2 <= ap_enable_reg_pp2_iter1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter3_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter3 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter3 <= ap_enable_reg_pp2_iter2; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter4_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter4 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter4 <= ap_enable_reg_pp2_iter3; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter5_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter5 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter5 <= ap_enable_reg_pp2_iter4; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter6_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter6 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter6 <= ap_enable_reg_pp2_iter5; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter7_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter7 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter7 <= ap_enable_reg_pp2_iter6; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp2_iter8_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp2_iter8 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) then + ap_enable_reg_pp2_iter8 <= ap_enable_reg_pp2_iter7; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + ap_enable_reg_pp2_iter8 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter0_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + else + if (((ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_const_logic_1 = ap_condition_pp3_exit_iter0_state35) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_0; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_enable_reg_pp3_iter0 <= ap_const_logic_1; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter1_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter1 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + if ((ap_const_logic_1 = ap_condition_pp3_exit_iter0_state35)) then + ap_enable_reg_pp3_iter1 <= (ap_const_logic_1 xor ap_condition_pp3_exit_iter0_state35); + elsif ((ap_const_boolean_1 = ap_const_boolean_1)) then + ap_enable_reg_pp3_iter1 <= ap_enable_reg_pp3_iter0; + end if; + end if; + end if; + end if; + end process; + + + ap_enable_reg_pp3_iter2_assign_proc : process(ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (ap_rst_n_inv = '1') then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + else + if ((ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) then + ap_enable_reg_pp3_iter2 <= ap_enable_reg_pp3_iter1; + elsif (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_enable_reg_pp3_iter2 <= ap_const_logic_0; + end if; + end if; + end if; + end process; + + + i_0_reg_3329_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + i_0_reg_3329 <= select_ln31_1_reg_4592; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + i_0_reg_3329 <= ap_const_lv31_0; + end if; + end if; + end process; + + indvar_flatten_reg_3318_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3620_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + indvar_flatten_reg_3318 <= add_ln31_fu_3625_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + indvar_flatten_reg_3318 <= ap_const_lv64_0; + end if; + end if; + end process; + + j_0_reg_3340_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3620_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + j_0_reg_3340 <= j_fu_3685_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state24)) then + j_0_reg_3340 <= ap_const_lv32_0; + end if; + end if; + end process; + + phi_ln27_reg_3296_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3425_p2 = ap_const_lv1_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + phi_ln27_reg_3296 <= add_ln27_fu_3431_p2; + elsif ((ap_const_logic_1 = ap_CS_fsm_state8)) then + phi_ln27_reg_3296 <= ap_const_lv13_0; + end if; + end if; + end process; + + phi_ln28_reg_3307_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state18)) then + phi_ln28_reg_3307 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3518_p2 = ap_const_lv1_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + phi_ln28_reg_3307 <= add_ln28_fu_3524_p2; + end if; + end if; + end process; + + phi_ln42_reg_3351_assign_proc : process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + phi_ln42_reg_3351 <= ap_const_lv13_0; + elsif (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_fu_4339_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1))) then + phi_ln42_reg_3351 <= add_ln42_fu_4345_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter5_reg = ap_const_lv1_0))) then + add_ln38_10_reg_6275 <= add_ln38_10_fu_4070_p2; + add_ln38_15_reg_6280 <= add_ln38_15_fu_4074_p2; + add_ln38_18_reg_6285 <= add_ln38_18_fu_4078_p2; + add_ln38_19_reg_6290 <= add_ln38_19_fu_4082_p2; + add_ln38_22_reg_6295 <= add_ln38_22_fu_4086_p2; + add_ln38_25_reg_6300 <= add_ln38_25_fu_4090_p2; + add_ln38_26_reg_6305 <= add_ln38_26_fu_4094_p2; + add_ln38_2_reg_6255 <= add_ln38_2_fu_4052_p2; + add_ln38_31_reg_6310 <= add_ln38_31_fu_4098_p2; + add_ln38_34_reg_6315 <= add_ln38_34_fu_4102_p2; + add_ln38_35_reg_6320 <= add_ln38_35_fu_4106_p2; + add_ln38_38_reg_6325 <= add_ln38_38_fu_4110_p2; + add_ln38_3_reg_6260 <= add_ln38_3_fu_4058_p2; + add_ln38_41_reg_6330 <= add_ln38_41_fu_4114_p2; + add_ln38_46_reg_6335 <= add_ln38_46_fu_4118_p2; + add_ln38_49_reg_6340 <= add_ln38_49_fu_4122_p2; + add_ln38_4_reg_6265 <= add_ln38_4_fu_4062_p2; + add_ln38_50_reg_6345 <= add_ln38_50_fu_4126_p2; + add_ln38_53_reg_6350 <= add_ln38_53_fu_4130_p2; + add_ln38_56_reg_6355 <= add_ln38_56_fu_4134_p2; + add_ln38_57_reg_6360 <= add_ln38_57_fu_4138_p2; + add_ln38_7_reg_6270 <= add_ln38_7_fu_4066_p2; + mul_ln38_10_reg_6165 <= grp_fu_3971_p2; + mul_ln38_13_reg_6170 <= grp_fu_3975_p2; + mul_ln38_14_reg_6175 <= grp_fu_3979_p2; + mul_ln38_17_reg_6180 <= grp_fu_3983_p2; + mul_ln38_18_reg_6185 <= grp_fu_3987_p2; + mul_ln38_25_reg_6190 <= grp_fu_3991_p2; + mul_ln38_26_reg_6195 <= grp_fu_3995_p2; + mul_ln38_33_reg_6200 <= grp_fu_3999_p2; + mul_ln38_34_reg_6205 <= grp_fu_4003_p2; + mul_ln38_41_reg_6210 <= grp_fu_4007_p2; + mul_ln38_42_reg_6215 <= grp_fu_4011_p2; + mul_ln38_45_reg_6220 <= grp_fu_4015_p2; + mul_ln38_46_reg_6225 <= grp_fu_4019_p2; + mul_ln38_49_reg_6230 <= grp_fu_4023_p2; + mul_ln38_50_reg_6235 <= grp_fu_4027_p2; + mul_ln38_57_reg_6240 <= grp_fu_4031_p2; + mul_ln38_58_reg_6245 <= grp_fu_4035_p2; + mul_ln38_61_reg_6250 <= grp_fu_4039_p2; + mul_ln38_9_reg_6160 <= grp_fu_3967_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter6_reg = ap_const_lv1_0))) then + add_ln38_30_reg_6365 <= add_ln38_30_fu_4225_p2; + add_ln38_45_reg_6370 <= add_ln38_45_fu_4274_p2; + add_ln38_61_reg_6375 <= add_ln38_61_fu_4323_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + dim_read_reg_4356 <= dim; + in3_reg_4372 <= in1(31 downto 2); + in_reg_4367 <= in2(31 downto 2); + out5_reg_4362 <= out_r(31 downto 2); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + icmp_ln31_reg_4578 <= icmp_ln31_fu_3620_p2; + icmp_ln31_reg_4578_pp2_iter1_reg <= icmp_ln31_reg_4578; + out_loc_addr_reg_4598_pp2_iter1_reg <= out_loc_addr_reg_4598; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_boolean_0 = ap_block_pp2_stage0_11001)) then + icmp_ln31_reg_4578_pp2_iter2_reg <= icmp_ln31_reg_4578_pp2_iter1_reg; + icmp_ln31_reg_4578_pp2_iter3_reg <= icmp_ln31_reg_4578_pp2_iter2_reg; + icmp_ln31_reg_4578_pp2_iter4_reg <= icmp_ln31_reg_4578_pp2_iter3_reg; + icmp_ln31_reg_4578_pp2_iter5_reg <= icmp_ln31_reg_4578_pp2_iter4_reg; + icmp_ln31_reg_4578_pp2_iter6_reg <= icmp_ln31_reg_4578_pp2_iter5_reg; + icmp_ln31_reg_4578_pp2_iter7_reg <= icmp_ln31_reg_4578_pp2_iter6_reg; + out_loc_addr_reg_4598_pp2_iter2_reg <= out_loc_addr_reg_4598_pp2_iter1_reg; + out_loc_addr_reg_4598_pp2_iter3_reg <= out_loc_addr_reg_4598_pp2_iter2_reg; + out_loc_addr_reg_4598_pp2_iter4_reg <= out_loc_addr_reg_4598_pp2_iter3_reg; + out_loc_addr_reg_4598_pp2_iter5_reg <= out_loc_addr_reg_4598_pp2_iter4_reg; + out_loc_addr_reg_4598_pp2_iter6_reg <= out_loc_addr_reg_4598_pp2_iter5_reg; + out_loc_addr_reg_4598_pp2_iter7_reg <= out_loc_addr_reg_4598_pp2_iter6_reg; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0))) then + icmp_ln42_reg_6380 <= icmp_ln42_fu_4339_p2; + icmp_ln42_reg_6380_pp3_iter1_reg <= icmp_ln42_reg_6380; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_0_load_reg_5105 <= in1_loc_0_q0; + in1_loc_11_load_reg_5160 <= in1_loc_11_q0; + in1_loc_12_load_reg_5165 <= in1_loc_12_q0; + in1_loc_15_load_reg_5180 <= in1_loc_15_q0; + in1_loc_16_load_reg_5185 <= in1_loc_16_q0; + in1_loc_19_load_reg_5200 <= in1_loc_19_q0; + in1_loc_1_load_reg_5110 <= in1_loc_1_q0; + in1_loc_20_load_reg_5205 <= in1_loc_20_q0; + in1_loc_21_load_reg_5210 <= in1_loc_21_q0; + in1_loc_22_load_reg_5215 <= in1_loc_22_q0; + in1_loc_23_load_reg_5220 <= in1_loc_23_q0; + in1_loc_24_load_reg_5225 <= in1_loc_24_q0; + in1_loc_27_load_reg_5240 <= in1_loc_27_q0; + in1_loc_28_load_reg_5245 <= in1_loc_28_q0; + in1_loc_29_load_reg_5250 <= in1_loc_29_q0; + in1_loc_2_load_reg_5115 <= in1_loc_2_q0; + in1_loc_30_load_reg_5255 <= in1_loc_30_q0; + in1_loc_31_load_reg_5260 <= in1_loc_31_q0; + in1_loc_32_load_reg_5265 <= in1_loc_32_q0; + in1_loc_35_load_reg_5280 <= in1_loc_35_q0; + in1_loc_36_load_reg_5285 <= in1_loc_36_q0; + in1_loc_37_load_reg_5290 <= in1_loc_37_q0; + in1_loc_38_load_reg_5295 <= in1_loc_38_q0; + in1_loc_39_load_reg_5300 <= in1_loc_39_q0; + in1_loc_3_load_reg_5120 <= in1_loc_3_q0; + in1_loc_40_load_reg_5305 <= in1_loc_40_q0; + in1_loc_43_load_reg_5320 <= in1_loc_43_q0; + in1_loc_44_load_reg_5325 <= in1_loc_44_q0; + in1_loc_47_load_reg_5340 <= in1_loc_47_q0; + in1_loc_48_load_reg_5345 <= in1_loc_48_q0; + in1_loc_4_load_reg_5125 <= in1_loc_4_q0; + in1_loc_51_load_reg_5360 <= in1_loc_51_q0; + in1_loc_52_load_reg_5365 <= in1_loc_52_q0; + in1_loc_53_load_reg_5370 <= in1_loc_53_q0; + in1_loc_54_load_reg_5375 <= in1_loc_54_q0; + in1_loc_55_load_reg_5380 <= in1_loc_55_q0; + in1_loc_56_load_reg_5385 <= in1_loc_56_q0; + in1_loc_59_load_reg_5400 <= in1_loc_59_q0; + in1_loc_5_load_reg_5130 <= in1_loc_5_q0; + in1_loc_60_load_reg_5405 <= in1_loc_60_q0; + in1_loc_62_load_reg_5415 <= in1_loc_62_q0; + in1_loc_63_load_reg_5420 <= in1_loc_63_q0; + in1_loc_6_load_reg_5135 <= in1_loc_6_q0; + in1_loc_7_load_reg_5140 <= in1_loc_7_q0; + in1_loc_8_load_reg_5145 <= in1_loc_8_q0; + in2_loc_0_load_reg_5425 <= in2_loc_0_q0; + in2_loc_11_load_reg_5480 <= in2_loc_11_q0; + in2_loc_12_load_reg_5485 <= in2_loc_12_q0; + in2_loc_15_load_reg_5500 <= in2_loc_15_q0; + in2_loc_16_load_reg_5505 <= in2_loc_16_q0; + in2_loc_19_load_reg_5520 <= in2_loc_19_q0; + in2_loc_1_load_reg_5430 <= in2_loc_1_q0; + in2_loc_20_load_reg_5525 <= in2_loc_20_q0; + in2_loc_21_load_reg_5530 <= in2_loc_21_q0; + in2_loc_22_load_reg_5535 <= in2_loc_22_q0; + in2_loc_23_load_reg_5540 <= in2_loc_23_q0; + in2_loc_24_load_reg_5545 <= in2_loc_24_q0; + in2_loc_27_load_reg_5560 <= in2_loc_27_q0; + in2_loc_28_load_reg_5565 <= in2_loc_28_q0; + in2_loc_29_load_reg_5570 <= in2_loc_29_q0; + in2_loc_2_load_reg_5435 <= in2_loc_2_q0; + in2_loc_30_load_reg_5575 <= in2_loc_30_q0; + in2_loc_31_load_reg_5580 <= in2_loc_31_q0; + in2_loc_32_load_reg_5585 <= in2_loc_32_q0; + in2_loc_35_load_reg_5600 <= in2_loc_35_q0; + in2_loc_36_load_reg_5605 <= in2_loc_36_q0; + in2_loc_37_load_reg_5610 <= in2_loc_37_q0; + in2_loc_38_load_reg_5615 <= in2_loc_38_q0; + in2_loc_39_load_reg_5620 <= in2_loc_39_q0; + in2_loc_3_load_reg_5440 <= in2_loc_3_q0; + in2_loc_40_load_reg_5625 <= in2_loc_40_q0; + in2_loc_43_load_reg_5640 <= in2_loc_43_q0; + in2_loc_44_load_reg_5645 <= in2_loc_44_q0; + in2_loc_47_load_reg_5660 <= in2_loc_47_q0; + in2_loc_48_load_reg_5665 <= in2_loc_48_q0; + in2_loc_4_load_reg_5445 <= in2_loc_4_q0; + in2_loc_51_load_reg_5680 <= in2_loc_51_q0; + in2_loc_52_load_reg_5685 <= in2_loc_52_q0; + in2_loc_53_load_reg_5690 <= in2_loc_53_q0; + in2_loc_54_load_reg_5695 <= in2_loc_54_q0; + in2_loc_55_load_reg_5700 <= in2_loc_55_q0; + in2_loc_56_load_reg_5705 <= in2_loc_56_q0; + in2_loc_59_load_reg_5720 <= in2_loc_59_q0; + in2_loc_5_load_reg_5450 <= in2_loc_5_q0; + in2_loc_60_load_reg_5725 <= in2_loc_60_q0; + in2_loc_62_load_reg_5735 <= in2_loc_62_q0; + in2_loc_63_load_reg_5740 <= in2_loc_63_q0; + in2_loc_6_load_reg_5455 <= in2_loc_6_q0; + in2_loc_7_load_reg_5460 <= in2_loc_7_q0; + in2_loc_8_load_reg_5465 <= in2_loc_8_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter2_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter3 = ap_const_logic_1))) then + in1_loc_10_load_reg_5750 <= in1_loc_10_q0; + in1_loc_13_load_reg_5755 <= in1_loc_13_q0; + in1_loc_14_load_reg_5760 <= in1_loc_14_q0; + in1_loc_17_load_reg_5765 <= in1_loc_17_q0; + in1_loc_18_load_reg_5770 <= in1_loc_18_q0; + in1_loc_25_load_reg_5775 <= in1_loc_25_q0; + in1_loc_26_load_reg_5780 <= in1_loc_26_q0; + in1_loc_33_load_reg_5785 <= in1_loc_33_q0; + in1_loc_34_load_reg_5790 <= in1_loc_34_q0; + in1_loc_41_load_reg_5795 <= in1_loc_41_q0; + in1_loc_42_load_reg_5800 <= in1_loc_42_q0; + in1_loc_45_load_reg_5805 <= in1_loc_45_q0; + in1_loc_46_load_reg_5810 <= in1_loc_46_q0; + in1_loc_49_load_reg_5815 <= in1_loc_49_q0; + in1_loc_50_load_reg_5820 <= in1_loc_50_q0; + in1_loc_57_load_reg_5825 <= in1_loc_57_q0; + in1_loc_58_load_reg_5830 <= in1_loc_58_q0; + in1_loc_61_load_reg_5835 <= in1_loc_61_q0; + in1_loc_9_load_reg_5745 <= in1_loc_9_q0; + in2_loc_10_load_reg_5845 <= in2_loc_10_q0; + in2_loc_13_load_reg_5850 <= in2_loc_13_q0; + in2_loc_14_load_reg_5855 <= in2_loc_14_q0; + in2_loc_17_load_reg_5860 <= in2_loc_17_q0; + in2_loc_18_load_reg_5865 <= in2_loc_18_q0; + in2_loc_25_load_reg_5870 <= in2_loc_25_q0; + in2_loc_26_load_reg_5875 <= in2_loc_26_q0; + in2_loc_33_load_reg_5880 <= in2_loc_33_q0; + in2_loc_34_load_reg_5885 <= in2_loc_34_q0; + in2_loc_41_load_reg_5890 <= in2_loc_41_q0; + in2_loc_42_load_reg_5895 <= in2_loc_42_q0; + in2_loc_45_load_reg_5900 <= in2_loc_45_q0; + in2_loc_46_load_reg_5905 <= in2_loc_46_q0; + in2_loc_49_load_reg_5910 <= in2_loc_49_q0; + in2_loc_50_load_reg_5915 <= in2_loc_50_q0; + in2_loc_57_load_reg_5920 <= in2_loc_57_q0; + in2_loc_58_load_reg_5925 <= in2_loc_58_q0; + in2_loc_61_load_reg_5930 <= in2_loc_61_q0; + in2_loc_9_load_reg_5840 <= in2_loc_9_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_addr_read_reg_4413 <= in1_mem_RDATA; + lshr_ln_reg_4404_pp0_iter1_reg <= lshr_ln_reg_4404; + trunc_ln27_reg_4409_pp0_iter1_reg <= trunc_ln27_reg_4409; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_addr_read_reg_4499 <= in2_mem_RDATA; + trunc_ln1_reg_4495_pp1_iter1_reg <= trunc_ln1_reg_4495; + trunc_ln28_reg_4490_pp1_iter1_reg <= trunc_ln28_reg_4490; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state8)) then + in2_mem_addr_reg_4389(29 downto 0) <= empty_7_fu_3416_p1(32 - 1 downto 0)(29 downto 0); + out_mem_addr_reg_4383(29 downto 0) <= empty_fu_3407_p1(32 - 1 downto 0)(29 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (icmp_ln27_fu_3425_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + lshr_ln_reg_4404 <= phi_ln27_reg_3296(12 downto 6); + trunc_ln27_reg_4409 <= trunc_ln27_fu_3447_p1; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((ap_const_logic_1 = ap_CS_fsm_state24)) then + mul_ln31_reg_4573 <= grp_fu_3614_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter4_reg = ap_const_lv1_0))) then + mul_ln38_11_reg_5980 <= grp_fu_3823_p2; + mul_ln38_12_reg_5985 <= grp_fu_3827_p2; + mul_ln38_15_reg_5990 <= grp_fu_3831_p2; + mul_ln38_16_reg_5995 <= grp_fu_3835_p2; + mul_ln38_19_reg_6000 <= grp_fu_3839_p2; + mul_ln38_1_reg_5940 <= grp_fu_3791_p2; + mul_ln38_20_reg_6005 <= grp_fu_3843_p2; + mul_ln38_21_reg_6010 <= grp_fu_3847_p2; + mul_ln38_22_reg_6015 <= grp_fu_3851_p2; + mul_ln38_23_reg_6020 <= grp_fu_3855_p2; + mul_ln38_24_reg_6025 <= grp_fu_3859_p2; + mul_ln38_27_reg_6030 <= grp_fu_3863_p2; + mul_ln38_28_reg_6035 <= grp_fu_3867_p2; + mul_ln38_29_reg_6040 <= grp_fu_3871_p2; + mul_ln38_2_reg_5945 <= grp_fu_3795_p2; + mul_ln38_30_reg_6045 <= grp_fu_3875_p2; + mul_ln38_31_reg_6050 <= grp_fu_3879_p2; + mul_ln38_32_reg_6055 <= grp_fu_3883_p2; + mul_ln38_35_reg_6060 <= grp_fu_3887_p2; + mul_ln38_36_reg_6065 <= grp_fu_3891_p2; + mul_ln38_37_reg_6070 <= grp_fu_3895_p2; + mul_ln38_38_reg_6075 <= grp_fu_3899_p2; + mul_ln38_39_reg_6080 <= grp_fu_3903_p2; + mul_ln38_3_reg_5950 <= grp_fu_3799_p2; + mul_ln38_40_reg_6085 <= grp_fu_3907_p2; + mul_ln38_43_reg_6090 <= grp_fu_3911_p2; + mul_ln38_44_reg_6095 <= grp_fu_3915_p2; + mul_ln38_47_reg_6100 <= grp_fu_3919_p2; + mul_ln38_48_reg_6105 <= grp_fu_3923_p2; + mul_ln38_4_reg_5955 <= grp_fu_3803_p2; + mul_ln38_51_reg_6110 <= grp_fu_3927_p2; + mul_ln38_52_reg_6115 <= grp_fu_3931_p2; + mul_ln38_53_reg_6120 <= grp_fu_3935_p2; + mul_ln38_54_reg_6125 <= grp_fu_3939_p2; + mul_ln38_55_reg_6130 <= grp_fu_3943_p2; + mul_ln38_56_reg_6135 <= grp_fu_3947_p2; + mul_ln38_59_reg_6140 <= grp_fu_3951_p2; + mul_ln38_5_reg_5960 <= grp_fu_3807_p2; + mul_ln38_60_reg_6145 <= grp_fu_3955_p2; + mul_ln38_62_reg_6150 <= grp_fu_3959_p2; + mul_ln38_63_reg_6155 <= grp_fu_3963_p2; + mul_ln38_6_reg_5965 <= grp_fu_3811_p2; + mul_ln38_7_reg_5970 <= grp_fu_3815_p2; + mul_ln38_8_reg_5975 <= grp_fu_3819_p2; + mul_ln38_reg_5935 <= grp_fu_3787_p2; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3620_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + out_loc_addr_reg_4598 <= zext_ln38_fu_3680_p1(12 - 1 downto 0); + select_ln31_reg_4587 <= select_ln31_fu_3642_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if ((((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_6380 = ap_const_lv1_0) and (ap_enable_reg_pp3_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter4_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter5 = ap_const_logic_1)))) then + reg_3362 <= out_loc_q0; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_fu_3620_p2 = ap_const_lv1_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + select_ln31_1_reg_4592 <= select_ln31_1_fu_3650_p3; + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0))) then + sext_ln38_reg_4857 <= sext_ln38_fu_3739_p1; + zext_ln31_1_reg_4609(30 downto 0) <= zext_ln31_1_fu_3691_p1(30 downto 0); + end if; + end if; + end process; + process (ap_clk) + begin + if (ap_clk'event and ap_clk = '1') then + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (icmp_ln28_fu_3518_p2 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + trunc_ln1_reg_4495 <= phi_ln28_reg_3307(11 downto 6); + trunc_ln28_reg_4490 <= trunc_ln28_fu_3530_p1; + end if; + end if; + end process; + out_mem_addr_reg_4383(31 downto 30) <= "00"; + in2_mem_addr_reg_4389(31 downto 30) <= "00"; + zext_ln31_1_reg_4609(63 downto 31) <= "000000000000000000000000000000000"; + + ap_NS_fsm_assign_proc : process (ap_start, ap_CS_fsm, ap_CS_fsm_state1, ap_CS_fsm_state2, ap_enable_reg_pp0_iter1, ap_CS_fsm_state12, ap_enable_reg_pp1_iter1, ap_CS_fsm_state34, ap_enable_reg_pp3_iter2, ap_CS_fsm_state42, in1_mem_ARREADY, in2_mem_ARREADY, out_mem_AWREADY, out_mem_BVALID, ap_enable_reg_pp3_iter1, icmp_ln27_fu_3425_p2, ap_enable_reg_pp0_iter0, icmp_ln28_fu_3518_p2, ap_enable_reg_pp1_iter0, icmp_ln31_fu_3620_p2, ap_enable_reg_pp2_iter0, icmp_ln42_fu_4339_p2, ap_enable_reg_pp3_iter0, ap_block_pp0_stage0_subdone, ap_enable_reg_pp0_iter2, ap_block_pp1_stage0_subdone, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0_subdone, ap_enable_reg_pp2_iter1, ap_enable_reg_pp2_iter7, ap_enable_reg_pp2_iter8, ap_block_pp3_stage0_subdone) + begin + case ap_CS_fsm is + when ap_ST_fsm_state1 => + if (((ap_start = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_NS_fsm <= ap_ST_fsm_state2; + else + ap_NS_fsm <= ap_ST_fsm_state1; + end if; + when ap_ST_fsm_state2 => + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + ap_NS_fsm <= ap_ST_fsm_state3; + else + ap_NS_fsm <= ap_ST_fsm_state2; + end if; + when ap_ST_fsm_state3 => + ap_NS_fsm <= ap_ST_fsm_state4; + when ap_ST_fsm_state4 => + ap_NS_fsm <= ap_ST_fsm_state5; + when ap_ST_fsm_state5 => + ap_NS_fsm <= ap_ST_fsm_state6; + when ap_ST_fsm_state6 => + ap_NS_fsm <= ap_ST_fsm_state7; + when ap_ST_fsm_state7 => + ap_NS_fsm <= ap_ST_fsm_state8; + when ap_ST_fsm_state8 => + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + when ap_ST_fsm_pp0_stage0 => + if ((not(((icmp_ln27_fu_3425_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))) and not(((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + elsif ((((icmp_ln27_fu_3425_p2 = ap_const_lv1_1) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)) or ((ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state12; + else + ap_NS_fsm <= ap_ST_fsm_pp0_stage0; + end if; + when ap_ST_fsm_state12 => + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + ap_NS_fsm <= ap_ST_fsm_state13; + else + ap_NS_fsm <= ap_ST_fsm_state12; + end if; + when ap_ST_fsm_state13 => + ap_NS_fsm <= ap_ST_fsm_state14; + when ap_ST_fsm_state14 => + ap_NS_fsm <= ap_ST_fsm_state15; + when ap_ST_fsm_state15 => + ap_NS_fsm <= ap_ST_fsm_state16; + when ap_ST_fsm_state16 => + ap_NS_fsm <= ap_ST_fsm_state17; + when ap_ST_fsm_state17 => + ap_NS_fsm <= ap_ST_fsm_state18; + when ap_ST_fsm_state18 => + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + when ap_ST_fsm_pp1_stage0 => + if ((not(((icmp_ln28_fu_3518_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))) and not(((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + elsif ((((icmp_ln28_fu_3518_p2 = ap_const_lv1_1) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)) or ((ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state22; + else + ap_NS_fsm <= ap_ST_fsm_pp1_stage0; + end if; + when ap_ST_fsm_state22 => + ap_NS_fsm <= ap_ST_fsm_state23; + when ap_ST_fsm_state23 => + ap_NS_fsm <= ap_ST_fsm_state24; + when ap_ST_fsm_state24 => + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + when ap_ST_fsm_pp2_stage0 => + if ((not(((icmp_ln31_fu_3620_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))) and not(((ap_enable_reg_pp2_iter8 = ap_const_logic_1) and (ap_enable_reg_pp2_iter7 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + elsif ((((icmp_ln31_fu_3620_p2 = ap_const_lv1_1) and (ap_enable_reg_pp2_iter0 = ap_const_logic_1) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)) or ((ap_enable_reg_pp2_iter8 = ap_const_logic_1) and (ap_enable_reg_pp2_iter7 = ap_const_logic_0) and (ap_const_boolean_0 = ap_block_pp2_stage0_subdone)))) then + ap_NS_fsm <= ap_ST_fsm_state34; + else + ap_NS_fsm <= ap_ST_fsm_pp2_stage0; + end if; + when ap_ST_fsm_state34 => + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + else + ap_NS_fsm <= ap_ST_fsm_state34; + end if; + when ap_ST_fsm_pp3_stage0 => + if ((not(((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (icmp_ln42_fu_4339_p2 = ap_const_lv1_1))) and not(((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone))))) then + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + elsif ((((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone)) or ((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1) and (ap_const_boolean_0 = ap_block_pp3_stage0_subdone) and (icmp_ln42_fu_4339_p2 = ap_const_lv1_1)))) then + ap_NS_fsm <= ap_ST_fsm_state38; + else + ap_NS_fsm <= ap_ST_fsm_pp3_stage0; + end if; + when ap_ST_fsm_state38 => + ap_NS_fsm <= ap_ST_fsm_state39; + when ap_ST_fsm_state39 => + ap_NS_fsm <= ap_ST_fsm_state40; + when ap_ST_fsm_state40 => + ap_NS_fsm <= ap_ST_fsm_state41; + when ap_ST_fsm_state41 => + ap_NS_fsm <= ap_ST_fsm_state42; + when ap_ST_fsm_state42 => + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state42))) then + ap_NS_fsm <= ap_ST_fsm_state1; + else + ap_NS_fsm <= ap_ST_fsm_state42; + end if; + when others => + ap_NS_fsm <= "XXXXXXXXXXXXXXXXXXXXXXXXXXXX"; + end case; + end process; + add_ln27_fu_3431_p2 <= std_logic_vector(unsigned(phi_ln27_reg_3296) + unsigned(ap_const_lv13_1)); + add_ln28_fu_3524_p2 <= std_logic_vector(unsigned(phi_ln28_reg_3307) + unsigned(ap_const_lv13_1)); + add_ln31_fu_3625_p2 <= std_logic_vector(unsigned(indvar_flatten_reg_3318) + unsigned(ap_const_lv64_1)); + add_ln38_10_fu_4070_p2 <= std_logic_vector(unsigned(mul_ln38_12_reg_5985) + unsigned(mul_ln38_11_reg_5980)); + add_ln38_11_fu_4160_p2 <= std_logic_vector(unsigned(mul_ln38_14_reg_6175) + unsigned(mul_ln38_13_reg_6170)); + add_ln38_12_fu_4164_p2 <= std_logic_vector(unsigned(add_ln38_10_reg_6275) + unsigned(add_ln38_11_fu_4160_p2)); + add_ln38_13_fu_4169_p2 <= std_logic_vector(unsigned(add_ln38_9_fu_4155_p2) + unsigned(add_ln38_12_fu_4164_p2)); + add_ln38_14_fu_4175_p2 <= std_logic_vector(unsigned(add_ln38_6_fu_4146_p2) + unsigned(add_ln38_13_fu_4169_p2)); + add_ln38_15_fu_4074_p2 <= std_logic_vector(unsigned(mul_ln38_16_reg_5995) + unsigned(mul_ln38_15_reg_5990)); + add_ln38_16_fu_4181_p2 <= std_logic_vector(unsigned(mul_ln38_18_reg_6185) + unsigned(mul_ln38_17_reg_6180)); + add_ln38_17_fu_4185_p2 <= std_logic_vector(unsigned(add_ln38_15_reg_6280) + unsigned(add_ln38_16_fu_4181_p2)); + add_ln38_18_fu_4078_p2 <= std_logic_vector(unsigned(mul_ln38_20_reg_6005) + unsigned(mul_ln38_19_reg_6000)); + add_ln38_19_fu_4082_p2 <= std_logic_vector(unsigned(mul_ln38_22_reg_6015) + unsigned(mul_ln38_21_reg_6010)); + add_ln38_1_fu_4048_p2 <= std_logic_vector(unsigned(mul_ln38_2_reg_5945) + unsigned(mul_ln38_1_reg_5940)); + add_ln38_20_fu_4190_p2 <= std_logic_vector(unsigned(add_ln38_18_reg_6285) + unsigned(add_ln38_19_reg_6290)); + add_ln38_21_fu_4194_p2 <= std_logic_vector(unsigned(add_ln38_17_fu_4185_p2) + unsigned(add_ln38_20_fu_4190_p2)); + add_ln38_22_fu_4086_p2 <= std_logic_vector(unsigned(mul_ln38_24_reg_6025) + unsigned(mul_ln38_23_reg_6020)); + add_ln38_23_fu_4200_p2 <= std_logic_vector(unsigned(mul_ln38_26_reg_6195) + unsigned(mul_ln38_25_reg_6190)); + add_ln38_24_fu_4204_p2 <= std_logic_vector(unsigned(add_ln38_22_reg_6295) + unsigned(add_ln38_23_fu_4200_p2)); + add_ln38_25_fu_4090_p2 <= std_logic_vector(unsigned(mul_ln38_28_reg_6035) + unsigned(mul_ln38_27_reg_6030)); + add_ln38_26_fu_4094_p2 <= std_logic_vector(unsigned(mul_ln38_30_reg_6045) + unsigned(mul_ln38_29_reg_6040)); + add_ln38_27_fu_4209_p2 <= std_logic_vector(unsigned(add_ln38_25_reg_6300) + unsigned(add_ln38_26_reg_6305)); + add_ln38_28_fu_4213_p2 <= std_logic_vector(unsigned(add_ln38_24_fu_4204_p2) + unsigned(add_ln38_27_fu_4209_p2)); + add_ln38_29_fu_4219_p2 <= std_logic_vector(unsigned(add_ln38_21_fu_4194_p2) + unsigned(add_ln38_28_fu_4213_p2)); + add_ln38_2_fu_4052_p2 <= std_logic_vector(unsigned(add_ln38_fu_4043_p2) + unsigned(add_ln38_1_fu_4048_p2)); + add_ln38_30_fu_4225_p2 <= std_logic_vector(unsigned(add_ln38_14_fu_4175_p2) + unsigned(add_ln38_29_fu_4219_p2)); + add_ln38_31_fu_4098_p2 <= std_logic_vector(unsigned(mul_ln38_32_reg_6055) + unsigned(mul_ln38_31_reg_6050)); + add_ln38_32_fu_4231_p2 <= std_logic_vector(unsigned(mul_ln38_34_reg_6205) + unsigned(mul_ln38_33_reg_6200)); + add_ln38_33_fu_4235_p2 <= std_logic_vector(unsigned(add_ln38_31_reg_6310) + unsigned(add_ln38_32_fu_4231_p2)); + add_ln38_34_fu_4102_p2 <= std_logic_vector(unsigned(mul_ln38_36_reg_6065) + unsigned(mul_ln38_35_reg_6060)); + add_ln38_35_fu_4106_p2 <= std_logic_vector(unsigned(mul_ln38_38_reg_6075) + unsigned(mul_ln38_37_reg_6070)); + add_ln38_36_fu_4240_p2 <= std_logic_vector(unsigned(add_ln38_34_reg_6315) + unsigned(add_ln38_35_reg_6320)); + add_ln38_37_fu_4244_p2 <= std_logic_vector(unsigned(add_ln38_33_fu_4235_p2) + unsigned(add_ln38_36_fu_4240_p2)); + add_ln38_38_fu_4110_p2 <= std_logic_vector(unsigned(mul_ln38_40_reg_6085) + unsigned(mul_ln38_39_reg_6080)); + add_ln38_39_fu_4250_p2 <= std_logic_vector(unsigned(mul_ln38_42_reg_6215) + unsigned(mul_ln38_41_reg_6210)); + add_ln38_3_fu_4058_p2 <= std_logic_vector(unsigned(mul_ln38_4_reg_5955) + unsigned(mul_ln38_3_reg_5950)); + add_ln38_40_fu_4254_p2 <= std_logic_vector(unsigned(add_ln38_38_reg_6325) + unsigned(add_ln38_39_fu_4250_p2)); + add_ln38_41_fu_4114_p2 <= std_logic_vector(unsigned(mul_ln38_44_reg_6095) + unsigned(mul_ln38_43_reg_6090)); + add_ln38_42_fu_4259_p2 <= std_logic_vector(unsigned(mul_ln38_46_reg_6225) + unsigned(mul_ln38_45_reg_6220)); + add_ln38_43_fu_4263_p2 <= std_logic_vector(unsigned(add_ln38_41_reg_6330) + unsigned(add_ln38_42_fu_4259_p2)); + add_ln38_44_fu_4268_p2 <= std_logic_vector(unsigned(add_ln38_40_fu_4254_p2) + unsigned(add_ln38_43_fu_4263_p2)); + add_ln38_45_fu_4274_p2 <= std_logic_vector(unsigned(add_ln38_37_fu_4244_p2) + unsigned(add_ln38_44_fu_4268_p2)); + add_ln38_46_fu_4118_p2 <= std_logic_vector(unsigned(mul_ln38_48_reg_6105) + unsigned(mul_ln38_47_reg_6100)); + add_ln38_47_fu_4280_p2 <= std_logic_vector(unsigned(mul_ln38_50_reg_6235) + unsigned(mul_ln38_49_reg_6230)); + add_ln38_48_fu_4284_p2 <= std_logic_vector(unsigned(add_ln38_46_reg_6335) + unsigned(add_ln38_47_fu_4280_p2)); + add_ln38_49_fu_4122_p2 <= std_logic_vector(unsigned(mul_ln38_52_reg_6115) + unsigned(mul_ln38_51_reg_6110)); + add_ln38_4_fu_4062_p2 <= std_logic_vector(unsigned(mul_ln38_6_reg_5965) + unsigned(mul_ln38_5_reg_5960)); + add_ln38_50_fu_4126_p2 <= std_logic_vector(unsigned(mul_ln38_54_reg_6125) + unsigned(mul_ln38_53_reg_6120)); + add_ln38_51_fu_4289_p2 <= std_logic_vector(unsigned(add_ln38_49_reg_6340) + unsigned(add_ln38_50_reg_6345)); + add_ln38_52_fu_4293_p2 <= std_logic_vector(unsigned(add_ln38_48_fu_4284_p2) + unsigned(add_ln38_51_fu_4289_p2)); + add_ln38_53_fu_4130_p2 <= std_logic_vector(unsigned(mul_ln38_56_reg_6135) + unsigned(mul_ln38_55_reg_6130)); + add_ln38_54_fu_4299_p2 <= std_logic_vector(unsigned(mul_ln38_58_reg_6245) + unsigned(mul_ln38_57_reg_6240)); + add_ln38_55_fu_4303_p2 <= std_logic_vector(unsigned(add_ln38_53_reg_6350) + unsigned(add_ln38_54_fu_4299_p2)); + add_ln38_56_fu_4134_p2 <= std_logic_vector(unsigned(mul_ln38_60_reg_6145) + unsigned(mul_ln38_59_reg_6140)); + add_ln38_57_fu_4138_p2 <= std_logic_vector(unsigned(mul_ln38_63_reg_6155) + unsigned(mul_ln38_62_reg_6150)); + add_ln38_58_fu_4308_p2 <= std_logic_vector(unsigned(mul_ln38_61_reg_6250) + unsigned(add_ln38_57_reg_6360)); + add_ln38_59_fu_4312_p2 <= std_logic_vector(unsigned(add_ln38_56_reg_6355) + unsigned(add_ln38_58_fu_4308_p2)); + add_ln38_5_fu_4142_p2 <= std_logic_vector(unsigned(add_ln38_3_reg_6260) + unsigned(add_ln38_4_reg_6265)); + add_ln38_60_fu_4317_p2 <= std_logic_vector(unsigned(add_ln38_55_fu_4303_p2) + unsigned(add_ln38_59_fu_4312_p2)); + add_ln38_61_fu_4323_p2 <= std_logic_vector(unsigned(add_ln38_52_fu_4293_p2) + unsigned(add_ln38_60_fu_4317_p2)); + add_ln38_62_fu_4329_p2 <= std_logic_vector(unsigned(add_ln38_45_reg_6370) + unsigned(add_ln38_61_reg_6375)); + add_ln38_64_fu_3674_p2 <= std_logic_vector(unsigned(tmp_cast_fu_3662_p3) + unsigned(trunc_ln38_1_fu_3670_p1)); + add_ln38_6_fu_4146_p2 <= std_logic_vector(unsigned(add_ln38_2_reg_6255) + unsigned(add_ln38_5_fu_4142_p2)); + add_ln38_7_fu_4066_p2 <= std_logic_vector(unsigned(mul_ln38_8_reg_5975) + unsigned(mul_ln38_7_reg_5970)); + add_ln38_8_fu_4151_p2 <= std_logic_vector(unsigned(mul_ln38_10_reg_6165) + unsigned(mul_ln38_9_reg_6160)); + add_ln38_9_fu_4155_p2 <= std_logic_vector(unsigned(add_ln38_7_reg_6270) + unsigned(add_ln38_8_fu_4151_p2)); + add_ln38_fu_4043_p2 <= std_logic_vector(unsigned(mul_ln38_reg_5935) + unsigned(reg_3362)); + add_ln42_fu_4345_p2 <= std_logic_vector(unsigned(phi_ln42_reg_3351) + unsigned(ap_const_lv13_1)); + ap_CS_fsm_pp0_stage0 <= ap_CS_fsm(8); + ap_CS_fsm_pp1_stage0 <= ap_CS_fsm(16); + ap_CS_fsm_pp2_stage0 <= ap_CS_fsm(20); + ap_CS_fsm_pp3_stage0 <= ap_CS_fsm(22); + ap_CS_fsm_state1 <= ap_CS_fsm(0); + ap_CS_fsm_state12 <= ap_CS_fsm(9); + ap_CS_fsm_state18 <= ap_CS_fsm(15); + ap_CS_fsm_state2 <= ap_CS_fsm(1); + ap_CS_fsm_state22 <= ap_CS_fsm(17); + ap_CS_fsm_state24 <= ap_CS_fsm(19); + ap_CS_fsm_state34 <= ap_CS_fsm(21); + ap_CS_fsm_state42 <= ap_CS_fsm(27); + ap_CS_fsm_state8 <= ap_CS_fsm(7); + ap_block_pp0_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp0_stage0_11001_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_11001 <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp0_stage0_subdone_assign_proc : process(ap_enable_reg_pp0_iter1, in1_mem_RVALID) + begin + ap_block_pp0_stage0_subdone <= ((in1_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp1_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp1_stage0_11001_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_11001 <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + + ap_block_pp1_stage0_subdone_assign_proc : process(ap_enable_reg_pp1_iter1, in2_mem_RVALID) + begin + ap_block_pp1_stage0_subdone <= ((in2_mem_RVALID = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1)); + end process; + + ap_block_pp2_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_11001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp2_stage0_subdone <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_pp3_stage0_01001 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_pp3_stage0_11001_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state37_io) + begin + ap_block_pp3_stage0_11001 <= ((ap_const_boolean_1 = ap_block_state37_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_pp3_stage0_subdone_assign_proc : process(ap_enable_reg_pp3_iter2, ap_block_state37_io) + begin + ap_block_pp3_stage0_subdone <= ((ap_const_boolean_1 = ap_block_state37_io) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1)); + end process; + + + ap_block_state10_pp0_stage0_iter1_assign_proc : process(in1_mem_RVALID) + begin + ap_block_state10_pp0_stage0_iter1 <= (in1_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state11_pp0_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state19_pp1_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state20_pp1_stage0_iter1_assign_proc : process(in2_mem_RVALID) + begin + ap_block_state20_pp1_stage0_iter1 <= (in2_mem_RVALID = ap_const_logic_0); + end process; + + ap_block_state21_pp1_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state25_pp2_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state26_pp2_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state27_pp2_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state28_pp2_stage0_iter3 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state29_pp2_stage0_iter4 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state30_pp2_stage0_iter5 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state31_pp2_stage0_iter6 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state32_pp2_stage0_iter7 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state33_pp2_stage0_iter8 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state35_pp3_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state36_pp3_stage0_iter1 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_block_state37_io_assign_proc : process(icmp_ln42_reg_6380_pp3_iter1_reg, out_mem_WREADY) + begin + ap_block_state37_io <= ((out_mem_WREADY = ap_const_logic_0) and (icmp_ln42_reg_6380_pp3_iter1_reg = ap_const_lv1_0)); + end process; + + ap_block_state37_pp3_stage0_iter2 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + ap_block_state9_pp0_stage0_iter0 <= not((ap_const_boolean_1 = ap_const_boolean_1)); + + ap_condition_pp0_exit_iter0_state9_assign_proc : process(icmp_ln27_fu_3425_p2) + begin + if ((icmp_ln27_fu_3425_p2 = ap_const_lv1_1)) then + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_1; + else + ap_condition_pp0_exit_iter0_state9 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp1_exit_iter0_state19_assign_proc : process(icmp_ln28_fu_3518_p2) + begin + if ((icmp_ln28_fu_3518_p2 = ap_const_lv1_1)) then + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_1; + else + ap_condition_pp1_exit_iter0_state19 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp2_exit_iter0_state25_assign_proc : process(icmp_ln31_fu_3620_p2) + begin + if ((icmp_ln31_fu_3620_p2 = ap_const_lv1_1)) then + ap_condition_pp2_exit_iter0_state25 <= ap_const_logic_1; + else + ap_condition_pp2_exit_iter0_state25 <= ap_const_logic_0; + end if; + end process; + + + ap_condition_pp3_exit_iter0_state35_assign_proc : process(icmp_ln42_fu_4339_p2) + begin + if ((icmp_ln42_fu_4339_p2 = ap_const_lv1_1)) then + ap_condition_pp3_exit_iter0_state35 <= ap_const_logic_1; + else + ap_condition_pp3_exit_iter0_state35 <= ap_const_logic_0; + end if; + end process; + + + ap_done_assign_proc : process(ap_CS_fsm_state42, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state42))) then + ap_done <= ap_const_logic_1; + else + ap_done <= ap_const_logic_0; + end if; + end process; + + ap_enable_pp0 <= (ap_idle_pp0 xor ap_const_logic_1); + ap_enable_pp1 <= (ap_idle_pp1 xor ap_const_logic_1); + ap_enable_pp2 <= (ap_idle_pp2 xor ap_const_logic_1); + ap_enable_pp3 <= (ap_idle_pp3 xor ap_const_logic_1); + + ap_idle_assign_proc : process(ap_start, ap_CS_fsm_state1) + begin + if (((ap_start = ap_const_logic_0) and (ap_const_logic_1 = ap_CS_fsm_state1))) then + ap_idle <= ap_const_logic_1; + else + ap_idle <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp0_assign_proc : process(ap_enable_reg_pp0_iter1, ap_enable_reg_pp0_iter0, ap_enable_reg_pp0_iter2) + begin + if (((ap_enable_reg_pp0_iter0 = ap_const_logic_0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_0))) then + ap_idle_pp0 <= ap_const_logic_1; + else + ap_idle_pp0 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp1_assign_proc : process(ap_enable_reg_pp1_iter1, ap_enable_reg_pp1_iter0, ap_enable_reg_pp1_iter2) + begin + if (((ap_enable_reg_pp1_iter0 = ap_const_logic_0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_0))) then + ap_idle_pp1 <= ap_const_logic_1; + else + ap_idle_pp1 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp2_assign_proc : process(ap_enable_reg_pp2_iter5, ap_enable_reg_pp2_iter0, ap_enable_reg_pp2_iter2, ap_enable_reg_pp2_iter3, ap_enable_reg_pp2_iter1, ap_enable_reg_pp2_iter4, ap_enable_reg_pp2_iter6, ap_enable_reg_pp2_iter7, ap_enable_reg_pp2_iter8) + begin + if (((ap_enable_reg_pp2_iter2 = ap_const_logic_0) and (ap_enable_reg_pp2_iter0 = ap_const_logic_0) and (ap_enable_reg_pp2_iter5 = ap_const_logic_0) and (ap_enable_reg_pp2_iter8 = ap_const_logic_0) and (ap_enable_reg_pp2_iter7 = ap_const_logic_0) and (ap_enable_reg_pp2_iter6 = ap_const_logic_0) and (ap_enable_reg_pp2_iter4 = ap_const_logic_0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_0) and (ap_enable_reg_pp2_iter3 = ap_const_logic_0))) then + ap_idle_pp2 <= ap_const_logic_1; + else + ap_idle_pp2 <= ap_const_logic_0; + end if; + end process; + + + ap_idle_pp3_assign_proc : process(ap_enable_reg_pp3_iter2, ap_enable_reg_pp3_iter1, ap_enable_reg_pp3_iter0) + begin + if (((ap_enable_reg_pp3_iter1 = ap_const_logic_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_0))) then + ap_idle_pp3 <= ap_const_logic_1; + else + ap_idle_pp3 <= ap_const_logic_0; + end if; + end process; + + + ap_phi_mux_i_0_phi_fu_3333_p4_assign_proc : process(i_0_reg_3329, icmp_ln31_reg_4578, ap_CS_fsm_pp2_stage0, select_ln31_1_reg_4592, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (icmp_ln31_reg_4578 = ap_const_lv1_0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + ap_phi_mux_i_0_phi_fu_3333_p4 <= select_ln31_1_reg_4592; + else + ap_phi_mux_i_0_phi_fu_3333_p4 <= i_0_reg_3329; + end if; + end process; + + + ap_ready_assign_proc : process(ap_CS_fsm_state42, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state42))) then + ap_ready <= ap_const_logic_1; + else + ap_ready <= ap_const_logic_0; + end if; + end process; + + + ap_rst_n_inv_assign_proc : process(ap_rst_n) + begin + ap_rst_n_inv <= not(ap_rst_n); + end process; + + empty_7_fu_3416_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in_reg_4367),64)); + empty_8_fu_3397_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(in3_reg_4372),64)); + empty_fu_3407_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(out5_reg_4362),64)); + grp_fu_3614_p0 <= zext_ln31_fu_3611_p1(32 - 1 downto 0); + grp_fu_3614_p1 <= zext_ln31_fu_3611_p1(32 - 1 downto 0); + i_fu_3631_p2 <= std_logic_vector(unsigned(ap_const_lv31_1) + unsigned(ap_phi_mux_i_0_phi_fu_3333_p4)); + icmp_ln27_fu_3425_p2 <= "1" when (phi_ln27_reg_3296 = ap_const_lv13_1000) else "0"; + icmp_ln28_fu_3518_p2 <= "1" when (phi_ln28_reg_3307 = ap_const_lv13_1000) else "0"; + icmp_ln31_fu_3620_p2 <= "1" when (indvar_flatten_reg_3318 = mul_ln31_reg_4573) else "0"; + icmp_ln33_fu_3637_p2 <= "1" when (j_0_reg_3340 = dim_read_reg_4356) else "0"; + icmp_ln42_fu_4339_p2 <= "1" when (phi_ln42_reg_3351 = ap_const_lv13_1000) else "0"; + + in1_loc_0_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_0_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_0_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_0_ce0 <= ap_const_logic_1; + else + in1_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_0_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_0_we0 <= ap_const_logic_1; + else + in1_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_10_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_10_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_10_ce0 <= ap_const_logic_1; + else + in1_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_10_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_10_we0 <= ap_const_logic_1; + else + in1_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_11_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_11_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_11_ce0 <= ap_const_logic_1; + else + in1_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_11_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_11_we0 <= ap_const_logic_1; + else + in1_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_12_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_12_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_12_ce0 <= ap_const_logic_1; + else + in1_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_12_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_12_we0 <= ap_const_logic_1; + else + in1_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_13_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_13_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_13_ce0 <= ap_const_logic_1; + else + in1_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_13_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_13_we0 <= ap_const_logic_1; + else + in1_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_14_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_14_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_14_ce0 <= ap_const_logic_1; + else + in1_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_14_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_14_we0 <= ap_const_logic_1; + else + in1_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_15_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_15_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_15_ce0 <= ap_const_logic_1; + else + in1_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_15_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_15_we0 <= ap_const_logic_1; + else + in1_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_16_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_16_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_16_ce0 <= ap_const_logic_1; + else + in1_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_16_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_16_we0 <= ap_const_logic_1; + else + in1_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_17_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_17_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_17_ce0 <= ap_const_logic_1; + else + in1_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_17_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_17_we0 <= ap_const_logic_1; + else + in1_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_18_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_18_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_18_ce0 <= ap_const_logic_1; + else + in1_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_18_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_18_we0 <= ap_const_logic_1; + else + in1_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_19_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_19_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_19_ce0 <= ap_const_logic_1; + else + in1_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_19_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_19_we0 <= ap_const_logic_1; + else + in1_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_1_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_1_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_1_ce0 <= ap_const_logic_1; + else + in1_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_1_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_1_we0 <= ap_const_logic_1; + else + in1_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_20_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_20_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_20_ce0 <= ap_const_logic_1; + else + in1_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_20_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_20_we0 <= ap_const_logic_1; + else + in1_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_21_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_21_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_21_ce0 <= ap_const_logic_1; + else + in1_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_21_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_21_we0 <= ap_const_logic_1; + else + in1_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_22_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_22_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_22_ce0 <= ap_const_logic_1; + else + in1_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_22_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_22_we0 <= ap_const_logic_1; + else + in1_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_23_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_23_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_23_ce0 <= ap_const_logic_1; + else + in1_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_23_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_23_we0 <= ap_const_logic_1; + else + in1_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_24_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_24_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_24_ce0 <= ap_const_logic_1; + else + in1_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_24_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_24_we0 <= ap_const_logic_1; + else + in1_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_25_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_25_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_25_ce0 <= ap_const_logic_1; + else + in1_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_25_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_25_we0 <= ap_const_logic_1; + else + in1_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_26_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_26_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_26_ce0 <= ap_const_logic_1; + else + in1_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_26_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_26_we0 <= ap_const_logic_1; + else + in1_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_27_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_27_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_27_ce0 <= ap_const_logic_1; + else + in1_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_27_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_27_we0 <= ap_const_logic_1; + else + in1_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_28_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_28_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_28_ce0 <= ap_const_logic_1; + else + in1_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_28_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_28_we0 <= ap_const_logic_1; + else + in1_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_29_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_29_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_29_ce0 <= ap_const_logic_1; + else + in1_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_29_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_29_we0 <= ap_const_logic_1; + else + in1_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_2_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_2_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_2_ce0 <= ap_const_logic_1; + else + in1_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_2_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_2_we0 <= ap_const_logic_1; + else + in1_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_30_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_30_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_30_ce0 <= ap_const_logic_1; + else + in1_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_30_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_30_we0 <= ap_const_logic_1; + else + in1_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_31_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_31_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_31_ce0 <= ap_const_logic_1; + else + in1_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_31_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_31_we0 <= ap_const_logic_1; + else + in1_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_32_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_32_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_32_ce0 <= ap_const_logic_1; + else + in1_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_32_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_32_we0 <= ap_const_logic_1; + else + in1_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_33_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_33_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_33_ce0 <= ap_const_logic_1; + else + in1_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_33_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_33_we0 <= ap_const_logic_1; + else + in1_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_34_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_34_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_34_ce0 <= ap_const_logic_1; + else + in1_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_34_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_34_we0 <= ap_const_logic_1; + else + in1_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_35_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_35_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_35_ce0 <= ap_const_logic_1; + else + in1_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_35_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_35_we0 <= ap_const_logic_1; + else + in1_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_36_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_36_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_36_ce0 <= ap_const_logic_1; + else + in1_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_36_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_36_we0 <= ap_const_logic_1; + else + in1_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_37_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_37_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_37_ce0 <= ap_const_logic_1; + else + in1_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_37_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_37_we0 <= ap_const_logic_1; + else + in1_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_38_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_38_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_38_ce0 <= ap_const_logic_1; + else + in1_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_38_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_38_we0 <= ap_const_logic_1; + else + in1_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_39_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_39_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_39_ce0 <= ap_const_logic_1; + else + in1_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_39_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_39_we0 <= ap_const_logic_1; + else + in1_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_3_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_3_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_3_ce0 <= ap_const_logic_1; + else + in1_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_3_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_3_we0 <= ap_const_logic_1; + else + in1_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_40_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_40_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_40_ce0 <= ap_const_logic_1; + else + in1_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_40_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_40_we0 <= ap_const_logic_1; + else + in1_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_41_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_41_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_41_ce0 <= ap_const_logic_1; + else + in1_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_41_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_41_we0 <= ap_const_logic_1; + else + in1_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_42_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_42_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_42_ce0 <= ap_const_logic_1; + else + in1_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_42_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_42_we0 <= ap_const_logic_1; + else + in1_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_43_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_43_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_43_ce0 <= ap_const_logic_1; + else + in1_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_43_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_43_we0 <= ap_const_logic_1; + else + in1_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_44_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_44_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_44_ce0 <= ap_const_logic_1; + else + in1_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_44_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_44_we0 <= ap_const_logic_1; + else + in1_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_45_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_45_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_45_ce0 <= ap_const_logic_1; + else + in1_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_45_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_45_we0 <= ap_const_logic_1; + else + in1_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_46_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_46_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_46_ce0 <= ap_const_logic_1; + else + in1_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_46_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_46_we0 <= ap_const_logic_1; + else + in1_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_47_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_47_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_47_ce0 <= ap_const_logic_1; + else + in1_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_47_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_47_we0 <= ap_const_logic_1; + else + in1_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_48_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_48_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_48_ce0 <= ap_const_logic_1; + else + in1_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_48_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_48_we0 <= ap_const_logic_1; + else + in1_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_49_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_49_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_49_ce0 <= ap_const_logic_1; + else + in1_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_49_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_49_we0 <= ap_const_logic_1; + else + in1_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_4_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_4_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_4_ce0 <= ap_const_logic_1; + else + in1_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_4_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_4_we0 <= ap_const_logic_1; + else + in1_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_50_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_50_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_50_ce0 <= ap_const_logic_1; + else + in1_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_50_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_50_we0 <= ap_const_logic_1; + else + in1_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_51_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_51_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_51_ce0 <= ap_const_logic_1; + else + in1_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_51_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_51_we0 <= ap_const_logic_1; + else + in1_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_52_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_52_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_52_ce0 <= ap_const_logic_1; + else + in1_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_52_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_52_we0 <= ap_const_logic_1; + else + in1_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_53_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_53_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_53_ce0 <= ap_const_logic_1; + else + in1_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_53_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_53_we0 <= ap_const_logic_1; + else + in1_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_54_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_54_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_54_ce0 <= ap_const_logic_1; + else + in1_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_54_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_54_we0 <= ap_const_logic_1; + else + in1_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_55_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_55_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_55_ce0 <= ap_const_logic_1; + else + in1_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_55_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_55_we0 <= ap_const_logic_1; + else + in1_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_56_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_56_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_56_ce0 <= ap_const_logic_1; + else + in1_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_56_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_56_we0 <= ap_const_logic_1; + else + in1_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_57_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_57_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_57_ce0 <= ap_const_logic_1; + else + in1_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_57_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_57_we0 <= ap_const_logic_1; + else + in1_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_58_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_58_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_58_ce0 <= ap_const_logic_1; + else + in1_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_58_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_58_we0 <= ap_const_logic_1; + else + in1_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_59_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_59_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_59_ce0 <= ap_const_logic_1; + else + in1_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_59_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_59_we0 <= ap_const_logic_1; + else + in1_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_5_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_5_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_5_ce0 <= ap_const_logic_1; + else + in1_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_5_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_5_we0 <= ap_const_logic_1; + else + in1_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_60_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_60_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_60_ce0 <= ap_const_logic_1; + else + in1_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_60_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_60_we0 <= ap_const_logic_1; + else + in1_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_61_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_61_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_61_ce0 <= ap_const_logic_1; + else + in1_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_61_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_61_we0 <= ap_const_logic_1; + else + in1_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_62_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_62_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_62_ce0 <= ap_const_logic_1; + else + in1_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_62_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_62_we0 <= ap_const_logic_1; + else + in1_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_63_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_63_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_63_ce0 <= ap_const_logic_1; + else + in1_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_63_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_63_we0 <= ap_const_logic_1; + else + in1_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_6_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_6_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_6_ce0 <= ap_const_logic_1; + else + in1_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_6_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_6_we0 <= ap_const_logic_1; + else + in1_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_7_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_7_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_7_ce0 <= ap_const_logic_1; + else + in1_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_7_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_7_we0 <= ap_const_logic_1; + else + in1_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_address0_assign_proc : process(ap_block_pp0_stage0, ap_CS_fsm_pp2_stage0, zext_ln31_1_fu_3691_p1, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in1_loc_8_address0 <= zext_ln31_1_fu_3691_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_8_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp0_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in1_loc_8_ce0 <= ap_const_logic_1; + else + in1_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_8_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_8_we0 <= ap_const_logic_1; + else + in1_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_address0_assign_proc : process(ap_block_pp0_stage0, zext_ln31_1_reg_4609, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2, ap_block_pp2_stage0, zext_ln27_fu_3451_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in1_loc_9_address0 <= zext_ln31_1_reg_4609(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_address0 <= zext_ln27_fu_3451_p1(6 - 1 downto 0); + else + in1_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in1_loc_9_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp0_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp0_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in1_loc_9_ce0 <= ap_const_logic_1; + else + in1_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in1_loc_9_we0_assign_proc : process(ap_block_pp0_stage0_11001, trunc_ln27_reg_4409_pp0_iter1_reg, ap_enable_reg_pp0_iter2) + begin + if (((trunc_ln27_reg_4409_pp0_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter2 = ap_const_logic_1))) then + in1_loc_9_we0 <= ap_const_logic_1; + else + in1_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + in1_mem_ARADDR <= empty_8_fu_3397_p1(32 - 1 downto 0); + + in1_mem_ARVALID_assign_proc : process(ap_CS_fsm_state2, in1_mem_ARREADY) + begin + if (((in1_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state2))) then + in1_mem_ARVALID <= ap_const_logic_1; + else + in1_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in1_mem_RREADY_assign_proc : process(ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0_11001) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_RREADY <= ap_const_logic_1; + else + in1_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in1_mem_blk_n_AR_assign_proc : process(m_axi_in1_mem_ARREADY, ap_CS_fsm_state2) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state2)) then + in1_mem_blk_n_AR <= m_axi_in1_mem_ARREADY; + else + in1_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in1_mem_blk_n_R_assign_proc : process(m_axi_in1_mem_RVALID, ap_CS_fsm_pp0_stage0, ap_enable_reg_pp0_iter1, ap_block_pp0_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp0_stage0) and (ap_enable_reg_pp0_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp0_stage0))) then + in1_mem_blk_n_R <= m_axi_in1_mem_RVALID; + else + in1_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + + in2_loc_0_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_0_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_0_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_0_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_0_ce0 <= ap_const_logic_1; + else + in2_loc_0_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_0_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_0) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_0_we0 <= ap_const_logic_1; + else + in2_loc_0_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_10_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_10_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_10_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_10_ce0 <= ap_const_logic_1; + else + in2_loc_10_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_10_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_10_we0 <= ap_const_logic_1; + else + in2_loc_10_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_11_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_11_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_11_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_11_ce0 <= ap_const_logic_1; + else + in2_loc_11_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_11_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_11_we0 <= ap_const_logic_1; + else + in2_loc_11_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_12_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_12_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_12_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_12_ce0 <= ap_const_logic_1; + else + in2_loc_12_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_12_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_12_we0 <= ap_const_logic_1; + else + in2_loc_12_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_13_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_13_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_13_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_13_ce0 <= ap_const_logic_1; + else + in2_loc_13_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_13_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_13_we0 <= ap_const_logic_1; + else + in2_loc_13_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_14_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_14_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_14_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_14_ce0 <= ap_const_logic_1; + else + in2_loc_14_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_14_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_14_we0 <= ap_const_logic_1; + else + in2_loc_14_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_15_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_15_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_15_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_15_ce0 <= ap_const_logic_1; + else + in2_loc_15_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_15_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_15_we0 <= ap_const_logic_1; + else + in2_loc_15_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_16_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_16_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_16_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_16_ce0 <= ap_const_logic_1; + else + in2_loc_16_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_16_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_10) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_16_we0 <= ap_const_logic_1; + else + in2_loc_16_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_17_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_17_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_17_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_17_ce0 <= ap_const_logic_1; + else + in2_loc_17_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_17_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_11) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_17_we0 <= ap_const_logic_1; + else + in2_loc_17_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_18_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_18_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_18_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_18_ce0 <= ap_const_logic_1; + else + in2_loc_18_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_18_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_12) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_18_we0 <= ap_const_logic_1; + else + in2_loc_18_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_19_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_19_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_19_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_19_ce0 <= ap_const_logic_1; + else + in2_loc_19_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_19_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_13) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_19_we0 <= ap_const_logic_1; + else + in2_loc_19_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_1_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_1_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_1_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_1_ce0 <= ap_const_logic_1; + else + in2_loc_1_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_1_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_1_we0 <= ap_const_logic_1; + else + in2_loc_1_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_20_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_20_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_20_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_20_ce0 <= ap_const_logic_1; + else + in2_loc_20_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_20_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_14) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_20_we0 <= ap_const_logic_1; + else + in2_loc_20_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_21_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_21_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_21_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_21_ce0 <= ap_const_logic_1; + else + in2_loc_21_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_21_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_15) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_21_we0 <= ap_const_logic_1; + else + in2_loc_21_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_22_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_22_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_22_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_22_ce0 <= ap_const_logic_1; + else + in2_loc_22_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_22_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_16) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_22_we0 <= ap_const_logic_1; + else + in2_loc_22_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_23_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_23_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_23_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_23_ce0 <= ap_const_logic_1; + else + in2_loc_23_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_23_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_17) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_23_we0 <= ap_const_logic_1; + else + in2_loc_23_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_24_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_24_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_24_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_24_ce0 <= ap_const_logic_1; + else + in2_loc_24_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_24_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_18) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_24_we0 <= ap_const_logic_1; + else + in2_loc_24_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_25_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_25_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_25_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_25_ce0 <= ap_const_logic_1; + else + in2_loc_25_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_25_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_19) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_25_we0 <= ap_const_logic_1; + else + in2_loc_25_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_26_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_26_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_26_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_26_ce0 <= ap_const_logic_1; + else + in2_loc_26_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_26_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_26_we0 <= ap_const_logic_1; + else + in2_loc_26_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_27_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_27_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_27_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_27_ce0 <= ap_const_logic_1; + else + in2_loc_27_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_27_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_27_we0 <= ap_const_logic_1; + else + in2_loc_27_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_28_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_28_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_28_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_28_ce0 <= ap_const_logic_1; + else + in2_loc_28_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_28_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_28_we0 <= ap_const_logic_1; + else + in2_loc_28_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_29_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_29_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_29_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_29_ce0 <= ap_const_logic_1; + else + in2_loc_29_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_29_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_29_we0 <= ap_const_logic_1; + else + in2_loc_29_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_2_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_2_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_2_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_2_ce0 <= ap_const_logic_1; + else + in2_loc_2_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_2_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_2_we0 <= ap_const_logic_1; + else + in2_loc_2_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_30_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_30_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_30_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_30_ce0 <= ap_const_logic_1; + else + in2_loc_30_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_30_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_30_we0 <= ap_const_logic_1; + else + in2_loc_30_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_31_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_31_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_31_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_31_ce0 <= ap_const_logic_1; + else + in2_loc_31_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_31_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_1F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_31_we0 <= ap_const_logic_1; + else + in2_loc_31_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_32_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_32_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_32_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_32_ce0 <= ap_const_logic_1; + else + in2_loc_32_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_32_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_20) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_32_we0 <= ap_const_logic_1; + else + in2_loc_32_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_33_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_33_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_33_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_33_ce0 <= ap_const_logic_1; + else + in2_loc_33_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_33_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_21) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_33_we0 <= ap_const_logic_1; + else + in2_loc_33_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_34_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_34_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_34_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_34_ce0 <= ap_const_logic_1; + else + in2_loc_34_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_34_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_22) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_34_we0 <= ap_const_logic_1; + else + in2_loc_34_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_35_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_35_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_35_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_35_ce0 <= ap_const_logic_1; + else + in2_loc_35_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_35_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_23) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_35_we0 <= ap_const_logic_1; + else + in2_loc_35_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_36_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_36_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_36_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_36_ce0 <= ap_const_logic_1; + else + in2_loc_36_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_36_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_24) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_36_we0 <= ap_const_logic_1; + else + in2_loc_36_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_37_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_37_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_37_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_37_ce0 <= ap_const_logic_1; + else + in2_loc_37_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_37_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_25) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_37_we0 <= ap_const_logic_1; + else + in2_loc_37_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_38_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_38_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_38_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_38_ce0 <= ap_const_logic_1; + else + in2_loc_38_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_38_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_26) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_38_we0 <= ap_const_logic_1; + else + in2_loc_38_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_39_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_39_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_39_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_39_ce0 <= ap_const_logic_1; + else + in2_loc_39_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_39_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_27) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_39_we0 <= ap_const_logic_1; + else + in2_loc_39_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_3_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_3_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_3_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_3_ce0 <= ap_const_logic_1; + else + in2_loc_3_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_3_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_3_we0 <= ap_const_logic_1; + else + in2_loc_3_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_40_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_40_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_40_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_40_ce0 <= ap_const_logic_1; + else + in2_loc_40_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_40_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_28) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_40_we0 <= ap_const_logic_1; + else + in2_loc_40_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_41_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_41_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_41_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_41_ce0 <= ap_const_logic_1; + else + in2_loc_41_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_41_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_29) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_41_we0 <= ap_const_logic_1; + else + in2_loc_41_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_42_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_42_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_42_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_42_ce0 <= ap_const_logic_1; + else + in2_loc_42_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_42_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_42_we0 <= ap_const_logic_1; + else + in2_loc_42_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_43_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_43_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_43_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_43_ce0 <= ap_const_logic_1; + else + in2_loc_43_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_43_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_43_we0 <= ap_const_logic_1; + else + in2_loc_43_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_44_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_44_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_44_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_44_ce0 <= ap_const_logic_1; + else + in2_loc_44_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_44_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_44_we0 <= ap_const_logic_1; + else + in2_loc_44_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_45_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_45_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_45_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_45_ce0 <= ap_const_logic_1; + else + in2_loc_45_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_45_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_45_we0 <= ap_const_logic_1; + else + in2_loc_45_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_46_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_46_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_46_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_46_ce0 <= ap_const_logic_1; + else + in2_loc_46_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_46_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_46_we0 <= ap_const_logic_1; + else + in2_loc_46_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_47_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_47_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_47_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_47_ce0 <= ap_const_logic_1; + else + in2_loc_47_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_47_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_2F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_47_we0 <= ap_const_logic_1; + else + in2_loc_47_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_48_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_48_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_48_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_48_ce0 <= ap_const_logic_1; + else + in2_loc_48_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_48_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_30) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_48_we0 <= ap_const_logic_1; + else + in2_loc_48_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_49_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_49_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_49_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_49_ce0 <= ap_const_logic_1; + else + in2_loc_49_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_49_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_31) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_49_we0 <= ap_const_logic_1; + else + in2_loc_49_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_4_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_4_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_4_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_4_ce0 <= ap_const_logic_1; + else + in2_loc_4_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_4_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_4) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_4_we0 <= ap_const_logic_1; + else + in2_loc_4_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_50_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_50_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_50_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_50_ce0 <= ap_const_logic_1; + else + in2_loc_50_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_50_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_32) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_50_we0 <= ap_const_logic_1; + else + in2_loc_50_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_51_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_51_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_51_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_51_ce0 <= ap_const_logic_1; + else + in2_loc_51_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_51_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_33) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_51_we0 <= ap_const_logic_1; + else + in2_loc_51_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_52_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_52_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_52_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_52_ce0 <= ap_const_logic_1; + else + in2_loc_52_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_52_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_34) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_52_we0 <= ap_const_logic_1; + else + in2_loc_52_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_53_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_53_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_53_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_53_ce0 <= ap_const_logic_1; + else + in2_loc_53_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_53_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_35) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_53_we0 <= ap_const_logic_1; + else + in2_loc_53_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_54_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_54_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_54_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_54_ce0 <= ap_const_logic_1; + else + in2_loc_54_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_54_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_36) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_54_we0 <= ap_const_logic_1; + else + in2_loc_54_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_55_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_55_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_55_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_55_ce0 <= ap_const_logic_1; + else + in2_loc_55_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_55_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_37) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_55_we0 <= ap_const_logic_1; + else + in2_loc_55_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_56_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_56_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_56_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_56_ce0 <= ap_const_logic_1; + else + in2_loc_56_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_56_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_38) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_56_we0 <= ap_const_logic_1; + else + in2_loc_56_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_57_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_57_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_57_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_57_ce0 <= ap_const_logic_1; + else + in2_loc_57_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_57_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_39) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_57_we0 <= ap_const_logic_1; + else + in2_loc_57_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_58_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_58_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_58_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_58_ce0 <= ap_const_logic_1; + else + in2_loc_58_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_58_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3A) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_58_we0 <= ap_const_logic_1; + else + in2_loc_58_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_59_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_59_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_59_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_59_ce0 <= ap_const_logic_1; + else + in2_loc_59_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_59_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3B) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_59_we0 <= ap_const_logic_1; + else + in2_loc_59_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_5_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_5_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_5_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_5_ce0 <= ap_const_logic_1; + else + in2_loc_5_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_5_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_5) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_5_we0 <= ap_const_logic_1; + else + in2_loc_5_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_60_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_60_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_60_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_60_ce0 <= ap_const_logic_1; + else + in2_loc_60_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_60_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3C) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_60_we0 <= ap_const_logic_1; + else + in2_loc_60_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_61_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_61_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_61_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_61_ce0 <= ap_const_logic_1; + else + in2_loc_61_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_61_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3D) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_61_we0 <= ap_const_logic_1; + else + in2_loc_61_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_62_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_62_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_62_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_62_ce0 <= ap_const_logic_1; + else + in2_loc_62_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_62_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3E) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_62_we0 <= ap_const_logic_1; + else + in2_loc_62_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_63_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_63_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_63_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_63_ce0 <= ap_const_logic_1; + else + in2_loc_63_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_63_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_3F) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_63_we0 <= ap_const_logic_1; + else + in2_loc_63_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_6_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_6_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_6_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_6_ce0 <= ap_const_logic_1; + else + in2_loc_6_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_6_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_6) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_6_we0 <= ap_const_logic_1; + else + in2_loc_6_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_7_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_7_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_7_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_7_ce0 <= ap_const_logic_1; + else + in2_loc_7_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_7_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_7) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_7_we0 <= ap_const_logic_1; + else + in2_loc_7_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_address0_assign_proc : process(ap_block_pp1_stage0, ap_CS_fsm_pp2_stage0, sext_ln38_fu_3739_p1, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1))) then + in2_loc_8_address0 <= sext_ln38_fu_3739_p1(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_8_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_8_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_CS_fsm_pp2_stage0, ap_enable_reg_pp1_iter2, ap_enable_reg_pp2_iter1) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp2_stage0) and (ap_enable_reg_pp2_iter1 = ap_const_logic_1)))) then + in2_loc_8_ce0 <= ap_const_logic_1; + else + in2_loc_8_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_8_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_8) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_8_we0 <= ap_const_logic_1; + else + in2_loc_8_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_address0_assign_proc : process(ap_block_pp1_stage0, sext_ln38_reg_4857, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2, ap_block_pp2_stage0, zext_ln28_fu_3544_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1))) then + in2_loc_9_address0 <= sext_ln38_reg_4857(6 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_address0 <= zext_ln28_fu_3544_p1(6 - 1 downto 0); + else + in2_loc_9_address0 <= "XXXXXX"; + end if; + end process; + + + in2_loc_9_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_block_pp1_stage0_11001, ap_enable_reg_pp2_iter2, ap_enable_reg_pp1_iter2) + begin + if ((((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter2 = ap_const_logic_1)))) then + in2_loc_9_ce0 <= ap_const_logic_1; + else + in2_loc_9_ce0 <= ap_const_logic_0; + end if; + end process; + + + in2_loc_9_we0_assign_proc : process(ap_block_pp1_stage0_11001, trunc_ln1_reg_4495_pp1_iter1_reg, ap_enable_reg_pp1_iter2) + begin + if (((trunc_ln1_reg_4495_pp1_iter1_reg = ap_const_lv6_9) and (ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter2 = ap_const_logic_1))) then + in2_loc_9_we0 <= ap_const_logic_1; + else + in2_loc_9_we0 <= ap_const_logic_0; + end if; + end process; + + + in2_mem_ARVALID_assign_proc : process(ap_CS_fsm_state12, in2_mem_ARREADY) + begin + if (((in2_mem_ARREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state12))) then + in2_mem_ARVALID <= ap_const_logic_1; + else + in2_mem_ARVALID <= ap_const_logic_0; + end if; + end process; + + + in2_mem_RREADY_assign_proc : process(ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0_11001) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_RREADY <= ap_const_logic_1; + else + in2_mem_RREADY <= ap_const_logic_0; + end if; + end process; + + + in2_mem_blk_n_AR_assign_proc : process(m_axi_in2_mem_ARREADY, ap_CS_fsm_state12) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state12)) then + in2_mem_blk_n_AR <= m_axi_in2_mem_ARREADY; + else + in2_mem_blk_n_AR <= ap_const_logic_1; + end if; + end process; + + + in2_mem_blk_n_R_assign_proc : process(m_axi_in2_mem_RVALID, ap_CS_fsm_pp1_stage0, ap_enable_reg_pp1_iter1, ap_block_pp1_stage0) + begin + if (((ap_const_boolean_0 = ap_block_pp1_stage0) and (ap_enable_reg_pp1_iter1 = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_pp1_stage0))) then + in2_mem_blk_n_R <= m_axi_in2_mem_RVALID; + else + in2_mem_blk_n_R <= ap_const_logic_1; + end if; + end process; + + j_fu_3685_p2 <= std_logic_vector(unsigned(ap_const_lv32_1) + unsigned(select_ln31_fu_3642_p3)); + + out_loc_address0_assign_proc : process(ap_block_pp3_stage0, ap_CS_fsm_pp3_stage0, out_loc_addr_reg_4598_pp2_iter3_reg, ap_enable_reg_pp3_iter0, ap_enable_reg_pp2_iter4, ap_block_pp2_stage0, zext_ln42_fu_4351_p1) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1))) then + out_loc_address0 <= zext_ln42_fu_4351_p1(12 - 1 downto 0); + elsif (((ap_const_boolean_0 = ap_block_pp2_stage0) and (ap_enable_reg_pp2_iter4 = ap_const_logic_1))) then + out_loc_address0 <= out_loc_addr_reg_4598_pp2_iter3_reg; + else + out_loc_address0 <= "XXXXXXXXXXXX"; + end if; + end process; + + + out_loc_ce0_assign_proc : process(ap_block_pp2_stage0_11001, ap_CS_fsm_pp3_stage0, ap_block_pp3_stage0_11001, ap_enable_reg_pp3_iter0, ap_enable_reg_pp2_iter4) + begin + if ((((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (ap_const_logic_1 = ap_CS_fsm_pp3_stage0) and (ap_enable_reg_pp3_iter0 = ap_const_logic_1)) or ((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter4 = ap_const_logic_1)))) then + out_loc_ce0 <= ap_const_logic_1; + else + out_loc_ce0 <= ap_const_logic_0; + end if; + end process; + + + out_loc_ce1_assign_proc : process(ap_block_pp2_stage0_11001, ap_enable_reg_pp2_iter8) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (ap_enable_reg_pp2_iter8 = ap_const_logic_1))) then + out_loc_ce1 <= ap_const_logic_1; + else + out_loc_ce1 <= ap_const_logic_0; + end if; + end process; + + out_loc_d1 <= std_logic_vector(unsigned(add_ln38_30_reg_6365) + unsigned(add_ln38_62_fu_4329_p2)); + + out_loc_we1_assign_proc : process(ap_block_pp2_stage0_11001, icmp_ln31_reg_4578_pp2_iter7_reg, ap_enable_reg_pp2_iter8) + begin + if (((ap_const_boolean_0 = ap_block_pp2_stage0_11001) and (icmp_ln31_reg_4578_pp2_iter7_reg = ap_const_lv1_0) and (ap_enable_reg_pp2_iter8 = ap_const_logic_1))) then + out_loc_we1 <= ap_const_logic_1; + else + out_loc_we1 <= ap_const_logic_0; + end if; + end process; + + + out_mem_AWVALID_assign_proc : process(ap_CS_fsm_state34, out_mem_AWREADY) + begin + if (((out_mem_AWREADY = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state34))) then + out_mem_AWVALID <= ap_const_logic_1; + else + out_mem_AWVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_BREADY_assign_proc : process(ap_CS_fsm_state42, out_mem_BVALID) + begin + if (((out_mem_BVALID = ap_const_logic_1) and (ap_const_logic_1 = ap_CS_fsm_state42))) then + out_mem_BREADY <= ap_const_logic_1; + else + out_mem_BREADY <= ap_const_logic_0; + end if; + end process; + + + out_mem_WVALID_assign_proc : process(ap_enable_reg_pp3_iter2, icmp_ln42_reg_6380_pp3_iter1_reg, ap_block_pp3_stage0_11001) + begin + if (((ap_const_boolean_0 = ap_block_pp3_stage0_11001) and (icmp_ln42_reg_6380_pp3_iter1_reg = ap_const_lv1_0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_WVALID <= ap_const_logic_1; + else + out_mem_WVALID <= ap_const_logic_0; + end if; + end process; + + + out_mem_blk_n_AW_assign_proc : process(m_axi_out_mem_AWREADY, ap_CS_fsm_state34) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state34)) then + out_mem_blk_n_AW <= m_axi_out_mem_AWREADY; + else + out_mem_blk_n_AW <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_B_assign_proc : process(m_axi_out_mem_BVALID, ap_CS_fsm_state42) + begin + if ((ap_const_logic_1 = ap_CS_fsm_state42)) then + out_mem_blk_n_B <= m_axi_out_mem_BVALID; + else + out_mem_blk_n_B <= ap_const_logic_1; + end if; + end process; + + + out_mem_blk_n_W_assign_proc : process(m_axi_out_mem_WREADY, ap_enable_reg_pp3_iter2, ap_block_pp3_stage0, icmp_ln42_reg_6380_pp3_iter1_reg) + begin + if (((icmp_ln42_reg_6380_pp3_iter1_reg = ap_const_lv1_0) and (ap_const_boolean_0 = ap_block_pp3_stage0) and (ap_enable_reg_pp3_iter2 = ap_const_logic_1))) then + out_mem_blk_n_W <= m_axi_out_mem_WREADY; + else + out_mem_blk_n_W <= ap_const_logic_1; + end if; + end process; + + select_ln31_1_fu_3650_p3 <= + i_fu_3631_p2 when (icmp_ln33_fu_3637_p2(0) = '1') else + ap_phi_mux_i_0_phi_fu_3333_p4; + select_ln31_fu_3642_p3 <= + ap_const_lv32_0 when (icmp_ln33_fu_3637_p2(0) = '1') else + j_0_reg_3340; + sext_ln38_fu_3739_p1 <= std_logic_vector(IEEE.numeric_std.resize(signed(select_ln31_reg_4587),64)); + + tmp_cast_fu_3662_p3 <= (trunc_ln38_fu_3658_p1 & ap_const_lv6_0); + trunc_ln27_fu_3447_p1 <= phi_ln27_reg_3296(6 - 1 downto 0); + trunc_ln28_fu_3530_p1 <= phi_ln28_reg_3307(6 - 1 downto 0); + trunc_ln38_1_fu_3670_p1 <= select_ln31_fu_3642_p3(14 - 1 downto 0); + trunc_ln38_fu_3658_p1 <= select_ln31_1_fu_3650_p3(8 - 1 downto 0); + zext_ln27_fu_3451_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(lshr_ln_reg_4404_pp0_iter1_reg),64)); + zext_ln28_fu_3544_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(trunc_ln28_reg_4490_pp1_iter1_reg),64)); + zext_ln31_1_fu_3691_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(select_ln31_1_reg_4592),64)); + zext_ln31_fu_3611_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(dim_read_reg_4356),64)); + zext_ln38_fu_3680_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(add_ln38_64_fu_3674_p2),64)); + zext_ln42_fu_4351_p1 <= std_logic_vector(IEEE.numeric_std.resize(unsigned(phi_ln42_reg_3351),64)); +end behav; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_loc_0.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_loc_0.vhd new file mode 100755 index 0000000..609e4b6 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_loc_0.vhd @@ -0,0 +1,112 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_in1_loc_0_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 6; + MEM_SIZE : integer := 64 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + d0 : in std_logic_vector(DWIDTH-1 downto 0); + we0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_in1_loc_0_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + if (we0 = '1') then + ram(CONV_INTEGER(addr0_tmp)) := d0; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_in1_loc_0 is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 64; + AddressWidth : INTEGER := 6); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_in1_loc_0 is + component mmult_in1_loc_0_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + we0 : IN STD_LOGIC; + d0 : IN STD_LOGIC_VECTOR; + q0 : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_in1_loc_0_ram_U : component mmult_in1_loc_0_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + we0 => we0, + d0 => d0, + q0 => q0); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_mem_m_axi.vhd new file mode 100755 index 0000000..5d4f5b4 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in1_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in1_mem_m_axi; + +architecture behave of mmult_in1_mem_m_axi is + component mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_write; + + component mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in1_mem_m_axi_read; + + component mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in1_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in1_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in1_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in1_mem_m_axi_reg_slice; + +architecture behave of mmult_in1_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in1_mem_m_axi_fifo; + +architecture behave of mmult_in1_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in1_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in1_mem_m_axi_decoder; + +architecture behav of mmult_in1_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in1_mem_m_axi_throttl; + +architecture behav of mmult_in1_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_read; + +architecture behave of mmult_in1_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in1_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in1_mem_m_axi_write; + +architecture behave of mmult_in1_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in1_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in1_mem_m_axi_fifo; + + component mmult_in1_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in1_mem_m_axi_reg_slice; + + component mmult_in1_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in1_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in1_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in1_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in1_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in1_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in1_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in2_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in2_mem_m_axi.vhd new file mode 100755 index 0000000..84687e2 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_in2_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_in2_mem_m_axi; + +architecture behave of mmult_in2_mem_m_axi is + component mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_write; + + component mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_in2_mem_m_axi_read; + + component mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_in2_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_in2_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_in2_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_in2_mem_m_axi_reg_slice; + +architecture behave of mmult_in2_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_in2_mem_m_axi_fifo; + +architecture behave of mmult_in2_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_in2_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_in2_mem_m_axi_decoder; + +architecture behav of mmult_in2_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_in2_mem_m_axi_throttl; + +architecture behav of mmult_in2_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_read; + +architecture behave of mmult_in2_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_in2_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_in2_mem_m_axi_write; + +architecture behave of mmult_in2_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_in2_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_in2_mem_m_axi_fifo; + + component mmult_in2_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_in2_mem_m_axi_reg_slice; + + component mmult_in2_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_in2_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_in2_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_in2_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_in2_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_in2_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_in2_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32ns_32bkb.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32ns_32bkb.vhd new file mode 100755 index 0000000..0c59c29 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32ns_32bkb.vhd @@ -0,0 +1,88 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult_mul_32ns_32bkb_MulnS_0 is +port ( + clk: in std_logic; + ce: in std_logic; + a: in std_logic_vector(32 - 1 downto 0); + b: in std_logic_vector(32 - 1 downto 0); + p: out std_logic_vector(64 - 1 downto 0)); +end entity; + +architecture behav of mmult_mul_32ns_32bkb_MulnS_0 is + signal tmp_product : std_logic_vector(64 - 1 downto 0); + signal a_i : std_logic_vector(32 - 1 downto 0); + signal b_i : std_logic_vector(32 - 1 downto 0); + signal p_tmp : std_logic_vector(64 - 1 downto 0); + signal a_reg0 : std_logic_vector(32 - 1 downto 0); + signal b_reg0 : std_logic_vector(32 - 1 downto 0); + + signal buff0 : std_logic_vector(64 - 1 downto 0); +begin + a_i <= a; + b_i <= b; + p <= p_tmp; + + p_tmp <= buff0; + tmp_product <= std_logic_vector(resize(unsigned(a_reg0) * unsigned(b_reg0), 64)); + + process(clk) + begin + if (clk'event and clk = '1') then + if (ce = '1') then + a_reg0 <= a_i; + b_reg0 <= b_i; + buff0 <= tmp_product; + end if; + end if; + end process; +end architecture; +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_mul_32ns_32bkb is + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + ce : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR(din0_WIDTH - 1 DOWNTO 0); + din1 : IN STD_LOGIC_VECTOR(din1_WIDTH - 1 DOWNTO 0); + dout : OUT STD_LOGIC_VECTOR(dout_WIDTH - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_mul_32ns_32bkb is + component mmult_mul_32ns_32bkb_MulnS_0 is + port ( + clk : IN STD_LOGIC; + ce : IN STD_LOGIC; + a : IN STD_LOGIC_VECTOR; + b : IN STD_LOGIC_VECTOR; + p : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_mul_32ns_32bkb_MulnS_0_U : component mmult_mul_32ns_32bkb_MulnS_0 + port map ( + clk => clk, + ce => ce, + a => din0, + b => din1, + p => dout); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32s_32scud.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32s_32scud.vhd new file mode 100755 index 0000000..3664256 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_mul_32s_32scud.vhd @@ -0,0 +1,88 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.std_logic_1164.all; +use IEEE.numeric_std.all; + +entity mmult_mul_32s_32scud_MulnS_1 is +port ( + clk: in std_logic; + ce: in std_logic; + a: in std_logic_vector(32 - 1 downto 0); + b: in std_logic_vector(32 - 1 downto 0); + p: out std_logic_vector(32 - 1 downto 0)); +end entity; + +architecture behav of mmult_mul_32s_32scud_MulnS_1 is + signal tmp_product : std_logic_vector(32 - 1 downto 0); + signal a_i : std_logic_vector(32 - 1 downto 0); + signal b_i : std_logic_vector(32 - 1 downto 0); + signal p_tmp : std_logic_vector(32 - 1 downto 0); + signal a_reg0 : std_logic_vector(32 - 1 downto 0); + signal b_reg0 : std_logic_vector(32 - 1 downto 0); + + signal buff0 : std_logic_vector(32 - 1 downto 0); +begin + a_i <= a; + b_i <= b; + p <= p_tmp; + + p_tmp <= buff0; + tmp_product <= std_logic_vector(resize(unsigned(std_logic_vector(signed(a_reg0) * signed(b_reg0))), 32)); + + process(clk) + begin + if (clk'event and clk = '1') then + if (ce = '1') then + a_reg0 <= a_i; + b_reg0 <= b_i; + buff0 <= tmp_product; + end if; + end if; + end process; +end architecture; +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_mul_32s_32scud is + generic ( + ID : INTEGER; + NUM_STAGE : INTEGER; + din0_WIDTH : INTEGER; + din1_WIDTH : INTEGER; + dout_WIDTH : INTEGER); + port ( + clk : IN STD_LOGIC; + reset : IN STD_LOGIC; + ce : IN STD_LOGIC; + din0 : IN STD_LOGIC_VECTOR(din0_WIDTH - 1 DOWNTO 0); + din1 : IN STD_LOGIC_VECTOR(din1_WIDTH - 1 DOWNTO 0); + dout : OUT STD_LOGIC_VECTOR(dout_WIDTH - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_mul_32s_32scud is + component mmult_mul_32s_32scud_MulnS_1 is + port ( + clk : IN STD_LOGIC; + ce : IN STD_LOGIC; + a : IN STD_LOGIC_VECTOR; + b : IN STD_LOGIC_VECTOR; + p : OUT STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_mul_32s_32scud_MulnS_1_U : component mmult_mul_32s_32scud_MulnS_1 + port map ( + clk => clk, + ce => ce, + a => din0, + b => din1, + p => dout); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_loc.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_loc.vhd new file mode 100755 index 0000000..ea7bf78 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_loc.vhd @@ -0,0 +1,129 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +-- +library ieee; +use ieee.std_logic_1164.all; +use ieee.std_logic_unsigned.all; + +entity mmult_out_loc_ram is + generic( + MEM_TYPE : string := "block"; + DWIDTH : integer := 32; + AWIDTH : integer := 12; + MEM_SIZE : integer := 4096 + ); + port ( + addr0 : in std_logic_vector(AWIDTH-1 downto 0); + ce0 : in std_logic; + q0 : out std_logic_vector(DWIDTH-1 downto 0); + addr1 : in std_logic_vector(AWIDTH-1 downto 0); + ce1 : in std_logic; + d1 : in std_logic_vector(DWIDTH-1 downto 0); + we1 : in std_logic; + clk : in std_logic + ); +end entity; + + +architecture rtl of mmult_out_loc_ram is + +signal addr0_tmp : std_logic_vector(AWIDTH-1 downto 0); +type mem_array is array (0 to MEM_SIZE-1) of std_logic_vector (DWIDTH-1 downto 0); +shared variable ram : mem_array; + +attribute syn_ramstyle : string; +attribute syn_ramstyle of ram : variable is "block_ram"; +attribute ram_style : string; +attribute ram_style of ram : variable is MEM_TYPE; + +begin + + +memory_access_guard_0: process (addr0) +begin + addr0_tmp <= addr0; +--synthesis translate_off + if (CONV_INTEGER(addr0) > mem_size-1) then + addr0_tmp <= (others => '0'); + else + addr0_tmp <= addr0; + end if; +--synthesis translate_on +end process; + +p_memory_access_0: process (clk) +begin + if (clk'event and clk = '1') then + if (ce0 = '1') then + q0 <= ram(CONV_INTEGER(addr0_tmp)); + end if; + end if; +end process; + + +p_memory_access_1: process (clk) +begin + if (clk'event and clk = '1') then + if (ce1 = '1') then + if (we1 = '1') then + ram(CONV_INTEGER(addr1)) := d1; + end if; + end if; + end if; +end process; + + +end rtl; + +Library IEEE; +use IEEE.std_logic_1164.all; + +entity mmult_out_loc is + generic ( + DataWidth : INTEGER := 32; + AddressRange : INTEGER := 4096; + AddressWidth : INTEGER := 12); + port ( + reset : IN STD_LOGIC; + clk : IN STD_LOGIC; + address0 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0); + address1 : IN STD_LOGIC_VECTOR(AddressWidth - 1 DOWNTO 0); + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR(DataWidth - 1 DOWNTO 0)); +end entity; + +architecture arch of mmult_out_loc is + component mmult_out_loc_ram is + port ( + clk : IN STD_LOGIC; + addr0 : IN STD_LOGIC_VECTOR; + ce0 : IN STD_LOGIC; + q0 : OUT STD_LOGIC_VECTOR; + addr1 : IN STD_LOGIC_VECTOR; + ce1 : IN STD_LOGIC; + we1 : IN STD_LOGIC; + d1 : IN STD_LOGIC_VECTOR); + end component; + + + +begin + mmult_out_loc_ram_U : component mmult_out_loc_ram + port map ( + clk => clk, + addr0 => address0, + ce0 => ce0, + q0 => q0, + addr1 => address1, + ce1 => ce1, + we1 => we1, + d1 => d1); + +end architecture; + + diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_mem_m_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_mem_m_axi.vhd new file mode 100755 index 0000000..f2bd717 --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_out_mem_m_axi.vhd @@ -0,0 +1,3306 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi is + generic ( + CONSERVATIVE : INTEGER := 0; + NUM_READ_OUTSTANDING : INTEGER := 2; + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 2#000#; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + -- system signal + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + -- write address channel + AWID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out STD_LOGIC_VECTOR(7 downto 0); + AWSIZE : out STD_LOGIC_VECTOR(2 downto 0); + AWBURST : out STD_LOGIC_VECTOR(1 downto 0); + AWLOCK : out STD_LOGIC_VECTOR(1 downto 0); + AWCACHE : out STD_LOGIC_VECTOR(3 downto 0); + AWPROT : out STD_LOGIC_VECTOR(2 downto 0); + AWQOS : out STD_LOGIC_VECTOR(3 downto 0); + AWREGION : out STD_LOGIC_VECTOR(3 downto 0); + AWUSER : out STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + -- write data channel + WID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + -- write response channel + BID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in STD_LOGIC_VECTOR(1 downto 0); + BUSER : in STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + -- read address channel + ARID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out STD_LOGIC_VECTOR(7 downto 0); + ARSIZE : out STD_LOGIC_VECTOR(2 downto 0); + ARBURST : out STD_LOGIC_VECTOR(1 downto 0); + ARLOCK : out STD_LOGIC_VECTOR(1 downto 0); + ARCACHE : out STD_LOGIC_VECTOR(3 downto 0); + ARPROT : out STD_LOGIC_VECTOR(2 downto 0); + ARQOS : out STD_LOGIC_VECTOR(3 downto 0); + ARREGION : out STD_LOGIC_VECTOR(3 downto 0); + ARUSER : out STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + -- read data channel + RID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in STD_LOGIC_VECTOR(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + + -- internal bus ports + -- write address channel + I_AWID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_AWADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_AWLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_AWSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_AWBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_AWLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_AWCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_AWPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_AWQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_AWREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_AWUSER : in STD_LOGIC_VECTOR(C_M_AXI_AWUSER_WIDTH-1 downto 0); + I_AWVALID : in STD_LOGIC; + I_AWREADY : out STD_LOGIC; + -- write data channel + I_WID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_WDATA : in STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_WSTRB : in STD_LOGIC_VECTOR(USER_DW/8-1 downto 0); + I_WLAST : in STD_LOGIC; + I_WUSER : in STD_LOGIC_VECTOR(C_M_AXI_WUSER_WIDTH-1 downto 0); + I_WVALID : in STD_LOGIC; + I_WREADY : out STD_LOGIC; + -- write response channel + I_BID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_BRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_BUSER : out STD_LOGIC_VECTOR(C_M_AXI_BUSER_WIDTH-1 downto 0); + I_BVALID : out STD_LOGIC; + I_BREADY : in STD_LOGIC; + -- read address channel + I_ARID : in STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_ARADDR : in STD_LOGIC_VECTOR(USER_AW-1 downto 0); + I_ARLEN : in STD_LOGIC_VECTOR(31 downto 0); + I_ARSIZE : in STD_LOGIC_VECTOR(2 downto 0); + I_ARBURST : in STD_LOGIC_VECTOR(1 downto 0); + I_ARLOCK : in STD_LOGIC_VECTOR(1 downto 0); + I_ARCACHE : in STD_LOGIC_VECTOR(3 downto 0); + I_ARPROT : in STD_LOGIC_VECTOR(2 downto 0); + I_ARQOS : in STD_LOGIC_VECTOR(3 downto 0); + I_ARREGION : in STD_LOGIC_VECTOR(3 downto 0); + I_ARUSER : in STD_LOGIC_VECTOR(C_M_AXI_ARUSER_WIDTH-1 downto 0); + I_ARVALID : in STD_LOGIC; + I_ARREADY : out STD_LOGIC; + -- read data channel + I_RID : out STD_LOGIC_VECTOR(C_M_AXI_ID_WIDTH-1 downto 0); + I_RDATA : out STD_LOGIC_VECTOR(USER_DW-1 downto 0); + I_RRESP : out STD_LOGIC_VECTOR(1 downto 0); + I_RLAST : out STD_LOGIC; + I_RUSER : out STD_LOGIC_VECTOR(C_M_AXI_RUSER_WIDTH-1 downto 0); + I_RVALID : out STD_LOGIC; + I_RREADY : in STD_LOGIC); +end entity mmult_out_mem_m_axi; + +architecture behave of mmult_out_mem_m_axi is + component mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 1; + MAX_WRITE_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_write; + + component mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 1; + MAX_READ_BURST_LENGTH : INTEGER := 1; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + end component mmult_out_mem_m_axi_read; + + component mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := true; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR; + in_len : in STD_LOGIC_VECTOR; + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR; + out_len : out STD_LOGIC_VECTOR; + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR; + in_strb : in STD_LOGIC_VECTOR; + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR; + out_strb : out STD_LOGIC_VECTOR; + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_throttl; + + signal AWADDR_Dummy : STD_LOGIC_VECTOR(C_M_AXI_ADDR_WIDTH-1 downto 0); + signal AWLEN_Dummy : STD_LOGIC_VECTOR(7 downto 0); + signal AWVALID_Dummy : STD_LOGIC; + signal AWREADY_Dummy : STD_LOGIC; + signal WDATA_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH-1 downto 0); + signal WSTRB_Dummy : STD_LOGIC_VECTOR(C_M_AXI_DATA_WIDTH/8-1 downto 0); + signal WLAST_Dummy : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WREADY_Dummy : STD_LOGIC; + +begin + + wreq_throttl : mmult_out_mem_m_axi_throttl + generic map ( + USED_FIX => false, + ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + DATA_WIDTH => C_M_AXI_DATA_WIDTH, + DEPTH => MAX_WRITE_BURST_LENGTH, + USER_MAXREQS => NUM_WRITE_OUTSTANDING, + CONSERVATIVE => CONSERVATIVE, + AVERAGE_MODE => false) + port map ( + clk => ACLK, + reset => ARESET, + ce => ACLK_EN, + in_addr => AWADDR_Dummy, + in_len => AWLEN_Dummy, + in_req_valid => AWVALID_Dummy, + out_req_ready => AWREADY_Dummy, + out_addr => AWADDR, + out_len => AWLEN, + out_req_valid => AWVALID, + in_req_ready => AWREADY, + in_data => WDATA_Dummy, + in_strb => WSTRB_Dummy, + in_last => WLAST_Dummy, + in_data_valid => WVALID_Dummy, + out_data_ready => WREADY_Dummy, + out_data => WDATA, + out_strb => WSTRB, + out_last => WLAST, + out_data_valid => WVALID, + in_data_ready => WREADY); + + I_BID <= (others => '0'); + I_BUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_BUSER'length)); + I_RID <= (others => '0'); + I_RLAST <= '0'; + I_RUSER <= STD_LOGIC_VECTOR(TO_UNSIGNED(C_USER_VALUE, I_RUSER'length)); + + -- Instantiation + bus_write : mmult_out_mem_m_axi_write + generic map ( + NUM_WRITE_OUTSTANDING => NUM_WRITE_OUTSTANDING, + MAX_WRITE_BURST_LENGTH => MAX_WRITE_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_AWUSER_WIDTH => C_M_AXI_AWUSER_WIDTH, + C_M_AXI_WUSER_WIDTH => C_M_AXI_WUSER_WIDTH, + C_M_AXI_BUSER_WIDTH => C_M_AXI_BUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(AWID) => AWID, + STD_LOGIC_VECTOR(AWADDR) => AWADDR_Dummy, + STD_LOGIC_VECTOR(AWLEN) => AWLEN_Dummy, + STD_LOGIC_VECTOR(AWSIZE) => AWSIZE, + STD_LOGIC_VECTOR(AWBURST) => AWBURST, + STD_LOGIC_VECTOR(AWLOCK) => AWLOCK, + STD_LOGIC_VECTOR(AWCACHE) => AWCACHE, + STD_LOGIC_VECTOR(AWPROT) => AWPROT, + STD_LOGIC_VECTOR(AWQOS) => AWQOS, + STD_LOGIC_VECTOR(AWREGION) => AWREGION, + STD_LOGIC_VECTOR(AWUSER) => AWUSER, + AWVALID => AWVALID_Dummy, + AWREADY => AWREADY_Dummy, + STD_LOGIC_VECTOR(WID) => WID, + STD_LOGIC_VECTOR(WDATA) => WDATA_Dummy, + STD_LOGIC_VECTOR(WSTRB) => WSTRB_Dummy, + WLAST => WLAST_Dummy, + STD_LOGIC_VECTOR(WUSER) => WUSER, + WVALID => WVALID_Dummy, + WREADY => WREADY_Dummy, + BID => UNSIGNED(BID), + BRESP => UNSIGNED(BRESP), + BUSER => UNSIGNED(BUSER), + BVALID => BVALID, + BREADY => BREADY, + wreq_valid => I_AWVALID, + wreq_ack => I_AWREADY, + wreq_addr => UNSIGNED(I_AWADDR), + wreq_length => UNSIGNED(I_AWLEN), + wreq_cache => UNSIGNED(I_AWCACHE), + wreq_prot => UNSIGNED(I_AWPROT), + wreq_qos => UNSIGNED(I_AWQOS), + wreq_region => UNSIGNED(I_AWREGION), + wreq_user => UNSIGNED(I_AWUSER), + wdata_valid => I_WVALID, + wdata_ack => I_WREADY, + wdata_strb => UNSIGNED(I_WSTRB), + wdata_user => UNSIGNED(I_WUSER), + wdata_data => UNSIGNED(I_WDATA), + wrsp_valid => I_BVALID, + wrsp_ack => I_BREADY, + STD_LOGIC_VECTOR(wrsp) => I_BRESP); + + bus_read : mmult_out_mem_m_axi_read + generic map ( + NUM_READ_OUTSTANDING => NUM_READ_OUTSTANDING, + MAX_READ_BURST_LENGTH => MAX_READ_BURST_LENGTH, + C_M_AXI_ID_WIDTH => C_M_AXI_ID_WIDTH, + C_M_AXI_ADDR_WIDTH => C_M_AXI_ADDR_WIDTH, + C_TARGET_ADDR => C_TARGET_ADDR, + C_M_AXI_DATA_WIDTH => C_M_AXI_DATA_WIDTH, + C_M_AXI_ARUSER_WIDTH => C_M_AXI_ARUSER_WIDTH, + C_M_AXI_RUSER_WIDTH => C_M_AXI_RUSER_WIDTH, + C_USER_VALUE => C_USER_VALUE, + C_PROT_VALUE => C_PROT_VALUE, + C_CACHE_VALUE => C_CACHE_VALUE, + USER_DW => USER_DW, + USER_AW => USER_AW, + USER_MAXREQS => USER_MAXREQS) + port map ( + ACLK => ACLK, + ARESET => ARESET, + ACLK_EN => ACLK_EN, + STD_LOGIC_VECTOR(ARID) => ARID, + STD_LOGIC_VECTOR(ARADDR) => ARADDR, + STD_LOGIC_VECTOR(ARLEN) => ARLEN, + STD_LOGIC_VECTOR(ARSIZE) => ARSIZE, + STD_LOGIC_VECTOR(ARBURST) => ARBURST, + STD_LOGIC_VECTOR(ARLOCK) => ARLOCK, + STD_LOGIC_VECTOR(ARCACHE) => ARCACHE, + STD_LOGIC_VECTOR(ARPROT) => ARPROT, + STD_LOGIC_VECTOR(ARQOS) => ARQOS, + STD_LOGIC_VECTOR(ARREGION) => ARREGION, + STD_LOGIC_VECTOR(ARUSER) => ARUSER, + ARVALID => ARVALID, + ARREADY => ARREADY, + RID => UNSIGNED(RID), + RDATA => UNSIGNED(RDATA), + RRESP => UNSIGNED(RRESP), + RLAST => RLAST, + RUSER => UNSIGNED(RUSER), + RVALID => RVALID, + RREADY => RREADY, + rreq_valid => I_ARVALID, + rreq_ack => I_ARREADY, + rreq_addr => UNSIGNED(I_ARADDR), + rreq_length => UNSIGNED(I_ARLEN), + rreq_cache => UNSIGNED(I_ARCACHE), + rreq_prot => UNSIGNED(I_ARPROT), + rreq_qos => UNSIGNED(I_ARQOS), + rreq_region => UNSIGNED(I_ARREGION), + rreq_user => UNSIGNED(I_ARUSER), + rdata_valid => I_RVALID, + rdata_ack => I_RREADY, + STD_LOGIC_VECTOR(rdata_data)=> I_RDATA, + STD_LOGIC_VECTOR(rrsp) => I_RRESP); + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + -- system signals + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + -- slave side + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + -- master side + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); +end entity mmult_out_mem_m_axi_reg_slice; + +architecture behave of mmult_out_mem_m_axi_reg_slice is + constant ZERO : STD_LOGIC_VECTOR(1 downto 0) := "10"; + constant ONE : STD_LOGIC_VECTOR(1 downto 0) := "11"; + constant TWO : STD_LOGIC_VECTOR(1 downto 0) := "01"; + signal data_p1 : STD_LOGIC_VECTOR(N-1 downto 0); + signal data_p2 : STD_LOGIC_VECTOR(N-1 downto 0); + signal load_p1 : STD_LOGIC; + signal load_p2 : STD_LOGIC; + signal load_p1_from_p2 : STD_LOGIC; + signal s_ready_t : STD_LOGIC; + signal state : STD_LOGIC_VECTOR(1 downto 0); + signal next_st : STD_LOGIC_VECTOR(1 downto 0); +begin + s_ready <= s_ready_t; + m_data <= data_p1; + m_valid <= state(0); + + load_p1 <= '1' when (state = ZERO and s_valid = '1') or + (state = ONE and s_valid = '1' and m_ready = '1') or + (state = TWO and m_ready = '1') + else '0'; + + load_p2 <= s_valid and s_ready_t; + load_p1_from_p2 <= '1' when state = TWO else '0'; + + data_p1_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p1 = '1') then + if (load_p1_from_p2 = '1') then + data_p1 <= data_p2; + else + data_p1 <= s_data; + end if; + end if; + end if; + end process; + + data_p2_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (load_p2 = '1') then + data_p2 <= s_data; + end if; + end if; + end process; + + s_ready_t_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + s_ready_t <= '0'; + elsif (state = ZERO) then + s_ready_t <= '1'; + elsif (state = ONE and next_st = TWO) then + s_ready_t <= '0'; + elsif (state = TWO and next_st = ONE) then + s_ready_t <= '1'; + end if; + end if; + end process; + + state_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if (reset = '1') then + state <= ZERO; + else + state <= next_st; + end if; + end if; + end process; + + next_st_proc : process (state, s_valid, s_ready_t, m_ready) + begin + case state is + when ZERO => + if (s_valid = '1' and s_ready_t = '1') then + next_st <= ONE; + else + next_st <= ZERO; + end if; + when ONE => + if (s_valid = '0' and m_ready = '1') then + next_st <= ZERO; + elsif (s_valid = '1' and m_ready = '0') then + next_st <= TWO; + else + next_st <= ONE; + end if; + when TWO => + if (m_ready = '1') then + next_st <= ONE; + else + next_st <= TWO; + end if; + when others => + next_st <= ZERO; + end case; + end process; + +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); +end entity mmult_out_mem_m_axi_fifo; + +architecture behave of mmult_out_mem_m_axi_fifo is + signal push, pop, data_vld, full_cond : STD_LOGIC; + signal empty_n_tmp, full_n_tmp : STD_LOGIC; + signal pout : INTEGER range 0 to DEPTH -1; + subtype word is UNSIGNED(DATA_BITS-1 downto 0); + type regFileType is array(0 to DEPTH-1) of word; + signal mem : regFileType; +begin + full_n <= full_n_tmp; + empty_n <= empty_n_tmp; + + depth_nlt2 : if DEPTH >= 2 generate + full_cond <= '1' when push = '1' and pop = '0' and pout = DEPTH - 2 and data_vld = '1' else '0'; + end generate; + + depth_lt2 : if DEPTH < 2 generate + full_cond <= '1' when push = '1' and pop = '0' else '0'; + end generate; + + push <= full_n_tmp and wrreq; + pop <= data_vld and (not (empty_n_tmp and (not rdreq))); + + q_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + q <= (others => '0'); + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + q <= mem(pout); + end if; + end if; + end if; + end process q_proc; + + empty_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + empty_n_tmp <= '0'; + elsif sclk_en = '1' then + if not (empty_n_tmp = '1' and rdreq = '0') then + empty_n_tmp <= data_vld; + end if; + end if; + end if; + end process empty_n_proc; + + data_vld_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + data_vld <= '0'; + elsif sclk_en = '1' then + if push = '1' then + data_vld <= '1'; + elsif push = '0' and pop = '1' and pout = 0 then + data_vld <= '0'; + end if; + end if; + end if; + end process data_vld_proc; + + full_n_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + full_n_tmp <= '1'; + elsif sclk_en = '1' then + if pop = '1' then + full_n_tmp <= '1'; + elsif full_cond = '1' then + full_n_tmp <= '0'; + end if; + end if; + end if; + end process full_n_proc; + + pout_proc : process (sclk) + begin + if (sclk'event and sclk = '1') then + if reset = '1' then + pout <= 0; + elsif sclk_en = '1' then + if push = '1' and pop = '0' and data_vld = '1' then + pout <= TO_INTEGER(TO_UNSIGNED(pout + 1, DEPTH_BITS)); + elsif push = '0' and pop = '1' and pout /= 0 then + pout <= pout - 1; + end if; + end if; + end if; + end process pout_proc; + + process (sclk) + begin + if (sclk'event and sclk = '1') and sclk_en = '1' then + if push = '1' then + for i in 0 to DEPTH - 2 loop + mem(i+1) <= mem(i); + end loop; + mem(0) <= data; + end if; + end if; + end process; +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0) + ); +end entity; + +architecture arch of mmult_out_mem_m_axi_buffer is + type memtype is array (0 to DEPTH - 1) of std_logic_vector(DATA_WIDTH - 1 downto 0); + signal mem : memtype; + signal q_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal waddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal raddr : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal wnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal rnext : unsigned(ADDR_WIDTH - 1 downto 0); + signal push : std_logic; + signal pop : std_logic; + signal usedw : unsigned(ADDR_WIDTH - 1 downto 0) := (others => '0'); + signal full_n : std_logic := '1'; + signal empty_n : std_logic := '0'; + signal q_tmp : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal show_ahead : std_logic := '0'; + signal dout_buf : std_logic_vector(DATA_WIDTH - 1 downto 0) := (others => '0'); + signal dout_valid : std_logic := '0'; + attribute ram_style: string; + attribute ram_style of mem: signal is MEM_STYLE; +begin + if_full_n <= full_n; + if_empty_n <= dout_valid; + if_dout <= dout_buf; + push <= full_n and if_write_ce and if_write; + pop <= empty_n and if_read_ce and (not dout_valid or if_read); + wnext <= waddr when push = '0' else + (others => '0') when waddr = DEPTH - 1 else + waddr + 1; + rnext <= raddr when pop = '0' else + (others => '0') when raddr = DEPTH - 1 else + raddr + 1; + + -- waddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + waddr <= (others => '0'); + elsif sclk_en = '1' then + waddr <= wnext; + end if; + end if; + end process; + + -- raddr + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + raddr <= (others => '0'); + elsif sclk_en = '1' then + raddr <= rnext; + end if; + end if; + end process; + + -- usedw + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + usedw <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + usedw <= usedw + 1; + elsif push = '0' and pop = '1' then + usedw <= usedw - 1; + end if; + end if; + end if; + end process; + + -- full_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + full_n <= '1'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + if usedw = DEPTH - 1 then + full_n <= '0'; + else + full_n <= '1'; + end if; + elsif push = '0' and pop = '1' then + full_n <= '1'; + end if; + end if; + end if; + end process; + + -- empty_n + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + empty_n <= '0'; + elsif sclk_en = '1' then + if push = '1' and pop = '0' then + empty_n <= '1'; + elsif push = '0' and pop = '1' then + if usedw = 1 then + empty_n <= '0'; + else + empty_n <= '1'; + end if; + end if; + end if; + end if; + end process; + + -- mem + process (clk) begin + if clk'event and clk = '1' then + if push = '1' then + mem(to_integer(waddr)) <= if_din; + end if; + end if; + end process; + + -- q_buf + process (clk) begin + if clk'event and clk = '1' then + q_buf <= mem(to_integer(rnext)); + end if; + end process; + + -- q_tmp + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + q_tmp <= (others => '0'); + elsif sclk_en = '1' then + if push = '1' then + q_tmp <= if_din; + end if; + end if; + end if; + end process; + + -- show_ahead + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + show_ahead <= '0'; + elsif sclk_en = '1' then + if push = '1' and (usedw = 0 or (usedw = 1 and pop = '1')) then + show_ahead <= '1'; + else + show_ahead <= '0'; + end if; + end if; + end if; + end process; + + -- dout_buf + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_buf <= (others => '0'); + elsif sclk_en = '1' then + if pop = '1' then + if show_ahead = '1' then + dout_buf <= q_tmp; + else + dout_buf <= q_buf; + end if; + end if; + end if; + end if; + end process; + + -- dout_valid + process (clk) begin + if clk'event and clk = '1' then + if reset = '1' then + dout_valid <= '0'; + elsif sclk_en = '1' then + if pop = '1' then + dout_valid <= '1'; + elsif if_read_ce = '1' and if_read = '1' then + dout_valid <= '0'; + end if; + end if; + end if; + end process; +end architecture; +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); +end entity mmult_out_mem_m_axi_decoder; + +architecture behav of mmult_out_mem_m_axi_decoder is +begin + process (din) + begin + dout <= (others => '0'); + if (not(din = 0)) then + dout(TO_INTEGER(din) - 1 downto 0) <= (others => '1'); + end if; + end process; +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_throttl is + generic ( + USED_FIX : BOOLEAN := false; + FIX_VALUE : INTEGER := 4; + ADDR_WIDTH : INTEGER := 32; + DATA_WIDTH : INTEGER := 32; + DEPTH : INTEGER := 16; + USER_MAXREQS : INTEGER := 16; + CONSERVATIVE : INTEGER := 0; + AVERAGE_MODE : BOOLEAN := false); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + ce : in STD_LOGIC; + in_addr : in STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + in_len : in STD_LOGIC_VECTOR(7 downto 0); + in_req_valid : in STD_LOGIC; + out_req_ready : out STD_LOGIC; + out_addr : out STD_LOGIC_VECTOR(ADDR_WIDTH-1 downto 0); + out_len : out STD_LOGIC_VECTOR(7 downto 0); + out_req_valid : out STD_LOGIC; + in_req_ready : in STD_LOGIC; + in_data : in STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + in_strb : in STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + in_last : in STD_LOGIC; + in_data_valid : in STD_LOGIC; + out_data_ready : out STD_LOGIC; + out_data : out STD_LOGIC_VECTOR(DATA_WIDTH-1 downto 0); + out_strb : out STD_LOGIC_VECTOR(DATA_WIDTH/8-1 downto 0); + out_last : out STD_LOGIC; + out_data_valid : out STD_LOGIC; + in_data_ready : in STD_LOGIC); + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + + function gt_4 (x : INTEGER) return INTEGER is + variable n : INTEGER; + begin + n := 4; + if x > 4 then + n := x; + end if; + return n; + end function gt_4; + +end entity mmult_out_mem_m_axi_throttl; + +architecture behav of mmult_out_mem_m_axi_throttl is +begin + + conservative_gen : if (CONSERVATIVE = 0) generate + type switch_t is array(boolean) of integer; + constant switch : switch_t := (true => FIX_VALUE-1, false => 0); + constant threshold : INTEGER := switch(USED_FIX); + signal req_en : STD_LOGIC; + signal handshake : STD_LOGIC; + signal load_init : UNSIGNED(7 downto 0); + signal throttl_cnt : UNSIGNED(7 downto 0); + begin + -- AW Channel + out_addr <= in_addr; + out_len <= in_len; + + -- W Channel + out_data <= in_data; + out_strb <= in_strb; + out_last <= in_last; + out_data_valid <= in_data_valid; + out_data_ready <= in_data_ready; + + fix_gen : if USED_FIX generate + load_init <= TO_UNSIGNED(FIX_VALUE-1, 8); + handshake <= '1'; + end generate; + + average_gen : if not USED_FIX and AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= '1'; + end generate; + + no_fix_gen : if not USED_FIX and not AVERAGE_MODE generate + load_init <= UNSIGNED(in_len); + handshake <= in_data_valid and in_data_ready; + end generate; + + out_req_valid <= in_req_valid and req_en; + out_req_ready <= in_req_ready and req_en; + req_en <= '1' when throttl_cnt = 0 else + '0'; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + throttl_cnt <= (others => '0'); + elsif ce = '1' then + if UNSIGNED(in_len) > threshold and throttl_cnt = 0 and in_req_valid = '1' and in_req_ready = '1' then + throttl_cnt <= load_init; --load + elsif throttl_cnt > 0 and handshake = '1' then + throttl_cnt <= throttl_cnt - 1; + end if; + end if; + end if; + end process; + end generate; + + aggressive_gen : if (CONSERVATIVE /= 0) generate + constant CNT_WIDTH : INTEGER := log2(gt_4(DEPTH)); + signal data_in : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal data_out : STD_LOGIC_VECTOR(DATA_WIDTH + DATA_WIDTH/8 downto 0); + signal req_in : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_out : STD_LOGIC_VECTOR(ADDR_WIDTH + 7 downto 0); + signal req_en : STD_LOGIC; + signal data_en : STD_LOGIC; + signal fifo_valid : STD_LOGIC; + signal read_fifo : STD_LOGIC; + signal req_fifo_valid : STD_LOGIC; + signal read_req : STD_LOGIC; + signal data_push : STD_LOGIC; + signal data_pop : STD_LOGIC; + signal flying_req : STD_LOGIC; + signal last_cnt : UNSIGNED(CNT_WIDTH-1 downto 0); + + signal out_data_ready_tmp : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + begin + --AW Channel + req_in <= in_len & in_addr; + out_addr <= req_out(ADDR_WIDTH-1 downto 0); + out_len <= req_out(ADDR_WIDTH+7 downto ADDR_WIDTH); + out_req_valid <= req_fifo_valid and req_en; + + req_en <= '1' when ((flying_req = '0' and data_en = '1') or (flying_req = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1') and (last_cnt(CNT_WIDTH-1 downto 1) /= "0"))) else + '0'; + read_req <= in_req_ready and req_en; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + flying_req <= '0'; + elsif ce = '1' then + if (req_fifo_valid and req_en) = '1' and in_req_ready = '1' then + flying_req <= '1'; + elsif data_out(DATA_WIDTH+DATA_WIDTH/8) = '1' and data_pop = '1' then + flying_req <= '0'; + end if; + end if; + end if; + end process; + + req_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => ADDR_WIDTH + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => req_fifo_valid, + full_n => out_req_ready, + rdreq => read_req, + wrreq => in_req_valid, + STD_LOGIC_VECTOR(q) => req_out, + data => UNSIGNED(req_in)); + + --W Channel + data_in <= in_last & in_strb & in_data; + out_data <= data_out(DATA_WIDTH-1 downto 0); + out_strb <= data_out(DATA_WIDTH+DATA_WIDTH/8-1 downto DATA_WIDTH); + out_last <= data_out(DATA_WIDTH+DATA_WIDTH/8); + out_data_valid <= fifo_valid and data_en and flying_req; + out_data_ready <= out_data_ready_tmp; + + data_en <= '1' when last_cnt /= "0" else '0'; + data_push <= in_data_valid and out_data_ready_tmp; + data_pop <= fifo_valid and read_fifo; + read_fifo <= in_data_ready and data_en and flying_req; + + process (clk) + begin + if (clk'event and clk = '1') then + if reset = '1' then + last_cnt <= (others => '0'); + elsif ce = '1' then + if (in_last and data_push) = '1' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '0' then + last_cnt <= last_cnt + 1; + elsif (in_last and data_push) = '0' and (data_out(DATA_WIDTH+DATA_WIDTH/8) and data_pop) = '1' then + last_cnt <= last_cnt - 1; + end if; + end if; + end if; + end process; + + data_fifo : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => DATA_WIDTH + DATA_WIDTH/8 + 1, + DEPTH => DEPTH, + DEPTH_BITS => log2(DEPTH)) + port map ( + sclk => clk, + reset => reset, + sclk_en => ce, + empty_n => fifo_valid, + full_n => out_data_ready_tmp, + rdreq => read_fifo, + wrreq => in_data_valid, + STD_LOGIC_VECTOR(q) => data_out, + data => UNSIGNED(data_in)); + + end generate; + +end architecture behav; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_read is + generic ( + NUM_READ_OUTSTANDING : INTEGER := 2; + MAX_READ_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_ARUSER_WIDTH : INTEGER := 1; + C_M_AXI_RUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + ARID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + ARADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + ARLEN : out UNSIGNED(7 downto 0); + ARSIZE : out UNSIGNED(2 downto 0); + ARBURST : out UNSIGNED(1 downto 0); + ARLOCK : out UNSIGNED(1 downto 0); + ARCACHE : out UNSIGNED(3 downto 0); + ARPROT : out UNSIGNED(2 downto 0); + ARQOS : out UNSIGNED(3 downto 0); + ARREGION : out UNSIGNED(3 downto 0); + ARUSER : out UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + ARVALID : out STD_LOGIC; + ARREADY : in STD_LOGIC; + RID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + RDATA : in UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + RRESP : in UNSIGNED(1 downto 0); + RLAST : in STD_LOGIC; + RUSER : in UNSIGNED(C_M_AXI_RUSER_WIDTH-1 downto 0); + RVALID : in STD_LOGIC; + RREADY : out STD_LOGIC; + rreq_valid : in STD_LOGIC; + rreq_ack : out STD_LOGIC; + rreq_addr : in UNSIGNED(USER_AW-1 downto 0); + rreq_length : in UNSIGNED(31 downto 0); + rreq_cache : in UNSIGNED(3 downto 0); + rreq_prot : in UNSIGNED(2 downto 0); + rreq_qos : in UNSIGNED(3 downto 0); + rreq_region : in UNSIGNED(3 downto 0); + rreq_user : in UNSIGNED(C_M_AXI_ARUSER_WIDTH-1 downto 0); + rdata_valid : out STD_LOGIC; + rdata_ack : in STD_LOGIC; + rdata_data : out UNSIGNED(USER_DW-1 downto 0); + rrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_read; + +architecture behave of mmult_out_mem_m_axi_read is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant NUM_READ_WIDTH : INTEGER := log2(MAX_READ_BURST_LENGTH); + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + --AR channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_rreq_valid : STD_LOGIC; + signal rs2f_rreq_ack : STD_LOGIC; + signal fifo_rreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal arlen_tmp : UNSIGNED(7 downto 0); + signal araddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal ar2r_ardata : UNSIGNED(1 downto 0); + signal fifo_rctl_r : STD_LOGIC; + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_rreq_valid : STD_LOGIC; + signal fifo_rreq_valid_buf : STD_LOGIC; + signal fifo_rreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal ARVALID_Dummy : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal next_rreq : BOOLEAN; + signal ready_for_rreq : BOOLEAN; + signal rreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --R channel + signal fifo_rresp_rdata : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal data_pack : UNSIGNED(BUS_DATA_WIDTH + 2 downto 0); + signal tmp_data : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal rs_rrsp_rdata : UNSIGNED(USER_DW + 1 downto 0); + signal rdata_data_pack : UNSIGNED(USER_DW + 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal ar2r_rdata : UNSIGNED(1 downto 0); + signal tmp_resp : UNSIGNED(1 downto 0); + signal resp_buf : UNSIGNED(1 downto 0); + signal tmp_last : STD_LOGIC; + signal tmp_last_2 : STD_LOGIC; + signal need_rlast : STD_LOGIC; + signal fifo_rctl_ready : STD_LOGIC; + signal beat_valid : STD_LOGIC; + signal next_beat : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal rdata_ack_t : STD_LOGIC; + signal rdata_valid_t : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AR channel begin ----------------------------------- + -- Instantiation + rs_rreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW+ 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rreq_data), + s_valid => rreq_valid, + s_ready => rreq_ack, + UNSIGNED(m_data)=> rs2f_rreq_data, + m_valid => rs2f_rreq_valid, + m_ready => rs2f_rreq_ack); + + fifo_rreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_rreq_ack, + wrreq => rs2f_rreq_valid, + data => rs2f_rreq_data, + empty_n => fifo_rreq_valid, + rdreq => fifo_rreq_read, + q => fifo_rreq_data); + + rreq_data <= (rreq_length & rreq_addr); + tmp_addr <= fifo_rreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_rreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_rreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_rreq_valid = '1' else '0'; + + next_rreq <= invalid_len_event = '0' and (fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq; + ready_for_rreq <= not(rreq_handling and not(last_sect and next_sect)); + fifo_rreq_read <= '1' when invalid_len_event = '1' or next_rreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_rreq_valid = '1' and ready_for_rreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_rreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_rreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + fifo_rreq_valid_buf <= fifo_rreq_valid; + end if; + end if; + end if; + end process fifo_rreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if ((fifo_rreq_valid = '1' or fifo_rreq_valid_buf = '1') and ready_for_rreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + rreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_rreq_valid_buf = '1' and not rreq_handling and invalid_len_event = '0' then + rreq_handling <= true; + elsif (fifo_rreq_valid_buf = '0' or invalid_len_event = '1') and last_sect and next_sect then + rreq_handling <= false; + end if; + end if; + end if; + end process rreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_rreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_rreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= rreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + ARID <= (others => '0'); + ARSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, ARSIZE'length); + ARBURST <= "01"; + ARLOCK <= "00"; + ARCACHE <= TO_UNSIGNED(C_CACHE_VALUE, ARCACHE'length); + ARPROT <= TO_UNSIGNED(C_PROT_VALUE, ARPROT'length); + ARUSER <= TO_UNSIGNED(C_USER_VALUE, ARUSER'length); + ARQOS <= rreq_qos; + ARREGION <= rreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_READ_BURST_LENGTH) generate + begin + ARADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + ARLEN <= RESIZE(sect_len_buf, 8); + ARVALID <= ARVALID_Dummy; + + ready_for_sect <= '1' when not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1' else '0'; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + ARVALID_Dummy <= '1'; + elsif not next_sect and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_sect else '0'; + ar2r_ardata <= "10" when last_sect else "00"; + + fifo_burst_w <= '1' when next_sect else '0'; + araddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + arlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_READ_BURST_LENGTH) generate + signal araddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal arlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_READ_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + ARADDR <= araddr_buf; + ARLEN <= arlen_buf; + ARVALID <= ARVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_READ_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (ARVALID_Dummy = '1' and ARREADY = '0') and fifo_burst_ready = '1' and fifo_rctl_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if rreq_handling and not sect_handling then + sect_handling <= true; + elsif not rreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + araddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + araddr_buf + SHIFT_LEFT(RESIZE(arlen_buf, 32) + 1, BUS_ADDR_ALIGN); + araddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + araddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + araddr_buf <= araddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process araddr_buf_proc; + + arlen_tmp <= RESIZE(sect_len_buf(NUM_READ_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_READ_BURST_LENGTH-1, 8); + arlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + arlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + arlen_buf <= arlen_tmp; + end if; + end if; + end if; + end process arlen_buf_proc; + + arvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + ARVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_loop then + ARVALID_Dummy <= '1'; + elsif not next_loop and ARREADY = '1' then + ARVALID_Dummy <= '0'; + end if; + end if; + end if; + end process arvalid_proc; + + fifo_rctl_r <= '1' when next_loop else '0'; + ar2r_ardata <= "10" when last_loop else "00"; + + fifo_burst_w <= '1' when next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AR channel end ------------------------------------- + + --------------------------- R channel begin ------------------------------------ + -- Instantiation + fifo_rdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => BUS_DATA_WIDTH + 3, + DEPTH => NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_READ_OUTSTANDING * MAX_READ_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => RREADY, + if_write_ce => '1', + if_write => RVALID, + if_din => STD_LOGIC_VECTOR(fifo_rresp_rdata), + if_empty_n => beat_valid, + if_read_ce => '1', + if_read => next_beat, + UNSIGNED(if_dout) => data_pack); + + rs_rdata : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_DW + 2) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(rs_rrsp_rdata), + s_valid => rdata_valid_t, + s_ready => rdata_ack_t, + UNSIGNED(m_data) => rdata_data_pack, + m_valid => rdata_valid, + m_ready => rdata_ack); + + fifo_rctl : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_READ_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_READ_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_rlast, + full_n => fifo_rctl_ready, + rdreq => tmp_last_2, + wrreq => fifo_rctl_r, + q => ar2r_rdata, + data => ar2r_ardata); + + fifo_rresp_rdata <= (RLAST & RRESP & RDATA); + tmp_data <= data_pack(BUS_DATA_WIDTH - 1 downto 0); + tmp_resp <= data_pack(BUS_DATA_WIDTH + 1 downto BUS_DATA_WIDTH); + tmp_last <= data_pack(BUS_DATA_WIDTH + 2) and beat_valid; + tmp_last_2 <= tmp_last and next_beat; + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal ready_for_data : BOOLEAN; + begin + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + fifo_burst_ready <= '1'; + next_beat <= '1' when beat_valid = '1' and ready_for_data else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_beat = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if next_beat = '1' then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_beat = '1' then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_equal_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal tmp_burst_info : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal burst_pack : UNSIGNED(2*SPLIT_ALIGN + 7 downto 0); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal split_cnt_buf : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal head_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tail_split : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2*SPLIT_ALIGN + 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + rs_rrsp_rdata <= resp_buf & data_buf(USER_DW - 1 downto 0); + rrsp <= rdata_data_pack(USER_DW + 1 downto USER_DW); + rdata_data <= rdata_data_pack(USER_DW - 1 downto 0); + + tmp_burst_info <= araddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(arlen_tmp, 8); + head_split <= burst_pack(2*SPLIT_ALIGN + 7 downto 8 + SPLIT_ALIGN); + tail_split <= burst_pack(SPLIT_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_beat <= '1' when last_split else '0'; + next_burst <= '1' when last_beat and last_split else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1' and beat_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1' and beat_valid = '1'; + + first_split <= (split_cnt = 0 and beat_valid = '1' and ready_for_data) when not first_beat else + (split_cnt = head_split and ready_for_data); + last_split <= (split_cnt = (TOTAL_SPLIT - 1) and ready_for_data) when not last_beat else + (split_cnt = tail_split and ready_for_data); + next_split <= (split_cnt /= 0 and ready_for_data) when not first_beat else + (split_cnt /= head_split and ready_for_data); + + split_cnt <= head_split when first_beat and (split_cnt_buf = 0) else + split_cnt_buf; + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt_buf <= (others => '0'); + elsif first_split or next_split then + split_cnt_buf <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_beat and last_split then + len_cnt <= (others => '0'); + elsif last_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if first_split and first_beat then + data_buf <= SHIFT_RIGHT(tmp_data, to_integer(head_split)*USER_DATA_WIDTH); + elsif first_split then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, USER_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + resp_buf <= "00"; + elsif ACLK_EN = '1' then + if first_split then + resp_buf <= tmp_resp; + end if; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if first_split then + rdata_valid_t <= '1'; + elsif not (first_split or next_split) and ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + + end generate bus_wide_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal next_data : BOOLEAN; + begin + rrsp <= resp_buf; + rdata_data <= data_buf(USER_DW - 1 downto 0); + rdata_valid <= rdata_valid_t; + + fifo_burst_ready <= '1'; + next_beat <= '1' when next_pad else '0'; + ready_for_data <= not (rdata_valid_t = '1' and rdata_ack_t = '0'); + + next_pad <= beat_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - 1) = '1'; + next_data <= last_pad and ready_for_data; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when beat_valid = '0' else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_gen : for i in 1 to TOTAL_PADS generate + begin + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*BUS_DATA_WIDTH - 1 downto (i-1)*BUS_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + end generate data_gen; + + resp_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + resp_buf <= "00"; + elsif next_beat = '1' and resp_buf(0) = '0' then + resp_buf <= tmp_resp; + end if; + end if; + end process resp_buf_proc; + + rdata_valid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rdata_valid_t <= '0'; + elsif ACLK_EN = '1' then + if next_data then + rdata_valid_t <= '1'; + elsif ready_for_data then + rdata_valid_t <= '0'; + end if; + end if; + end if; + end process rdata_valid_proc; + end generate bus_narrow_gen; +--------------------------- R channel end -------------------------------------- +end architecture behave; + +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_out_mem_m_axi_write is + generic ( + NUM_WRITE_OUTSTANDING : INTEGER := 2; + MAX_WRITE_BURST_LENGTH : INTEGER := 16; + C_M_AXI_ID_WIDTH : INTEGER := 1; + C_M_AXI_ADDR_WIDTH : INTEGER := 32; + C_TARGET_ADDR : INTEGER := 16#00000000#; + C_M_AXI_DATA_WIDTH : INTEGER := 32; + C_M_AXI_AWUSER_WIDTH : INTEGER := 1; + C_M_AXI_WUSER_WIDTH : INTEGER := 1; + C_M_AXI_BUSER_WIDTH : INTEGER := 1; + C_USER_VALUE : INTEGER := 0; + C_PROT_VALUE : INTEGER := 0; + C_CACHE_VALUE : INTEGER := 2#0011#; + USER_DW : INTEGER := 16; + USER_AW : INTEGER := 32; + USER_MAXREQS : INTEGER := 16); + port ( + ACLK : in STD_LOGIC; + ARESET : in STD_LOGIC; + ACLK_EN : in STD_LOGIC; + AWID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + AWADDR : out UNSIGNED(C_M_AXI_ADDR_WIDTH-1 downto 0); + AWLEN : out UNSIGNED(7 downto 0); + AWSIZE : out UNSIGNED(2 downto 0); + AWBURST : out UNSIGNED(1 downto 0); + AWLOCK : out UNSIGNED(1 downto 0); + AWCACHE : out UNSIGNED(3 downto 0); + AWPROT : out UNSIGNED(2 downto 0); + AWQOS : out UNSIGNED(3 downto 0); + AWREGION : out UNSIGNED(3 downto 0); + AWUSER : out UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + AWVALID : out STD_LOGIC; + AWREADY : in STD_LOGIC; + WID : out UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + WDATA : out UNSIGNED(C_M_AXI_DATA_WIDTH-1 downto 0); + WSTRB : out UNSIGNED(C_M_AXI_DATA_WIDTH/8-1 downto 0); + WLAST : out STD_LOGIC; + WUSER : out UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + WVALID : out STD_LOGIC; + WREADY : in STD_LOGIC; + BID : in UNSIGNED(C_M_AXI_ID_WIDTH-1 downto 0); + BRESP : in UNSIGNED(1 downto 0); + BUSER : in UNSIGNED(C_M_AXI_BUSER_WIDTH-1 downto 0); + BVALID : in STD_LOGIC; + BREADY : out STD_LOGIC; + wreq_valid : in STD_LOGIC; + wreq_ack : out STD_LOGIC; + wreq_addr : in UNSIGNED(USER_AW-1 downto 0); + wreq_length : in UNSIGNED(31 downto 0); + wreq_cache : in UNSIGNED(3 downto 0); + wreq_prot : in UNSIGNED(2 downto 0); + wreq_qos : in UNSIGNED(3 downto 0); + wreq_region : in UNSIGNED(3 downto 0); + wreq_user : in UNSIGNED(C_M_AXI_AWUSER_WIDTH-1 downto 0); + wdata_valid : in STD_LOGIC; + wdata_ack : out STD_LOGIC; + wdata_strb : in UNSIGNED(USER_DW/8-1 downto 0); + wdata_user : in UNSIGNED(C_M_AXI_WUSER_WIDTH-1 downto 0); + wdata_data : in UNSIGNED(USER_DW-1 downto 0); + wrsp_valid : out STD_LOGIC; + wrsp_ack : in STD_LOGIC; + wrsp : out UNSIGNED(1 downto 0)); + + function calc_data_width (x : INTEGER) return INTEGER is + variable y : INTEGER; + begin + y := 8; + while y < x loop + y := y * 2; + end loop; + return y; + end function calc_data_width; + + function log2 (x : INTEGER) return INTEGER is + variable n, m : INTEGER; + begin + n := 0; + m := 1; + while m < x loop + n := n + 1; + m := m * 2; + end loop; + return n; + end function log2; + +end entity mmult_out_mem_m_axi_write; + +architecture behave of mmult_out_mem_m_axi_write is + --common + constant USER_DATA_WIDTH : INTEGER := calc_data_width(USER_DW); + constant USER_DATA_BYTES : INTEGER := USER_DATA_WIDTH / 8; + constant USER_ADDR_ALIGN : INTEGER := log2(USER_DATA_BYTES); + constant BUS_DATA_WIDTH : INTEGER := C_M_AXI_DATA_WIDTH; + constant BUS_DATA_BYTES : INTEGER := BUS_DATA_WIDTH / 8; + constant BUS_ADDR_ALIGN : INTEGER := log2(BUS_DATA_BYTES); + constant NUM_WRITE_WIDTH : INTEGER := log2(MAX_WRITE_BURST_LENGTH); + --AW channel + constant TARGET_ADDR : INTEGER := (C_TARGET_ADDR/USER_DATA_BYTES)*USER_DATA_BYTES; + constant BOUNDARY_BEATS : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0) := (others => '1'); + signal wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal rs2f_wreq_valid : STD_LOGIC; + signal rs2f_wreq_ack : STD_LOGIC; + signal fifo_wreq_data : UNSIGNED(USER_AW + 31 downto 0); + signal tmp_addr : UNSIGNED(USER_AW - 1 downto 0); + signal tmp_len : UNSIGNED(31 downto 0); + signal align_len : UNSIGNED(31 downto 0); + signal awlen_tmp : UNSIGNED(7 downto 0); + signal start_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal start_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal end_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awaddr_tmp : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_addr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal sect_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal sect_end_buf : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal burst_end : UNSIGNED(BUS_ADDR_ALIGN - 1 downto 0); + signal start_to_4k : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal sect_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal beat_len_buf : UNSIGNED(11 - BUS_ADDR_ALIGN downto 0); + signal aw2b_awdata : UNSIGNED(1 downto 0); + signal sect_cnt : UNSIGNED(C_M_AXI_ADDR_WIDTH - 13 downto 0); + signal zero_len_event : STD_LOGIC; + signal negative_len_event : STD_LOGIC; + signal invalid_len_event : STD_LOGIC; + signal invalid_len_event_1 : STD_LOGIC; + signal invalid_len_event_2 : STD_LOGIC; + signal fifo_wreq_valid : STD_LOGIC; + signal fifo_wreq_valid_buf : STD_LOGIC; + signal fifo_wreq_read : STD_LOGIC; + signal fifo_burst_w : STD_LOGIC; + signal fifo_resp_w : STD_LOGIC; + signal last_sect_buf : STD_LOGIC; + signal ready_for_sect : STD_LOGIC; + signal AWVALID_Dummy : STD_LOGIC; + signal next_wreq : BOOLEAN; + signal ready_for_wreq : BOOLEAN; + signal wreq_handling : BOOLEAN; + signal first_sect : BOOLEAN; + signal last_sect : BOOLEAN; + signal next_sect : BOOLEAN; + --W channel + signal fifo_wdata_wstrb : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal data_pack : UNSIGNED(USER_DW + USER_DW/8 - 1 downto 0); + signal tmp_data : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal tmp_strb : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal len_cnt : UNSIGNED(7 downto 0); + signal burst_len : UNSIGNED(7 downto 0); + signal data_valid : STD_LOGIC; + signal next_data : STD_LOGIC; + signal burst_valid : STD_LOGIC; + signal fifo_burst_ready : STD_LOGIC; + signal next_burst : STD_LOGIC; + signal WVALID_Dummy : STD_LOGIC; + signal WLAST_Dummy : STD_LOGIC; + --B channel + signal aw2b_bdata : UNSIGNED(1 downto 0); + signal bresp_tmp : UNSIGNED(1 downto 0); + signal next_resp : STD_LOGIC; + signal last_resp : STD_LOGIC; + signal invalid_event : STD_LOGIC; + signal fifo_resp_ready : STD_LOGIC; + signal need_wrsp : STD_LOGIC; + signal resp_match : STD_LOGIC; + signal resp_ready : STD_LOGIC; + + component mmult_out_mem_m_axi_fifo is + generic ( + DATA_BITS : INTEGER := 8; + DEPTH : INTEGER := 16; + DEPTH_BITS : INTEGER := 4); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + empty_n : out STD_LOGIC; + full_n : out STD_LOGIC; + rdreq : in STD_LOGIC; + wrreq : in STD_LOGIC; + q : out UNSIGNED(DATA_BITS-1 downto 0); + data : in UNSIGNED(DATA_BITS-1 downto 0)); + end component mmult_out_mem_m_axi_fifo; + + component mmult_out_mem_m_axi_reg_slice is + generic ( + N : INTEGER := 8); + port ( + sclk : in STD_LOGIC; + reset : in STD_LOGIC; + s_data : in STD_LOGIC_VECTOR(N-1 downto 0); + s_valid : in STD_LOGIC; + s_ready : out STD_LOGIC; + m_data : out STD_LOGIC_VECTOR(N-1 downto 0); + m_valid : out STD_LOGIC; + m_ready : in STD_LOGIC); + end component mmult_out_mem_m_axi_reg_slice; + + component mmult_out_mem_m_axi_buffer is + generic ( + MEM_STYLE : STRING := "block"; + DATA_WIDTH : NATURAL := 32; + ADDR_WIDTH : NATURAL := 5; + DEPTH : NATURAL := 32 + ); + port ( + clk : in STD_LOGIC; + reset : in STD_LOGIC; + sclk_en : in STD_LOGIC; + if_full_n : out STD_LOGIC; + if_write_ce : in STD_LOGIC; + if_write : in STD_LOGIC; + if_din : in STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0); + if_empty_n : out STD_LOGIC; + if_read_ce : in STD_LOGIC; + if_read : in STD_LOGIC; + if_dout : out STD_LOGIC_VECTOR(DATA_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_buffer; + +begin + --------------------------- AW channel begin ----------------------------------- + -- Instantiation + rs_wreq : mmult_out_mem_m_axi_reg_slice + generic map ( + N => USER_AW + 32) + port map ( + sclk => ACLK, + reset => ARESET, + s_data => STD_LOGIC_VECTOR(wreq_data), + s_valid => wreq_valid, + s_ready => wreq_ack, + UNSIGNED(m_data)=> rs2f_wreq_data, + m_valid => rs2f_wreq_valid, + m_ready => rs2f_wreq_ack); + + fifo_wreq : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => USER_AW + 32, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + full_n => rs2f_wreq_ack, + wrreq => rs2f_wreq_valid, + data => rs2f_wreq_data, + empty_n => fifo_wreq_valid, + rdreq => fifo_wreq_read, + q => fifo_wreq_data); + + wreq_data <= (wreq_length & wreq_addr); + tmp_addr <= fifo_wreq_data(USER_AW - 1 downto 0); + tmp_len <= fifo_wreq_data(USER_AW + 31 downto USER_AW); + end_addr <= start_addr + align_len; + + zero_len_event <= '1' when fifo_wreq_valid = '1' and tmp_len = 0 else '0'; + negative_len_event <= tmp_len(31) when fifo_wreq_valid = '1' else '0'; + + next_wreq <= (fifo_wreq_valid = '1' or fifo_wreq_valid_buf = '1') and ready_for_wreq; + ready_for_wreq <= not(wreq_handling and not(last_sect and next_sect)); + fifo_wreq_read <= '1' when next_wreq else '0'; + + align_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + align_len <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + if (zero_len_event = '1' or negative_len_event = '1') then + align_len <= (others => '0'); + else + align_len <= SHIFT_LEFT(tmp_len, USER_ADDR_ALIGN) - 1; + end if; + end if; + end if; + end if; + end process align_len_proc; + + start_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr <= (others => '0'); + elsif ACLK_EN = '1' then + if (fifo_wreq_valid = '1' and ready_for_wreq) then + start_addr <= TARGET_ADDR + SHIFT_LEFT(RESIZE(tmp_addr, C_M_AXI_ADDR_WIDTH), USER_ADDR_ALIGN); + end if; + end if; + end if; + end process start_addr_proc; + + fifo_wreq_valid_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + fifo_wreq_valid_buf <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + fifo_wreq_valid_buf <= fifo_wreq_valid; + end if; + end if; + end if; + end process fifo_wreq_valid_buf_proc; + + invalid_len_event_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event <= '0'; + elsif ACLK_EN = '1' then + if (next_wreq) then + invalid_len_event <= zero_len_event or negative_len_event; + end if; + end if; + end if; + end process invalid_len_event_proc; + + wreq_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wreq_handling <= false; + elsif ACLK_EN = '1' then + if fifo_wreq_valid_buf = '1' and not wreq_handling then + wreq_handling <= true; + elsif fifo_wreq_valid_buf = '0' and last_sect and next_sect then + wreq_handling <= false; + end if; + end if; + end if; + end process wreq_handling_proc; + + start_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + start_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + start_addr_buf <= start_addr; + end if; + end if; + end if; + end process start_addr_buf_proc; + + end_addr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + end_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + end_addr_buf <= end_addr; + end if; + end if; + end if; + end process end_addr_buf_proc; + + beat_len_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + beat_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + beat_len_buf <= RESIZE(SHIFT_RIGHT(align_len(11 downto 0) + start_addr(BUS_ADDR_ALIGN-1 downto 0), BUS_ADDR_ALIGN), 12-BUS_ADDR_ALIGN); + end if; + end if; + end if; + end process beat_len_buf_proc; + + sect_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_wreq then + sect_cnt <= start_addr(C_M_AXI_ADDR_WIDTH - 1 downto 12); + elsif next_sect then + sect_cnt <= sect_cnt + 1; + end if; + end if; + end if; + end process sect_cnt_proc; + + -- event registers + invalid_len_event_1_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_1 <= '0'; + elsif ACLK_EN = '1' then + if next_wreq then + invalid_len_event_1 <= invalid_len_event; + end if; + end if; + end if; + end process invalid_len_event_1_proc; + -- end event registers + + first_sect <= (sect_cnt = start_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto 12)); + last_sect <= (sect_cnt = end_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 12)); + next_sect <= wreq_handling and ready_for_sect = '1'; + + sect_addr <= start_addr_buf when first_sect else + sect_cnt & (11 downto 0 => '0'); + sect_addr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_addr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_addr_buf <= sect_addr; + end if; + end if; + end if; + end process sect_addr_proc; + + start_to_4k <= BOUNDARY_BEATS - start_addr_buf(11 downto BUS_ADDR_ALIGN); + sect_len <= beat_len_buf when first_sect and last_sect else + start_to_4k when first_sect and not last_sect else + end_addr_buf(11 downto BUS_ADDR_ALIGN) when not first_sect and last_sect else + BOUNDARY_BEATS; + + sect_len_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_len_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_len_buf <= sect_len; + end if; + end if; + end if; + end process sect_len_proc; + + sect_end <= end_addr_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_sect else + (others => '1'); + sect_end_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_end_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + sect_end_buf <= sect_end; + end if; + end if; + end if; + end process sect_end_proc; + + -- event registers + invalid_len_event_2_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + invalid_len_event_2 <= '0'; + elsif ACLK_EN = '1' then + if next_sect then + invalid_len_event_2 <= invalid_len_event_1; + end if; + end if; + end if; + end process invalid_len_event_2_proc; + -- end event registers + + AWID <= (others => '0'); + AWSIZE <= TO_UNSIGNED(BUS_ADDR_ALIGN, AWSIZE'length); + AWBURST <= "01"; + AWLOCK <= "00"; + AWCACHE <= TO_UNSIGNED(C_CACHE_VALUE, AWCACHE'length); + AWPROT <= TO_UNSIGNED(C_PROT_VALUE, AWPROT'length); + AWUSER <= TO_UNSIGNED(C_USER_VALUE, AWUSER'length); + AWQOS <= wreq_qos; + AWREGION <= wreq_region; + + must_one_burst : if (BUS_DATA_BYTES >= 4096/MAX_WRITE_BURST_LENGTH) generate + begin + AWADDR <= sect_addr_buf(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + AWLEN <= RESIZE(sect_len_buf, 8); + AWVALID <= AWVALID_Dummy; + + ready_for_sect <= '1' when not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_burst_ready = '1' and fifo_resp_ready = '1' else '0'; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_1 = '1' and next_sect then + AWVALID_Dummy <= '0'; + elsif next_sect then + AWVALID_Dummy <= '1'; + elsif not next_sect and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_sect else '0'; + aw2b_awdata <= '1' & invalid_len_event_1 when last_sect else '0' & invalid_len_event_1; + + fifo_burst_w <= '1' when invalid_len_event_1 = '0' and next_sect else '0'; + awaddr_tmp <= sect_addr(C_M_AXI_ADDR_WIDTH - 1 downto 0); + awlen_tmp <= RESIZE(sect_len, 8); + burst_end <= sect_end; + end generate must_one_burst; + + could_multi_bursts : if (BUS_DATA_BYTES < 4096/MAX_WRITE_BURST_LENGTH) generate + signal awaddr_buf : UNSIGNED(C_M_AXI_ADDR_WIDTH - 1 downto 0); + signal awlen_buf : UNSIGNED(7 downto 0); + signal loop_cnt : UNSIGNED(11 - NUM_WRITE_WIDTH - BUS_ADDR_ALIGN downto 0); + signal last_loop : BOOLEAN; + signal next_loop : BOOLEAN; + signal ready_for_loop : BOOLEAN; + signal sect_handling : BOOLEAN; + begin + AWADDR <= awaddr_buf; + AWLEN <= awlen_buf; + AWVALID <= AWVALID_Dummy; + + last_loop <= (loop_cnt = sect_len_buf(11 - BUS_ADDR_ALIGN downto NUM_WRITE_WIDTH)); + next_loop <= sect_handling and ready_for_loop; + ready_for_loop <= not (AWVALID_Dummy = '1' and AWREADY = '0') and fifo_resp_ready = '1' and fifo_burst_ready = '1'; + ready_for_sect <= '1' when not (sect_handling and not (last_loop and next_loop)) else '0'; + + sect_handling_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + sect_handling <= false; + elsif ACLK_EN = '1' then + if wreq_handling and not sect_handling then + sect_handling <= true; + elsif not wreq_handling and last_loop and next_loop then + sect_handling <= false; + end if; + end if; + end if; + end process sect_handling_proc; + + loop_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + loop_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_sect then + loop_cnt <= (others => '0'); + elsif next_loop then + loop_cnt <= loop_cnt + 1; + end if; + end if; + end if; + end process loop_cnt_proc; + + awaddr_tmp <= sect_addr_buf(C_M_AXI_ADDR_WIDTH -1 downto 0) when loop_cnt = 0 else + awaddr_buf + SHIFT_LEFT(RESIZE(awlen_buf, 32) + 1, BUS_ADDR_ALIGN); + awaddr_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awaddr_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awaddr_buf <= awaddr_tmp(C_M_AXI_ADDR_WIDTH - 1 downto BUS_ADDR_ALIGN) & (BUS_ADDR_ALIGN - 1 downto 0 => '0'); + end if; + end if; + end if; + end process awaddr_buf_proc; + + awlen_tmp <= RESIZE(sect_len_buf(NUM_WRITE_WIDTH-1 downto 0), 8) when last_loop else + TO_UNSIGNED(MAX_WRITE_BURST_LENGTH-1, 8); + awlen_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + awlen_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_loop then + awlen_buf <= awlen_tmp; + end if; + end if; + end if; + end process awlen_buf_proc; + + awvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + AWVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if invalid_len_event_2 = '1' and next_loop then + AWVALID_Dummy <= '0'; + elsif next_loop then + AWVALID_Dummy <= '1'; + elsif not next_loop and AWREADY = '1' then + AWVALID_Dummy <= '0'; + end if; + end if; + end if; + end process awvalid_proc; + + fifo_resp_w <= '1' when next_loop else '0'; + aw2b_awdata <= '1' & invalid_len_event_2 when last_loop and last_sect_buf = '1' else '0' & invalid_len_event_2; + last_sect_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + last_sect_buf <= '0'; + elsif ACLK_EN = '1' then + if next_sect and last_sect then + last_sect_buf <= '1'; + elsif next_sect then + last_sect_buf <= '0'; + end if; + end if; + end if; + end process last_sect_buf_proc; + + fifo_burst_w <= '1' when invalid_len_event_2 = '0' and next_loop else '0'; + burst_end <= sect_end_buf(BUS_ADDR_ALIGN - 1 downto 0) when last_loop else (others => '1'); + end generate could_multi_bursts; + --------------------------- AW channel end ------------------------------------- + + --------------------------- W channel begin ------------------------------------ + -- Instantiation + buff_wdata : mmult_out_mem_m_axi_buffer + generic map ( + DATA_WIDTH => USER_DW + USER_DW/8, + DEPTH => NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH, + ADDR_WIDTH => log2(NUM_WRITE_OUTSTANDING * MAX_WRITE_BURST_LENGTH)) + port map ( + clk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + if_full_n => wdata_ack, + if_write_ce => '1', + if_write => wdata_valid, + if_din => STD_LOGIC_VECTOR(fifo_wdata_wstrb), + if_empty_n => data_valid, + if_read_ce => '1', + if_read => next_data, + UNSIGNED(if_dout) => data_pack); + + fifo_wdata_wstrb <= (wdata_strb & wdata_data); + tmp_data <= RESIZE(data_pack(USER_DW - 1 downto 0), USER_DATA_WIDTH); + tmp_strb <= RESIZE(data_pack(USER_DW + USER_DW/8 - 1 downto USER_DW), USER_DATA_BYTES); + + WID <= (others => '0'); + WUSER <= TO_UNSIGNED(C_USER_VALUE, WUSER'length); + + bus_equal_gen : if (USER_DATA_WIDTH = BUS_DATA_WIDTH) generate + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal ready_for_data : BOOLEAN; + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + next_data <= '1' when burst_valid = '1' and data_valid = '1' and ready_for_data else '0'; + next_burst <= '1' when len_cnt = burst_len and next_data = '1' else '0'; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + end generate bus_equal_gen; + + bus_narrow_gen : if (USER_DATA_WIDTH > BUS_DATA_WIDTH) generate + constant TOTAL_SPLIT : INTEGER := USER_DATA_WIDTH / BUS_DATA_WIDTH; + constant SPLIT_ALIGN : INTEGER := log2(TOTAL_SPLIT); + signal data_buf : UNSIGNED(USER_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(USER_DATA_BYTES - 1 downto 0); + signal split_cnt : UNSIGNED(SPLIT_ALIGN - 1 downto 0); + signal tmp_burst_info : UNSIGNED(7 downto 0); + signal first_split : BOOLEAN; + signal next_split : BOOLEAN; + signal last_split : BOOLEAN; + signal ready_for_data : BOOLEAN; + begin + -- instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_len, + data => tmp_burst_info); + + WDATA <= data_buf(BUS_DATA_WIDTH - 1 downto 0); + WSTRB <= strb_buf(BUS_DATA_BYTES - 1 downto 0); + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= RESIZE(awlen_tmp, 8); + + next_data <= '1' when first_split else '0'; + next_burst <= '1' when len_cnt = burst_len and burst_valid = '1' and last_split else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_split <= split_cnt = 0 and data_valid = '1' and burst_valid ='1' and ready_for_data; + next_split <= split_cnt /= 0 and ready_for_data; + last_split <= split_cnt = (TOTAL_SPLIT - 1) and ready_for_data; + + split_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + split_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if last_split then + split_cnt <= (others => '0'); + elsif first_split or next_split then + split_cnt <= split_cnt + 1; + end if; + end if; + end if; + end process split_cnt_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_data = '1' or next_split then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + + data_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if next_data = '1' then + data_buf <= tmp_data; + elsif next_split then + data_buf <= SHIFT_RIGHT(data_buf, BUS_DATA_WIDTH); + end if; + end if; + end if; + end process data_buf_proc; + + strb_buf_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + strb_buf <= (others => '0'); + elsif ACLK_EN = '1' then + if next_data = '1' then + strb_buf <= tmp_strb; + elsif next_split then + strb_buf <= SHIFT_RIGHT(strb_buf, BUS_DATA_BYTES); + end if; + end if; + end if; + end process strb_buf_proc; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_data = '1' then + WVALID_Dummy <= '1'; + elsif not (first_split or next_split) and ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' and last_split then + WLAST_Dummy <= '1'; + elsif ready_for_data then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + end generate bus_narrow_gen; + + bus_wide_gen : if (USER_DATA_WIDTH < BUS_DATA_WIDTH) generate + constant TOTAL_PADS : INTEGER := BUS_DATA_WIDTH / USER_DATA_WIDTH; + constant PAD_ALIGN : INTEGER := log2(TOTAL_PADS); + signal data_buf : UNSIGNED(BUS_DATA_WIDTH - 1 downto 0); + signal strb_buf : UNSIGNED(BUS_DATA_BYTES - 1 downto 0); + signal burst_pack : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal tmp_burst_info : UNSIGNED(2*PAD_ALIGN + 7 downto 0); + signal head_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal tail_pads : UNSIGNED(PAD_ALIGN - 1 downto 0); + signal add_head : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal add_tail : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal pad_oh_reg : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal head_pad_sel : UNSIGNED(TOTAL_PADS - 1 downto 0); + signal tail_pad_sel : UNSIGNED(0 to TOTAL_PADS - 1); + signal ready_for_data : BOOLEAN; + signal next_pad : BOOLEAN; + signal first_pad : BOOLEAN; + signal last_pad : BOOLEAN; + signal first_beat : BOOLEAN; + signal last_beat : BOOLEAN; + signal next_beat : BOOLEAN; + + component mmult_out_mem_m_axi_decoder is + generic ( + DIN_WIDTH : integer := 3); + port ( + din : in UNSIGNED(DIN_WIDTH - 1 downto 0); + dout : out UNSIGNED(2**DIN_WIDTH - 1 downto 0)); + end component mmult_out_mem_m_axi_decoder; + + begin + -- Instantiation + fifo_burst : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 8 + 2*PAD_ALIGN, + DEPTH => user_maxreqs, + DEPTH_BITS => log2(user_maxreqs)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => burst_valid, + full_n => fifo_burst_ready, + rdreq => next_burst, + wrreq => fifo_burst_w, + q => burst_pack, + data => tmp_burst_info); + + WDATA <= data_buf; + WSTRB <= strb_buf; + WLAST <= WLAST_Dummy; + WVALID <= WVALID_Dummy; + + tmp_burst_info <= awaddr_tmp(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & burst_end(BUS_ADDR_ALIGN - 1 downto USER_ADDR_ALIGN) & RESIZE(awlen_tmp, 8); + + head_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => head_pads, + dout => head_pad_sel); + + tail_pad_decoder : mmult_out_mem_m_axi_decoder + generic map ( + DIN_WIDTH => PAD_ALIGN) + port map ( + din => tail_pads, + dout => tail_pad_sel); + + head_pads <= burst_pack(2*PAD_ALIGN + 7 downto 8 + PAD_ALIGN); + tail_pads <= not burst_pack(PAD_ALIGN + 7 downto 8); + burst_len <= burst_pack(7 downto 0); + + next_data <= '1' when next_pad else '0'; + next_burst <= '1' when last_beat and next_beat else '0'; + ready_for_data <= not (WVALID_Dummy = '1' and WREADY = '0'); + + first_beat <= len_cnt = 0 and burst_valid = '1'; + last_beat <= len_cnt = burst_len and burst_valid = '1'; + next_beat <= burst_valid = '1' and last_pad and ready_for_data; + + next_pad <= burst_valid = '1' and data_valid = '1' and ready_for_data; + last_pad <= pad_oh(TOTAL_PADS - to_integer(tail_pads) - 1) = '1' when last_beat else + pad_oh(TOTAL_PADS - 1) = '1'; + + first_pad_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + first_pad <= true; + elsif ACLK_EN = '1' then + if next_pad and not last_pad then + first_pad <= false; + elsif next_pad and last_pad then + first_pad <= true; + end if; + end if; + end if; + end process first_pad_proc; + + pad_oh <= (others => '0') when data_valid = '0' else + SHIFT_LEFT(TO_UNSIGNED(1, TOTAL_PADS), TO_INTEGER(head_pads)) when first_beat and first_pad else + TO_UNSIGNED(1, TOTAL_PADS) when first_pad else + pad_oh_reg; + pad_oh_reg_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + pad_oh_reg <= (others => '0'); + elsif ACLK_EN = '1' then + if next_pad then + pad_oh_reg <= pad_oh(TOTAL_PADS - 2 downto 0) & '0'; + end if; + end if; + end if; + end process pad_oh_reg_proc; + + data_strb_gen : for i in 1 to TOTAL_PADS generate + begin + add_head(i-1) <= '1' when head_pad_sel(i-1) = '1' and first_beat else + '0'; + add_tail(i-1) <= '1' when tail_pad_sel(i-1) = '1' and last_beat else + '0'; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if ACLK_EN = '1' then + if (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + data_buf(i*USER_DATA_WIDTH - 1 downto (i-1)*USER_DATA_WIDTH) <= tmp_data; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') and ACLK_EN = '1' then + if (ARESET = '1') then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif (add_head(i-1) = '1' or add_tail(i-1) = '1') and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= (others => '0'); + elsif pad_oh(i-1) = '1' and ready_for_data then + strb_buf(i*USER_DATA_BYTES - 1 downto (i-1)*USER_DATA_BYTES) <= tmp_strb; + end if; + end if; + end process; + end generate data_strb_gen; + + wvalid_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WVALID_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_beat then + WVALID_Dummy <= '1'; + elsif ready_for_data then + WVALID_Dummy <= '0'; + end if; + end if; + end if; + end process wvalid_proc; + + wlast_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + WLAST_Dummy <= '0'; + elsif ACLK_EN = '1' then + if next_burst = '1' then + WLAST_Dummy <= '1'; + elsif next_data = '1' then + WLAST_Dummy <= '0'; + end if; + end if; + end if; + end process wlast_proc; + + len_cnt_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + len_cnt <= (others => '0'); + elsif ACLK_EN = '1' then + if next_burst = '1' then + len_cnt <= (others => '0'); + elsif next_beat then + len_cnt <= len_cnt + 1; + end if; + end if; + end if; + end process len_cnt_proc; + end generate bus_wide_gen; + --------------------------- W channel end -------------------------------------- + + --------------------------- B channel begin ------------------------------------ + -- Instantiation + fifo_resp : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => NUM_WRITE_OUTSTANDING-1, + DEPTH_BITS => log2(NUM_WRITE_OUTSTANDING-1)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => need_wrsp, + full_n => fifo_resp_ready, + rdreq => next_resp, + wrreq => fifo_resp_w, + q => aw2b_bdata, + data => aw2b_awdata); + + fifo_resp_to_user : mmult_out_mem_m_axi_fifo + generic map ( + DATA_BITS => 2, + DEPTH => USER_MAXREQS, + DEPTH_BITS => log2(USER_MAXREQS)) + port map ( + sclk => ACLK, + reset => ARESET, + sclk_en => ACLK_EN, + empty_n => wrsp_valid, + full_n => resp_ready, + rdreq => wrsp_ack, + wrreq => resp_match, + q => wrsp, + data => bresp_tmp); + + BREADY <= resp_ready; + last_resp <= aw2b_bdata(1); + invalid_event <= aw2b_bdata(0); + resp_match <= '1' when (next_resp = '1' and (last_resp = '1' or invalid_event = '1')) and need_wrsp = '1' else '0'; + + next_resp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + next_resp <= '0'; + elsif ACLK_EN = '1' then + next_resp <= (BVALID and resp_ready) or (invalid_event and need_wrsp and (not next_resp)); + end if; + end if; + end process next_resp_proc; + + bresp_tmp_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + bresp_tmp <= "00"; + elsif ACLK_EN = '1' then + if (resp_match = '1' and next_resp = '0') then + bresp_tmp <= "00"; + elsif (resp_match = '1' and next_resp = '1') then + bresp_tmp <= BRESP; + elsif (next_resp = '1' and bresp_tmp(1) = '0') then + bresp_tmp <= BRESP; + end if; + end if; + end if; + end process bresp_tmp_proc; +--------------------------- B channel end -------------------------------------- +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_params_s_axi.vhd b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_params_s_axi.vhd new file mode 100755 index 0000000..1f9adde --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/hdl/vhdl/mmult_params_s_axi.vhd @@ -0,0 +1,439 @@ +-- ============================================================== +-- Vivado(TM) HLS - High-Level Synthesis from C, C++ and SystemC v2020.1 (64-bit) +-- Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +-- ============================================================== +library IEEE; +use IEEE.STD_LOGIC_1164.all; +use IEEE.NUMERIC_STD.all; + +entity mmult_params_s_axi is +generic ( + C_S_AXI_ADDR_WIDTH : INTEGER := 6; + C_S_AXI_DATA_WIDTH : INTEGER := 32); +port ( + ACLK :in STD_LOGIC; + ARESET :in STD_LOGIC; + ACLK_EN :in STD_LOGIC; + AWADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + AWVALID :in STD_LOGIC; + AWREADY :out STD_LOGIC; + WDATA :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + WSTRB :in STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH/8-1 downto 0); + WVALID :in STD_LOGIC; + WREADY :out STD_LOGIC; + BRESP :out STD_LOGIC_VECTOR(1 downto 0); + BVALID :out STD_LOGIC; + BREADY :in STD_LOGIC; + ARADDR :in STD_LOGIC_VECTOR(C_S_AXI_ADDR_WIDTH-1 downto 0); + ARVALID :in STD_LOGIC; + ARREADY :out STD_LOGIC; + RDATA :out STD_LOGIC_VECTOR(C_S_AXI_DATA_WIDTH-1 downto 0); + RRESP :out STD_LOGIC_VECTOR(1 downto 0); + RVALID :out STD_LOGIC; + RREADY :in STD_LOGIC; + interrupt :out STD_LOGIC; + ap_start :out STD_LOGIC; + ap_done :in STD_LOGIC; + ap_ready :in STD_LOGIC; + ap_idle :in STD_LOGIC; + in1 :out STD_LOGIC_VECTOR(31 downto 0); + in2 :out STD_LOGIC_VECTOR(31 downto 0); + out_r :out STD_LOGIC_VECTOR(31 downto 0); + dim :out STD_LOGIC_VECTOR(31 downto 0) +); +end entity mmult_params_s_axi; + +-- ------------------------Address Info------------------- +-- 0x00 : Control signals +-- bit 0 - ap_start (Read/Write/COH) +-- bit 1 - ap_done (Read/COR) +-- bit 2 - ap_idle (Read) +-- bit 3 - ap_ready (Read) +-- bit 7 - auto_restart (Read/Write) +-- others - reserved +-- 0x04 : Global Interrupt Enable Register +-- bit 0 - Global Interrupt Enable (Read/Write) +-- others - reserved +-- 0x08 : IP Interrupt Enable Register (Read/Write) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x0c : IP Interrupt Status Register (Read/TOW) +-- bit 0 - Channel 0 (ap_done) +-- bit 1 - Channel 1 (ap_ready) +-- others - reserved +-- 0x10 : Data signal of in1 +-- bit 31~0 - in1[31:0] (Read/Write) +-- 0x14 : reserved +-- 0x18 : Data signal of in2 +-- bit 31~0 - in2[31:0] (Read/Write) +-- 0x1c : reserved +-- 0x20 : Data signal of out_r +-- bit 31~0 - out_r[31:0] (Read/Write) +-- 0x24 : reserved +-- 0x28 : Data signal of dim +-- bit 31~0 - dim[31:0] (Read/Write) +-- 0x2c : reserved +-- (SC = Self Clear, COR = Clear on Read, TOW = Toggle on Write, COH = Clear on Handshake) + +architecture behave of mmult_params_s_axi is + type states is (wridle, wrdata, wrresp, wrreset, rdidle, rddata, rdreset); -- read and write fsm states + signal wstate : states := wrreset; + signal rstate : states := rdreset; + signal wnext, rnext: states; + constant ADDR_AP_CTRL : INTEGER := 16#00#; + constant ADDR_GIE : INTEGER := 16#04#; + constant ADDR_IER : INTEGER := 16#08#; + constant ADDR_ISR : INTEGER := 16#0c#; + constant ADDR_IN1_DATA_0 : INTEGER := 16#10#; + constant ADDR_IN1_CTRL : INTEGER := 16#14#; + constant ADDR_IN2_DATA_0 : INTEGER := 16#18#; + constant ADDR_IN2_CTRL : INTEGER := 16#1c#; + constant ADDR_OUT_R_DATA_0 : INTEGER := 16#20#; + constant ADDR_OUT_R_CTRL : INTEGER := 16#24#; + constant ADDR_DIM_DATA_0 : INTEGER := 16#28#; + constant ADDR_DIM_CTRL : INTEGER := 16#2c#; + constant ADDR_BITS : INTEGER := 6; + + signal waddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal wmask : UNSIGNED(31 downto 0); + signal aw_hs : STD_LOGIC; + signal w_hs : STD_LOGIC; + signal rdata_data : UNSIGNED(31 downto 0); + signal ar_hs : STD_LOGIC; + signal raddr : UNSIGNED(ADDR_BITS-1 downto 0); + signal AWREADY_t : STD_LOGIC; + signal WREADY_t : STD_LOGIC; + signal ARREADY_t : STD_LOGIC; + signal RVALID_t : STD_LOGIC; + -- internal registers + signal int_ap_idle : STD_LOGIC; + signal int_ap_ready : STD_LOGIC; + signal int_ap_done : STD_LOGIC := '0'; + signal int_ap_start : STD_LOGIC := '0'; + signal int_auto_restart : STD_LOGIC := '0'; + signal int_gie : STD_LOGIC := '0'; + signal int_ier : UNSIGNED(1 downto 0) := (others => '0'); + signal int_isr : UNSIGNED(1 downto 0) := (others => '0'); + signal int_in1 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_in2 : UNSIGNED(31 downto 0) := (others => '0'); + signal int_out_r : UNSIGNED(31 downto 0) := (others => '0'); + signal int_dim : UNSIGNED(31 downto 0) := (others => '0'); + + +begin +-- ----------------------- Instantiation------------------ + +-- ----------------------- AXI WRITE --------------------- + AWREADY_t <= '1' when wstate = wridle else '0'; + AWREADY <= AWREADY_t; + WREADY_t <= '1' when wstate = wrdata else '0'; + WREADY <= WREADY_t; + BRESP <= "00"; -- OKAY + BVALID <= '1' when wstate = wrresp else '0'; + wmask <= (31 downto 24 => WSTRB(3), 23 downto 16 => WSTRB(2), 15 downto 8 => WSTRB(1), 7 downto 0 => WSTRB(0)); + aw_hs <= AWVALID and AWREADY_t; + w_hs <= WVALID and WREADY_t; + + -- write FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + wstate <= wrreset; + elsif (ACLK_EN = '1') then + wstate <= wnext; + end if; + end if; + end process; + + process (wstate, AWVALID, WVALID, BREADY) + begin + case (wstate) is + when wridle => + if (AWVALID = '1') then + wnext <= wrdata; + else + wnext <= wridle; + end if; + when wrdata => + if (WVALID = '1') then + wnext <= wrresp; + else + wnext <= wrdata; + end if; + when wrresp => + if (BREADY = '1') then + wnext <= wridle; + else + wnext <= wrresp; + end if; + when others => + wnext <= wridle; + end case; + end process; + + waddr_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (aw_hs = '1') then + waddr <= UNSIGNED(AWADDR(ADDR_BITS-1 downto 0)); + end if; + end if; + end if; + end process; + +-- ----------------------- AXI READ ---------------------- + ARREADY_t <= '1' when (rstate = rdidle) else '0'; + ARREADY <= ARREADY_t; + RDATA <= STD_LOGIC_VECTOR(rdata_data); + RRESP <= "00"; -- OKAY + RVALID_t <= '1' when (rstate = rddata) else '0'; + RVALID <= RVALID_t; + ar_hs <= ARVALID and ARREADY_t; + raddr <= UNSIGNED(ARADDR(ADDR_BITS-1 downto 0)); + + -- read FSM + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + rstate <= rdreset; + elsif (ACLK_EN = '1') then + rstate <= rnext; + end if; + end if; + end process; + + process (rstate, ARVALID, RREADY, RVALID_t) + begin + case (rstate) is + when rdidle => + if (ARVALID = '1') then + rnext <= rddata; + else + rnext <= rdidle; + end if; + when rddata => + if (RREADY = '1' and RVALID_t = '1') then + rnext <= rdidle; + else + rnext <= rddata; + end if; + when others => + rnext <= rdidle; + end case; + end process; + + rdata_proc : process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (ar_hs = '1') then + case (TO_INTEGER(raddr)) is + when ADDR_AP_CTRL => + rdata_data <= (7 => int_auto_restart, 3 => int_ap_ready, 2 => int_ap_idle, 1 => int_ap_done, 0 => int_ap_start, others => '0'); + when ADDR_GIE => + rdata_data <= (0 => int_gie, others => '0'); + when ADDR_IER => + rdata_data <= (1 => int_ier(1), 0 => int_ier(0), others => '0'); + when ADDR_ISR => + rdata_data <= (1 => int_isr(1), 0 => int_isr(0), others => '0'); + when ADDR_IN1_DATA_0 => + rdata_data <= RESIZE(int_in1(31 downto 0), 32); + when ADDR_IN2_DATA_0 => + rdata_data <= RESIZE(int_in2(31 downto 0), 32); + when ADDR_OUT_R_DATA_0 => + rdata_data <= RESIZE(int_out_r(31 downto 0), 32); + when ADDR_DIM_DATA_0 => + rdata_data <= RESIZE(int_dim(31 downto 0), 32); + when others => + rdata_data <= (others => '0'); + end case; + end if; + end if; + end if; + end process; + +-- ----------------------- Register logic ---------------- + interrupt <= int_gie and (int_isr(0) or int_isr(1)); + ap_start <= int_ap_start; + in1 <= STD_LOGIC_VECTOR(int_in1); + in2 <= STD_LOGIC_VECTOR(int_in2); + out_r <= STD_LOGIC_VECTOR(int_out_r); + dim <= STD_LOGIC_VECTOR(int_dim); + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_start <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1' and WDATA(0) = '1') then + int_ap_start <= '1'; + elsif (ap_ready = '1') then + int_ap_start <= int_auto_restart; -- clear on handshake/auto restart + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_done <= '0'; + elsif (ACLK_EN = '1') then + if (ap_done = '1') then + int_ap_done <= '1'; + elsif (ar_hs = '1' and raddr = ADDR_AP_CTRL) then + int_ap_done <= '0'; -- clear on read + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_idle <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_idle <= ap_idle; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ap_ready <= '0'; + elsif (ACLK_EN = '1') then + if (true) then + int_ap_ready <= ap_ready; + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_auto_restart <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_AP_CTRL and WSTRB(0) = '1') then + int_auto_restart <= WDATA(7); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_gie <= '0'; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_GIE and WSTRB(0) = '1') then + int_gie <= WDATA(0); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_ier <= "00"; + elsif (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IER and WSTRB(0) = '1') then + int_ier <= UNSIGNED(WDATA(1 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(0) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(0) = '1' and ap_done = '1') then + int_isr(0) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(0) <= int_isr(0) xor WDATA(0); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ARESET = '1') then + int_isr(1) <= '0'; + elsif (ACLK_EN = '1') then + if (int_ier(1) = '1' and ap_ready = '1') then + int_isr(1) <= '1'; + elsif (w_hs = '1' and waddr = ADDR_ISR and WSTRB(0) = '1') then + int_isr(1) <= int_isr(1) xor WDATA(1); -- toggle on write + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN1_DATA_0) then + int_in1(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in1(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_IN2_DATA_0) then + int_in2(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_in2(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_OUT_R_DATA_0) then + int_out_r(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_out_r(31 downto 0)); + end if; + end if; + end if; + end process; + + process (ACLK) + begin + if (ACLK'event and ACLK = '1') then + if (ACLK_EN = '1') then + if (w_hs = '1' and waddr = ADDR_DIM_DATA_0) then + int_dim(31 downto 0) <= (UNSIGNED(WDATA(31 downto 0)) and wmask(31 downto 0)) or ((not wmask(31 downto 0)) and int_dim(31 downto 0)); + end if; + end if; + end if; + end process; + + +-- ----------------------- Memory logic ------------------ + +end architecture behave; diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/misc/logo.png b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/misc/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..e8eef68ad9ab0c698729ea707dffb76d8117589e GIT binary patch literal 4077 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/xgui/mmult_v9_0.tcl b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/xgui/mmult_v9_0.tcl new file mode 100755 index 0000000..0276fbf --- /dev/null +++ b/hls/lab2/exported_ips/xilinx_com_hls_exercise_9/xgui/mmult_v9_0.tcl @@ -0,0 +1,529 @@ +# Definitional proc to organize widgets for parameters. +proc init_gui { IPINST } { + ipgui::add_param $IPINST -name "Component_Name" + #Adding Page + set Page_0 [ipgui::add_page $IPINST -name "Page 0"] + #Adding Group + set group_0 [ipgui::add_group $IPINST -name "group 0" -parent ${Page_0} -display_name {m axi dev reg (AXI4 Master Interface)}] + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN1_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_IN2_MEM_CACHE_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_ID_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ID_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_DATA_WIDTH" -parent ${group_0} -widget comboBox + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ENABLE_USER_PORTS" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_AWUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_WUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_BUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_ARUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_RUSER_WIDTH" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_USER_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_PROT_VALUE" -parent ${group_0} + ipgui::add_param $IPINST -name "C_M_AXI_OUT_MEM_CACHE_VALUE" -parent ${group_0} + + + +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN1_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN1_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN1_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN1_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN1_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN1_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN1_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_IN2_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_IN2_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_IN2_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_IN2_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_IN2_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_IN2_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_IN2_MEM_CACHE_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_ID_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_ID_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_ID_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ID_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ID_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_DATA_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_DATA_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to update C_M_AXI_OUT_MEM_ENABLE_USER_PORTS when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS { PARAM_VALUE.C_M_AXI_OUT_MEM_ENABLE_USER_PORTS } { + # Procedure called to validate C_M_AXI_OUT_MEM_ENABLE_USER_PORTS + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_AWUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_AWUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_WUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_WUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_BUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_BUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_ARUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_ARUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to update C_M_AXI_OUT_MEM_RUSER_WIDTH when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to validate C_M_AXI_OUT_MEM_RUSER_WIDTH + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_USER_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_USER_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_PROT_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_PROT_VALUE + return true +} + +proc update_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to update C_M_AXI_OUT_MEM_CACHE_VALUE when any of the dependent parameters in the arguments change +} + +proc validate_PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to validate C_M_AXI_OUT_MEM_CACHE_VALUE + return true +} + + +proc update_MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH { MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + # WARNING: There is no corresponding user parameter named "C_S_AXI_PARAMS_ADDR_WIDTH". Setting updated value from the model parameter. +set_property value 6 ${MODELPARAM_VALUE.C_S_AXI_PARAMS_ADDR_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN1_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_IN2_MEM_CACHE_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ID_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_DATA_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_AWUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_ARUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_WUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_RUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_BUSER_WIDTH} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_USER_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_PROT_VALUE} +} + +proc update_MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE { MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE } { + # Procedure called to set VHDL generic/Verilog parameter value(s) based on TCL parameter value + set_property value [get_property value ${PARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE}] ${MODELPARAM_VALUE.C_M_AXI_OUT_MEM_CACHE_VALUE} +} + diff --git a/hls/lab2/hw/exercise_1.xsa b/hls/lab2/hw/exercise_1.xsa new file mode 100644 index 0000000000000000000000000000000000000000..4763e631367b09eb0e0bee8b5a145149f2c67469 GIT binary patch literal 1249344 zcmV)hK%>7bS`7;y=iwF zN0Ki5x&15ZojK=b9%fHc?AtW^5S|85z0#AJ2MyNB{Gh)4Q*;;QD6atu@!ZTBTaqtW|0i?{hE? zCJ!6l(PX&gd5!Vd&H;+dCWD#5i{_LH1a@6}S z-rUo!?eDhZx1Mq_I7YyKT?J#`yPGfj!6aC04f$s8CYXEtfc`sJE~dAGMKBzU$6vi` zf8x&u3x9+cpYz)O?z?{vCd2V^DJAEI``&d-@l98`ZwF{n}7T6-$(vc zF!4RQTIa{d{pR6^{_$D!hkon$XWYcKThD&2dD^qD)!wGRclhzpyn`zpTJzj}C+n?F zyBm3{_T6{$1+eS|lZAIXnE%?pn~uk4lb;6TrN6eU*Sx`KwBg|oJe9w`;NkjT(!Wi9 zBSp)lWT8!bw%7kAR>2J48QwR^d?E<`gi|3ez)UalN@{R zy~;y{8vc|0P4i6uXi~4ONfXp7^Xz}T_x|6SikZ3hf8Kj*U+~Px-=FaP*>Yh4Y-m&T z?Eg|bJTyYVHSykcY)~Z2vrk3=lWvhC4_!iC#yZ z${+v3Tl;@zP$`f94-b4v)4>0f{+Rbd1ju;!b@Px=5bZT4jJxreCyhSdTmyzcFucC~ zAN-&H@H(WWy`xi_#rgMk?5TfE((KQ?cl;vMx%XdQ<@4d;+jgZ=-}z481Ca4_dWV@5 zuao%Gchi|SoK6?q@VMxeBhAq&tG?#574(5)E~X_wIwqXnH>n{^1w*!!b!RE*kQc>BdKY zd`F`MyKZ@G4veyx1gCrB`wIoMc6NB! zZTB|3lScQ44ezJM@kM)G+FJ|RcY_)~Z0{YmTkXROZ=>?C*WNj(GjG!{yFbOW zWnz@3AqNtEgpmG12I#*($A#{2x2$+xoVOaiws&~YZyo()dK`HpA;7)Pu`9t9gZY!? z15tYH4;M`5kxw7plI|c)a(@#HZ@eLs{>t}9b8i8onZRukpwFaf$Q1Ig`orWXm{&}a}?{=DaC+DIm&ETs?fN3i5uL-wz(-}+3^orX9jxGm;tWkhb z&%nL7PmSew;_!gT7;Q1-syyuMhP}WTm$S*-qxR8=wCP=b^=kBcumBPQni%Mwc8}@C zAC9IZUXv*ayn?$KOh~2TrJtH-p{m>P{?~H8;QQ0%;%>PJALS2-hEsF9o_fT|c!s1-1RH{3>^rNIWqtBr{TTt@DfOV$Fk}8Pf&Vvoa=M`-U;) z$0He2zmEKPNya2pwL3kJEVXt?Lotgp8^o5g#hgAMyTZ|oTi&M|pJsJ_j9CZKCo;ti z12b_4W4PyFHibrZfDm#kpW57Uypel7KeekawX08}cGabJ^+l=OYX3gyZ9Dlg^nUcT zqoAB0FFWltKen4cFcP}GM(;wkem2F?X?fEj`HsaV1_jj(MeZ9d9U)W*KrjGL0k36U z)fMQm8EFDD!_2{_`d7kGcPO=Kkl` z4w1S4Y1$z&_rI)mh%;XAtbcgkiu2!&4JEY51DTTxDM2halk6@EZ8HhuK!w|I)IIA| z1eb}+iIFHlxRrr27kfR1x9u7ZrVg;#@p(&FXgLpW9vVuwXhO1p)UlKi_}-mA3+`?R z+E}08E+7248BrN#*x5Hkt2-VFn4~N-xLDE#Nu@b3Emttim*fga#bKw>^qPksOy8q# z#P|j;#{-C#X%1&tA(%p~bXzCnzCwqYz?#|$BuYB75ZR3HeLE%37WyP0SND3N;HEPK zj)(=WLbwuCVn|gNlJklMwuJs{HPrU;8lt2EtcmKN3|BZ`7lZ+_dEa2B-#%>|9JgC| zFXM82Wd~)hs1Y}thWU1hW@(^}XfyGv@-W=n9j3Ib6tZof+Zaa~fvB@U>=U~l(!~OS zAI-hpW=VmtV{oOx0yNMC;0sDa_vh}(*{RoLL*`tp&)%5`N#jG~=oG&iKb;-5ybs4m zz2-;n)5rFyciR5k^N!B&)~6%PG765YfeU(Ys>ZH&a@J}abVS;9WUO&Q##H+-rkAS~ zD`LCeCCP{~V;WPq5R4A4;=PQ^a^j;PXK8m_^|uBz5zl+ic>Ie;gQ33}UHDO@A6R4l zOBt&~!DSdHE1M-|kQvs=DrQLpH)Lvc+s7dyQZ8$jG^NkHu&RUK^1AoIVt4~TtAc-x z0x|e75*|fi51Pk6G@ALYlchT&#A-xU1sWZm`B(nTpA4hzmQV`Bu{?=Y>xVR>?a3@z ztyF8JX35A{A~U3cC%_H77t{$N*JYO0_|4eVSbNginuS<$agFr5+g!=DwXl_Pi)+uk zwiY&DZgK4iYimwZr54wysrvUBjXh;;E!L01#kJpTZLPKgIg72W?e5i@WoGtpl%d}f zTU;}sUQm8lT3pjEM}4B&?|XGE#7Vj3waQDZt~s43wY*k&sEs1?+qbs5<_xIR@|uHH zDBZ^fGHR)-Yn587%&hG6*^OjGm)8{53rh3~%WDPl{6~x}-I#RLIxkR%Et2ca_C=um90SN{xAWa#{_tO1+nTfTb_dW zZPwYOM;QxkHZZjELR$iCK`i#4ccE>^Q0);5ZAmOe;)n*Q<%`#eBbHrilisJSwbg$2 zYi&`~6fd?_LeKdrYi+S+3m4ncn|<0sTP?ZJrYfzpKoqaEg%Dp*8XD&pFe6IE)f=qW zjTE%1jmL-84;d2%V9BVux9XOaSS#hC>aLoO4{EirdaU_!QFXWZSfo2AtR8QwR8$@K zeC91HY5gdSs$2D{Zp3j-D6JCwuu2gjO1*n|}<}sW{ zQTv;Xr~mWP`>D~g0(w7s+EGxi<_11Bn$CC#LunXPRxn+L9Rd&x6vWcY2Gg}4S@cK` zrYCxoLWyrIn4T|jf6V>QGxtBgb|@c9kM}silfO+UojcS!>mNrV=^}QI*|Opc(}7wL zNcWx;Nk2@Bq#M8NG^ntD0;p$|KUled(t79%X!kz%9wnu8bwcMO#M3Y<0Tn$m8fbyXTD}s zHN;)HsOs}mI}ycWIFF+CHycI&=cV`a#K|)0{pe{&LA{zA_{>ps461Y#oiXrYQS=gp zpAtPvP~w{_{FEQGxtBgc33rvo}(Rpn zSb(plAb&b)wa-e&(SKs49u)(tI{{?XIJyD&vT=0V%5M`#x6QwN96fC6w~eDm`|&Nu z(Ro^XWE|a&GBk0%@i@BlIBNZb6%2ouadeB4-!hIKcA|6~eJ|_<#`ulJ(Zd0~Y8+jv zF(%{adu8V3u+Of`5|5)Zs27yy72@dm()@=no$gDAWG?4RKPzMMwQ3waoiX+6$d8v~ z%vIv5`JDNhan%ra<>IQ(PwiFX=sDE>X5;Apy!3vSNLe<$A3g0Ts8@3YpE-_>L6wf9 zGX`EPj=tm4W9N}^^qp@lj-D@Zf6V>QGxtBgc33rzo}(Rpn>admC_Rq;)}m|WIC>oF zzib@+t=*dNh&XxzOK$Mc!n9oR(s6VS9+nQIbLUe6>0w6L?=_Gf!Az+@`V&u3NNcuC zAbsciJsYNbwphB4ogZzaV$Lq_`Krq-JfPYLN8twCpafhFJ>iCbbhfM zxzId2?RCz`{5o!S$R7A`)a|u9MKX2KJ*e~#a0XT4*o4Zim8+&qxWgxx*-tcAP;1{| z)WQQ6lCX6O$T+{@Szu>OFO>&-JZXhbZ{Yet=J*D4l*7Ns=?zKbbaRhzsJH=8R~xDt z(9rPgv8N{xVBnO3AbDyoq2bIk*13w;ECYhd=yM8{n-O&Uai^Kr|?U- zuGDC)6RW-h5JTg?)@pwvF6DdPU+epS^Q!WK_t)JW`eB~X50@>D&Mx{0m@y`8kB$2K z4F2e+F^FY~>~T~}j>8?sU*A@#uiDkU-LhS+mg;JE+VoofopaRY$5%9Nof>0g+lt`Qd*Vc zCLSrJ(b0S}LfSn)O1F4lAlB(N^~^#Vh5fujnhHBtNXrIM{sn|Iik#nGNQrUNg|u7{ zB{G_PA$`pl%K1^+OiEpN2_b#4nKTOf*@ZL-`wt;aL(VrKr29{bbVf$=%?N4p{G#7^ z8yC^O7Z*#w4B~c-tbxTWW$?JZ+-7>fK4vSAB}Um4aT{f`CrV| zmC3?e%m$OWWKPb#>nWhyfa2kK3o?&CkCBEhUe~X zPmad4i~RfH%GyGWFNS0-H?IYpxM z;&V|$R~_O)RLZ1_k0yUEdPTzy9XswK6Fe?U&u`a7+bR^Lm1W6+T_j3gVr}4GU6vf= z6p7L+$Wn$~cUV@IoYCZq5<`3)QEDB0i0#ehu^v2s*wJmNSd3N^qzLRnG5Vc3ND<@| ziqR_w(m_U?p_GFZ8BM+zy`p#2Xq`0D!uJQyZ`?(iDj`U#$Wat_u^|1fjJqguiUsNA z<>)EKU34`0g7k`}-T86qT6OdJ=OeeJ5@NKH97SLkuYx@pc8-W9jmCfJD29uiVi5&{ zzpRWlGnTh&soeC;oZ{hnA?CtWk zA@CE}+u>`4_E_$AM_r1$Uzo2Xf-RTwm0rbs6&Xu}uM9i~_^avu-qA_B+iRShr*T(! zQgoq~PQuC8)s7KU{rs7j)u|v3{(Xd9V>vgMze_W=0hi0)kLK(YeC6`DW7j;J-cIR5 zuJ(R$y)B1RTX)3?$d!<e(QA| ztukHZiL-*skm@WX<_h&QOLbNsa)tUurCJ$0)f%hpqF|m^sMBF*3U$>oouaQ3FOY3XMt1foOXW_$=@){XUuCxls*OAr+vXoAqr7bBtCLI)s)@x4z+yr&0u`x&F_4(YhpxLz7U}K9Tget ze{3A*9kb`q@QEG0T4Fayq@&cA&jMD-67Cqm{t+G?ju6CGhPn&c^5IVw!3-NmE=rB^ z@Zva+CNHi}v`TN?_0{PIJnLe85{|~S06U6f??aoS0o4l~5~B)hUI2D4LbM*AS$PpjWMoAVo%# zAMRp!uOv;aPF#}0ZLh_Wq+gejB3y|`lu8Y+fs~(!9dS`;j}e+QX;E;G6&iz%5(0zE z5t^4_SltL(aTyj@xp^0;jx@CU zC^?Fa=9>|u-r0HgQ~#uKbQ+hWFm=38l43v#Md^1WNpaK^iPB3flEnK^BuXzXNhY~F zDM=+3N#dg^5~WvLB$1BA_t(mR%lo-;C`H1QIO)fgrMS;qPNo#xx9jI7a8w{w&zp^% z(T4)5dU>JJOo6yiz0J?Y&KOO;R58rgkt&2h+r3M^YG?1ddZ9!pME4 z@^8daT|O#waqW zxI;jo7!bQipt4x&O2NZ99P8Q{K=Fi=kNjDkIcweXl8sm-Nrxd9P1KSI2`>@q^^L2={I zsalc|Qahex0)qEVFo7J_^mryk>}E#i--Yz$)4tt|GDTc zcz6We^E&?Ow1O}y$~zWcx5Ehp>{jlA)6a!rU|_D7>xKbQoI{%EimtbLgV zqxJ9pca&*bt&Vqedel2=93TDC=pCJ%nvo}7Yo49KXmhy%~(A_nryQn5XHzJnXc8yl9^`f9{{0wc2iv(ymGvi8w>R zd@!Eg`||~N!J8~^Fa4Qx zp~ko7G^8=TqTsLvY&gBWBz#Mqdo(}xuLt9IhGWijJcd1b_fv&L&!|C=$1?ZapM3!( z(cn&`!Ge~M0%+S(aA>lE;8?WLYL#yt(u5@U(ix!9>>d5o?spoeKXmaz{^f*LyRA;+ z#JgP12#aHXa=o}=_H?>=;65XXta)op$NBQ^ZaM=!u55P9E%j(!1_GkRKiy$8v&6<9 z?PIJJ^GLx(-XPIUX_%YbK%vf7rzR&G@ZUS@USmA=rl6TZ`!X0WeIW%{PH4xWI41(< zD=y~2KUCu^rruzP93Xy5_)>6<6aAWFg|{$xobR>Yx6=_?Q#D94zyhqHN{n%D6S~&G zMhDHE?R}DyO?tk0MT2DkG>bwxN8st3!5nW~l7?Br2tcWlO>A~xl!A3a z&2TmI|GxAm!>``-&KGsHWt!j>4uFU^U_eeRM1?k)&Tf&4mIm~QNx9=SJI(F80ZrOp zi9HsxufU`~!79qgqiMW(-sm(HT<^HLHJlCm@_L_N@5{SD?D~c`8jt%lvOf1CPG}Jd zViqG*tiw%!n;B{9y{Wv3WEMIT;4xdFr6!ih)FR=XIqCN)I->J=>qin0Y(E(-ATEOi z`pa^5`85;@Rv}P(%dwdYVqZ?f7ons+VsB2?8?1|dTn-2uhD4dK0$8ZoPp1p4YEdtF z^H2DRVp^faMZmD6QLg4I8Y;FQ(+qnzW~r|33U&S->0Gj%$F*RgCEI z3|pdx%v1`EwAcx$e#mU2E*$yJ`w$sqT;jbz?B)oi4GCfdZ=SUJo!)8fsCC>{f~OPf zL%Y#woqakjrwAN9KpL;Qf&NU41|@Nyd$k^71H>y^Vp!b=bALk~Rl`R|6Z@iqyC#XD ziJh#gThLX|IA`AT?-oRz;7PFh4@u*TlDnETK1MlvaYa$Yi(QvLMY#4FH|; z0X-pvj%1n9xF)6>>f(A#9XqrX%1qQ$+2;S$7|%q>wkCt_qIH>o$`C ze63h<)(Lgb_-gVcVoaiz(nW z40Q_;k3K!=%aivsMXe`#$9}l&o`M?&VfU`QbJFzziN3ySXMOD=&HM=Rd^|ELe<;w6C1?RpQ2}(J`V?*5G$t;?!Lb1r0P6lk~nXska zEsEAkJQG3HcD-_V(5|;QTHCBv_N$dzPT)W6aTuhvAn+pu@k&A34w8Q=PMkI@yVTX# zg(fNKH_-6xhA(Ep^)&}LV=<2z&WNOm@g74aPuTFYafsOtfH`y03H@ZuEo54e53}&u zcC^m-axuN7SB9LuHMBm?0PcuRIWVw&iTs4!;5dmUhq(hV(-XS4@U4|hTsNR83r5vK z(h!^jGHDj{X|CrvEyT&~tbfl4p_!NM$C+$SNL)&fqdTSOulaSDy2hmipeWb_)MOM|x_ao*@J@;wZZ zC5!>6Kn?T7)Pxqj`{_*BuhTj@IhnI(!}uHy;P;Ri4W~0|{BEk?CL=~PsBnpZwDyg| z=N@ZDeaZj<4v;idxFbSC@BUT6)!)_rW}Aq^zMf5&cMO?jXU5zef~fxuUg*6~ZkNHG zhDzyS?Oo+>aU+i$<-r}|KC=Mg!|trEgs@=qf*fWkQ|1g?T>;Rr-$^i=P5Fph8qWn| zY+Dd#!x(4F1^oD<$rsW(8eB4bA}G!ijRxJoyi!-2L|BSFvjxL=uhz3 z{S3Z30t(}=OkR2w^Vlpb$^t}5U>OcA2lsJeFaHuM-|#8BAzrIn-bd05G~x}rSfk){ z%_fQ~MLG27EjY&T(5*o)_Y8@*mq?gJUliP6#v5U^f3g^X0LqtO#EG+8Ui)DHxa3-q zpS--a8d?afW{4wcx=0VfD1R-xaZC@Cf?BeN+t}DLAMG=Z!gi4X$9t^3aGs ztnx!vG!KW7hYAh=HV~tb7+EC0EY3GrV8P>}%UK8v7dY>4e4doL)2jvYiapMK_<{mE zGUW}hc0{biSuN7&w(731A|TH^b{67G{6p)X}gIqLOp)zVgCP{^+ zF)g#uVZlf)KWorVvqcVYXK&ridTDJNF0@^cHbrTMt;X9U9dSJy+=4L!e5K(xg%&P} z=CtgLnx;`T@|JL%LX$z`6&Z|qnSe0;RNW6QgE68L4(XHQp%(h>Q@7ih*Hg!XFiwYbDC@10 z^NzP>iIiA=6r&(M(8%YRL!xJ|F{FqEz9rrj37~?LVWinQ8h(?pvB#pLLj*2+P@R77 z=kxq9pkA)$h3;EV1PyFUi#qFu&niZ;TT>PnjZWP{KP&cEnM{Ds6!0l0Slx=uRRG#)8v!bpjh9(taBt zHID2)wu|tzzP0z38r7vtGPivs%nkee*Kqu+7rMW}R99wc(wOkaWP;@IHk0!kzjB#c$K}APRE1K1w~~2qmg1$ z2yi=4a1SJwx8SE>q+B)f?|e8bQ%z04tkLhC^%}>rc*qNfIY?3r9sJzOLl7=U7e)BG zG#4xTI#^Y3DFE-!1PMzWp=G~6?T(@-9%oBMljy$P>Ij3t2uo|*8a zf{U>y^W_%#)Xe1-OdHius7>EClrU&6kcJdoc6(_J8T+)5fJH3sMYz1pQ-XsMA!1LK zyTXMs`y9TRSyBl3qZBelg5zTlab@t>lX%!Io#BXGn)@_ZaWTcIs@Nrg!i zMvYSz7mIP+K5ZNv=Oft>lAeFdHU^Er2#lcpG11dnm^NKMtcUYuHE$8Po1%=Up(wA4I~%y^q-0{nRqfoL9e@9hl3+1=BTJ%Yk!nmV%2j*s7dm z5*!RTHzW$vDhxdQ!=D)wIL<&cRC>|_S& zZv7Dl-Q)q$&c|K+5&7=U=DtCzA8gpJ(aQan(mj&JZZm;n(F)_AY9Cq4y z)taMG^KjCw0@KkYhT(v%1Kkrqk8h`6m@?eGjx!oV5iht^G9q|LlRIy}p#Mr75weN( z0&?#`uhw~M+b$9C?8J$HM&mPmxIb6^Otk`mvVny*QR?e<8$^%w$xuaJRdD8u_{&O& z5G(+ORM59F5ibbucRv~QW?v5Cb@50BC|O1(4tcj+*o<9{)By1VF)@Xo=Yua$t!~u8 zW^*~KJ*d-&_zO+=w|9%L@vJa2C1bjeXE@NWOO9e|pRi+%cqFqMX;uR%bp@BH+eHo$ zZ!>HD8ga9o)JU=@b zaZDw8uit3)o8A6Jx9yr(%+c%{pfT1qbIFwT!?}okGI0zUYZ?cqp(kyAI#o_IdKp9Rg5M0d zOEXHJQ^BGdK|bA)uVQc7I13^wCNV1xU=weis05s|1aw6LI0i)Uk?@7B>j;{!PuP;jOC6z@(-9}FdO zyOPD@u;>qu#8t*N!q!nY)3DD`r8#PJ6kDR^*rQRMrdv#D?xseGCT1#H^mW^`1i=%`EQtYx<{xV~)>J z;Ev{AN&B_h?ep`qPi@KL%~ykN!1;=Zxn%Vh*=cb-^|2^O9dXbm%P9l1vUAJoM@I)y|b%6S!gVaLR=-#m?mKng%Lxkf^#uj5~UHS2B!*+=2yCZ1;hfQ zZyt+M3ogWL36vW1uNa{blpd4KFX}VCOrS56aT@E+p6$J|B|O~D$9LH7{Wdi_gr2U) zXyXnI<{;K6x7e9s65+4B)3bBvCsJ!-UpagkO|=4-DzqG4b$7&F;^-KOkOjigmPUZVuON;1)sNfRwV#G%zY}lh`crn<3&XvBxWfA2$81FuZ|ku<58a50!m={!lGS-P9H;3mX%;8W2m$K*{A<&SoV2$bz_GYmZdiLycQt zmLH7o2VXI4XZ=SDyeK#bl7zYYv#Vi$GQEYp;e;SIfX=jNH6Ab|24Myphh&Tt|L;qQ z6M&Mib0Tm3=YQ6)a22lR7;xck9J8{pCBb;z1@peT9?1rByX5pm!D*K`9jLHRIVwQG zK>-_{u|jV+6{WH}?e53^Nu%@ODA$g1s&&FBy@5$5EGA62w&)x-saM!(H=laHPL$LO zYT{^}H&zRuj=TZ3gAe9*&){@2)LNPW_RI=@nU~j0U$?ZqKJO;_b9J2?o_k-h9Srud z0XN`z3S}Qqeb)3+Nvu8|IJ}YiUVvuI8hAlXFS*yjqTBFe+*i zel@IoIiHS~JYky@0wlBz`zt-f~?NtIubHD>BURI@b>Zt43+A7@@a^mfQr& ze<0FeEu}f0a;z5f3eOqJ^ePQjG^P`Olev(HFc>euc!sybeS3F}>?t^{v!16W?FPH$WHdbY@C;+Z}SwNj( zfrrg*U&3znt?z+Kwz~gY!NuK`DWZ=5-R`#bzTd1JZrzQpY_@Q1o5N61eJT_DomEuY8L`yBdlM+NUd;dQ$tthx7V>roT0~${qtBpgm^Rxk|(;4d# z8vdcp-0-~*)CX#9hV)YXcEhtMhUSuP-A(6MWV$93Ck(Dujjvz8o&dAzg@GCq!v)x=a7ZC*$a{(h|gN1%# z_zo-}b{);$w}S_e3pDu>Oa!wk-p*kbJu*GU*FAd$f@yBNM%;oz#oRen@Y6WbKjt6YfQWG(nV*{H^QKZ}k zhEIn#M5G~4W#o?DEl|rX(77zWI55$MzjN$ z$0oh?KwMFM@YZyR88(X+?vuv~j^3(0;687}mCtr?L$>K^V#HJ|7SyYwx7Q+58=zJV zp#UWL%}&}kZ88qOl3_t2;g7j|0Avhhxx7>3M#=^+z>3t%W9E;}uWVD%U1zf>T93Jr z2tvu0F>8`xsg*pQ`KH4L6L{AAfDI&$H*$r&Dp1HjIfbsWj(?k)U2NDIqB|am8S2^`VW}_hp^>S?<|8XY zlg1AOMS}TDqe1yq2?1e^MqJl90#WlR0zM(=3AV*Af`JIBy}# z`ndg5)}aIr#yE`hrut^X9<7AlTh_VuCmfWtNkmFF`ObM&!Lh*^reEQU?zG8y`NHT1 zpfmG?9+*M0fkwY2n;#QW1*N$0$wu^kHRFEG+_zygY=Lp#sGB!*IMnYxhGahsvpjV{ zP54K_VN=al8&(R(!!aahk!_CH_!3l%;ZVyaSs~7oElJ_tsMulhqaEd^QuXmIJaX#z|Rx^f$X?4dC;*xWV`kM1sc=n=ymmEhtf zZ57*;e(Qy%DGcGY5 zFuRcpVaHV?-~)GfmjfwG$9LofC&Dd(D23*>ZPDna4yy!27q#d^tjVbg zyPo+2BNIN?lbOUmyA39y{?ehjfCPeqBS55^3Y-zzihCKGb0cDCnxQCEt*2j)7yMX8b`Zlf=aSgljCb&g~R>9Y#a~-wFylTAcHmiK1H{z z>png%?Lq$}`h@9?mq$0lI?ySv;gw7pN%Q?4f0Umn=FC!vg?ekmRqO9;h7apsmIG^1 zOzodE5k)*5L zhNAecNST*t!HhN85PwG+Jf>uG0fw>?!YiqOy|pXxqCaocK5y)NMy*Z-C#!W@{%+*M zTIHSEra35b~zp`^s!YquX5g8~N+*K&AV->cW&F0|;H;ZV`&K@oG1yCk?KAbHt z=Ud)Sy!SnvQuO;Re>jxl?(e<&n@iM71GQOeTqwA1yWcta#Qf`DA?TMNs{&(lzuW9w z90=C)E_YKkb(6cGJ~?SE6HUS+cmK4#Y5b&3>RofY)oyvyFAC1b#_~&=#pxjyF=V|& z*Sy4A!}Q1T9+<9I60ZokI5{r*Z;7}BUyiGdel}fY8`5u;1&KY!lc_p~uT}~Z-%R)8 zj!e}#aFwCFCd<0Z5qs8=>1s)T#}2uh26Mt0M{jCUwv07AvA}XGh($)BeFx z?t-DqCF0C8r$_pN(ZT_iga&4M)K=q?6`H+5STcpzj31&FosB)vchV))rK@aLt$}SF zm)vpWT0>>IeU)JPo+xO!B7S>0ZjZ#$4V2#^mL3Lh9EJ}MpU0GKHdKV^JuULuu-7q? z>Zw85(7|$d3K}Z%{CpMkXCp2qP8#0X&=~th5^gjw8&+-%4Kx-ueeMAL!gGkg)wQ6M zx{nxx)D|!-Y0dD(-OX15HXe}g(J?tC7;iG5ph9YDUZ62ERJFBq;hC*}e1U|wp+;E; zBM~M|laeWqO}8-8rr>lUA#o`VxxKF=uya1V>z(&$fNk*9S?LB~NQ>J%J7~LxkKE?9 zNp3E!oh`+U1q{;4M` z`16K>>!5C0mPX(}pyWEoS};2)*`6k=!ik+(ykZ3ig@!|%rC>`&eM4ZzP;Ph&9Wj*n zx^3B(xl(XvX=@8c#_?)+Nu4_*U0O?mKSLBrv#>xL*?A}85^HoOS-2=Vb2pvO15;8I z)fY9qBv2AV=SUQaGXHhwZ@^atNsem)qvs_mn-yZrO{DJ`onf{) z3%y_fNX1i8h~c;iEzXF;z|w-lt0Uz6zd@00OITzprW_RJ==jEQyVL7`Y8>_Yhi9Ga zdLE8v$$C-^Y;&HDjQ-X~j5L_vqNj$no7;`l*}zn5gvv6$brv}0^dun75M}q%QiL^) z8|W5bSLD@z8Urp}8YB`9a9WsiREp`G)m(g}48Ou}u!f?pZo@{(SS7UIc1%1{*1)zB zOQe97M|8hJB;HNnlOY;8|xeSt?YMGwNh_`|XP5~nIn>O#3%=y;olX86rMR&e$$ zs3Iq!H+B6hJVFv*L^O&Sr2*lXCWRQtAZ_GwF%U|HA|guRbVSfcs(vAE&aM`lW9Gb~ z@|udc_`3{_UQ%#)S6zt2s{)pEW2f1AGmqYNzL{Zfj)H5PgfE7#grb(cQd!N#yUJD} z>SLUzc#kisui}|E*)y*n!lV9PP9W!W)>@%w?sPwN&MhGP2m!sab6#_ub9)5nPtgTU zw$nLEt`SOOhZzT6j_qdzNLd~%~04Ix@;Xd35DT%#TA*I{@JW{?jl#HJ0Zs;{KLC3(|G0kL-#L{3J z^ZK+xLkU?u?$Ih>KG#v_!KOa#uw{05ba-YgVKKz-rgwJ;5-7OkVoTCX$p|(D5HbO2 zxWL)<#YG#2L^A~^Y{}{2Y#*{$ChPO=+@VF!B!gTj3$q{<9KWR=SvdLtl>i4|S1vmM zaOk7Jksbih0xpILQA|7(4g2ctD4rR^&PG-Kz~^(ChDfJDsZaG2xXhnHpMrA&oYFM* z$~bUzYvOGB4}ZdO`az1FO=76vtTeh2mb5O(7|j#LtNQLF69Zd?4tTa5Qs+u(%hW{Y zV7~`2=^gn;iU3%2T_~gASRb6h7F3m(#%vmKQ-?_qM$q z+(RYx1DvhnbRRtg4eT%sVYhXp?z7TE3=q^^frL%}gi_$Uu%)DH(Qqso|J*WM8VZOdyq{%!89 zooAc|Fhl6!M(Q%w-yu(kIgmG#vLCyKf}Z|NxsCN5A;I)cun_q3ZKrL4wj&Ae$(f5e zTbVe*!wb$>=0qaQVC+_qsXGY98=Ncn#&zll9V{j-|88;f#%vMcaJuQ7^jNn|n%uc~ zSWTCp>6P*H9zv9Pusp)vyL`?!ZQR=Vacw6+e-)f)t zK5o_wxHLeg<>A!jAaN5Idwhp>6p%nraF6KFt~s~d9h8DwwNLwLun35PTcul7XqE&` zz5fry%p=7r-L1N(zdxR&wLD6!(w`_GfuP`4>QFs{4AdC~S02_*7A)?Mf-47VH{Z;> zwppsVrlNpmuw*9oKb{@8WUp8MbL5yr469h@qAI*+07biSr_T(O6wJ9jM>BlF~6i9ie=8EqIc)N2C#$KlrltI z-XYx_z()QsKsfFmHmp_;XEVxfVp5}Y$p>`nf(&K=8{M4wC~b{=A5H<1{v1s*x-(mv za*u6P+x(&J-2~U1ZYy3;7Sk#;Qx)3eD^@GD9lP_1C00G!wjVQK}lkrYBYFrqImq=j}&T-5NHRoi`8gZ?s zHE&%0C|nqL1GVFb05$3%itRB_1-J8fXbj7QCluTxq7-3fx1tBf8Yws!nwP|J&XGm% ztutd58GLnqM#cj1LH{$;GXHYQRHgEjC?EA3%Q2Zjjw|WeTxOkR=Cw%n%bcmD;37mT zN3;KYA7ujOECtu6FwSC$Xzg>*Kmm|JFQ=MW~D_cq$7B?G@USIiS-n z%>dwliajgDsLcrR?3}quu4apKHJkP5R`44AuTfwr$QVK+!NSnoHHGndMncs!5^UPq zX}l`%0!Ka|wM?-nqNA&By5I~I><9y5iH3#&(iz8LnFBDhS)0?j2M}6Zb(CkFaQ?CN zNDgiBFAk0|OAhe1oFu?3nAqDeus$s$A(f}9GEtEma$1I~Di8JDT(vR`j{?n_pDdbG z`hTDZg-AlxqZV%F~_Hxr=FM;N`5@ zGB^$w=&37=XctEcE*DiR;7GycqH1LvL7mZnN+8IK;3!|2t+L?Pl2lysR`y608MkLw zl4u1^jxviR;u;w0@hFVfQ)ccmU&}7@9iez4@7W47%S3-E^K8g$n06MVn?Io75@`f7 z{~E@Nvr#JDYyG3val79*?2%*JX%qf(8GxK!YsvI5kf_4JfUW|B295EeBZ?j;7#)#< zOHGW3?DDc^jXSQ0Jqtrt!6hxwx88%dX#OCUOBOaxaAZ;sYu)|k@mcc+(!=5C8{a4}tM|QsCBgX*CV1K&^MWKnnK30Px32 z#|B=vyaVE?eW*NWv)1vkNgK3zBhGGKyhf}v9B z?TSKk7o|=*6{knoabDPM%ZuSy?dHVI)Q`gr5~&gz^>9E1SLMOlU-^Py>g1FWgf{!#F+r#!t8Bl7Anard zf`RdRg7DTA1Uq^B@}qGS5fch7B?3o!^p_v;QI0tmwc`|AnCDuDLk%9Vj&cuzeDVvPR8BdB+GAy@~)#^IO%WkgcRf3qP6#g_~?)3qs^i`Ued#e!BnyQTZ6^XeQBPM_LTM!e;XU)jz z*@vNQ@{R-eC=K0|e-a=o7cjXs%{<;JXhJZq}lzX(>1ZYE%!cV zeRfW*jjVlDXrPO&q%gpdDHq;a$E_N2C{;s99(i+>&5DjJ`6{%E@m;Aqyq}UcoZWL2 z83JZXW{sx2)r-rG8gvd83qEVf;SBE*iI*5cGqRb5L*UEB-Eu)~m_>QOhZ2j0 z$#tD0-40d$Z;*u-N!<$@vinJOla;}$p{GeCpoZj-9?!qJ!bbk7aJj{CLcVTP_fq-Vx&Q6+H9DKc z*Q+vc2Im@Dmt@|i%}`7wd?BG;SB}nyogX^3LVW^GMCs7$49?yD0|%c1Fk**0xGy0aJ-&$Z4ka8 z2VEHSgE{$z92~@fO~UxWCX%F;{R}H0CXJ3P{LwqFQQvHQzd>ZL;$LUmU4Kmt!0JqDCvw8I}DbE03Y(20#b`3!Y>ofT?qq`6^+vP3Kq>N%h&HIjbblAwUgK4%cbcaMV zl1oC1WmI@w{XoU4}Sgu&p*&};bfnO?C1{#7pjqx`orppsDd!OnxZEXvS^I)s3=Bc zP{Bn-k?FTBBxV?aRstd12HfI8%Sy#Hm+4)+V?kJEfjPoyfqVTm(%(E43EM|-gieTQ zux$z(Wa&mZ+Ur!oW$TrdG>UzE%67pu-utI_bNl`*yn2gre#v%!1m4+qGif=P_dPQDPEjf_m(aBk8lxV`P8 zG{og~KNMX%-k5<_HH!2wlx+nE5f8Ovx;AiZU8cB`RAwbW!A)31@e$}2vJ7J;0%uL) zExZOoo~q05)E@G~b$Nw?af=3OqICK%MnK?a+)HELlEDR3N;`<){&a6X-!SQnPG3u^_5P@Qxf`h5uo zbOWWCD%wBtmXE)~{yCs*fpZMSU%r(eT>r*5o?m2v-0&`9Q9J9T)D5eR z5{$`J^#q0iIsR%spG+s41_VzdWBJyC6A&0Dh!l!v1eC*cda#qFcs{3fdyNkt+MRy0 zo5yNypc(8E-!!Ao%EbE)ovNjF&kU}@s->pi(Zm^s68?C-s->OA=?}4ppIutvZLMzV zYSs~5h)zWItw&GwR&a7^{Plo0d2s#08P`^XJoBcQyYLWH>;^@ZDx8+fYqp{rxxlo7 zL#H%uVdR3u|Eum~lM= zCjlkQ2R0|TI;rSY4kpP`IFWa73$>wIi?CB$G=E@yU@}NpYo@?7gkTRa0(45^8-rTi zdJDKYAT8>&w=%O5PNS&n-DI7(!1_=*dtp@1uf#g4d70vXr~EO!y3$gf5lS*I$}9Yc z^^^%vI9WP#=eUm@w(=ris5jKsF&g1f98Ym#?7{JN4Fp$k@vR4$dk(6}JqKuzj6i5f zV zqyMSX|Ij$cdl^^dVecE$S#l7!RatggeIAwdt3lecsI1r`O1{pTjS6*^kvvyt>1V97 zxNK;7y`#_)+Q(Hp0cNwE1P-TKmI9GbWXdLZdoo0nfV`41f6fjuS*ctBTtthUxSX3>Yhn`7w=+w-fE zXYAic%OtI#WF3@th)Ur~YB_;Q1*aIbIA4c?miQg#PKm}3Pl-azfms1P@W;WmI%j6A z2q2g)E18H3zd)0_up~Mo%)vKq2D~BYY7nqs*zKIYIe#XBbAxQ~?gZQK zT=SKiG<(CCqY*DE@h1VNdHYYk(NE`l}c_%aB_HnxI=!4usmXeKs(DDptPt9WZ>Am*r&b+^Q@ zVWW(%9}Y_&b*yR}iGZrb@k-uRd9bxGIvDy>9C}Uus~~sJap?EdI0_34(NmB3R5b+`?&^Lg zrK;4sS$yhv?XlNoA1qzi2)bDVh_uJd#{y*$NuDcaidbn(c93PPO<6u{=unUT1+ zYCqk6dC={7Yto*~E!3fPh(I*RXb)X6HV3Rt!58xsfgetJUnXdzeI_}^f=PfQBM6mt zl0nmkve9k!TUZ+NP%fKHrJ`8#6E!T&kU!wHx2a7kQ<%^G;rkT6;tnh`SZ*U33JNq^?%WCUdV3e3ZE=5B4OtMW@kSqnQzh zC+hqdQMrZ|xmvg9ATo&BYz&MoG%N>RTN~q7|89YL_Y)vlH02{THILIO+f?l1mq zDyG&KaAs+$E4Va&Z_Q$0v%0>WBJRoaMirX7iz1II1V6i=s&hFTa->hmBQ1-mVl6DD zjOkWMG(}Wn98n9a!KG_yxLTo|no*IdnlawEQi+>&1=MlA6-;)!!W>BFajj+(9kc8ibZlF(GE672Up%4-WG!op$CY# z;fy<(UQSGLrpjNdwZCzQ&Z##KYlFEmkoYHbJa=%78u|12FeIQPBlGO7bhxB9pyus+nEwJfw$T_Z^0#F zt)*c}X&0HUCc5C7Oyv;84%ib4I@F|R3^v(%n z)$BUsxAhf^0YLzIBW7;$jUCkhIM57Rq(x08-`fYI{Sq43^e&%p+nlmLKJ5J_%u9F$az;1)!kT@B&|x?;IppN@sQBn^nfLT5ucNeZPK z+_W#`|F9KqQz{eZUUP-6z?|Ey`GA2flr-@X@E*Y1my_uS%x(&fwLiyIs(7AADvmn$ z^sWhlEN*5Jsi#+{O$B#yk|8;%BI76!(HUmXOjyuf1{G>HGhwiLDJ*xVu?-uUR0g;T z_$t4X19CW@f9Ep3XVz|_jNdtS*?AQ{R&Wd~gPoZ-*;FXz zW0&ZT>(;-S(o% zM=l^|5g)U~wAT93!;&{)x@99Svd~cs$?XtMsNhPiVgC%$5-sU2sCA^^6*S=hRd9f9 zGm7vD{g_U~k>`&xJd5}oX?kb(+8ybpG5KyP)zKHr*<>IBfRC}xMouIL={EQ;EIUC= z6x_&E9K>QFmq$W!O2mG`B3Et*AF+D{_Z%U7`epQ9W(XgsM7xYB)0g*Nv(a^W7LwbN z!gSwcv}h;c+fIVNFFAe$;xqDu58#YiYX+56W@k z?o0O8T5VE|?e^)`i1Tjk(a-D9`nW^vVK`9DABA=)3FTS#cZ&8+SGx*sb?uv~b`1}w zsHIlzQ@I*eWQyC;rlNP6Y<8VT*0g$^{;_vP9i1U85MA%;br8E20^G9jDL7XK6NYL; zC?Rgv$&r{p2gEr8Alw5a&`X20GChw7wZU2_+bH<$tUS#H^Vz~4k#YrBBYxek+CwSKbk+ZHL75G%O43+j6m>G9OnWXmnhWl*a`G$o3Mn2 zppYde%p~_H?ACd>RVmWM3b4(OOc|>8dwqVZdHt#Da~3#eLCUC_HM| zrZjssXsJ>IExCBK!;42{ncZqpsIGV3qS0ywE~Qy&EIuY`Z54G_I(5dz=hEl)9erA6Zm)7;SoN?% z|EucU{+3+ndS$oV-0l|CwqST}w_sj%Zg*;GSF2V5xoTQeHHoEiqx zviSpEzC{3Uz>7yH6ampxaKT9TP?-bb=kp~<(CvKQ;ynSVx+ks4d-DZv1&K6G?;3V+ zPh!^XFnnsbxNKOUG2Rvygv8Nu{^lv~hvp9ouKm$7xl#C3UZxkQMfoZ3<7cj-Q*fF3 zjujmOrIACVHO!sd#%Kn+TIl*MW*qKo@#WM~Ob}c=>wAcdBsFlv32qHy~-B&|X-1m=XaDo**^@ZRF>FtIJ=QIhb603{~6 zGK5!fsoPjrB7B(?D(8?#Goj%WB;;nw#x+>GOnY;bYWz2+aC(x%364-`)LBUw6%|Vp zg4Tu-qMMxo`SQEym;!rEht5QXcDLgYJ9-WQD&kb&(AvU`$?Gzk{Q0nsy{x`M9aJn6I;&eLM)Q%`P1aCCJX8*KR z!DCIJPijUcXs_VnERaq6H6^$|AI^eHC`BwsAR02TD!sf-TWkp_GvI0Al{onzZV9b$ z;sF^8Y_*U9Q@55-wNfJ^rs%{2+jA#r(176|7R;+!Le9Ad)v8Sz%$OKkzJKSPvl1*Z zE!yDLqo&2yc`G_EI`yebPmBr9{>>~Gi&Bo(y44d>PB+D{47h15Yr!*x*|TJ0mt_O! z!wdOWo-L#nXoBYX_HUBpar2jYR@(kmX!1$^{F!b4hD@N~Qh4D}Oknsi$qSES0tJ`C z3n3Gfr+x`jxCHfC4}0Ck^sb2TLUPlsRLaMIm0$vcVFtsfG;vf>5($X8JfhHCPFZ|D z_auSN@Js9tY$UxCS0)PX>3qZtq|lzuM#4V|E`yC?o0-coRkK@yr;4ZB6;6Di8Oh9( zs1IPK+cF0X*`7zITLz=k?W>+Kr2TQueW_N%M1Z*T33snB)22vYx_G5cwaJ-QBuBxO znrV|RXk1)Yw<`0*#m2XvNnXr0{%4VwJ(ibJGqCHGCfGprXZhJTg$?3Lc!k+l-Zhp; zl0Q~t4Ar0tF3T!gktGybmQl7UM;O#)7-di9h;kaVV3*Sh$1IVO(H%*s!0J?KsZ~nu za&k{vvS92F2J@;Kbl=gSwQyPXbGLuk==R=;ghV2EMEqZVY#wjm-(6-6q?fEQ>2dp0 zXM^`hhOX)de;_+`;hO8BL#7*%&9J6#;_SM6869?YcNHc%)%A)MT(ky&J&kc5IUXV4 zn#JQ_C^9`2Mh6&86r?+UWmWQHHe51blC6Pc8Zn^ZrATZO?(p!%6{U5IB~g?`DtJ}on= z*0fTF{7+`pIyU{5^-K06l`<3z&#D&8tIn$5yR&K}BSVX9nY}uapSI~$-g#BB^uzm` zUiBRpqz!MSB`Bw}V-|tG$FCifGqzjCGOtRQ&BnPd-LiQ%$%Gs64Q%S5)*E#bNg!|h zJFI%WmYI^WF2xAVjO%uUI~SO&X`6IVYLZfLNl}(upYCeOBnr*atW-8RsAEJvCgMp_ za#B#gE7Z!pBDD@WOv-Y(I!WA@BV{RkXBq{P#6BbYWwTM6MD{K`i-_sd{4=W-C9 zv5%{pk_42zBS9RL(UGZRkmg+ zxSO0ETB~f$QgBSga{HrlsMd3Mf0(yTE530mL(UXhinOKege=JzSYV$8ENK4dTJi)G+9Ofj0Zx(n zD4hv0{^x2gCJRtlj56R0Erz(sxSV==+{w7*(d;7l36=S(?_-%GJ|G3R+PGx0P9uzh%V61+ zCmjPWXVY!DS%@5{trmY~{dUQML@NSm?cAf+G@-&pzpnH77`d#4IC(lAqP? z+5|5KpUQR_{Kkqv!MXZ?)A|@NQok5%*3O>9v}Agh&1yBUn)J2ka@MDiGxm`_d#Cl7 z4bGCn9HJ2Ub#XZiMWz5RQJ+>CPa;9VrQ@Oq2?8`6Zu;e9)5~7ZRwFu-p1=aPYzUSy z$dN67;_Od6`jD-4)2mfEB|2qDPY5H1fl4q(0YVgJIP~<(sS%u^e^%M=UpHq1*2Db; zSX+}{MhUryGIG^Tje7MKkD)A=4cl^U>nm1sS>QsY@eJr z*M9jC6Hjm{kJb%0VVOR9Hg)UZ1M%St+!wXtO5I86t+U+ z!ve?yWtG@CKLD35QBX(Dm^@Oak>+D_BzSsf6`a%OIk}G#=oREtw-$ZsE_bxg&M2{E z{{dC3lk2hyE^Wcytjo5r42#Ks^~G5sR=;)B?KduZXY?CyPjzk<8j?shhLsoxd}-jcJHoRvJTem`4Ipi3}Bj5#`XLje8FZzvvE@hCy{ z)bGMxE4a+guh?q?E~E1~-HvkxSVEz_C}VUxpYih;ujE}$_*oglpG@VXJi-{^l)6kJ zJLN63^P2&zR};t76Q54_RP$ecBzt**Wm*L%OSVbUxFR+{fjS7u0!zK-TpJX-=b6U| zv@8_7Z?A4jTx^92v&Y`-|kkT%#$kSRsHn#<^O; zcQHiZ4Mv87GY31x2)#0i6TQ;d5^8N9zTa^^1b{PH8}Dw(xI z;e!p_CLp*O5qWvgaGvbE^G>lTM8U=OhMb_ zoCdLx3R1ykN823l-fpYP=10@JG`37v8>RI{4;th6?DRt)jFNwm$xsQ;If24;c~;Nv zjPNP6aDq>x3~D--#i!i_pR&Pa8TA+|4VFU{+7tLR;-M%whu+;Za+jsEf-53-Svo7Y zmC4=xh~$|V@R-e$kW_TIkr}4sm#4PSEm*5 zEyu`+Fp8zqF2%_95UvIpaX2)|xN8_Bmn5?*@yo^ZmQX3h;EYL<&_fC?sgBaE+6C8v z6%mfA$%vH~4x3GAY8kn5T-R0PU~3f2`{*J$p6{!M0^zwyN(KeD8a2{&4DKqpl}IBx z=IFH7?vO_4f95_WugXKcHX7QM$22{&O8j@9*Bwba@TKvWcD>eW7OgvK-$OlPfk^Ph z0C^of)6&x2p`!UdtZ)@cc@MV((>D<&Flq*8`r;f_j?94aoATRXVO@P^2#S8N$6%~Z zA0EaZ=DOLkl_fSY!h_oI^NTcQ=DM zK^aq5P`plbnK*mlnYUrNl$ot#!s+(us?8`hx8ho~)*5LEY6lh76r3%r#;3t@)R?;x z_TloYeEepfRW}W35N5EmTb?T{E|LSyZ4wnP}O_#;F-MA6vYafaW7X;2bd(qI=j1-)0X?I==`30T!43(8u==f$cyne49?)u#sNmeqvMm859;B3>qv?RYslerhHMZ6 zE-T{f5Tw&;HF}NyMYr8YV_BEGS6f!EEE(cP z@*O{p8w)jcB45-&FAh~uaHL4qA_QB197+wi0q+aX;Mz2dhDz8~zm~tBpoJavYiN+6 zg{>ON(Za6&RdB^>xD4$Pf6BX@a# zuomA%NGnDl!QWGn(F^ZPNr`69>{v zaG&f*fSAB&IrNd8VZd3~23&2cYMWr#j@9>Pnj$%cO=;sIP%%I_T8DfnIEXGix{U57 zh#HR}l{YwG5Hd8MtCJcT)r3iU^^MuaRJd1=l>kqj3Qd?+ENI0bX{i2uG($yrsEDc= zm(rnxGht*v4a|Ix-`Vt9CfKhe!F=i?`!yznz6L1I4BiGL%;{ zB9G6ThtUwWdz3GmQ<#?MP13iE@m(KNA7}Y&d0iCWwyvK&z~*wgxN(Ze*mF|co#q>f zLT})$)XWjsWHcdwXqcjm`i;z-)5-l{Hk!*8J}%gT{^08YiOYlaP)YLkh(+%QUsD!F zEH;F#j?b}jmA`1^9GCeMH$XhhmJ%cvTA2`bKls%r?pBFrizGgF-cT3d3_yG2;|%Bc zwID3F9BNWEphQrZAOpu*ACRC^-F2cb56Bd%oAf;AK1$^5?zngA__nt1-olCNwYL#? zZ|UErbY->XKH0_hytozK+XDddiQIep^zWU@_aRh;R(bfIp6pk@k3ekz>TZ2M0`|be zp!Rkna8bZ^_w8G=02b*r&WEVhtChV7Y*eVN?bfP05#WdP?~BQp6a&o1o`PFpZ7#KB zkI}aZu88f3>pnGpXkVQ7Tj!ZcVU7hYSy^)y4{WItt_q{iH(1%c8T^X=Y0cR<_qCnc z!rM~U4&ghSXf^^4J(B=7Dz#i`gtQE1N}!~DnuiWt4oX&$#7OlER}5#?3wRDO#2p3q zEOKbm-Je4Y>7Lm&>OF@X?nc5xPn5%A-cWJLsnq;5afz1Whpdp0D7Ye7DegUSc23W6 zIg#j9I6Gr{!Mvi-o`x2})JYVOiy{GYYd0K>@v~zCrj_;#<%vHi=VKD;Bfy@@~|h z`G0qJDe6&_vVBp(Ar8+WeP7Dh$UZ{}sYL;)0+djIT_>VH`lHdz%;n|_F19nlI?smL zF3FJR39xtmESQcY`!toufQfLQA2Pr$a_2*5CVysJdEr^B13q44bEc-OY{n^xNrje= z&tgOl6t02`Mucw_M5YQ?p`hR1Z;1 z*0zD*r6Aa5Px3bOxwocA%pwEWA1*l=i*%U(#g|+JtH!)wG)9ePTc$(A$gsjqaE)v_ zW_YZ)^2b-a+a1{k)J4+)ZP^@d3l(xRAS0f%^zA^w5vK>YcY`5H(=ep}pS?G2ZX-w5 zh5t%L%!iimvD)0U^?Ccg!A-J`sl_C1^%4^m6h+BAO_3Us@-n~vA`?p`stPF7O3jRF zV%m~e%tRs=BoYq*iCPdVNPHy-A*gagy;||6EtcfeLT0cR!DPe=upnZq+9SZsIkHcn z_I(g3r8|`tz$-WMi=u+T-{nv z?(f+s%l>u?-2*FAYT=E1QIPW|)4#sM%j?;6#-?B_3`(F0hhYhW;c}x@$gL-0n8j6f zb%i5NxWtm(V1QDKMO2RKUodHeu#EC#u|c>Og4?iDkh@yaKfUsvR+y;cy89H?=a>#~ z*?u~C+QM2|+HCXS9Ed@r?U>TYOJ5S!m<3BTMj4;r}AOcaQNGm-wzv6$BOj zi=t)@Mo89;t;RUNnE#VU4~e!yEUtn)h`ED8amly~U-pAzAow@Mbc7y11JQFme*o+N zKPgCZ-5^(^SfJwb%X8+|R~OfV{^Fe>DiDq#iVi!*v8T1Vw?|2Kly)&PE?4K;FTCO8-|5=un|btoI6 zF&ry!^dvJEnI5D7_W?R?eK+02;=KhqE4DAr6rtPr@B(f&>~%+WEG4Ym2|7vrs-xkH z>ewJG7uvDk)}?mr%`mxRt!N=xU2$@2F>JF56gg$LRy%QVYizgf)<{LUHBza_tvlx| zUngGORdH|#P76bk7R%*`Cx<%q)*Mc8<^^B)42CuSnIOks;k4utJ%XgHJ0M7v+0Z7y zAWb%ibNgwd4yYF7Pyk>ABik?D#qa=6vu@WLVzl|LD#n-+z(68V;FPN%rx4*abvG|k zZT@-q_o(e*r!iN?LDM*<(1(mKe5*@h#|E#(^elX+S}xwn*R_J0tpCOJY&}KK3UUGO zn4Uc{_Uz3tQ_uF`^jAxlvd?4slK++Vo*-xM#Kr0Xip8;=sduAn9muUp43MU2x(NEY zX76X^0I|&r^)ux+Uw-BJm%`0m4C@kM_2;m+vn3^=#yKvJQ zJT$Gocn4OTBhl&_6RpHm7v6Gvo>keBOPjUnqJ2%)TpG2Y=qomOf)TzyKLu3#8m@E# zyTMGE*%3dsjeJlG?{Fc9BsGrs7MEsS9na`>CL8wFA(kmN$dC~Za|1t;>&XFf`v<%O zgDNx-lMNsUXE)09K$#xe67D6!GO@7TX8o z8K9cTw*{w*$y1Yu+zT$;CGBi>w92;3TkZWR{_J0>)3j@V+A#k zq!#YbroBTU>Bh>dC`1D@DWujKt>@G9xolj}^RAs(mpvBqf=4YxSgA;O1pjl3gnCg^kP(qkkf}5hlB!3erWQr^z0>E#0xul;Hox0) zs4-+*MjKQnI9)BCA93I6T7k&<8wZfQy`L=ZGt(916nXx}A<+H!JXwQaDM$-yu?^>x zkG!z^fW?ZuqJE(Jk0AGpcVKrTNAHkb7jY6pbgv(XiAszdYI!&@!Z(5x<7(h{4&XJ@ zLuMzX*h{Mh?HXsn&^GgIdG-X~o0_RlZ71HV1&{95Px-ryj}&ZpsM><{{v zXXE$3$}#j%9%x3_WW%RJvf0F!*%D846T^{0(9FKi0oJ9~J-CUoR=ZkY6J9etWm{mQ zBnw2#F2w>{P8KKLd%6rPkfd(AB1F(;RA3ZP6K8cA28|&Jr-p1aX5cy^Wqd zZrP<)dzWNLsi#(PcG;xarP>BiitnA2LlwF9kJM=3%Z)#ubkm z6I=y3oq3Gw8j=m~M9VS+wQz&dda!g|K`v{qp=!GvV_qcXIyN(u&m$kKL1fK`xCSS{zVN zOXG$%{}bfWxS`GeWY?u|L!19ea_(+ubwEk3KtDW&*Gx~@Y3fl)eu(~EiXWbYea+@% zQUyouzGibWK`w=_S-nh>OPE-P?BxhvGd*S73l`W)uotw$Qtah8i@l^-7JTXUatN=P zo}?*DQ+((&W$8wzET?IvEKTE-MUkm=%F-fJmU_8QwVm^^vh~xKQ=7+ql2w<0ejH&5$wGf zt-A?o2B%At3TdZ1=TC*8w*<8UG9gTX1i1n-A+Q;#hm46(OAl0a`|@YG6Ox4V-r#_Q zr=aG<*}>-pIjfUiej4?AZr&+XV0BWHch(}_sodG(q$%7}8oA9&<9aaOKLs_rm%6*B z^kz$~Nq?GiHCVPW9R_wQ1Z&8k}l)?IC@;alPxiEdeJD+*xKyf$o13Ct)=o^A!oT27G@GHPbz)nzQyXXHIj2tJEJv_u6ZS*) z<6+{B5~|^*3A-Xw={S2x$60z9Fpo(PPGB8*s}d@aYc<7&%fquBDvo)FvD(MS9wTzkBpY_%+_2%Dy736+x{B+Al!|7_dncu-F zW?=pEy|ohUYqhI{DqHu;BV9iO$S z1Me9gQfabyztQ>YF#s7s&NePLQdAZMxwKxMGV#ITFEQ~s48>I&`pzw`ntL_|_~FvC z(OKb+d$yISXKgsOygl2@)U$Pcfj+{n`krlO>RB89DsRu)wpv(vcGqjJQ8_a8tPO>f zlpq|651kSO1R))V5(NC8TY_*%5(Gs?BnW~`r3u0jO%N0aDU$^r*(|VTvcN{d?v&~+ z@W{ymk3tq`TZD9*ESY;Y209(|tkJg{30qdG@7cplJ!@O8ODeJ*i4UE8yPLDfcJ#uE zY{$g68!owKXs^`6diDIIYtT{(Y6=&RZs<$!a6a)A(I&XgKLt5=v*jBA<5_Wntv;C>rf#LhBVHN&C5-Oe4>wRwkfRRe88+A z`y4i+poF>Wf2M+LGvV9{vQLG>3QCv($LOc@;%z$-la*9#b~>8V)_mqNPPmNmo` z8nd9bjkV?UxDII##Tc_}TtT)h$RYYDjV%YK9`UlVrB0M+%V|zMYII3ON2?OK+H&;T zCt5c~I@Q?nRd3uqJtKx3TszYh7s{->FDs@@_9hxu=qO^)d~lVAfKJTh!IMmzGEl)` zz~XXe`SIo#geJpHbe+L5Gy3lb9`sXVzg4TfJ7_lF9UdONfo?eze?P8C$G|@yi9gqC zhlg*FN(-no4OChI75p8z3334y_C}Mm=un)ED*kZb{g-z$^sk5g_66Kk{$E~~sTB`X z$3F{l;?rL}K-6!$A4H!$t!IsPmqJ7K-dQy75^59s^0_- zM>X(>HEH;1Z_CuRTJAkgzQ1|L*hnaS;6p@xW0YjUvTob9ZQHgn-P7IEwr$&(*0gQg zwr$(C_3E6v?z?O4UA5y!<;uv&Z%0&ywD0UcX+FmM{Mc)^?1l&(OIc3wZo1tkKtf!B z=d^r%0a@SRd1T)9>n)?uXWvow#5%EWb=4o+*1GOTVAs7+Qn|XI%qd z#-SZQ$5YlEdG%%nr|^Z!UL1mv5wA7jbehqvGUi!=LtO13Dy=p^pN%?w;xU~?2N1#7 zKQ%PDIa?pRiWOu&e;#(V_Fd6k(4xi29RyYL@2_?EBV-4C)t)B|BUrWwdRlaKi|^b| z7y-(V*+lO8o3k|-bhBdu2brT1*BmqZ9*@0}Y~uV0(q_Q~_Ph+7+}mg|4|0MM5})0C zkctD(S;Ia60YMc7Rg;Vx*+A1lZ*EDZ6QwB+97Xu=NTLB_IOU_+%PDb{FhsnPoDhYa z%Oq$!A;?mIh}U_|L(yvm+Y**ZhVzuBjw9M!HTrB&_{;A&TB^v>FR~CZWJd}%L{c`X zU>mAeCJM3J88G(OcG*n-jbx3Pp}{bQ+A|o($$=u5`<{Xc6(cxAuR3CJC0GzyszN1{ zv1R(w5Xn(%hWy&Ez{t~iG36a0&XK2jz#oRoUgWUcZZ0>}_}_7|S56iOw2f@v$0}uf zVPLI8Dbk7;)-bM%N6<{0%que56zDM}tlYw2e#&Ar6TW{q6dLr9&jiW?Cn^4xYP%!qjjt_1Q18YqFP-ZtTw?ORsYbP~K9)oTy#yu%>Tzaf6gkdc+T)Muq(l zsp!pi9B?SQA26EtJ}arTa0PS*XhfRtC>LZ;2C`JuBjawF}_;t<#3o zI)!S0Paj5-?$!0lTFNXH{2#iXkHXsR!QF?Rktjz?wFzWW?b~f(e^o8o2$%o%Q46;O zJ@g}PFQV+Bq)Iu7zm2>atJ#b@fw0dBT%;ZSn((NW=WW7o%l@Sx-2Rs0!r$Tes{_I7 z17Akk%4napq%)V?N<;p+FhDWF_2M@(nMk=|(h+#U^@ne4Avk1tm^~^bRV?|xmj?E0 zEJK-%UiRS0Ob#t5+es1ASVjA!aTqIP+|}3aPhm5zK)j4o>s7iC3*FU0;{X%&+9#?t zFNa7<>tGQGZ-P!WrSaC`%dP5FI;d+&u}TW<{82iuq4w_)Tp|eV8`GD>lOZ)|6JkiV zUD|$P(j3^xUkI%k%I%=u49$Ix67}xDFL8#iNke+2mHm2QztjGuq=2@n-mbzXpT-}-cBzQblJ*FGNG=TM6Q{pobS~)S<<53>gzjY1-f5S zcwyY#OGE|88Eykr*zDN|GZPu}(3!wG6N+j% zemmCKa#!b99?=?3b+GA<%)hvt4~Oo@_pRz|UuZ|%YtT-0hYIeOE_nq&=jgZ=&RP+#i5D9AUc(}A1k8{OOfwjYK; z@8EBTrF@;OcZXdY+s6DO3qWc!?#%3;mH9LXneMFhl+_r69tfPAorNDOIJVC^_fGiAdH2;Fo#VGBxoe&FaSYcC~3 z-aI41(rku^QbJGScAL1J2v8IHNpaR9BM;Xj0bnq{950j9Z43nhukh*> zk}&$;)w+8tK?QyN_z!XXUv3#cEAn54{y{EQ^0<)TBVUgnx|KED1Z`LsUz})Jt|CQq z(CQHCAEz(YU)YNd@PG72dvTqoV6yKyaxR;@0Jo$0a0gYIfS-**{E{wRp*GmVMZK~0 zof$SuT?i=O79sTK%%AeFp1shY?KYeK690yd{IlxpfjI5>WCK01C57Je*=Q((?jieH z!@?WptufvajenVPD8sJsLKO8M zy4Onsv~KA%%1_M$Z)4os7H1=E^#|=GcJVnwH({d|hi$V#f!}1U9Sr-*RfDgaJ-bYM zC^jKa5DKn_u|goui3X4ovZ)#_0Ro4xEjiB0g_}UuS_b=N&U2XcwY`9XEw+VPhTb52 zko4#8SuepQU(W}Ou$8xjGQ_4b@E-Q)v%pQy@tA)I3LqvxD`p3~(F(((U1587ng~Rv ziC&Z9JF|O_thh`}`R6y(v0EQ-dU1939ibJc$mPuX@KD`=RC*1#UEBm9IPX#fg0MY+ zf7|LGb1ZuFUJT83x#=L=u49vLCLM`hkFg%*<{FwKO%zDK{Js}=X0X0pJ=erARVs$4 zt^JLQFQ0s1-?v3S1laFw3O*GLUazu^7f5x^$=>O&U@ubXWZrb&v@L$dRCG7i9jviq zyVgQCPtSF}Bu%U)nC9)1H;GMV+i`}$PE{Bdbm*`!H zgS!oD3QX!HPl=E>W`gzzUD!|@p>7WIvzGv4~e2s$Y;bDbZY638d1`*Bu6j%2Pe#@WXwcB#j-RMgv*adg_RGekg~T+!GKe`;TIJFk)RDc z=MR0o!xaiL!;DkPU=Iy}DqNkbPgEex+$W?X@=J*=?qMFJ09ZX&i|Y2#yjLan5*g?& z;}0oN<3|XX|Mm#%*Y~N>l6Y6_wxchs+5?w|$c2%g@ZwF*)3EQ??oIsfj@5x$Fm`Af zgRI#|%S6tguLHeoH=dww#G+5nftJiwF$#p_WP+QOi@)%{e;+^6^FP~|S++MdHu)WH zD&g}aCfa_K+M{wZ>VMcMNP-2L= z)~yCtiCE%Ioa=fO2x+*^;kT^b4FP;KI2wT#}^dQ_ZU1Qj3h4u z$ZY`0-ecg3*pj@A_;Nv6)Y9mCx-#WOL~omE$|Qhs<}SgxJhHFT!Q3VAu0fuOA>OR{ zQMI2{fK0%p=}TMV)M)u1l5~DPeP{dvZ))Jn^llp2*5YB-uAL{Wt|$gTr)d-x!S|e{ zM_Aa>wOn(xF<;+ITn;}LPj3N6EqTz8FQbp-tGpt_xWSu>BSEzKHqbrc;@T9X+UD-3 z=jVDvya&8djec_7Pr@4;_Xt~g!pe%O4!(l+o$BmmwMM=JtQd;h9MV53{thj272qyx zRJh&@KVFxkW{}Je5Fi#Z?)O{4vM{_Bp4o@b`?)sxB*DWhjc>7=D6v8FP2PPgjsqzB&kC^?Hqwq zW2OE)rhCHGmbVJ}j+@gdK)FjwG^X2}I$1$)d8G4~&u_#kZSmL^yVNdIFDQ^?=8mfm z=jkWEIq_Vk+cCk`w=3g=WT66o#}MdyX$9W|JoQ83-Gf&@jf`AFZN(UEtKqehj7|{} z+~Oc^{u=0fzQ*NRTX_S!y8nc^biVi@yu!0UFaQ+Z=EyIbfB$|%%)vhYT;A~x7=^nW zfiHxP_Z*=^>?MTi z)6l*Xcxsn)+3uaLADH<^U|k1frTYCDn#gaptRB<&LN3eT6rA7BU#c^!mMc$3A0|!~ zPd06kj*5{Giy1r-vf+hj(i$8CjsZt|#v3EN_}jC=1YSAA7{pscUig8{&CF-Fr{^y0 zOXVjv)>jair?9Q#cb5G{;bv6hQ3s7>v;9N1Nd9*N35p1^k6U!NZT08$V1c z&OTt~%+8TouaizeE(}O^*fb{d0COuBr_au2L)lzjAG(1z7N;? zfU`)y{9fAx2HQ)RcD*>KmB6kK^fn<_5HzGmK})ctUNRg+sgs`v!pfa4r^C9?E8@UR zF5KOF%jkmc&5Qge66=RQo+q-;1-nx`xVz(n%qAC$ZXDwUb^Ou2=FP1;g!iR&kQJ|r zTHW|vA+1t&Y@0o%XQS`7Pd3z}fXqOzhPA{OFuThE+Pr4#+br0+5D;h&Qs1tH5IA19 zz7RQs1*5;4Hi*-_-=|+ov#D&iB}xki2C8ubI_g|{`s0DXxE2HIC*BYEB1BBT0IG>u zV!u6l@cZfkqQ#kNm-|#@wcrRhy0MnkHe$Zq0Q7(!DCW$Sx>3iYU5tuKW75H$$8)B8 zK`aREaF#(_R%AGBoW|sWs7}5f`8l#rjIJ3NwVWsT!@$oN_;FVy#AY$mrXYEpLuALj z2_ABzw5TPf`c#tt3zLwC{6_Zj51i-fU7SArAcXsV$8mk zYtN!Ux3+B3wz^}TI-n}oaKXd$t+OSSp0HU@e`eV@!UR3L#@W~1(dusd)9g8HBV=a# zZf`-)ud3_Lw?p7WF9Ed-UR7*Gu=CmOWSc%An=y@@j|JtS1bkqF^FNrO9r zXUzjw+{xJ5#yVt&A44{RZ*R^ug~foB8C=4fdNUp60i7Q#0%<}AN&nLs)5eC6k2TeM zG+=_*m46267!B@8r=IoO)0D7(lLkF;ICVMZ-h+ce{k91H&TN4Gn7&%+9C~Xwqa4;g zKU(3>9BWqHv}!4IS0A@-A?;N^_|;RqFPvrd=o`Ujob>r7kSEK>6Zle$zQyjG^71Vm z@~ZQL?ba(7u5g>tf26e$<*+D9;Ac9nF1g#0=%fVcqwaF6%D#c5}Vn7S& zfpN^ccAscMX9HU*e*7JTsjugBvS81Kv3j5v%kP3cqjUOUE+LRnQsY;}+LDyUfiO{P z#jq~04R#hmt<~=(xDK}F)=6IL10IWwdgVSr8_W7kSbTZf(z3u{bhMS)rjn^L=$pQ*6P%kB}}kwDnCXN!E9<{K;615Vu6Z1=^liZ=ji<;~=9ywD_c{MPC9B0q&I(!41(huK`&f^n>|M2(-yX^b&N?QxeULG4o#x zi7b-pqGolT?~-oAU_=L6qo_;-Hcs(_|IO9dQy8bxM&L4(qisIfI8%K0c!>X`SSB~rmivdwq>Hh(^y6XJpdt336p@Bt zv9u>u^~%t@F|l{=Hu1$PTAF^%!-;JJl$ke zvqA7SZ-L*j#Qn)XR zaMoDjAC-cWiF`MH16AZ4+Fo^!LT?b`%F9kW$y`C*+ofA3Fe!6uprnH7HGJ>V)cypa zcs9Am1e@m9jUPi4GM#H6FJmw`+-m-`a5W(O2a_?oC&Gv=c&9@3mT z1Pbc5IGI1XA*J%vd)&NikcdP?o(OLw#w(u4BVlcpS0>*o3B&bipBRhj)F_{+Vc=dS-WEg$2!#t^5wRMh1^ucttN0NVA^}E;GML?1J-&7!B>QcKVJ( zNIV@Fv+j%rmGp)ITd-ic1gp;;am6d#@d`6RryVE_^O^;O+z%_ZG_C&Q_{Rn}Q={Q% z#e18&i5Np|!3~g zB6Y*+R|h+JQzheG;naA-y4{#`m3z@;;d4fI7tXwzFoVrAjR{mqRlSQvgSzNC&1liI zZsLNPCFW646$t-Hdds{-Qe4aZvIeSpSx+E}y71p(S#A_{@v7NQ_G+!b$=}b$TtPAB zYVX`*#!f}Gf!ed1xi)_sHP+gNIMbXoMz6uz;J7WV9cjjjW|WB!Llaem=|v-PHoVtd z&QumxH&qj&VeiYVtw9OsxCYUF|ekSGD&Is zVD-lIE-WW{VYscO4zR%J?sx!AR8MFT9>JSmq;T_uVc20vP&0G& z);OL_W?Ik2T})j%G4<*ZTMBm%dy2HRJoE!))-a{^;mQbdMHKHTRC z+kX1f>>I-wlmO<&79@uzi6;lhu5Dq|5hv@<^q-ZFBtc{)~_XW3$o8q*6%Wz3Uk~+tA9uhM5|X+^K#2h0K5Z`k?Kno;UlXgNSIO(8$v|~t;NRU5NtWhn;=sl-Q z>05D|fkA&$I<%_f&mt=#?e|EDB>i=F@flPZ%AZ@X9xp~^0gGJxhvy~&L_}ws^^1)=&>S6aK5mXA!SsWJ4|YkPT^|aF)EsVY92)WchP`G z#EP4TKjfzb7#~GB99~9*?4lgW18PXckx#ASp&cxzKy&Q<-Ua&G1zO+<#ao~KXo+RO zs(Jn`VMA4fnzeluuiChqq3v2^$qO?yPh#uscnDY3^4aN@Z*p3p}`Pe9?%#Y7|&^KLH? zSm2Z%tzH!PN9K1HR~cB-l)y}6IABnyVA1$r2hFw$Wqs8Ag2Z*8*=b`6Q6Y+jBl1v= zeP}>Dku%F8Q!f1gs_r&It{2)68Y+`X!Z8+zvOoDYGU-jde?0iNZS z;`~hw>?sJh*d$^%C48_I(Gd(bVYiwI7_EhRkc$cR%1K%^3U)P$+Vp!2{Qg~-Gw(4Q z8iOg~NEm2F?oLCKNA$2;8BvX_8jUpdO1bqAC}9RyeiC2eeRNtC2(?haHc;1PT1n#0 zcAq1!;h&61%EM%#q3QVJ9^gVmU*!G8sSAAoV6M9bqMKbTqnsbit58B44WKx3pZ0bPWW zUsF&qG{NB=7|%Q&91l+N*W094lUNu4aH7iw7ZE{w6{yWqDM#A5Xsc}im_ni2t!(eO z7@D=VBKeyI26&I530GU|G&M3U>f8;j+OZ%Sttj0dI_*PFKoWGtCe}umV;xJ$TOEt0 zEM6c4%BIqZPMu(!#eg+BB$RWSk8Yl&=ynnj;-;ZMXN(IAFbg8JU1o zP}|KB!&S#kr)(CZEaT;u#@!|WCMTii09C^lyz~~C7YwdD>kb-;LbV2#9-nfe89yfO*qOsT|ibNHeWYiDT2lQ4`zsJ z^n>Gm5H2u+M~)T7HE>)sR9OiIwOruR5ex5~KELOh7L9(S93KEHs&&94I~qLzR?Cn5 ztK|O!D``fUc9@#eE|IxM@UB}CT>z|<8r7*Z*IfhvuxexU&ALI4RD(c^0l*5AqwbK@ ziSI67)^G!zec1XUooF!X&q}a~8UR)y`A7eSmB^fKp85a43Ml#i!^#Q$|6oO>`CnLt zMi_Yk+&bP8Uyg< zM^1&K{Kk-HZY?z05K1rRAuPMvN>mZ!&KsDI4Bn$krP&zK5s=S}pVxL6kZ&RJ%93lI zj@~UYmoGupP90sq64L*Fa%DnCqn{5c{_IN-FrFm%9>_BgAdLkMjGEaMPC<#$~lg{mIYt#$srQ z?PB`0L;lyoyauePKnOqw=9%*$Gar@KD6t7oa~my441Qwc)+m}vuQ>uFtTYahOP5fO zzw%3D4#5>%+=w2YrsYqrxdHhuW|JO`N}xZCxu-jTHz68nfc^?nZbB=a7se_#)~qV3 zjuY>Lo@jb|`hXF4ny;~-PNQhuYdQq%&mI)ODtV_U0ivi5{|sQ{104R=+Hp$~o%q6Y z;emQIX!PrYTS9ZGe`mGth342uy|I>q`@|m?Hk{DY4BzbOh(uy(XAprPO!kI%JYom_t?Z#wK*4oWY2b(ri+r#Xy%1 zSHKnIq8*0_%}D@a$obD#K)|yhn!*s4J;epUaS{cil)4@{M21>rSl%FVeyICxH|$vR z?4B=ryfF{Ir&CmxLtDNXiotf6BPUD(^g}GVGX(_%JuQzQ&o49H1U-s=khfpJlqnX6 z-i}T`W4{@6ef8zBrj-Y3p&lUl}=|w`&F1BwE5cYu5AqR3Rt+WCZDC zjicr8yG&K1-1z*iLc~UoBPOpJxAif(3YcDrmMMBknTc(=q~~DCli7!dT^2qrbgY~d z9!ywrB^jk}g%79Bef{N6$;Z!U-qU9-~fY!L)w$Md4N=&)n5{c{;vvru|` zmpY8Yr=_6oR^B+}PB$?BeNI25_yhh%qH1EgLm69HWM^QZ5}!G+KXD$=w5yD<&AeAy zh9Y0PuY59SG=+n{r{@ZxzJ*Bo%C`rd_5}4#lfhj<188eApU!IM(kjxy>jd#quHvNj z5d71M^+yq%RGLFcE)ES^l^&1m0znPn>V;1bDrTt&+%8c=cV4!NtK^efRsokzGB}1! zAWMM*A1l=U)wE7PMk`C^RdR9=)sQaexpS?vMO9$Cs0jBEAar(FfyPmXJR3ds%imWh zR%s~v>R|_*`;)cBypU)ag}WBgU5=}e`7_}4;pt=N#cSX>q!6NF_61e@wp*{ZjHVlH z2k4o%e-X{fnr|6{>{gO^c+hN81xWDrF+{xgYb=mGBxpGmydeTPANwDvO?PEBrkhf= z?u5we0}2t{jADIcYo^bRVIpCn(OeprQ@k0~nb*Mf+Yq=D_Fukqd2|RX);|Z9yd*pX zz@5SJ(CfVrXrK3rxIiqGlpu5c@3=@d6V$m_d}YuWE=+-?-QhfGwgk5og3k`b%`1eB zMk#kzJF$gFkESnJ%d5LBAs#V6Tk_4Qe$C#PpAx>0J%-2;&`(TS)5}oJ30|PJ zcH1wZxr@jjl8ZDFtg~Ld;$W3UjaNAV?;QGc^pHyW1i`wOU__&*ARd;BJ?!?J-Ym%U0_Iec%+O#U9^9%fft~(WfdzO z1Bvr1hn2Fb{X!yBn=Pm$#`Q1TrqyQm-rCLGV7yp*7{K%f$9-#fvEbhM-gj{@cc}}n zYlH^vEqLxSaGJBTI?w;)yf63}9d3*Z8#g_=n=N4!#0mok6CpQQ%`@a%3~9H{G6pf^ zg7D}1NvVSEN?G~==cb1%y#2|@Yxv0sb*##2X}D^^cG4eAvv~FwcZR~5kMv;H0hwp> zr%S#z7Tl>qE}+6=&ZQ0vCNgvT7!aowLu~jbhp!|Z_Bt} z`fP+{z8wQ9Jw97^pcJo&9B_b0_@Z_7WnKn5q6EQC{Yo6dw_^Sx4ZBdoA$f5cu12bRQJC$!Sq*)=~aRHEl zZ)b03=#FYmf2kav7pNC<6eypG=e2E$AHbsu=%#fmuT_t3b=0Hvy4C{0KY%BA#jj0| z{n*c&JNO^k?QY}HcSSrK<{mF7d0@YYyVf!UCtDIjI77Q&)n_(JPHggxyY7}o>vQD^ z`b&|<&gHXw4~gLh$}gvSra7HLETatu*p_*JDp8~Tq}cz~?g6>d`V3T3e4=gHNp?fO z5NF5vW$ith8)$a85*#u^38(U*BM$EzkUpPu(|?D)%ZKQSL-<0E{=@PV-D?sasKBZ1 zh*~qgidji~1C$)OGXB7;>sT!3DK<3?vjRLgAA zd!}PWC#(A`PZ`maP)2Vhhlfw>v8TbB07f2z+w0&WYG)V|AuxdmIicamv zab^VI-JZUQ7+`+d=<7AolOdblb}Fcn%=6+v@V%=xyLgkiDu_fOMEodO8OR1m!XRi{ zN7N%ubk-tVJu47_!bfwqY)QdtO7~!u{*+Bln370EXI7b0DA3pvyY*v_#bD6l{SyBK z`DB+U_flvzo`IAv4NR>t)?`}rPhueuB+u8VXl1f&-v#0J8W?gkQ;4lwm!Os3OYufX zPxnJfR1bi!^#k7y-b)uqLT8Tnu*q1|*ZR!)5b6&t5_Pv?qDs((YxlTN3uGMr0>=JM-J9DQRPYRP<~A6-8mA@0^G?I4V-9w6V{aNw^5t*!ZYwHTYpyP z%CcXqY!8OTrjR4$lsbXyXf-@B=;1fB!;wKjt{=HBm#Mk)AEr%pBt$A(8hQ40O0U0a z$5l3e5S#k`at3!BK6EvyHRgffzm^Qd;!~pDj&5@6&%2uJC%k#$pi=R(pk`Mm%a(5K zm*?_Ra|1

((DWe$r4g&wWBZ-KrPSf$L8@sVERdi@iCraYpGKKU*5b>T zvZE&eH>Qb{G^)Z|n=htWsjzE!^0j-iiBQ0+Kz;V{o7C-AxYzmydcH}%=L$NzIGy;+ zhJ*oln=sKZZq3<22;?5TRpp6(zTHlU*{Rk+TxoIVH%(u%M9S1`TY3?=D%DP8G0|>Uo>*oUj`0@y7qD}H9SGHjoTAc8{y>lP_H6j z53Lm``-G<)AdWiW!FdG?l`1=U*oXVaa;Y4ZSWEo@*_G^Ar?li@!o-F|C+Kxsv3kLN z+UJya?M(|V3s&I_!@m#>%d%Rv@RkyCKh``U#E0ixpNzA!?GY-k)K@Th>Q*TiKZzU~ zCmXq7lUdv8`D-tEkw8vJq+`O6;_L6W7!%oLnW}RLb2=}cVDz!9SHswLJ-Q&m3sS2! zS6yrHCsLYjgxk_;L&UCu=i!eREn2fX9Dhe>F{Nrk<-}~~4=y zdVPgKa6_-@h$akU{=F8&lPP$_;%l!AM=B*$l8#)+X&AwQEd(;^L187~XiTC0g1cOf zHHT^|Mfl8f(uZ6ORoQ)nbh&%UC6;;+wFN9rKwM~1otf@a;;ZFXVUTDq3rdu}d$HB0 zWe09PWcL7n-S~X{-{9M1-ysU}dHaZcS86~~{4bQPFvtcOVoJB4kIB!Vfu>rOZWu=g zpdl$#3l%v;YV7)&MDaF7MK_>TmJ!V9h_A;H$`T->0BvLDItfuqLJz5vSp9`SDLHU4 zB54LG@Je*xC#CQcycw|mp*G^jY>UxjK8*&vi#!j=45gi=s_wHhqrTU1hu%H8)ejrY z_{TkeW(QR`ucbfCIA0HL>d^1{c3FCD#!3eB!tdu}`5c3YbJr&xdO=_ zU2kx*0GHda7%Qrh%nZ3zz8ukZIMqV-caye{k#f9ANVpP9L;LrlYdV;Dp8O#&Y;h6R zUulY!uSM5LdvUAEBvoYcENL=1{DF=GK!XprzoMqD0pjO_1&W<@aBs@J5r#T`I6Tlr zWijzc;j_UBrS3cAHit|G{5IB&R#loCzSk7-L;u)mSeA@q%vLm)@+uZdKhEDhz8VAh zXti$^9zl(71v?8+2n``4qP5ZHW0b=K`zWZvaP8(L(e*WT2pelxe}{-0ah9n_iN2Q} z__+&`3pCxZg1^cg9u~%#8~k-M-tiq)ob{{_@t0wTIh&LI&Ci9C+SCMyXmRZGFN(Y? z!+Cga@by}Cg4J2%6rg``XkHAk!kAvJF!Oj(4DKtLPE#1VKZUc+xyj3SJ?U$P1E1(l z1#OS%q=NRM8L z!ZhQp>YLQ(YKOn9ohKo`{bR9OMTEU+O+DroLAq+?No?)bSj<=xYg9Nq;Z2ZYI#feW zEN_a!I#k5~SKgj6Bc6&$tZIfsbtdOY*+au{0dm*x3vx+k^Dg>a()dV_cMVyO^S*Oa zjv5F@&#cL|bKb4#9+B@39S{3w+;6%T^6kCmzg->N5+_F(HS24G87v$Ie9jmZJ-PXBd*2i1~&0A`NeI<+YV#p-L!tT0~gPtsb0fpKOux_`D-HK6Y z7o&=CQQ<|q+(P^X@56r`6GF(NbqqsZHLoklM<|L?$rg>CeHIZeMy&65f%=YFQVml{ zRCM4-7lJ)?4TqOEFK#@9aagDv_<<;QQoT1yNLApuDh;4|7Re&>p|M zr%b=^`@3Qb+yHlv#|5|AXkMz3#oeo^{T{}n!aes zYfsu9e|x_10GImhpkiU$uCoONkgb~VX>!6g@(Wc@yiV2vY{jO|iw?tbK|VuIlFg^hX| zEuIXCni!a8k^3}u7*TTm>&jB^)7+GaAe-j^OYweYDO?O`PV+zJGs<1#Z~5VnSS`pP z47utW=g8tPajOG}5W4)Lv`mLw1Z|f@_llIkr>xCINqPNtH25K%KNJA7m|>F+E_ z7!O@Zonph5A5^-(7SR#6?tcfnTi|IfrTvD965%nal^e!Am~zRZ4Dl;jrTG)PLG#Co z?VMfxhr=#O)fmusL-c&7FSJk*pSci@;?rFc)*iO>^%9p8l=2h<{wf+?!TOgycJXn- zS~sG!t3!e-9R^97g;DI87#t$=A&D{feU-Tr!DXM*~`QPId*{v$&zdfT=0uNf@8UJb+WV730|h>yz?6!Ac)fg)`r0A(fw@T z*x0T3prB)y8LYI_sPvZ_bCv)pyteK-l1XUPS88OlY!K;7y2U(lX%dmAuz?E2gC26w zdr*Q;TItqLECO4d;T?r@)_IeJPEsbpNowdEz0jdG(q+{O0sjC=vF49HiOK8b-Z_&PR^Ar0m=xIJ-HHrEL1L>?duV zIM1j|4e8wW;|kRWhum|@Bi;PO=!@jXxiRYwQRKAnkbK@m;nY{kh2`>IREOkTj-)9% zR<)QDflSKD!BRhe1m8PW)<#HEr&Fwn0z>dO3`~J%T)#@4Y!P7hscCSOHzTj4tojuR z7`|+phC|4?zlL|n!yz4=4!rsF1+JYLL;3ymb^NHsHM9z8{%B; z+lR6N0`}}lJ5ILDVS}lJpyC$ZPH}NP7j&BUz&&=hhqQFeuGpfEA00`terEB{%f7Ho zKI@Uk0JWwetxFkY8#%k(jddNMvqSHhb-zUOA0GI18SwMG11bcb1kqybe&I<#wEW+J zXq&)Xs^2{0vu}L?>4c{gq?k_os>+Z-_7OR1W`=2F*{P|+p78^%f$$Cy7SExzx1{hP z#^h}{M<`a8F@YMSHQb|1XemU7b}&(d>WcQ0bd5(3mUSTwe*|AVvB3ARG&xA3)n=^d zMUf8W4C0YYeB>kAA;8e4$r;GQig==A`P9H1|7M#ubU4R2Kr4>La2wbLEN#pk(sCF# zhd{JR%9uylBo`1=EXQ_rJsd4OJZF`L@^VS4FB!74SWD$ZEj-2LuXt?FzE}NYO7cJ6 zC-X=M3uI&c3px-@I;EtaW3S4Erfu#NbC8=;FUQZ=*lxDr;{z&bU zm|jBLCTiy`kvfNWI&nsLKri}dp6;4UFX<%^BWC`M(Ga&%*S`4}x|?Vi}T0P6l! zhZjEq7I7~?W)$6gKhX%2KetX?gJFewf?deO(4=bhv#=zR{qcrq;7RzwN#i zyLc~eIhc2*)@4zlJy9v5NHKx87+WP)-pF!bZ`9kobqPN}>i4yj+b;e|5ROjp^G=by zBya`_k}2vPu4FDUpYlG4DMzFr67CtIHm5?`S%$^MP7A+*o&r%;zB<*J2BlQP#KkI5 zXZg}q3w1@PRu)jW>JgZ8*h<~{UeX-&=yRsC!t6!njguCOsJlO(*NlfgRJ^2u4f}d|brXx$T({H`l+qUmRS8_@|W2(RK=oZaZ_>wJF4vcm@)+>RbTB6`cWi+a@ zRhry0yWLPWi{+G+?8rmvR}l09chcQjU^%6@;bL=QpTlqAcrmTXr|ISmaO#x$9&(LA z8CvqQoQKZ*3ZdW;VfOuBTleh?&sUZnSQRz<;&O&l7JJMn%^EC%%H&(>Wx(&BU^c_vM5EU zTnLmCkhrod{{msCIaN?MtL1B>E_7k~!gZ!N-FJPXb@Kky%_LOGI5;mNAr!Q)9fn^%-fRwY1Qe!BQ}1U zwaW8KjA7VL2BI*}zqmelXIe`3-?0MHVzJV+ovJm|U$oKV&DJe{d2xpWdP1bAzjS)l z`03swHU?HD#f;olmAtvejvHs==x0`;sJ^^7!EgDfZ`AcFX^%N5l+@w?8O#o+ZLhrH zxyjcK)e-LQNR^+2!FK()&agf(mYP;jf-r+^2s>fZ5>%8U7i@v)G&v|C`}NzsctZd% z?a$He{uKOd#0CX}_N(}wK{y=0xNuDeG7=}~rngNmf7Z^fE}NE(2go|vzF7pWuo3ze zUub;S1daawFt*1BPuHCftjRR%r()3`r)__D{yxdZ~e-f5TG5MS|NKQg6;!mVK}jX9lW`rlpL)SoU^RV2|jg z6uZcP@m;RC;H)waHGxTV!3jyDY$;)*UV)NLC(4M`sHumyWtx}iPil6YaE4N)HQxjutsN)=yd8^?!xhbgE6?QR59z8tSa>3W| z1Z7LT+=gp$|CBw}cA@ab^O!o-79hhuy@hLqJKR*z>jANP0880C2^#S_urTMvX>%wj zf%sO|K=})gE83!AeA%;M!>n6R3{KnBc9K6#;o9i<*`^zim_vCn6zk^0l}SLdh&@qb zBlpqMX3`~59GR#Q@X1x*-~{U?;o2!Fx$)=oDy^PY(so6Kyq0;!8?E56>5@yrow6_} z#Mx03DwU58#mlW>O0U80wuE|%#moo+c7eew<39Trx?}g?6K+B6CK2xg{e^Mda(6QQ zQ0LiWW^!ZGAu=g8>ZNyshiNsDh-OZVfFKdLeUy!Dv6yUgdaE_g3)ma<=h9^O*Gs?6 z*4pSPs_u!41An7~0pZ0VoZ>bfpD{h8Z@+?7K@*&rV#C;ShqrHMj9{qJTi?^FvhsOy zMQy&}OpOdXYEpIp68(Th-NdZ~xgkCKjH;_9)&TIZtmk&lYJX-FeIVYp{>pZiXPnHJ?uzeQket z%vpZhm^Ih&6!OsaP2mJJL}!nMw`4ubNP)Srx4))d^^|iuzoQW1j)-7M<~jKF%*>t9 z1bRb4wi=P8h7r2r^g#B;`>-48)A2M7UxSmMT@*hMf6c6UUL447;S`SJpSdVR^s}bt`|)KhQC@E zFAuTV)UQp>z{O+1zrK7K$3~z=xjc3`yZt;;q~h3O8YEzC-I`^inI0~{7|}9#mJ{n0 zwBb?vk(m1{$C#%TiTpa1by&_YF|h#GtOA*gr;IlC#R(tGeH*&s1S9nx;VsgN zrZTDn(>M;FY)Q#s2b%dJz7ADi{#!)uq(eP>KHSHsRYTG+@GQB)ojRkm_3%CyzZQQj zXR^D?brQlm;aMeljS|wX(8I;|>o=Ce1IfH*3%SsR{WcIPbYl)4X%2MkHLWnb{5pEt zR}JR}`Q0lhZ~KilLr*)cwePF;lY76hjIbH^6YIGn7KiVWim-*g+(;7F$q$&))_ql9C-c=sCN!gC= zV-@%Zsi8M3Oo8k};vL83m`?a@#)(x_H2y-0;Q5vq?|HkArmL;0XS}6YOH0S;t5)77 zLbG$Ys&}2M5*G+7fk)TjZ@I{*k3R7{g`z!)z#ytD=mFHp#g7Hy>-co!n~uo>Zk zYH*mx+?A~t4UVD~DfN!3xU_{COu{+F{pH@5Ed3OAlHB${;jHKMxXtOej=^fQBM@m> zu=-?Zrkhb?gXz4~{kGIYuHW>lLd!gl0eRFG^*KKYkP{&d_MJH4_R{U>u(_QkS_6z4 zIPGBd5u(Wi-TnTz7Z_`wP+>OIrtyYA5JY7Ou>jShJbLCnOuIO=q4fTci1_1>v8T3{vDdIEZzc!5 zInnY(bq|@`647wTR0PXLV8xoZ2xe!YM3W_&xaey+gl085 zz0Y&{(Z4YX<{=^Zg|dm2JwFCJb8maChM0>vZpY`=?JS3*pYS)=ihX)L(po)&9kO=S zz%;{gayi^Nrwxx|k*l$^*3(xl9NF#tp_&I$Bg_D?$9{g-?W)TNeq)L;q9o-L8bifV zj3i`jBgg6Hf*?yHmL*MR!Fg(cWRZTA2s~JK7waIKFWDptLcssJ0~iO zxLb>~((qM%482H|pB6dZ9sIWRiHPzXd0ONng!N<)SC_G@A)8*!N>-0~9YEqbEWxubmSE*4Z+t0brrbHRyOlD5LV8P0&EL1;MY~|MwN~cc<2coREOQCF|qU zC%sxmaw+IlzJ zGncTJjKANumNYBJ$D}RpH=r~wC{{+_ZOw}3;%x#AZ;f3xwCe5GdY=f6A@=s3 z&DxyPBkFDT{eD(W-!us?Bvkp*o5nsWJJy%|F|T!|88jH5ZMxXz=?7j%p`Tuv!52*? zyY>3>9hms(jV;>+PgxTazv?C{Q_IMUT82!sJC@Z&JSOfOzvMKgS6Wcoi2%=)3Dwl< zNsl(6$>r+rxdNS=D8036-{VvHgrO6(B8K9;Hh#sEbhKfRRFQqVm#uAViw@yy-HpzL zC-;s_ww|W55FAH4?wlJ;94PX>@o#iI)_Ph$fmZgqzi<04y~SJNO#(xq?%iM*chBwJ zic1c_CUak77YGW2|HRO%k$KK97EYtKW#QW1vowAQoX)OJKJDcHT2y2$oqEV$!TMq> zcMZJ4g^TJ9?V0`PFy8yIVTD}#dfJUWAyzgaIqBI}Fctwh_+Kuc3UWFKzKAI`JtGG! zb+>oJG=aF-`eUqKXg!We{lY^7ZAI26!>Ks8Vu;y>S}@HY?-*d~Ot^d-{mn=Bs9-R# zc#9a$YQ>H0&K{3snP#Rmscn>t^c`PC-L>XSpSAK_PHNGG4PYMSZ!&mlhNM;UX#IcnLJ+a5Jb%)7Q6 zOLQETzTM!yaXBshc{@E4*A=h!#Z{dk|BW@wrAaf7il#yY^cco5e&=0Dyyp2mv>iz7 z;PZtI@XEL-P)1Ip!0~w)s&r^hqoTl0gHa^pyIE&@1Kd&EYgHNW7}eJt%F4JcZ)<%t37kKQ{BidoFsH62|Fc(=}DN&Pg1x2q!>EyH$>4A9m@vvkA$EJ?elJ zL1xwDTpum=nt~hOo<}NkMwNdpMl_RPq{}8uvUk-8)+9*7o;aG{dR(+ys3e$($P*iE zY5mJuZAAr?z7UYqNZ**;VUCDe<%8{rvWd?0Bc7X03_$d=~LkdeCVRx0kt1yHX zY7{&b1vJ~Szi;nj=LmQXtd_fAW9$Km`4MUtju7zIE>=+Bkkt)=f{+Z{1#{IDkSJ^} za6M?#a{Y92qzryjFT2ITO#=L`!}W4ugLlzy$}D>5!5<`@FT=pPanHVrE&F*xo`|r_ zE&)&HE)lGW95|+t2!`O)uvd8(m@hi`J1lbJo@TZNW99hnXTK~!0KYog*9_6u&to%` zAkuJo(jgE?9>D^u-~Ve z`RMP&Yu8^Nc(Df6@ien_kve>cb*}~Dp5zz!F6RZOjr{j=rI&45HLA)_$fVecO{(<+eIyBV5CVpv{#m zKd6sH!nInQPY!&Y+?QJ&ljYnFr{zA~DcLBAnF;9L90^J7EN?$WwA>UOCw^LE{5qU8 z9yd6+3U50v@uJJ&0g4@)jg)3^9HMa-Zw(=O!oWw6$ zYQ3rZ4ROs-93|SE#&xzX|D7pH?Htc|QtT+n1m7B4v@~}L(vJEvldoZI9)%odK=wm& zl4uH@0}oX|uZRNlN}z+yfc&p?X<4n-mmX6{8(hm8{w!oXGa*w`flAimRt4>bWCWdo z0oZt5eWH=mHynYNT8N+W@j@2{j4$Gna9+x8j^BS<9TpIzO!A}V#=M6Ks3!ij2rl~$ zx-e)S;Q~4FMiYl_!C$n`mPV{q9JW9w*{UcpWq;aLll5K{-k7B^%RSegRtY}BnqSc( zrlCguX?Z~I$^X8l#5bFRn0xvX^wA7@o+tfYDnpr7j^|25{6$MyV0|~S)OV<8q@4Jw z&iE5)s3MG$(O}L!#Zf8e0BgDVk%ZP0BkNU^%_XqpY5FWyi8WzM zIq{8iA5+bN3TyO@Z)J{!**XCfw&3K@Il%~x8m9k*3&J1-;Wv_b-<~97+5Fn68PNqo?n!a(G)`sv zV8(4G1|2?Z*z_WL)wFzD+E&7fkU{^Z9K>j zot)&ZtaYg{ID`;UT#?IPIK13fjfmU=P6}-$F~Zs3wwZnf4>)!xg?=#k9(jwtCH(zJ z);K;pdFDJX-L~?f`9mnBg4g2;^QiCy6Fj4gL~F^AV65Rg(jK~TkQIm{_k$uLjU>R= zF@lp9Vl69@zg~SWb>Af591kL`xHb7O;9S=A{RXUpWue)wz^o5J{xb67D>+YNg=XYOz!BE?oXx?`utHmB| zcI%PvwcmG1$XSrEgU@)ss^k+U!Cl?CWPCr+k+Wk!*a@ZfgIFhHqY`42K*S?5lL^5! zK>_5l`u28!IXNq;H&P)bKYMlF5o2{8jre1ZFkM?wFJTmMFuEYK9}%k#AOCo2R&a92 z`H>4h6%~D^BATD{@ChX!>pPq*<4>}`ZasJhqQ2)V1CNT4SXd{9>eDg{4;JEZxz>&M zIMaP{wzwQ{??6hIF*l%=v7pwl2M{Pzv;HxITrHJWJ}Cy2Cf8Di!x{5l?nurPqSOH- zmv7A+k)m8-u20c{tWJAJgk_170?`(KQXeZ|jXHFSnhm*c zx{F2b&OD6Uy zh#95lx{7b=&gbBfWBv5<>B&0gShJ`|-v;eEpzj^Wc606$n46}dk$?M>ltB9D{^NH+ znyVptPg3CNamRS}?9 zn+!%EVS%MhD>A%;4%E7ImQ@(sbS2SsgSTbAnn_xgdaCn1z*_}H_sF7Fu(T!=vc?^W z2aCev54$>3c0ExVoE7WQN^)u(f35cnlbyjm)Xbm&<^yZkL4HzsTR)I3xYmq0{74>Xf@_E zonW1Raq>B%&?F-h?po6Zf#AzOgn=CSyZn$3NU%$|5Arrk-&k8r3KbV8<_AT_A>fZt zVLB@~f0UZ+@%KEO6xu4H5Q0fz83_T=vSSLth{zc^;JEi1wh6;Plz#{Wp+Tn>WP8(N zE?BRr-HwREA8b0v0Sgbr2dW?w2LC_-u5}McrZ4G&L5`ugk(h@LUX%wUcDUX^7Nm{@`47r@`HN8 zw?#azCWXvF0U)CNP!L%UeQ_;GHfP}-WbJQr;3a256V@=3LZl`klR`_iqx5CWP3j;G%yTDWwN;oO{h|ptt19f$vK+=r%r{V21A&P zm~%hf&xGZa+CNn;eHE?~j;sPkm~5)tiiOUFRr^gewZ?M{i4gIy{ui9+ zlR`yR#b$egFkHEjc|pM$eFXFz&hd5srbRRU0m-QbHm^=J)>?iLsVVpAkVrb_8^WRw zE~u(BbJilUz1%AL@cy9C=pmo0v{sQGbG~Vqjxf;lw-X$0_iS|TAu(n|(>W2Cd@e}f z8lO8H@(|}+$M;|T;uJh@M*W+%yeor1p}SRx+&HN-EJ9Zw;%B<>&S*=)1JF}hhhrT@ zU_=7dpa~HXEXQZw3lRo={HsRV0LCid1>rx@!{LkqXIh@Ste}j5PQBl2%x9u*71#5oDWw9%*Pt1>v(^<;|V1yLR52TA68ACQg-B_F!GMT_SB&m zMV<#FY+=Clg)mIQCp}Wk^eCfjStjTKkhh{ zd$Gi&NdU;vl*bO!mZkwW`bS=qvNqH>h}21b}Ge zVerm=iJq~kYKax03c1q=f**6VmZ*)P_X(`19yb8`mYb^OE%TGoKgNn z5FoZBll0SU=yU^Q6D^Q4ORG_O>;PC+eE4#BWTj<(knB9c8$#>SFc4YD1>kO3696kz0i2sCy*UFX-0f9?A;fr8@n=BdE^AU@ zaaK5YFc7&b3Is*k(!p`#C@>OoQ)f4kALJ>Cw*lZ$LUy1(WI+#tkk_DBKhP&pm6{al z{i>9l6j!{RS-k?UwX|Jy?Gb!m8*aOAzeAh0-rL?{}l`9V*J z(?R?aPWN!iTQe^xdkK^mBs>BSV6L9B(-`b!Brdyt>#e1ie4kfR0ZOu#^t^$jxeDAK_Bri)hGkwrXDY`XP|VX z*Nusw*SSgu964>Yg?@rD+2i_8Dfkx=^*cBZNR;NM8yx|WjTwMa@wp`zxyHKC zlAx&sR*;Lfd@gF2v`TrP&ixY5!yA2wFs-Gu&u&jXcCk#}$ z4@)ybFkJXc3Qz&&!a+zY z%JI*JBOLz4Ngn1&p;nV}4|feGDWO&XFv)=j2JpgpK{=g3`P%Ogfk9q0VgW6Ur&ti#QTOLT z4{WXVfzTEgh)&~If1PXq5k_bBRFI-B*JMy&8>=Ui4U;@L(Mi8Q3@I7myyZmCDl8Eq ztSaspK3jSvfdFcG0?IW0iJp4hw_rX8?~I32W)AP9m<~GoAV)Vg9L;)1mUMIQ0tO=W zAd7TFN)nag9+V~vDvo6gpk$>&_rtUVN;>O zHU7>pQG4c>S)d_&=!E%<#?rQZq|{%sP?G*i7A$hHb|EnHWQ&(DY6e7O2P&Bp_G*4> zxXV&PEjOVDu~*OGQJt!-z~%LcF&mqJ=hHT_1hSuEgt3c_XnCrEmXj~bVQoI7bB!%I z70SZ#gtd7ZPH*m-bqHlm$GQaQe>0yVw81khnTh2M)+9Aou28{NbSjV)IdMKp2+KIp zsTbb`;gI}PVEUT$I{Y&duw-yU#xjGie zw*5itWsFRbzssf<`&vR=YrfG+F`tRI{yD&yWt~c*Mgjc!$MV;a>()I?e|99e{ZG8h z!HtlWX@DJeMY9|M23w)kbO>$*63TL&DU?kRzB5;zC}9D7SK$n}2FMP&-vOdO2M7>9Rr1+rY<5w9YDE64)| z?sLa@0*JlnvSEtkUm6?_-BrR{6Dzw5-D9 z2lr>`^17E>eONfw`>W=muq*9L0Y615n)p5nB1*39p_>FV@0C6qo>0 z=%M2SV?$U@W?cbaR*}>sT~@iavW(66kLaxw$qHTV>)Is3?)Ern!ho(6%KBdg?p(es z#h-&?bO;TlgY%Knaw*iEAe6bX1$&4UbAr*irHpYK9Uqo%l2pJyaw#HeYF?Quo4R%~MmaJu)E5D1P z&`^zH=QAEBHJ{P-Y@$)3Cbk(_QVC_pR7#0u-}Cl-Ap&N}xR@*V$U`koPnLX;rYMxf zB*tb>mZxnhKWI*zECIioo+{~;k`~UQH37V@YE3Jg75b+`bCB}`Fk2BVoXrOujY!9f zd~t2b7R)aV32$tcM(&C2A|qcnf#}FWIO~G)1jUB- zpI%CZ2dwop5WNfV00Jt$2ePQrv8ntQK^P{zyWwJqU>3YCfGhAn7{UK6jd@K>JXZPF zLh6Xi80GgJ!dV}F)_jd|oGR&hRXwIhzvAzNv{%nGsz?WI4dQ~)x);Ovn*teN$^)!Q zLnoT`5A$7C`NMptN&w~yqTkz}c&k>a``&jNe29oV{R8fwLD7j(^Wyf$YV=+3P*kGF!h~ zDUk=fU>0!nB4iQ-h=xBEKr{+v0iqENm>ft`MVTPYy?@f-+7SS#|0WtRr?_7=0ipru znw^p_`(H$(cD;4P0?a04Po|-86}XxAdh_3oLF!-6HlzoB{Lf|eQ}4@>7R}(yRRMr+ zXv6NdZqN+W_=Bd!uOmx4sp>!;k!O2dn4?diRq4VnH>IK5jQpXyQza5rT#z=)@^S29 z@Oy=_Tv;QNCBhXz)Md+`Z9v$Jgp`A9Xm88GKH@E_Sd<$#mH+8FN` zFRO4`05Dk`4R}9NRtymPUq&%i0x*hv+5a1($di2l@>?521YYSch&^=zzSvifV&CIs zou!)=;gdC2UJoWLkTrqGzMX-Ve2*L;`x?Dk-~hB$K--LXr~h{^HPelu#C#s-L>K^6(mFtKz%mrd&YvVrCqfe6GgO$8^H zm^pAV1M0^fTSvH*qikO;TqF&SS{QrE|NElKXp-8pK{qc>Ja(da3|mE&Vd3gdVVs!jmN`C}8w7MX4+i2da-TY{zh(aEPdZpIRTBJ@4!*WcG-yReIA{EQ==dood3+F@ zQJ1f}CN{D(S!l?OLe9|%$=%H11Lv{4>VM8-Hh92!47mAU=dr(@#ZtEaAIpv@348{B zpa-x1&}1RWezTn>%Px)b2TiM0UPruEFJAK~*h!wqrdKm?PFg7I8XznGv<8-cr@s%& zla>GfwZhN*0~S!_f5Bqre_w#g1Db_A4Z>Xh1!q16Xq!ltCmo>Jx~Xr9x0%oU+5Eo| z^f%l8=}l0~Z~*BF&fzQFdFk(VB5-~yz@WI3ZOqLD$Q6hTgV^0kE!zXHG= zGG+g(CH(V4T*!j465xVYpHPPaZG$EnwpW+@A1(2R7Jpb4TRM>HuPp1(;(t$s{?Xz; zIA|$AO8#^Vpidfsjsbx5|J^YFg0orab>vUS00{U0?ikp3X8wiH$f=UTo)@DtovhiR zDVM45Yu#jTufq=cx31&0D?1IzKu{_fYcBZ#mR_cYPyqk4C zj$XI0;;2lces`Uow*-8G6s}Wgb2~=A!E-`xE(ax?b)PRh+9mvYPx5g@=!=in-@7<30FyPibWxf?T_T zd3JV#NxXEK_I7Vj()vbuq_@)KdZB8s4;@?LC?D?FVG8~D#>FI^vVs!?vQUEuoUusI zidVC`!J@h%v9ip&mL&A**3cP#KAAP?w#bb7X)_RC&RaD|lz%teSr=-h=vv_;DGsQe z$%{cXZOg5@(mn_pTX_c`^Ze4`DNKeUxTK!SqC;cwAqeQO-1D%>Y$vEU|r5&C6pp|-omXK2W^^RkQwm_a(=LYY- zxl^S7kuOKPR8%s*(iLONs9(3BwPa029!lDd-o**T=h{Gs_qq_SDcxU=pR9H6*7xtO zXISvMc=;p>Pk(qcLb)K8R;4iLRYpd&;qGp`^04s}T&_i+yC+8%&-(Cp1RJ^<1 zvgF$MaavinSvkC7AonXObuvd@(|VTEYmhZ)Pwne*0qU|h*#o*K&RsrF7yfGISRWjU zFFk|CGmgLYU=hzaej;uKYI9T~W@Pua}7x!k2ddHsp!?^sf z4T8PF_-}1;EVx806k4WVeq(5fcj6(ipXMmf9N?zl94#!Ze1P|VcDmwcPrEWIhrgOb69UIUd|GZXMBED z*z4y4<0c>EwbQJP+U4<=7lc+q6Q4(>PtyhmofX|$7%rS3eNS!Qh;L3tj}c618}b(g z{2@s=v}_$Al%zSW%uvZCSR)J-K3dxMZ|4bOK1Ur83|kl)Nic#XM8xnLi&)iv8-G{R zl7-}@RfxnigO`S#JinRxJ|a6J%Z0Hiw7A4V)(#U5Ix34nza^9l^!;#kPrlA`$M?`XVcQDU#7s4f6Pxxw;*d;lpbijy3=VaE8d~OX>EcOqNYW6De@+y zCNnpfC~Vub0Qt)aHw;tvg{}|Ms{Ck(-H)HeTfaymsPKRK{dv`4T(hc$#;OJ8?8l4N z7hZ{(?<;#h8@alL-Z=AlE*`i;fOJ~W(X{7b$*m($o;BHOSKeV7)WB1R;I0P_1ksQRaAEclSi#; z>|8D;ev5#N^R~|TXo1e-7^p9Hw>Wh1G!1-*(rXghU7Pz%$8KJri4nxg7owEWb5(H- z!UW8;0B%T`l{69%z@yBzwbRe~JK4Ma5II*CVQe$OT3zTgV zDgRP0-6COXG+_yO{R)2jpl%j`^aPVS(4VHBHdBCSr0m>My~# zn&!KdO=g6U?n2<8HpINc$kWSbMF_=F-5u)AH9*0d(d>Y^-Wg3$n-j{> zWct09pQAZVh_aeNaTwgmKNR>Kn8c*Y)yQ<`(PFCT*+tOBDy_Wsi;KH4{?pXi4QP7| z4Lzx>bNt&DJzDjKa7r z+Uq%zD2BE--IA0eA}0E%mcxn=R56wj0{)fHw^>!uI;s&EC|}H=2!PueD;R_PK0z<@ z%=jw2Kd_Nyn1{3JmQx$N8J0o*t*a@j=)R;JdKQ&gYU;P9y&q$}c={!uMK~M#`!^{k zwN?iz$F27JZn@##cv*xTk5{OzKr5(18)vM z%Qvh$#Jw35so9#`{NHHvSP^=-0V&lm&j1DNV-;>O+)NEf01Gh%2XQw#tE_|;vLaZ7 z_Ov>nn5Ew9jAZPM^`Sv0y!tP%niWBy*$hmJvk^A^N!twTBT%??YgiFr5KqPe=`<5q z5mJ5h&9Jn>UR4w3_eUjNIS>ZF$K-C*4_6ce_H$2}pvNiH0+cjh&iU-6FYtxHLX~hf z14?9ra5;lw4ZJ5uGf{5nIEelhSRPtAg%u$w*Ubv6cwuykr!l)6|4ZxM?wGKrc=v|1 zXvpdr>i;@AB9gbZ$9ho!YZ;(C=V-d`0fE7^ST{irS7By`Mah}Wia`9i0+3U|1sD@v zk1smt8vr7SU@T)##>KR}gR8NQ66XvI-GlTlc##Z>pX)~ds!$1nv(cWMDh@f0p>hJ4 ztqQmnY?DY}rGmP7U@0S{N9ANJ@oTVysiJA%>ozZG6@YvEQ&^=b2!BjvgnZwl&DIPK z*Qt5cNg)O(r4=$kKkQlYnrR)K zNEYxF;jiJmnh^r=8fX7vls9Li^ZV#CKnE>-(?=jYXDQ555r~a2ft1oG3}Hp6jC6ao zl?1hSKYDc*D*{A0pfoALY{s7OXB%frSshvx|vFGlhz_PY&rot%BTVn<-1<3nXJnwaW*!s%;6n7L0@F{`=Kj{vym-a zN@ew;jk9rbdmR9=HV;poL@R?5wBUV>a?ufc2U7#sSJT4209Ly&0G6}X01P?@WH~y) zNJdDU)*N8uvOh+)lT`Zs8cZahA7j&Wr(?aD`kfHG;jGd@uW@ncRd=sg4xX*anV2*f zHkhiqKh~Q^>tt#GW*?Vpql&SzeFDG|t*fb&elKSuHER#BMbe8jAUq;TGHcYb0TJ-M zcI}$p3^5JrFMy;|T!}ONKZY}kYng4@fFJ~7;uLT#lA%4ixy@$CJh_N5;9NvHz@rcd zTVuWTZ@3z%gVbVP;b|g+LTHG&y%fdURU61RL~3A?T}qOdl%g3{s2cEX)P_&AfDP~8 z*@K`NJrcO@h$rYFkak|9A1fXA1qIl6IAd>mPy@=@lvG0k z*so%HEh7YO0u?@Y8`zfpP;!kk4Po zZo}+NElP4UwUGWFks^|(ktzNNK)qhl9L>o`wfXx0C@9Fg^a)klv2jDRb-E5AIkC2a9t?&0pJ?Jx?B@OK4HJ%8h5L6Jvr@8WL28+m(hr zozHI@qJ2Fy3tn7m7*kSbm%F}PMMc9`=4eS=V2f4a*Y~Mr+{dyWje5i^aPT|7e6xMR zCvNvMYI&~4EH^n6QyVQSEJ{n}j4MBGIMy(iF$!a@#-;mVCu0RNvaFGJmEcmR zDGc+rZLHfjtyVkJYijptA1}~5Y1VusKGeZVNk}9zPaCMQ_r<5^Ltm`^vzh4wYF3u;RSA-=laPk4EW9}HYN%kh8Gg;Ym^`|Bz5sdahtptjct7U#!xNBMy>XX^_L&&uiDoti)nZH!rTvcH)mZ zd1P>D9Ogg3ZxXg_niRV{HsO!lm=V1$QT+l+9m2^(-}!2Y1I-)=2!TMjKxLClM&dl; z^|~d0ECOxwy7xC}uulTNWup1*?9;PvD>*}e7ohD5DCn_aw9UZqN6eW)G=r&pCaTUX zG^KhXqh3!o{hrR1nMpNo_D=d%=`>pr`elui?^cRjG@$1tak*n^s&sqZ9nVK)OSn+} zv-tTIm2IE*5Imwl`Mn~NpXI5Wr9{W|j!2EqDx(;TfX-zh-s9}@8NvConU8z==QyvD zlV8LS%L0{zr^~e+wLU-TG(1mte3_Aasmy-Oy#G%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�o1dgB|q2o1so@a!z0om+Ct#Y=&N}?DjQ_yE~zvIamJ~Xe(>cNrucccG#guZ?L zNdM*jaDA;0XukE!JkZ&mHB-37ZNBu`%FP{l@R|anYpLLCzAgUWlgee-2lUL}h+i(3 zX9q84u@^WPmz=KOXkKWjoh>~=tiodH4=)3p4oLT#9v>81ZTlQ+M(f6Hf#16L9Wh4`p4`ULGrUrH~xvh?5(loPNSh0g>3(ih|r~rBRuK5(oH|g)Gep z`VQ9&Lxa@K3>q1o+Q(AKR*5~w6#Ww2*DMqK-CMYFUhMdPx8KrV#8dRUkku%yKP8Y^ zmf9tDw7nj0>wV?C6(d6&x4OjD=mRc2VHm3jAyS5_;k?0avMsG3lRpVrrXUfIOQ7EE zKv61Y=)}PG{2ur^nX9|ow`d=z8T^hAk|1|xbz)>i-C1PaxbD3=WzYoLUCV%P@@nmz zcfMt!41TjWv@>V`x7)j5=koJ!+D^KpP~CiywwH)3HQnv#aURR~VnZnFx&aq~)wGBT zJy!-RGd9cd?ZpCG`!_I4gOKRTJ;6`6BXa5r3L0{?zg4YhY~`-sR&}f6z(a5)bX6zV zS*pgDzD%X>x)zXTFK~hVp+J$}e!(_nzk~RpAd{D|JQ_^A0Krj_+YJp1VcDvqKM#d8 zZTVWO!wW95h213yUD_&)DpUvft%X>Gq?BE)K3gx+u54Bgh_ZJk6?BhZ4hBEBF2T(> z2_03{Pbt#9N|)p$(wby83M*|9IC{BpC~~q!c+O^edJj4gkn8z6Z{Yz9ox2T+qP}nPCE8W zpYz}I?j7&lF~{Dc#y4wL&01A!?KP_A{^lB4fGa%w^i02g)}IzxtJ~42kC&MvV=!Z4 zCfAUpUSUzTtxi9!5zMAp#{2AU5?aO~2zs~vv_Gkvn=&S*KYJX4WG=bA;VB+HN)Uq~ zdiK|uUeyl`vl~-wT9pi$T&2W^3JyYysPZ|HO<~__i2hujRcNS@OTZZ?ziLic@ z!Vy_(l(b541Dm~k%74b43SZXxe4V}Sa`#iG zO^UwT_6|YxaC-J|)!gnhxG9DB1Sq?&my9ep!BBHnah_uN-@8dXBjWJf2uH1a=-A z#;o7igE=rhS_jd_{?b`Wg}eseFY$i5V(BxLP@CBi8V9-BYsLFv!iKQ+Gs?-YbUTL%{c5ff6#kssD)8K`)d`|??Um); z9;?ZoKrUCB24EH!ekMPEnRWkKz1n~$>$-MIn%-MZc2YJ^fN_jk$q>iqB# z=YYl0{x%#+u@yw4_2y9}Q?o)`sTF@ooTh_InFy_1PRZJ`GKV0!P`XN+cX;U)qfYhg z;OxP{vND^%`+qtw#=E1(YfNgh^EtGcDMrLFPvC}F- z!HwFp1b40KjdLw<{nZp?X?pCNWMeidoG32~?c?~JfIF!j7?FN8DI&aUOQjdsb7~&Q zC8?btujuWXt$lypP2-N-?E}^d))#yiM~76$EJ z%tvBh(CqVXFjud0dHC)R=l*?KrC#@@NZhWnI+=#dhs*mv&%Y4rgv4h?hRXyKw=3j! zV?iSH+}9V*uZkYHcf=mQ1;D;~4_W3va}8D6QuILm&>SY1SZsZ_vasFL{0egl>fp!T zo1rUBM~04tenwl!Z+eP2RS|teHv4~*Z6DKJm$Ew;?)h|`X$?ge$N$wp3UUPOgx2+t zVJ#OcpKALnq|{7nP3Ad{*A!=z6i~`je(aRpx#qQlotO1`K&^HK5ANBvhSw>-N-C%3BCR0O{|M4q&se^?Cby9_cE&K9ykCI26SOpi_- zBNa#H#=urVA|GM?;5_Hr3zmSbW`4vW)#k1?x8QN>`9^wHsdkp@?}ai{dVASm$X=EFTgJvaeR{x<iza54qS;PdUKWPjrJwGYSlVvR=|ULr$yyrt>IGYyY2V4qRww5tVhESCBu`ZqPclC%c=IT3?^)$CR7%c*t&5>(91y zrpHAfGugk~mfT;(NzMn(qJMIq=l{5G;V}?_KmVn4A6R+POCqnq(fgYJXZp3oM`7uE zDaw3Titlro%Y3+M=mp~bP|G#(RBmZSmoB=gBFMD;umg4uNxYej6dT^7krR5Vd{`7~ z5OxfTIy+ag+I|3V;YWo2d2@4GZ-xu6)O=oi*bLNe)82gKcddov@KyYgw>;_DIX7JP zLfjT|VrQY8?o`a3X)CE*cH{dH$cqMd{&YO*NH>>jTJ=@R_Fj&>5|~T!YW3dZhBX~% z(j-`4j;5|Z35)(c+o@64?lC_BOXrVUXA4h!^51_||5}8q+0Fz^in{d!fi&;{Lqf=D zEd~2(XTndld_FVwwyTc7a;Jt4zmtJ|9ST?06~#{)#+w7`UIo`9Cv<2SmE0)-j3` z7)I3dPGLtmc@9AG_>Wu=s~&eBedlx#yZMjQ#P6g@(~T@bHZ_4~fM)+kIH8x=t=z;q zz5aJglgp>SLt*hd{}ElXUJlOkWVDa}%?xVEEym52cTMc?f5aYRH2<4@$qmW#KXNH? zzxi=teqT=3b(D!iC^KD7w7YL5>`zq*T?_Et3GEhheIg3rS5==sR0?O6}Utl zu%s2pLKVQG8OTB%z@in{L>16v8EB20RWk#V>fDJ%HLrXyd@PhTGA_3*c5nx%*WtNP zNq@MoySu4|8I4)jb8$zF9CDrqhQp2)J;Mf1bi=GhBmX`U>kr(r?+`ej9Jv9xemc2& ze7&B%VZfBm-z9GAOs`vleVrZL&cC|c&QHHGk~ z=bgHKyGX!?rwa*B*6Nq=?sMv?l;{V?kIjx2}`X$3^XudnX8-ZDjhZkIfM)@}1t zFQzqKpT^H$j$404Pr6}nb4@w7FAgvEV=H_73m$(h-@My@f0{LJkA7vQ$mjjCb#`UP$k_xso6gn|>IPI_L+~OY z@)B3Npe}aFZ$(|_tMnz~sdalmGYCbjmEjXB>a)# zX8RP-wZ$E`eL395nMn|acRtka!F(~Cr6j=kd04K;i>AuVbeH=L9fOw#8G9vEgKrXX zD(0tF{qPu5@xLm=DVr5n0p>X@p9NG2b83M-CsYd$w_;{GqV5=|MEbV=k~TNUS;joH z*ezhr`Gr|1*Y!(U9K<|#7ULhp_zflggDC$&=>H)4Zz%8|^z$Et_79@{hMe@&pjWnP zHp$nAkNf)`jk#LV3J`CH;U0|{-Z7<)@ou+toePg*zwbkzd2#aMjM-_-N;X5hZpC6i1zpgGcnFu56yHTT|r^) zDGBy-8ALoRX$mq8gog+hA{);&r_kzZUU%V54dvf9I7^sF;lRXuEahb9AN*v0HM#80 z?-ued{Qyhs+O*6*ik^Mn1wIM;MCzx_zx>PE5W<_wJmpomw^#6N_;ORH^%r7*oY zTMYAG>zqclx8t3>qX&fCF;q>?YVqgO3wVyTMvud2DfeE=Se>p8xl@ax?{a;n9;Ves6X#y4owiQk* zEZI!VILsF@*j`7oJ!lMfq6oglcbM@JdMyV(O}4C_9v!7l8SYN5U|%CAI%2S9Qe2i5 z5}lQ8_fA=IBpKvfCG7)|Wf)tf%_GYK4DG>`EWC`9r7OX*wN}VjRLb=XHZ$7q^`R9v zr_`4d-(4D6$X!g6PKUx@_y5KLM~OTgR+u>Tx{+E(?1bB4Pco}K3gVLm${r$&?cY;e zx^2!q@0$;uier*hI$_}2qm#L0TDnK$KX!H$4v?&M$SuLX^7f1`h8z|f56!?0r4 zgNv-HHW39s>o~{E6qdp^oDfFkmK6Zwp=lm}0EwVn%&*SH%g@eRnq2?l%N{z}KCWKB z*TC@%x44%8>5{c`dTl0sujKD;*cpGZc+|l1tgP?Dd7dlKnc9IK(v5F^e8B!(%7u5F zO&(gcczg$YT{Dbxlhp{C9Y!_eo#o4e{JM?!yhZ9-bbZUIwe$B5d>pD&59kt58F(=5 z_Wk-p@z^#-f_bx@1Wk%fN`tYHx^j5~_JI}cbL+pB%1Y>=dg|c%J1T;aDX1b?RnxA~ z;Vx{x(N_P~uob>1;5{?zg&+*ihp!$PEB#_?B5 z*MMVGv@OT-;Hd|xqqf$vYw_uY8OL(`X~kW65#GXM2O zRp25Afs85c+&j#+DNZR9nfcaONs~-}o{xg!dVt_hsbgHGpy{5x`BuA`(~4CGoqzix z`Pbgjq)qGA4F-R{AYjkFk8UIN$8(i=E$%v5&n`{x=-o2%_Z6wvXn2L;SFX`Nrr+t^ z++JQWrPb)r^q=wUhkJ3ixvOvymX3_RBnLY$UhbGrUFA69!X#*FcMqGHy(iq#J`D zW7!!m{LaMqHcE~CFC#{I%IYGk*v7H`vW&3bWq%_UgRB2G`ZLwu0+z-Hel^vbG(n+8 zM9xTF_?)5?gl^J(ci)Ig2I#laXWbxeBIowjFE*#~a!OnIX$G- z@+)=aR2>hX4{zO$(9DJr39-rZ3cofTb!}#u|eY~lEfbh0$Xeh$Bc zK>4)H1C<(%%W`)K_gSwh-2U<%sYU!4I=ndllM2Gr%tM{~WJv3WzfHkf{g#$97sdqX z=IICecDjI>-A3{FChp#Ql4;QF8mlUd#iy)*MSwxD=u|Bj`}l*h2*kh}c-Sf*2*fW0=($9r1mI@%=ipO?HU-f9b2IAB0guw6c zn!p^JV2%(9B7za_3H+h@^m}|#jnD|54--vy2V=%C)eeR*P!w-jcqU7PTk;=e<8(g* z)XqZ!QW2-qRuP=gV>N*b)>4)lD3wgq@?^%VgfbnCPy{N3OvOSQORT{&NUZ28zJvVAEH%VVyVS=>Z8wSPr zf|x~gA#m34A)Dk8E3tjG1z!q1jdwSy+Vk@J3;-D^u?APfG(?XX;P$d_Y8k+hREi2! z2hWR$OnVs6HG~=H_0B3gly=Wo2 zuBh?wIPG>W)oI2Vfi84Mw(-z7piZ>8dG*3fS=QIjuvU>jO1#ED2q@8)-br@e-@<c4j6f{UuS4(haX&s`r$_L0< z%~0GKpMQF=|D|{Ho_Vb0rOP$_3~28UdAw{^OMYBZP;MvBBCkd=5^Ko~5dbsoDR!_$e3gZ9I<<9H1Do z?}|0NJ^=Kf8DsAptAE#e1JAT9c?-|c^8#Ly{Cn_KUtjC)(^o7}j{MK{_rK4sxUW+Z z&}V>B49DI1K%p$a(SfL69$xQ(LyJ}{5PT3(h8W-0o3o1Tos=MaMxT&Oh6phq4isA@ zoL6~oki1hq`B`3q&+vRGmQV0pz{K3{3?ASkq=3~|eXCfiT& zTF6&GAEvqQ;rZaAq3-VCGms2ZZh+q);2tMF`R{06A$TaGL`q)gv>xF*2Jni!W28QF zUmu~atEQf&_TUoN5s=OAfHRCA;Xw?d4 z1lQ4A4U|Ev6j*kE|HWTtce4c=_LmMpSYEr>rI0MZ*4NKv>KNx)AJ>2!<3Ro<3!kAS z2Ux8T!#x)&h+Ysj<2_RpY3!e3%0TrpeY8Kx;3D@FM6q+~m^%dGk4lN7!Z_^~R3xxT zn;K4xzI&*MW24H8PGI9RIBy-A7sGzXxA^dE|5Uh(z;1pEFi-3}$F+9uLfC(=P^fGS zkIwDDicQ*VYZ`Z=3vV)8w&zcBI9}w$42rSe@nEgKl{3)jp_XAk>J*B61Zj?oF z0?bBb`TF0DW+jyJg)vJOiajVwl5h@>DMtREXiAa!yfy>LRuu_dc?8UZt~ z=1&FQd7Wmlo(%{;aV|^@#UxvdVfnbxCW@L0MVl;pj*+I)p*AapJHz?j&NU{v1y|OJw|n4TeHz9) z*xBRCKieBn@z|HAX{TPfi!>i*<&QjUIRkHB60s9a(jnMX)TulKvWF_IvWDAI;nmE) zBBb*%N=Q_|*Lm|J)k*#&YVg`H4WfXwJ;9~>xd?25`BSs>6nTpnAX&z0SLzsS{~)}Y zEhM`B>AAG;x}+yL1)Ub39>=rS(4XX0jmB&&CA^hAk1hbeQRu_1(N)-=lQf^@rzbtp zYzX;`yH(^i)2KLOmkzGR(z#%zZcJ+AZL$&_nBVX98uppFA`?FBbdlV8@V4`q&r_&& zeIiQJ(gkg9_%qO$fDCQc+AAKYEXHs5Rkw2+te=nFplyM7fjABhg|Pr6G}S&x@UKh& z&^XWf!DM2D1E)$Fz;#D+wL$(c){R^KPMU$Fb?1aZfy6*4x}k_u&QD82s@J$dz5wS% zr*L7yOlr!ej2(E@KV2cZzOKS!BjYKS7(*%g@Ip$40bhkVqk5pQb9`dZx@`CA<-rK5 zzqX;0 zzYG7bTPt&w1B6Sz{4=k5EU%Kr%3G$dlk4Pt!BNXP%>e^+#b~s8F<(0@)ELQbFe0j(T zKUauv9?9(`ozP)Sh&g(mZoY#;VTs&PHxL$hl7>8v*z8mDt*m~|95Jup3bMd+wQc3) zGU&hzLH|8X$|379q>GC(35+OwAQTs(ZDSb_!z{n|N!BEb2wYWx&nsJ7Yx@I3?`V8! zCme$zAnTzFnOnwMc?e4|W#gvrzVpnVb$?Sj)-hx?(~x*bAArcUfdIJR61-PzRBTqi zx3#n6FEn0W-QkZ=4nZFDp5Ymo?|uZcntS|3tT0h4?pM`JW{M zt^+D`^+Cv`UB5)OpZUh1W4mBDz;)$&82=_d>J%{ORu&1g=)V>s#bRNs?%Ad#VoJhs zY`FV6f7w$xP0C)x0TaZCviDz0e zn8YZ%D2JFGo4>^5sDET58i~kFEL!(nb`m%Vm1_R|JzW%Rn^gpM=zUR{!68|V-{bv% zCuzuh{_-dC+8KZGy04Lxr%>@a^Aa+^wdeG4tGamjnCxN&G6T<-CQ*0Ov;<2Q7X)TO zZYih0`l^(*?S|)sSFzYS*b;QTmq%@i)p=ym_E+CD!8>-}^Z|9Lm$O*c9K36!w|wtl zr%KQu^Be(*|FN#`OH5GFxoPaLESEc=>kqvM{b^)rM7ba;F9&zvkV=g4lm25!8Lf-} zEOgK3U}zavd)fM{t$tM%q7UK}Zx}`-?UZ``w6$@1rwBu4$ zwDK^c&7uFZ@^FK7wWk-q+pC()5)sM6UA@=SyWzQK^_yKf10^U!4zg1F`gw3UwvFmJwghHYG!J_}By21l zx;Elh9pk!M%qeztdwc41*AWX>NWp}HOWzOz8T*z;g&LM&IY7Dpp;=ev+_@Bui1W&c z;~DY3n9m($$wDwNOJ~Dj*7d90rTAm?CHSU5?XC0?E>A67TUt7L`*hL6-Hj8Up6XKz zzREPo>{Ie+{L~ReG048J%Q=&bR_DI*f-PU|=6YpwuLfjejgW{;oipWLuI*2mNl zMlI(S(8K*PJEtwF`5;hiRqx@0If0yv?H1HuwG&aBBAj~HmDx2;9Wn%Z{-PGdmI4_C z54gYeh%}-CI-Oae*8hApORnUEF%vE;^Upm-W48Ve?kutLucbEy@f9}02IR-tS166) zHxwk6kOtwt@8^*EbuAK0-J$4;h;w`m^}Y9a0Bo5mk-ZfvvDH^e?D_xT%>l6LEsXWN zg#nTAT!237ivNo{n=R=9R=Hmqq?WRSn6Vb+_-1b+k(wfX)*DiNO*3DcNGztiQxl&n zQ0=oQ=``9PJ}6}YsALmI|T_|rFxU9KU$0Igo{}HT?drWTKu%Ka%y(Vgzu;d zJoq@Liwjr+#l@HFPo|BSx?Y>Ud9tL<`%mm&LN#fQ4RIs$esAcyV$e3tWHb5p4*KNo zX@jXNDzn-sP46nDS^6aeNxa#2UnQUyr&rZAx0RDy!tYYTnad0-@r7HogpsZ**r8qw zq*d8B{Qv8yvWv=@l$}unF9|dU`7cjfewy0Bs>~X?OR6A#qz+Y^G|mGu>9ltWRNq=O z&YP#F1MtCB^TOxf*=0?j{D~eu`+s%yMn=()E-%x469Z2eZ{YgRlA&{J$3J6kGugpP z1sf6yV~$Qi%IMa&aLE8ddz z^wze=yh;3{5808r!fWL`D-pxkgWUpp) zn#4^0lB6+{>I`WR`&2&w1OeiEODOV1({BEQISoRT_tW89^dIHoU*?VgKk7ON-fm8- z=F@r4XHOWL>@`A&zc#+2cWwkgC~BXqOn{Boh-8bHF>4l8aRcXMSiEetT0ePWebyrK7XqK__#t#6$|_}`QTa+81uuMtm$sT%lQ{pX{5#iE``IiamzVaamr%YT&*C)j zEcdJHhiCmKa)%0>wmOu?CfL02@6RQoF_(70A52@Y-qS&mIa3xH&g)EsCDChx;|5@* zwld`w@dpDZ2be1R5oaeB4nvMq+Og**rQlVm2)%p|@1AoSPJN|vhpqGEe(B0D+?)rv z@t0#$mhfOi-cxcj=_(ac_fLuD-6E|JYg-6Mf6&bWbGyVUdi*f{!0rVGZDy zQIHi?h`!*$$=Mq+pl%}^guB*6biA95L^A?osNjQ4?LQZTqxo#dmMrJ z1eH2dGOsl+Wlz3;IDoC3kzb@7n%uOeIy2ymv-jw+xjJz*sY&0r#6J!CJc((ZZJJlx zb0#t#%<`_gEVAW-`jjiTc&~pj-Nx-iJFr0?Dx}B!cGE~1wVhM)6KSKDynZw*^(4th zZ^0cP?>WX4rpNH&5T<7c|3z6?HZeZ$f~nUw(9kR(ZZq=ud6QDqYZVL8EXs$c40ya4 zHWJ^r?8}03d@sHmlwwNn?!~FDpPmYZ4sWlSzd8wBA6pk>te;qsH{juJGw01;oF!jI$u(rCxwEGh-)wGlJ_^*E)hO0HGP7M)1e;#)0 z&uRL>w2B*`0F=!R(^qbLYw{T8cx8HTG zR%XWBh4Zl6Af^G*Js)*)kwCf}d<$`pO~u}*3JZ@iYQEkJ1RM@sgV~KOs?{h}4w^8- zA`+gZU27P(wFuv$`o>P=AFe_-lBZ*XdSKl{E;xA$qvuN9;?D<@dnK=?m^n%V+8A>~ zMoBDNR!5I@HSte@7q;y=QY5hXB?JK3U0@kv^|^ZVGaScwX<8@E4{0W;q+MBX{S*`a z!Skyg9XrN6<~@ldj1ZPtag}LaevP4jjFW7%} zwKLJs_&z}e6xIkm1ZoClT1P*kOmVJQJ$Q@b9g6novlXYN^8I#v_rxaqJ0kG-X7$GJ z*@F3ziy@=M8^7$L;*q{a4Hz|!*O&`8jx>z|6y%aju<1+{BU+~7eeBj#p@hDU%B&ib z&<({~7lq6Be3O(j2B|6JEss`VbS4R1v$}0JN2hCH)~4R3(UMGy$T5+q++LVt^vhd(%uj+*!{@KkLPN=w?ibIv^*rC8Yz^K{y~+hCw*15Bf8g zyWA9%J@0BM+wnc>f(!R=siE3z8KA<)G1LFvtkxNn!`Eq>F582P%C<+f;Za6Cc5~~Y zjLLhRNJHwB27Hw(-s%og;-XaSaXlROy(g5pth!`tq@}kE)NX*raHph)P;Q-|lu z&FNwCSE7`tlrZhRph#Cclh%XHQ(_2Z6UlNWJVd&9Fss9v;hH*P7Bg2-=v{oL$t44p zD4{Sm#+zJ0iNLlHJWje5VbVL5PSP`@!D<%qc^t7gEuac2#HfR)Z!qRBlV=;7SQwL3 ztxOyn3*a^N+>U zLgYy!Xg{Im1JGkd95>(oNGT?F7$Qd#oBz&PacFsjY}WCvs(kJ(*reK>YxlV;S)bK* zpYvtZm&99)V$Fmu!gDoT7FVd2^(D zhNla60%q^%J>e`Gt&`oSYf70aJ=Cxtf*>0Su^{f`cZ_;`;xtpi*z)TCs$0Iv0iodF zNR>W4B3!Jr9Zr$R2*qn%m1bfDV}x*LF#if^^lWS7=7p*D>7LPo>X`Qk@PQ(T}OYeXF%;ArOFp@;KFXt zh*o$x*FOc309DSzswX|k0R{JdvfQ82z7}6DbHZGR`jV{U{c+eO1NuJLpEJ9Td2C!j z#sZpYQbeeE(w%4=q-l%6j4z8z%AvFUD|})pfgDO{409SxRtPLbUN3{FgStgv5-)Tg z1S?m?&JhrHd-$6kdmqCSWE)#J+kg_vm@^lJ{enCYZ+m$?_ZQwx$F>#Q7Em8=VYLXu z*PqU|u##5e3-DZ4k7>wf;PzD!m;}B?{}*gcKMoKlG8dpTP%C>!D-b>S=0HT%_S~rk z;770Rbrgd#;=0de9oZ|_iCKaTTlRjSoSFhJd^=A?|gF7Ch^s` zm9`T?f)8q2tNvI6z?4CfT$+8M6c_>MU?)2xa`Kq1;KOD~-R)F~BjAuj3P5=?hq(no zj9~^5g-{<}(ju|=iAP5&`0I}{2)}`RH?5i9ERP^7D>n}Il6wf0DhtyG=EOC7&J zkv0&XX)GG3$i2iB2LE)_95A$D&H%U24ZxDIWe8Gv9QjXQv@lE6Lq7`<8r^I_F^K^T zQzqcL*#mOrj*hZKih}6mQDY?2J(ouLN) z1|I|HY1CgF0t*8zXHC$F;5n5TI3Zik7RvpLHE{K?&&GCasatr-+-y?~Oq)C}ErAz< z_q<;@U$9<(p=2T$s)Aep)VcyZ<~UEE#Zz#@^3I>K)&T7gZ9@6-MEhKm(tPUUvmsw| z{Ha_@|8tfWs)z#XU`FGtx8+j|#LFI!7|kn?^Ak?)gp*bmG?4Z+Aq2=5g0Lr)$C zd=hi2{aLb6IANW@U*Ho-Fovm~$`EQG-Une0Z^`s0Hm z1IqDt+LUG0kS1}McqJRAXGiloP)3YHHpa0tvK%;Xr9+zVu{3G_WokC<@ zBM;*p(-&~`!&eu&9y`+2H(5DX59X%{pm(kfqqIY$g1YdAiv ztYA!K?@<(-h8PN9T#RV|8wbVX%o*TpL(oRw=B?Y;t?$4yho2%@+}E6A!5DidzzpjG z)0)b@_+tbZhX_>w3?UN_G0D=SV2**@jL!itG7eG&9F|$EXyTTiFMuLJ`updtnw6B* z79Yg2Nhp9A(|jQghPbCIUy4Sd4Y_uHLLN~CDsJXgMk7Hks!9}5vfK+>E0)kyiFaw= zC@|7M0TsS)Lkkl*b30|RtFFw`ulXI7uJImV9j#OPt^!!*;?nPVw&{iJTtnlC zS9_C1o%{7-Z51MMRPhN-?I>yA1^uoam)!VlHF*fcrVw$ZLB3q;H--7`=VQXz7GYeE z5CIs6FJHA9L*~fFRaF=&anQSiV<|E8%-#u#meb`>uKb@c;)W^*o5}6PiPz3i2<+0%bUPoHWNse z4bGEt{5J%2DdO5b5f1PT&4aUMn}T9)Af#YOo2W!zagjs8914$bxL|PX9AyW_%}V90 zqZ;zx*(Njsx(Dt?Bu8|+tqy*r1X%V$G$Sr(aNHc7s9MXz5xOgcr>`1{LD2m|i}Rq# zo{>DeFg-E(bo_{ceQlIt6xArf^!Kez+7d&~9UpEgk!4}_WrlkXV(-33&xyDd`n|Zz z!iJE24^nCCm_&x-mv%ho>*x81e)I_ zW-S3q0|a+y*%1=PT@pQgrFQRqcOw2wR{$Q=YyO}Ww0Y;N1de|7pe-=ey$C@3u%H{DVM+Ir6ByH~ zJkq5}tt*7;3Hcz5l0IPJ(I6&_TcU4a%&K&RS>*#VHqg_aOW`=o3#HIyx9=QmHDLE{ z6*{_o4g*8Z-jLkWjaSajvm-uZtY>-`ZMQ`{&mQ%KntSF-@$`qjGOLH13f7O2TlQ5^ zhlgNns_UKg-Jv@5(_DMjXd^Vel_WGi3~umVn*-x?<^w?kRhd`^##6Z^yH$4|)j zvzGt~!8$u9p1cJebbj>!8HdB-N`M9;hL-fT4T{VS_6)P$8m_;%Lm6q02Q<89E?#fu zDd?9}6iq3`NZzrnhNM~gP!9NW5}8g^dgI!0WkLGLP)dud#>MDSF_AmJ5-oSW6Z>q1 zn<>-&iOV_nqUM0MdeCXM&iy&Fij)!FW#(22M7sXc-{k#pT(ce|;B&iKJg-*GDXjYG z8dIoM2O8_OY?&n6s+3na8Vbm!M=#)gkSuD%5pzN@MNtH#+@lD>U#gO@Jp+rAe4v|T z>WoRv3U%}mRS--RdUYm7i=qC%%-BK3pEn4w+=|g5G&es()9!8`^-7M$Wg{tvtg*7k zExuE!9&J2s#gM!{tJ+wE z*bq6Wd?hxNnt>ja+e`;VERu(T1^=wixs5Jc)v(}OXW!bEY;WNIO{zHr5+uK4LVj(x z@7q-i)Qnfc4fclWa85g3-H~IEoJ0z+)#n(%@cwa(_lb8#m?IrBCUM1$nEiQ@*}PH& z&LMu{47sFe+`4KXaqOZtS47$tltoCJH8)TZH(>sD#pOB)Gl!M%FDi zcAvaeZSt_)sCVw%>%0x3u<|4*8Z{*d#IdSZ2Gu_K>jHuMG-EHMw`XwGNZe0$cclc= zWn#m==@i|$0~WbWlbGIIf~;@0_Ct$FpRW#wL@f@3z9>u&3iU4vfOC~6>;(%EH;(km zbI`_ymBsHb?n9TBb!d#R3>QXF&YH}ur32>+rwGI(3+paC2$CYZKVqe^HZ(;IRCitV zkIWf_a~TIwNMpWNsBiuO-6Vq%*$xM$0+7vhV5+)l)umi5MFOh+ArY`PHJ4l$XJB#E zF(1abV_0K3(YH9TDCy8)*XCyf4N@?jFr3=++!rUHQ;~vMR=SLZS=ow1O2@O^(-ejs z!)xl&zDr=A*!h7avlP#m$LwqTQ8*iiE^ z{azS>AjC)o>hN{{498%1uNA2Q;Y9!@;dr zHil|(kw+P%C1SZQNrP4p=21zu>*Gs$oKDny}r>?7-uRTGjgcUo4M7O z1na>Rc6Sp{WTdJYvZUaDhN${6nu(3+s@-<90M~%lqwegmS z^I2}=aoB=uiIra~6${SOEr4oi5Qp77 z5k~oNfOwZ#um_3t_n=4iwBcA}vA?wL%%lNS6aLsCa*)*2j;*ET1K6d9+}=3>meJVn z`whE`$a5@**2Z6~sFq{gYS>!xV>_J81V$3=B&sHw(}e?shA|4g`W-p=%Z4EC2);X_ zA=GS0_9TCC)FH1m*sX#bXY9n^uv+dQK0DbgnioFttnPs{Ixg37H%!wvbFz3G_PQit`hFTQcKcZ*t<{zo*yeu7w3A!x;#LYsUkJy^LB+No!MI7pYJC{`#5!4xScu^x= zl@C^I1!&Vv((8%Uua}^xq2n>W69DUCS%6LE-2EOyyky-iql@I(F(QTcAWwp{&NjfI zS@20IN*AL0U85WC?ZF-&Ia=Ef8%yfWSkcZVAZPKAeV@8V&od)jsrj>Z1PtFsk01kl z4MU{4<1*&UMM6Bi1p)d#zHGpYO=B0Q>=d+Ck)z*maCSF0{S=f4m~c1Hk2P*RoCaBF*dZ zrg8V1#k^AnzRBO64ia~55c4$JvTq7%+9(?5ukdKB8TeJi2!#&pICfuh*^D2$$Og;L zzg9w4mcSwctuhYV1F}Y0jcFUZdYQ<;e}ZwK`nnb3YX%U-6L^hg!&GX9%nT*JO$4IZ z=D9BBBPJf_BhKE5ojxagiCpTqX?k(K3Z$bwC%sY^6CK0P&9L z*K6G7`M73G8ja!cJjh+mLgw6a-ZF`m%&t0bg<|eM9vt-Qtm~(AfG2u$vS%!^8_thS zxP)HdbrxPftW~#=X<69|_EZ8FO`$HGY10<;(IsRjbG%{ecRHwYk2Ty2=mzg1C!tfA zcUKTliJyvAB>nhDjHgYXYoJ)rCqyjenmJQ%5^Hc+{5gi%nWCbC+&$?~UE3tR%0EB3 z%>Y|@i2m1ND(|K345pl*vFpRn@QE288rK;CACG2t?|FDEYn^MiVvHABjvU9EUiJK1 zYMp&i{)cyJRkEk*Mw=$P;mamk8S2u|H{UDBaqabu^m4^fT6$!Z{UhILi-fGPo^-it zyW6xvE~jR>`hnJs$z}nQpc*UE+^l;pVM-Xn6`I4RUkc4W4)j#Y5aOp*iS}g{UxbVg z?+3k4ADKzou4O5ra1OlI54zQGG~F5vx}^l=^hl;Cs&oRsYaO1J%;%0jVVPrMM}?W@ z=PRSW&ruhkmX-QsXd*HL(utCsN^uhsoXpF$@gTQ2t57TIgVHonxNFj#>fOTT4aa<5 zW?9T7iR4b?TYb{BIx}`V_AI2mPqbej_Uu7sNb21;Hye&!Fm}^MTyT0iW{?KAk<;-h zfb~y?(GX`4hFK`dK)@Djdt>~)3Ya-9I89;mf+qR22D!uxbfmI3y)DJtU{75hgIjs$ z1H*88IW@-%y-C-DynfeLv-Z{LbyX1UR+PU4_HR?5t!MjeoZ#-e_Hx+e)?u`Ib;rL3 zUg9+B^Ewkhb(ZYpe7*zP0>Xc}(3hVZ1$=etAgCcDh2L^p4z%o}2`;_!92#WI-*w^F z0jjf%++b>k@|0Z1;$09c=s)@axH~A1THTOM8AiN=9h=jPI-nX}XmsWM1n`eP zj2{OrxRa@Zz#`G;91NW;dMl!y9dV^a^tiGkZ0AugQ|3E3(F-3&-Pbdb{aOPw9Zj{K zUkIl;x6*loGvPPG;V#^v(>o{|FoO&6W0ZjJ_8#rUfmcz9T2Q^4GH3=)9ZJSBkvDZX ziqUr4&VS`3CkaOZJyx2^8dtz-}CCUBv`?@eyW zRyY&pUwzmXAI+A~8WLtLTyDV0e(KWZSvfPY4F|oo-16acOZpKuRgbfGlJ7wpWjQZ7 zgD#BixA7mp9|UA%Bc}4M5CEWOeObQUc_gt zvg3XIV3f12w;Pg&A)DE{^^j3MMAsZ9Sg$#+LT*&%+|D5=XOy!Dtelsx!^&M>P%@(c z0ZLhOq6-BrN79qsuMp)HI9MR?>d|FeZ0;BePj@BEy zA&zg7K&o$#9=S;A9*=>T^7!T@x(3bN;vjh|(u=Fdn4o)mfpOSYU`!EkSSO{3(8CJ4 z=(Q9;6?>?Zj`1*MeZ2;|6PB0^i>awT<{G?$s2Nl~Q`aJsr?|dSarS56qzqj@=o;uB zgymg;#KFz|+Jc-4OA;-;5AripnTlN-Zi1t1j*peU3A#{0Y+NMG5d~GcjprNIkW~#4 zbSDA_mAEe0GP+uX#=`51}EI9tZ2(Q~aaq}n#u%ZpJh zD##^6i{^A&I_Lt1WxIuF+Uf9K!5aHi3UyOPA$izJNp&8~N7Sn|xbU`u1_aAepXE?1 zc)^bJ9$BsIq!<6LV#+yDgJ!D?$9dgp>u(-}Lek_s%QnOwJj9IWO38!8uC~kCTMx2E zsW3AU@_MV6527Y6JP!O3rY!~6spm6n_kMQwdDTnRJP$nep9{|X)3=1KKYtK4eSGck z-MTa-^^&0kC&70}hy8Ey+%?Frf3>FcS(?|t*JtQUlk_jPbnKu|ZwO3i!QNqb+_t4D zFm)zV-U8bPUR!g+r8rQ+l37Tsfg6sui-AK>@N&n3aozW1+R z&}$WWB;5G<2emx;TXD;%*7;nPX!ZeaDD*jL!o(4gMh(y}I-uGXE=b4%J05?;%-J*` zu}<3>#Pw^2Fe^&cRUXozMRRxwOuH@hnPnwY zM914#IlSj-dgEdp%!hIG3z+_)VE>QU1eQ^r9}nd(0p{%u5+A>0p9m2`X8pnrKGfx& zSXOnQuOOj@$!ixKr!_5EZ{>B~MkP%ENskIYMPGC%6w5xsGJqA=+IJ}K&-)?vFTk7j z>KAD?8W-Fst}d330PfviU2^^p#{|k{VJMQ5-8y~<4h?14jO>2p zi-;e2>bT0!o|Pa%Y6pHV^Sb~?B-2%J?T#S9hYk}E{9(7kWmN$s3U*_vqJ_)zBnSEQHu zY_mB;R~~uQ@gMlQaoQ?;WTB#9Bk8LXM%NM$ZSk!6N3xvt62+Fmz~#)M^Ah&%jtFQ3 zHL>iCXCGL=fTyMKJI(q^#r@EH6T=t@-EkTKR!x>Ytj}zzCLg1y->0jdHy*sxI5NZ? zI^VYH&$(DTi;Lij=QOKZuW^|Fv~M}gKc@fmwrbblql~(%Rb~JyPsfnXmdQKAJZ>1U zil;r8uF8+oZtqRni;(+hX?KeOoIA8{uAiJ6&SwiE6$M-LCmYWJ5CTywdytaOW1c3 zVbeJL=3OAfXKK8kXID}vg4M?=UbuUU_R>+K^EvWMLojCdA0rZY<%pUYTc)oILmXGA2BYOY@35=fq&GBaY5FL!K#J10=(+Cr+er z?H~;WZh*ArFE@Z>zmuqOA`hc(k(=b93#Q14OaHm2BNua`92>YCp zqI`;DUb_^3AeKWTgAz`9**(2$fp#4q{H1rT4cf%8LPrqQ1goFeJ!w`e!9#&oy3vM^ zmhq-g41X(oGO&?DhNOJYX;^|?GQ$yUau-1E@+ffAn&c#Bob{@c{}T8D#6s9sf;$iN zaJzJ{27$0~X~&7rFZFJT`opqK!^3bclKV^^6e(6I+`k|OMn2IU);xD@`cEeJdMit8 zC_&K9+crg+Y5aYluP@|vj|qNwS(dI`j#s5#m2$Wpo0@^FD4a;bnzMXw+$v0|e*CrW z&J_EeV$*5xEX5@4op_P_Y|k{c&}6E~qYwt^`L={Dv6(O@+q~6`qMqF+B;Z$<;a|HI z`yzi(TnSQV4#i-8C~31Z$>g|!8s`mgnQH(`u8xzH<305hWR6Oddd(PQG(VshYg7pH zTw;y*0_<(%<7KR}JtzN-8T~LD1^35WD19pDTbFxtgFeZR6_D5whoU#-W>9N()R^MS zuc3x@QdF;+sEZ66Wv7xD)O_6DH@eB|GwqQp!v7kHnR4F?;t9XV(1iwpCWrCw$`H&B z+&8~mlB-J}m`6?kq@RFmz})7!p9fR}Yv8vw6rYa~ZtZ6F-Ye|GQggG|`$3?l*>!NM ze)E%89x%}w{iO;b^d4Ng{0h&YuW7?}P$HDuEzldN(%L&$1sN82*3f&^kde%OTDjfe zd<$eGa%Jr4ni{ORw5k`O1~@5gBc>!L)^#fu@qE;fNY&6tL%tm_7P&gMBtC{@x&Ec0 zx<$vax#dreIBt7pmXswd)*QP$W`<3eQjt>}e5JF$Nh7tJ_S1_pbLaPARbLQcRl;%tFe@Qqh`HvCD$( zNt3UbH&YO`Bzm_ZXWao5SGi{*htnQ3bBWo`J@211u%Fvvd|rz6{#PTYj!6F|`Xlra zW780{g!lxdB)tMeN-2K64rl?M^Vm}PnvlS9dh%$Vg!w;?TvFjJpkRprFzNT)&l2sOVs zB%}T}z5kjtBMCJpDn~&vGbXG|N6H$0iRmIY?SJItNPj2i;4vG4Y4xKzLM@0X`n_RH zLA8N_ZQ4uvfgXTrW-OmCv`r$_)}D2<^Mo=}%=#Y;Vio8*c~tkQKkL&L>pF2Z4X9JQ z)hf%^6rG~haD*JvTMZ>Ss&A@uRRk7y8eow5fEpxFzl)*kqMLZ=J!#Qj$lKFNPJ;IT z8hPqt0we<*0MWm{C+z0^lM6$o!g!j^_Te`n-P=D04J^qI*67ZVg`=|1$$RSsAU1;| z_^c_2``q!-4vKA0$H(2Sp7Qey2&^7MMnRjH%?*?O3LX(NB{$n zCxl{6Lm}~R$Nm0U>kOt<238$vz14 zzt<-kwmI?l@OsC41;yjExpCUlxo^jxYk%>7t^P)^m3qsTuFSsK3{#cyC zGvWolg(l%m$u=cet(#GdfX)#IjM@SMKl@mKpZ+CHOBD4B$Y%R2YfYQducHqD5o-f- zxzybV5n;oMWFSigA(Rn4lB=2mh={MBS|r>#wnU(RO9dvZGQd_yckNtxcMVP9l^MW)7D4tyDK=U(oVu#`dvCI6SZy_7 z-}b+_o$>sB$ExD-K&(`>*6IRD#zfI@mF1Y<$LhmMq7=KLIt!PxkpkfH)IZofU?uBp zq=+Rn^*_X5zw1wHsngd8oc}`vcQE!J-gS@vz~+K+saHQTXdxKqaog)CLw-~m{7jMn ziK)ZhweBA$6oSkTr|~=#u)X2D^8eVoA(1EDp5)4MZ7fxaJucy=oG1!Iv|+I_GE#`@ z&y><&ucs9GF?QvDN3HQQEF@{;`J^8s|16bN>yIY!@gmwEquBmPu{Tn{9(Ym|`7!Rq ze_Ip(I{(@FU+2F;|1=LTJ69VH$BM9G4T~&V>q5|3XCQSvHvR_5mqzNr}$lTASpRc2N;%{_f%QvOY6KIrDm$t^B zG0+ViV$xcQi?l=AoOPXE#4zc`jf~cev|C!6ZP_)~)OYE#yR;)zdlw(A?L&N7$8T9n z{=AIVx}^SkqE&fEYJs`9Dr6YnxI;{vmyzG-S?@SA*M4H*ab&J`O<&G!ZR7_VN3zwe zST2ySp?x9wK8p=q*Aq)i1{y7C)M`#F*?~^+cS?=Yhm4^JV>1>N~ZpOVN}P zzVHO~0JFK3+a8Z%F)EkZF-2Cj5|3gbwd}9vQ6aZ#4P9es^wxL2_t>+Xs>}X^lY`&= z=&uV$1LmJvg8^~W|KlkF%|^hPnX3!;NlzikhmlZ3028JFGh{VJWmA=jxE3(K`hbYT zFOLUQ9P2;XVVVvjG_~}e0ZA_8OxF#Zocbh{+CeXTH4SNi;+sJ)j5-3ozclFwB1=Yu ztrW_KPgJdcMoG^-SkU`|5)Zbo5aB<22=nw&vhil#dJEz8x&FWy3;&7=dUla5Z=}EP zOEh$aGK)|~av^lG;t=aEYvfJGKkOZb5?Hq3ipcRK&W6B&B;3cpWiR_|OliX|3V53s zfP$d&uQCdRxeU9DJP5xVKLEdr3_`d;psYpQTF?xo!A($JcL-c3o(@gXea(LR(s-IY z2fvU0^GTNLIY6J)`$&LGn4biOu{o8BxD*0N#U5{#ZH>QstjjW9UvLha3WCxu|8*F z)cy$3ZRg_j4k*UH4@b9*Sub?M_9TS5M=#k8lufdax~G?<&AyR_o;xy%Z~~YFdn82y zyqV@W;t-WF?Kj9woLNk)JG+Hf>R|(vQKbe!p2j6Y{$xuV?rigH{8UtVzG@D?`rYnay0pymdN*nktk}7C?QdW z&?U(>W-^_VDhhd329C|5NR;4|sPZpT9!i&x6?Q--3ZP1t;8+I*QW1ocDgLPA|EKrA z6?-y8IAxk#`y77A#Quu-**PS0QsUgZNi^>}VPNuCrjB!R#bIj%SS2Xc*uXOAR&oBr zn?a~9P14uRfJQd$hA*#V!$F(Y@{GSojOP0wf?$YMIO zekomfj&`VQ{Z0DRUl}2G={}zWcaaQWiy~%GAlcrAbzUT)K9yGTiq1AmMt+r@r>1rM z#tB!?oLF?PpQ6dZGh>rKOsZ5prC@BL89DD{9eHej+R@QAMg7;}O@TQv@7_OUA!;)5 zZAj7N*>kyV{U4h_-`FP$zO%&whsx?S><+ZbCq>5ifv7* zAszxZ$r(ySX>=mcGP%CR^E_y~i>`=KrUT*KHYeM&mSovK6>*CEe(;u*p=av063udAP#(zYO0HhSepE%^)l04U~-!ObZ)w()spKCT*iJ{{hZ0g)w` zVlSpm!N%SBSI| zsB4sji-9>FIu}`sFiz!`LX)gwyy_QQ8$q#&0bN_ckTPm-^nXcyqmN6QCt;JlOR_Bv zUFB}hZEW>-1Whq=i)8r5!q@E1`vbP&f#N|WA(LSaxlyI>5|DGi_lGiO>d}FYgT}+` zlSEJ2vj0CA;134!chZ*hf3a}?GRKIdqyHfsv>69yc1eqq_!qnxQvS@p&v4N8~7X&d=^*_W*xD?R07bAVfNX`hN z$E$v`W9M)Qt**{-)G;gL&uJ?Xm7FpcSp8cK?e6-`7*FyPF)Pf$on|hN1J=JU3S|ju zEnv0@c;+S_XJPM`ktl3&wPlnm<9y8o^+74h7& zdQbDgAzt7DzTGU9(_xF^OL;^Z0G|f9RFkjp8t*ci09ze;kVpfl!G9g9e={t`1?`34 z?;vQ#AxlK6nPz09v`z8v?hn*Sp<$7e7XjAGzOdE8WCab4{yjzgn`V%mNwhzs9=m`HuEwabrSs@M*OF7hew(F=-y* zZmQyTAi5?DqTCF^O=jM8PsBA80$wWcn{3t;udoEQSPm9z5e18Vp)HxWCE1@oMEw~V z;#mRVNcNl$XqOL)zgfMpTML!tb>c7ff?04^`2|@vdn}|zvM+qxIJ7<` z48JyL?wCbwc>-T+Gjzw}lIi8u%F&sEII_;%4YNs}E)o%&#Var*bmMAh)^2W{Yg#WC z*3NZ*k`hCNVp?A8`;sX~2a)W|s4t~OH3S3iN87Ywb~=A7cQ?EVSzLJ=)z`d}qNm!I zk0C7!F=1vywo}r6VsF!Q-@Y{(?u2-S`m7S@w47Z9aWuD+X&wR$cUjL(FksT{-O6jA zF8V&=C4s_lNP#bLhN01eXmiwTZ8!S%E@9PxX3|slVS`C9*#$=FQ@w%{E9zQFP9TVi zAX^}#kyAPt*uxRPM`@Phlud_X*QC=oc)?O=D>XMjMT*i|$L09JKR7XCx6t_EA|^v> z#m*#=b$o)2yH`wWPquk9o-X+GN-042rilgT9RJ9^4_o5_|U%NqBLYT*=Az} z1*38SHx9H=Zc}A}r<=%+GB2mshLS^|q?}2q_228>*PN%FPOA1HgFs0>6jkiF)wr!V zP2L;R>_7s67P%=bUH@76bJ1q(HlK9ev1M&k>D0+(WY!-rNt`pj&Zx}t=PT8ab-6DX zJUv7!x!I(`!u5l3)Vj(D7M=yZ{g=(O>f+6dN!+GpI2N8Ip0n0gR#Oq6igl-I?{;0$ z#Vti(pJop;l>RT>LH`tJia+?qr4NDRC-EUwURFtZ8|)N*i(80RZ%Xd>_E$$|Ft*wd z?*O*iEdy@b9lmRFV;Kl{t~S~LpQbk2825%Y+7#zMUo~A`HLR>T9LpLQB;Dv{#ct36 zis1n}m|GpPdk{8TPfMqp8M1f2!g`?}UBuBwD8VB#0_}jk8P`&Pv)3FWe8qI|y=sx0 z>>P(LS#B(Ew#nR@yn- zrsO?Pi{L_~x?VfJp#F&h2i5Q#e>)y~N#dHhZA}N*@f#THg3bc+6l=I`dw_b! z2=A7`GX=Nabdg3i@Yxh+-+Fq(mcap4bGTOsUOP)ff5v3L0FF(fib%?!9h9#L)w! zrUt*M*L&6kcsSr^`3INU6x}I);`OMl_;=-8HuvVx?@xzlAjjRGKXPpCk04Fkh_{Uq z6sOm|iXT&Eq1)qU7NDcEM-ld7as@st952@r9jLnOS;N^wvk0i%*z&HXff36nY%lz-xhT^ ze5xDFhwPmMM;&SUqKXEyopxAD8jaNa+DP|puQ^)D-XG1QoXTTp7ckih63Pzk`+J1& zqQ*GWv(eYHSS_WqXW6+6#d{Or+(hqo>otPSg?B>=ZK+LAsII1IlugM@odR{buQyCh zwW`|4STDZsOifizlM}jpv$)(uFU#lNP%m1?L?~hV#3dmJc6l^A$SQ#Bg9f+B7ERf1 zXROaXp=B~VHi+3|BtA&#K0{5_fL;Zy37qR?U#Cr%k~@B)@1pX!>Avvh988r5I@v13 zakv$D&$_OL#h5xSsIeZoRD7Pl)D`VlbxP17m9jA!3uQ%C5b9uKea)I;w>TQholO?a z#qD`T=pFWFR9($3$7_9!)l6V^VL#eb9~GRYn(9AeFxJ%^!MN4cm}fCUTfiKR^*vR< ze7z+9QVp9Xski+JI!O7^2Dmic*Qda^w*hF!s-~K*NcE$iSnt33t15o z8pI5yP)}dwh#1mtZc@PJYuVQO1(b#De+mNrhDmK14cl01e(dYL8^8CQl-k#~sNwk;c?m5>r z)cA0T^!FIVdy7bih#@MEP)%~gl6`2 z^%dNZ07Ezh=Gw=<00Ln&0G8vAsW1Zo?s_HckL@$m-Ijr;%$3%u%5B*eC`Oour!Y1o z9$_0?9Ml(_?~y71GZ-#o;ahe>F5=B9Y}*C>adb&GR$_G&KoL32J8EWuoI=V#$3b-u zjrKKv!9zBYAEiOoHnIeKJ0LuvMxd|dc(rY-fhLG{1#@7_ae)qmb`*HEU88~S{5?>0 zmoUkJDn-r_25Sz*c5cr^(m%=u^e1_i`DW{! zm6L=(7Wa0V0doRUYFwrM1*w^LSIOkoPz+H}g*V6m3?~>T+?1nuL+D^JVlLt*#qkw= z0QD@<3I$s99`)G%&jogHZ9gI_SX1F!{Mi$12r<%dI1&6;HR( z0x^R0YgwjtIxS9+{97YeX3U8rIW~OR``kPhZkato5A=hp@*`JU_Am(C+E@;jf^XUV z(xn5#JIb!S7aalvMMIZ`=?y{g{iDl6|mo$Kej!7FNWixoc%_}Ri#ziN|sjWIDdd`aQ{{I2^u zP^JQ&-s!_IKt3(g-)baxyYtrCRC6qd<3yqzmBiGOI&;!9etCg2?q#`7}|bJm5FpZ&v6G+ zCNXr_FqF&LCKS)=WeL+urL3CL$>dX63^0JN6Gj-t97BxAvhm2jg^u3blteixfBZTU z{GyXmN8Q-8`trYiA3RpCiZ5wWr5{$ny=M(y%Wo{k!?ON^yOuHYM?Mdt`>7C=2@b&)2yfOc|7nHfH z?+sc0B6JAm0gr^Cbg_n^RAGiencffSd)-wQeNvO&aK2!me!cR`DOA1P7F4!E zaktL{DKoO+EI86vI2vvl8HJ#5aE3g`;CYbd>*236igE1LPpV4+p8{?^PWY%kt9y`s z9u;hKiG(_7s5XV~cu6x>*bI0MXjDYLW0T4M@qO&^mvghxTLbYGw6poGPVe(~ndh`} zyAK3d)$)1qkpOSjQ;c3|c;`a}cufby&#GvIs4J3e9CYn~I?;+FKi0PMmgg(pg@50! zBb0K62NQ+~9|`KFd-&VqiRWP}XfLR>2RhYM4h9QTfOLp3bapTMKb|$x(;g}Feu$}| zxG_%Hcak9+UQXvBwE4eDFUqx`yw-jq*90b+Z2^XdEuS`(ev%Z>0K<(0R%}LNb&sQn zDkvX3=ecO2%>ev*1Os)obwZUwUy;e=i^ed@v##rv>a~X7JVqy~H{t227x!|QkL7ZW zw+ejA>@fD~MNgYjD79zAQhco^QA$j8jVD?3tg|O3TIA?n)*!}8V9rxlR}efOBt1M5 zNz;`5f-pO?FY_GL01zW3gT?i4^wpo?K&aN4Z;0r0(>>!j65w1!1tM5W*MF|p&n<#` zWbV@1(jU?PrlHtPe8(6`xxVPINkBrFaE3_R^8t}z&Q9_+L4f@3^?1Gv`R(|nU2@?| z9JovpT>NeP*1*M2UY-S2H+mdb76o)uj+Z5dGM88h(+NRU6v0oCDlbE;b;2WB<%m-P zz1Uf>4>Fi2yi`&bSK)3RyXX^R=!7Gx{HWEPHkR`%=_IpH1B9a!{-D7{a_ZFA9W5Lt z$x_{0;q4QYsS5aOyUb>+TVP&LKxL`?`c$nAvxCsMLVH*Ux3k4s7kjx?s(Jl7Jv5^96m>odBETZ3>q5VIvsgR-3&YzTl@rBb6h zBF>pQbd;xR+%%JyUlCRMjdr@1sCJG_)e;p8^5~~X3YI~nntfd@o_yuislT5~i<9k( zMk4cqQljZWl1_OYX+@p{LS0RiT>RaSI7dhDeh)|0ij_x9gX?CmrL&INiJMKXG#qVRABy$q=ai-z zr?xKLo74prA%};sSUi8O|LD=lDFuM_;>E?q)s(@{e8>=(l{`DRcu>^xahtsr)m3VC=C@Vj~=M9<99M8zb^4@ zAXBH3Z|15^5u*hHgHL^79oZJge!D?mkYKeOH_#f2%G1=Ipdtwcw3-ZkST$Q=?%&m0P zoXfhR(WW74qJaN`{M2|c<4Bj~&$n67Gjj<6@aFgEa=_T!m&|QM288KY&f9l^DHC8B zFu_JRNS1mR29yOIdvM~=3I-OZ&w#ZqRF%gkWnYFv$Uj9;iC>uuwFiS|nQWK*)4w|r z4(|Q#&Z(7@0QorV_infP*|O)Y>BO_85be|ix*T7wLAQK^onvbdLs6xG0?~cQo7>Yr zdvFGi9P(&jtw@#xD9IVjWTg-di~h~@P|zDXoTNQqAfbG_az}{nK$naAqR{0CTxqi} z=DtzBlBsYP+x^>u3(KgXh5yri9m2_oCFRFKFk^6EX1ugHb*c?LJF8%qoKw$=_^N+}7lx-9<58tCBhB>^|?Z_*sp2Y5V0AGmctIF?M z8Fx?wL;%zt9z#Q)>~HoF%8~D=a+RtW1zGLFf)9!1Dg~Wx=g2cGQc_e}R8(eIGg*zV@<&hUqVR$;fx>xl18z7NDDkF$E=NC)i1ow`v%e z$OtLP%I(hP+Qxd9o12HbC&2f&AWt}0=;#-u)RYHicG5=;b$9En=#OmBAfdtTG7Izb zGiU;N9RNX=5PnvJYzyN2hG4_0NTe~+P>s^A=PR}{gY+6 z;=?UlH6S5E#_FC_CZF}KR9TY{R5vF;SXp}xevd-9Tq>qWEzZw3b9VYH05Jb123mVe zESU5yEq81*82@XO`o$`hu4yNUDoXBba5FUye}=M8^Kf+X5Z?Sj*6KN0n%a=+2iIs2 z1!#_`bI23>-hDS?&Q_a4=j2C|tWoQ5`DuGt2XpeF>SSXELxivDYrs#G4ZQHz_k8}C z*dCgxsY*lnS=@$8SLeJ1;+40v!ATvXkxakBdpfg@Tcf!Qb~3G`f2OIT$~O-4U}?zPez>xZ-lH(b&WJoT$3*`sU#E~-e0j|rFr(4 z6$3(_hg17i`XXl~;<}gR#{$90PTWezaKQe}o|QrY;_{Vbdon0#jeI8fm=@tEN_V6* z+X;1j=7RpLVU9HQ{kyq(BBN%ZK{=?TkDEzW-6lW%_*{AK+k8-13&BtCS0zY5;I30a zl6Hk0a>LhTR1d6jC7C8nHK1LEv^gf&hZ#Zgr>9y*#2dE{@G~fGEyO3UMk%neYpX=c zrkK9lefEq9XBZfZV==_6~-ADc9Pk7J(A&Ml!6v`}L_IAm(Z5 z`#D;7@H9VZh&X2U#!++E;mwBa?ylf(B2JE37G9uIP&1#oz3@d?SLRJ1e);5-$IDBq zNo_G%ZFCRECQ0AICNM|}Vp385Ufgw&R;x`WOU-icb3Jg3k=&j%{L93u!akb7b3w7XWT_EJP+FvSG;iE6_UmE zpolXUBbyp_ji+}h5Wd};t3ldUa$U!r&*#*Lz8|lM2>?R8v>A)BpmHDR+-pL_nLWTK zNu($Aw@mo)4+>uSLwa#!TeM4vfb|-06^`i0LCV+qRrg6Vj)_yTjID5ViKEhAk-6OW z{MbKuZecFKX)ZO8b}VfTbG6frnhbzuR>tZ0J_C=6%W(MuJLKCRq%<8c zfNkqqY*qM+J?*LEBn!P~a=n1xEa4H#?$mOaq~Gj?S6B%8?lpC*i7(_wM3PW3NQ-|a z!)N#t%0ZQ6!|iBkqektn{W*8jq$6HkhfVbFjr1)M92?pT$a_g_ls-4*kf&jiUe(?# z?CJMVAK7PU;g|OLWm&k@1vBEkeet20mnA7M8?f_zSJs=OXd-naPU_ozc5G!ZRr3i7 zHJ|kCpccE8%CtqGSWasV(U`r*-z4Jeh*CQ=YTJ3iyfED`se&ZVA+sr4kk2$My_ug} zfq`+=Z9uIt<2ApPpVeO!vqmZTs+x9JoId;4AiNN&{eJd=t}xh3gncIxMQHR(4%KU* zgJUqkM>$FE?i$z#_naAGy-9=*{TRA5&`jY0A8-{ARzTl+93`@u~YbF8<>SkTvuW3oDrYK#!tz*6}e1 zSA~qSGP97d@l%TKZHo;#`;@emXvFq~X*M7==mX)b`TL)T&bM{j^cvqc?F&=)9Dm>nV6O~>(FurP?Pg5h z2YQbWB3dLN+e*K&m6TkLSOf0vp%4iJSqPj};B|%pDTynG1Jl9!T$Cx*!{U3~wA!#Z zVSiPY>gpy5y{r5mc^c%KNEuVWea?`SX(x}@5X3C0m0OC&i)~xGQ<~|^Ci5K#t zOD(=ok!G<{5*SN{K{A%vghemAuiq~H_7k^wT=DQk{IgQ|8Ivty?Eg#Fo0tjc3FG3L zp$)Z81+vo?WKZS_obbf1*r#=!LY8ds8$q&INZFcejpYu!nS}LT&~rrI*}j~52}?4D zkqBaT`_3r_Civz&B2eR(Cgnjk(Lj%Rpbs)2+Jw)tdQQAx>9Cq(4+Ads4tS^gZ;6o6 z9f~vpFV8H9e4b07z%qQ;RSjO{kNIiBe$qg1%y!yaDuZ+U6{rN+pLZ05_G;x#izgpO zH8@_cP;EP1;R;tMz^*1yP9-+cZBWAS=}ei%Z(%OJjwWgIZ&fq0OiiYQOMqR8&Qe7( zD6sNnu&EC^PiyP0mF{RK$JaY?A2<#@_;(1*24WyM`-UkN!V;{JSJlBG$^kv5y{kS> z73G^`VYN+uSoW$3F}aw1`M|2rS^83lxxXl_*j=}LXKi*jg9An(Gf%$=0Tqcip7AT7 zbb)<`Z4sR3PgH^GGU_QbhxzBc#8mpWLdj@+A!4%eLRwqu0*H%!f?epgfXTB95r*We zb)y&0qfWM21jvbs0!8ecPHs*3(cMgEw%Fzp z%^|Zd#~`F}7qd6gONg{!p9UbsWU_W=^^6dv(g+YA0t$}1K_`w#2$FzI0*BLI6#^q< zaY%b36gxoWXZK3P{K+vLH7EqvVjxQLuiNm{{Mv^HJ;Xu3H-K;`eS7};ZjpdRS^j3~ zo?pgSK;{8RZQ?%4#bC=nLTHi+Zd3I|QLIZOSO zjsD6%C7!Jn!+FFU)1M69oc=`6+-nBL5whMK_gcK9H!7c`YV9-Rz8()do58BJFFO%= zEzwO$$NFtPZ@xl`at_4JTJmQ~;9YP_`y>RMc60L@my^ge~=C{nM^BVD$m+pnBQtnzyvR0?-sPtd7&mBfOY_S`u@uRM!r zVQ4w1WZ}G^z(JPTw4ni!d=kg&yyX6M`NOGSx@Mp_G9RtAKD&=%wI0-_jQi7HHo>{^ z=nXj}+@xU^iKp5qs=7ZpgW6bpxrD4a&X5459}pj+t@8AHoH|DYT$F;)MXoSxm^jjk*q`)ZBX;I$-B(=YeXo! zVVcHTW~Wb*t@FO9_}L8n(ujX1R3~(Q%*hv$KXIdMn+SORNdA-v*9Y;94Ud+H$z#1| zvLpDpVGaZdmu^H~JPW~0Mnq88`mU~~>R|z-dTVb9e#@15JMlzveE|=m1jU|xltqf4_zOQtmXe$qlGxoeF8h=v1pT#_GVV|q(< zdBA1i;d>N0oqtofLQA_OH>J)$Igt3awZVMX!qn^T|3&Kj*~IR?G1|Si%Cc7he1E71 zMybBhsOnm`08Uk3){Bn(g6_efzM*`5w2TUdMHS5*{Wwp&3)H#lTSCho6yWSCS_5UY zaYA?D_o7g)Hx5-n2UgC}$p)+kdR*7ldJ{Xfj}O>5^XitF+#0Nb+qIyl1<*YDC5Y}x z*-cbMZ=FZNwm}VJ5ZqpyJTlu^*H6;~q1uJP?>pu^$Cvf)f&t%%kGxxH;Lw_UX6q_bSDN|_-kzKflP3=*~I zKJHNjkcXNB?j^uy8Y}CjWQmzz9>{OpL3{3rZy|x-zhI~R=)klr;}F;f5I+Rvl!=dK zI7F9qi4?-`%`uc5xQf#l9GfQgaU4sa^;yr?ccYbD2j2^?lJ~^e4(+Ne7a+YL`>^j| z&M^2uV7LdZ^d~E$hWYM5M963ET!?mrD|6X^7}qPUmwg;cWw5R_ia`0;s>UeqeaYL& zHij$?N6e&S;2{$y6XwAeb2-F7Zo zIVw|GD51nQm*F)f*HrWRW4>qk5ALENmBHg;m+L=OktlXNhe!h;ZsaEyr1;2IFnM4z z^+(rXb@9cSupNmWR`*)a4{ve1=PKyF72|F5?qHIV`i;z5mj(OLt9CG=mv(0UkD~)c_Y}8r5?=^(zb*a$PI4qmf;4;tt48Lm)`}~ zmDqDhF-JHCChZ~5gVJCdePKAPdtJc1CrJUHK=-C&yFu_R+#gvD-A2x5|2aKkog_!- z2?syGRHIuBLu*YS5Lcgi%ixxKL=F+~Wp7?ql5)jNIE1u^cE1jkQ% zVLj8=-XQ2BL6f#0gF37E+{#OT8WJv2MAlSDwpjp377c z!|F6(knggeplwuMmf=r7`DT_M;rBi>qEhF5!b3y$i|zYDvxETSSv&NjD9{RH9@aM) zuKkD4e%>4gI(%PmfpbjMh%t9Tfsp*-HJ4O?)<*YJawOT3%hp#pS?zE&Qw>Ix=K<{a zf*(kneXG?_bbXrN#$n@9H^=UYn zjp)Z6b6B!k`+?$eg+PpjSbDtf1diYV+;5zL zwq5Ns`u71U(`8!-`ec8}+`_|6KVyNw(C?1xZcRW^bMd+t-HBR;i;==XgT{ep10B|1 zA5*VUfRv|RVf~usLM5j76lDPEc-jOpf{M?Bmj*2So!QwYToU-J|-snV5x&y75vP{*i5ZSCHy$j!i% z8#rfY;^5a-9jE6;dhX_Gz({5J@y$`x^9^vKOsA;`=V7{lRRE#BAe%wd%?a)q>)bxJ zjIU)>ij@VH_q?NuD?!a1M}w*^^g%~!4JPxI!-aq2#C3^uhY7^*tr$Q)&IMu~6(IoQ zKxgzDkC%i0+8gS8bgDO0;L#Qo+=NRPOR^7Y_G*dVBpf5dn8{}OEcg9~$!pfZvH!s5AOEk2QN}(t&wuh;=4^mxMp{Xku)VzsS`+GDq zQLIuIP=bd=zh75Kxv8p}ZeN*5IfOsozWsf@%MX}^*L)P^1z#HT`i|J=8(#t*XJo0J`ZV#45 z|FeyW-w<@KLF;$SCFD@w2M3y zPIcEU7LrPT+JI%?bi^-?pD-2q5|0_`?zWCoztrsvm=Sw@@>%8FwZ_vvdn!Z;j?Pii zW2+!+RI*>5krC%J;5s|z;TB2Z7%DQn7ZjD+o@<#;$mUc!QG0F)UoEb|BASW4YaLoe zWhk+O4UG45k12zAn<;>UTBfkhu|p(eb!ZtFEgzCFXq(GH zvFRaK#VA@Y1eX4ccB14UG>vzdAyGI6ynW*$+?~bT$i8zOwp6h8^0Q6K*uha2TPw7$ScK$B7EqXmXc~pk;EMdFhcjFp7LCFTOAMZ&mzH$mO3{{1%P-_49SKa1%HTe|uy&^3{QH zX5}_5UkY1*TMASz+c{|rdXt5H2;fjEI0ORNwp?JUHO&$DKPAJ773ei#4|?0xn+Bzx z&Gw0jcHk?<>2O?@ZI+7zkMsV7JyM&XkG9j8q!FcqlKUe8*&}fJywf+1u6r1fnKs*`ZOWyEWHm8aK z2i`N8M8sAA2GAL(jq~aPw_cMO#mEQJDX2B&z1+_BwVVbva!d5#Iu6a0$UUL6j^Pl92$iK5?z5G6LKwAaN=tju#ru84;v){D0G5Y+CGI>y?Xx-07gK$zYBzE z0?S-_!cwK&{E+vW%jVLG9yrQ8y>o?7CRNqdqnHN-b9lsUnN)F^5UgYAk;CeZ-__?k z2NT>Wt@VYqd4zSo;FMQIZ)z2fbl3hNMH;tCEpLEc#A}Uj?i?TU!PNP?ser{=1HA{yi)4W7J;g>aaT`!qOtioW)QqCs+TI zQtQs6v!}COVVHUsQ8qVVO4r3lB)ly=yJzWT(oll)+*j-5QDo%%x-{nkbC)m{rs}ML z<`+RVx$vz?};fRj1ampKAX_0yI;2v+$%909Jf2)RkMt5V+ZuV{JCt7A_gt2+*@@eec z)|M47&I#@MrCjN*gBC|>hq!phM|D=@h0&Cx+Jwfy03xHQo@XN6)6V6d2^-71RJjMQ zID403r{xPgIqDTg&je>`uR8~*;!ADrY9znXp!3KUw_I@cwpJZkA3)7imF>Q%{i;#I z@q8HD&UR%{QN7G=@9l-2_wq8sELUx=&%E?l;7IxH`ND1W2a1ZczB+pet69&0lv{^? z`VcL@pXH)Hf>NcnO0FJb`|I}Pcw7NKD0ub3N#TJA`%su1lQI?WOCNeu4wo9v#oj&$ z-6`HT!2YN2lEeM8&)7M*?|DUyh%4|_vyIn922k`T#ryUZtiO$+qw&bf5iVp+skeT` zaCgcSCMe^FViaim(QQ1fZY-SY-NUhVdu_bX!A6v7JNs#ymT zdHXG^QRXsT+bM5)*t(UJk0cjWmC&WW^U6&Z;ZNU_@0=H8X!+*YNI1WA>s`2fbrf;Y zeAYWF6^fp}Ij8B3?!6)Rd>N8y0Qz&@-FBxMvyyMVz}Ge2*--iQ_Dk`p+3{3Aua=P! zwAnEK0{d4nCc3PG&etQa!&q3qUKQ_QL>?B;%rL0^I8T^g)Dnvpd|0|n_hc{qXe4mK6UYgT+ zb~zC!qRD5o#%27s%94iAsCc;#yU~c=q0*ALO7lo>+Trv5bQ}*p8mCiiIlnU+$UD3a z|5PHN=n=PLxl>?yCz;%OABQlCcO&?gmgvwyZ1?SW!j?u@luVsz^^J|6l|y`wXgn3| zU8tYzSBTExh9D)sg=&tJ!djZo2GJrpKf(OkaoXt?-$S_Lig?{DbG)#7Rr}_)vfX-3 z<9nyv8_yGlZ}5@{o}72$Yj8k7@CH1G9de z948O+ZSadO?Z!RlP8orx);uRWre}3+p1+*?c|Ed2z8CxWN6O!}X)u|P(p0jcqyqCV zZN0iXvsNFXM`kLgTAgS6{WlQ+$})j!CBLIl+9rn{GST*=-%uM0=ur?OFr1#|zbzmA zf>T{x2m;-(VDhgx{SkftbhRxR|4oX0SY;VI{9#g4tfkY1z;x%Gk+n>i=fw}#6MyS_ z{@)$yT?^Fn=f15VsBW`r{3Zt>wHLeircwrw{SElJ0rB?s9m8@dt`7wp^YSM>zGozz zyt+NJC)`g2v;`du-FFf8$&}&YNNSfW9sIHas)IzHIs)0uhydGu_sFrm*Le!IFpT%_ za`iJ?v`B4XfW?I2ML8Q{_~P@&y)7#ZhjiMO(WZ4h?Xp^vF)4XO=S*cpI*WDxs498E zWUJv1Gqdz~E2)_r>BEv^Nq++5*+l(J{v(5LHIKXxbto?lZJ=!R-~Ql{G#(S>Js^+9 zx+4iU1pLRec_(INRkO5>Y6tk%H(~BEU(nn6<4g2OMf6^a&#FMV(Yx85n&q3#ciU!K zCm}TlY(N=2=hq}?bL_<_so!3?KAHQO{uew&I4*@xfp8bvQg_cZnZO24v@lxf4S&}x zn^2~4=SXvu@&vczr|tY*Wj%37Om6GKz>JfbU_u0x#LzLR$#VF4mtC*v!w~@sePwJP z^L!T1fAINVO$wT{=wj2(Z$`0e2ZUl(Fq4+QF!@Ei4CWV({DViCV!Mvp{bkb65OH_1 z8Bd4+stVBO-ST(#BErr#38W4kNu#lanKasD-vq;U&5#x^hyaTjqn9bRS7+DgTB`cC ztW@kLcP~uN>*SFK{)T+e@V%4jrp0T*rfP$};-SO#W<8I2GNt8pOXdp~=o+TT(g<%E zIZuBjGf*}E zB=JcD+-yS#!zFOcm_H8Xz(7`YzVOXD&6t$e`4(%ucAGLn+`g=t6?NSB;n+lRG4=tx zgE=;KUEWiWCjz?Kx(`2)MT^K0yvnXPxn9K;T7C5+(@AUXi_KtjTX-wA?*3v%X{!HJ z)k69-@BMsb9htdx?9Uu*$$8Z%{?x$hHdaf_y%^?G(0c1noAoM`CE)2S5-q%1);%(v z_9^uI_Ie(&&uZ*BH%hjg!2;mM8!4-Rlj95Vbxx@bePv!>c2I{1={&mv4LFqW`oZE zEJy#PNBNEj=<*cL9YFVbiLym9?(*ty5W3xT1=u#5U|g}1SDYIuG$#8`q`-G_*&lRe zW3y6d+pc4<&%JReU@*6baEF#jQv&#JRf!onv~rpjdi{ zOhLFuoP^>`<3VP{AFlp(V#3A0RD&&GdN z@I3QemwD$`%cRo@AMzu_xcUMwniP4~v#W@sq|@?RGe6YKPbnVJ&}4yUkD^o=4Q?^&ssh}X zZnufpgD3;U;6F>ajgM<@`r5OPQC*yq^3kW1-@n9u9iEKjRMI2{|3waU^`l37+Kg})%QqvOLy!YL!{P@lb0Nr$#;XhG5=I_N7R z4s-u@X`cd=-gJ!!xS0v(XxK(}M3ftF?SN(EX~ zCtsn5x~{ia8AalLB4H!b)R1;ng%`X|_HfI|$qg4Flqy8HF4THde<|{lR*Pov(NBqM zvOGImIy<$^aob;;fvVa>00jfuW})Bqr%W9^(+d=VN^`4Hvh)#n9-oc`Kv*KbLe?7=iQXW%ib=`(J4i);Wj(`BT{3;2EYK zleMbhsp#GBiQV~h`+BbP__ILzoQlu`zGIe3gN1%4uIbvtrb})1)vF0!Tqj4a-0uGG zWQ$`ZihUX-Iwliq<7NOJswxG;XHhKgfIY#mXX$Mp4?EgiN!lv03`{x`L5IuQJAby` z9-;{3wi1D~o3HoohL)&DU!+QJT@2Jp%q0WA07raqw;#O}#y&>C&wh>VmZ9X|{c z=ohgn;Kb>S4g4k&T~PsAu9A<^#+rg7Ih%t9Icqqe`yH^6HpRnZAVy;^FrOS0^FeFn zg1v0C9w#H-a=6!$8M0Qqr}VA+g_X@TZRm)an%ha~68%El?w^+E(l^rkqjiFlHwsIR zT}I7`06|n-M{G%w$n0jbnW9da;GuD$*ZH{a>YyKbU#Ik~=u%KTWMk=#<|>G>Lg6WuBEt&q5qC9Pb_@ zCSz;w=z1jzwe~T3BDrdLM7Z%MMQpYhvqx=T5hb1<_nilRAFS&P8@Nzr$b6f-h~2gR zD41}iUcZxZ+j;HyrrO3aL&)Asi~4jKXP^xEM0gD4f@`X5-+?Y!)TdrYcX>kXW2=ef z#J44^_FOXby^AGBLJHq+FYtaoSqUcsOtZ+$yj=OxY(38V;NtpxMfGH`8EF}XITRjF zD=m3o@H&>yXnukL7X2DK<2B?o4)SW}wZ1cRx)?DlUE;Sr-c|5GW7!)>XzHJ`6x(6s z8!e~g-_desU4d}T4q$?*$qBy}#81hA6EGDbU>Uw3S4)qm(2RHKl4j`ZoxL8nEp&`L zi>Q5vzL(`z?=bYu+`FCUxMHFLBX#iHtOCJyTWCSvlDVdQSKx zkQ;dx_waxI5y$@?`-wZ9txDs1(+3da~;$w*Uy4W zx7q|ZKak!&&#@Vg)`F`yI%H<|ZEltdfg&yyx4L}JN&~NassJ)^+_L{PCcFh;_kR4sd7+Fj{7v91kf8gk@5 zYBqhnTk~P!zW3{;7CilD!d-AR;pUFODXpH3qc_S8X}?SHp_(wx_TZ?Osb;Ayeovr) z4^e+11>CdGTLKTZOMA;dF*omTAZOz^Cg^Mnp@8%_GIVk|%x*7#A-7jzJx+Da-BDg5 zc1TDjkiP0HLS0HKPdUfgl}0EqGbdXOKI9MUbcbd+Az{iGB~TSL5EQIMLkzT8P=ECWuc^=-JNow;sHJl$61I`U(v0a$`jM!TY(5S z?U5H=o>aW5*Q=~!UN`9Pg?ukbZen1sEnH>cY){?zJ>q+>(JI1U4j&!bMZgXdkl zzg;*n+U_G3^5g5lMyzVT^`VD_E{Nm`mD({SB{Oj9 ztH_bAFXbY1za=F19a|>LdD9TX*a7ck&Ssl7GYsXSN;el1rXYXO;kLetGY#xfbwF<0 zce)uL+Gh5&K^hL!M6q6!(bFgA=TU8jYSRN%iXJoN4g{|B$xhdzT_Qj=1aCM0D7Myg zb|~XKs&7I_G{OVbnN}&l|3Ljqv_XC4OE#lfm>kb$LHth=L%ZEM+OI zY$`oJ5rBCwi-kS&bl+`>NefSIP9_imJ6bt8sGvufZr~@ctp^8rM{AZ!K0A6~Q6w99 z=asa#cwRr-#pkfTmvR+%@Oet~nCc$rEmzUf8fOh-|@<56LbIlLYT48!HQQ$HJAS`C`9aYtZ z;C1Br$4aR@>?^Ro9@?m5&@51zK_PPPy-thfKIO%pmDtu2nZg^cyc>ZMhXF{?{ZmG@ zh36>$&A`;}=EMF!Roo@VFonS7p8QhyfOZA@%{TxY>H9sG zkw#i7TXE!Ie1Hezq;Wq=#jz7~h2{hp>UFz%pwm47rgF@NCIaS!Rz|9qE9kdhZl@fZ z_IqxlONfA5(WuBXcCnvIEhj82y~r1a*t;=%MT`?#$2SHL;d=7)1r@CxkXs617%dxp zov*vP*cC}JeTye%7m2ciE|h?<-%LnI9Vplf#$|5Yn-6at_}$=~rF{A@?_NDeoy4%2dTv1uAem70Hgz6hoJJLUU@9~&xK$~AFtfAYB9?EVJ0rrDtS}7)190oo> zz~WmI&7$PsV*&#$5UYBJ2vA>G59hxFePhM74XuX7xOmBZv-eT=Pn4_32iXiW=pFiW z>;!`JV#@Y!`@D^9d@ZCdQ2Wl7eMx`X6dlt%T@a{zb%cNbpJF>-y+zbnv}(LrPvZB4CC*r_}7BtSd)=aa=pwP)h12*{b=v8J?|| z7&9a%EYjH zIdU7Ju)nUpcavZAS760T%**ZDhO@WS201%!KL&amRS^M7r$ug_TgRff8jB&L#&Z3Y z^|IOU7QVc8pGKRoDc%;8efcNqB_+e8Z&P%?k5A4Elb+X{Jb({AtnOud`&RC%}Pz>x!i`gnPqABz= zJHv~wWrEod+lZqzkgh1YUH{%dtd8n3O+*b5ns(A2LZmKLVO2KF>-Avu#%{-#nKMtMiEc0F6pvc;94|SmS z0d+xYSvt|NE!p%TBguJo??!rU5Esy6c%2lrK|_iw??uE5A3v_;$Rj8m`}=Y>I)J_a zvE@BE&vH1zc%pPF?iZJnS zB0$AUY;r#$(U7};XE=}^`(V?Ea2sRfR&#KY*Reuy{pg{*= z{o54P6~_#pw>wLk?`C|%@?BP+puT0!{G0w$o8Td;Tl?M-VF2v>J>f#FfD2g}RS(tOvO5 z_s(Ne##l42R%@0e<3Nq6v@cHFT=Ph8Ms zFGpfWRT?8G6+xL9iSc-W;YU*Y_odZjJ$80Ws+oloZkg=igbGRrn^uK94d4231V;z@ z8z#E>Gfg9(=UZ$hM?% zpaah zG!Jw_@f?l_UCQD=<8+-@>E}d$*I)OdX`IN>GYBK2jt*k1tXK*PYY6wVJEIb0fB=Yq zlyM?p=}Fw4Pyi875l+A|ZF=y0PLKTP;JxmF>W;JMh~G{@0%1|vP_Y6}N_OmH5h4IE zN(5Li#94haqF6Db!6fM*j{0n9bX+JenC5YAQ)Mm+d~08j_FUlK25%a09gT`tj}}L} zP0c-?Rff4M^OHpYQAZW*tbBW^eJ7PfKxgCL4I-e}Dqp@>rPTCWD*i4PbcvA&*z-4s zR74RjnRbqOhIv~aIcIEHDLPiR&g2w|2_I_xDBAe%)Kid!gkVDITXk z^DsG9H8B6rM-O;)kEZ`UOCVCsw%ze*c#n*PK&MpGKKb{x+49*GoM5QuD3gV6l3MW_ z?dI4==_eI?j{e5x-`&`)+v|l^a^@i>j=ILozg6i^mjQJ6@o==vVnvSU5(XUwT3}lJVoRHy z#2CF<{8Pf}JK%_y`GLl6_iogbfk!cd{=)U|pB30@tAVFz z$kN-^7w?>KVyLmt);LGbVX`%`$ic;J0VyO!{=?@D9S-Z7)wPUMAy zX8LUd%LWv@t&j-#lw@hPWZ%Tr=|-(Z+hbwS{`$wwKD^_)w9ccAc^}ViFlz{YKfEy* z(!>|Pm*hj6orNhBshE**+J{pP6hvdE;yc>eGxxT2{3?nO>jw1!o#pDRi!2&Bbp_|6ZwEqcU;gX$;P@J1RT>n(p|T&+Me- z=7m{ZmmIIP;&x%ZVcOj6x{VxX@dW(Zn`oM48fnP0&%L!K7FwdN4zCAxoY_&E4RVGnIMT3!Ev8QO>*gF*+m`l+4B)b|$&u{L&+MY4SL?V?zV~_K@@Z zEcMe#t?(O?AEwc}R%15mlJg_$hG&%ROjxM(J6t9Azpht~1OtSuyKjk7_|tqn*uDlEJ`!#vpU z782I#55+NhbdO;&&hpTuXA{2h{UzE}t*@jhk18m}s5wogIStx@Sst2pgKdRatM>SB z0g|@N17`g+ol4Us+ygzsnW7xWuL9Ve>pQ(^hL3855DC8(A#AWSkocGR-cON$O~)@z z-t_K#aIvGFSw|n_nJ_OQ`Um20YgCXLf`LEmA%NYhxFdJ&DYlADep|X+!CqL zCNp6TGQ`fIyd1aSpS`7bVYZ^Q3-01AZ3~g75=wLH@I}z}4%7^*agJ@Qhj9EGU#geqO2QX2dP+o$U zuClvk8Z>(Ey{zKa%wct3MYBWE$hGBkg+}_zUI6__cI5_7|9l>Q9fT@}%9Ri}vg_9$2SK z*VcD@?scL%aV5i4f(zQcWui+Mlb*0CkDL9gbNG$Z#;_9s)YRtb*gf63(r;I8ZV{yZ zV0hGBslYCyI=s(>8SLLo9_8l2yGWIToDMwbiiJ$45BYkEj*Q!`91C#txMI=@Bc=1g z5ef%(&9V>y`nmBh6fGQ&CC@U+2{$?E0^9RqZ61S0FIHiCu;t0?+>MwdWVI zxtp00$Y6`qiGeuK`bnj|s4ae8!tI{x17~mC=`W{4o)yjfut5}W5B)e|ThDMCwXE&O z6z~10%Q$!+ekU77Xj=38-iPgIl?Q`Wo!q%fAr3k>s-+jK4Gn^FT;5S%xb)b+#TT|{ zlrl+WnYi_gyWJUG$*x`3D3I07>S#+OxwUgpUm{@!$S%BFV9~^tTzBx&JrDI5`~rLt zt3HuAb+>%1ew=F(dz&x}VJ5ZzA+Dw7j;0$SD_@k{y!a+5p;rRC7nWvV25tWk22+5P zK};f5g$@k($Zn04qob|-baM`$W%m!1z?okPe06weLOWZnSx{ielxdx1277G6e{g%&GY2@1(or*gg;vF(BzWZP%#WaUke^z>VoP zZm{@sK2TMjjan*u+99~_GC2JR7y?(V2qo}pJ90sRNv?wG5=RDe{;>;j%a3NEr;P>n zJTt~%vjrviSb*EIM}B`1IHc>+Cdu*IyzT}ykM*BpBLx{GEDXdUyfJyg={VBh6p^w% z@S_s}nrKtRf1m7tFt$J#g{e*FwXa7mK71~A$K6q7*=KjI*nGRPL-fbQuIDN1d;Z~s zrZwOS-tVk{LnX89t>By0yb?jeJnT@%!n*ft)->+Z>7JQ7nxesZCTuUX<~Mn?536Et zS&$*l6!QhmvkZ$8se#lH8!O^tczNt>UU-*3zilamr>E=nr1|(f z4nhQk{aAL3$bn-slAnAu5|GXDoQl zW#Mh*DZm99%IoD$W$tU3wH&bT-@k&gK{&^C8hqfyif}J64en5UasEO$6wPuN)?DRd+J!$NgGS<-p<6c!g?&)QyK%JGQ@{i2T13URdQpj^Q;<{M zj7)rJ%D_$A0|jDakr zk$n}kTeJZ(*}VO0vC4i2nSIeOxIJD$L3#NnjRht;qACefA5>PFKat%s9l~(QcDOj# z=eb|9pc^|M^0CHkGHAZ9VB3#?t(f01?IY+l4!+R1%fZO~{E$6dlOTVmb`2|Rpv7(E z>!+b7wDJ0fdHzkF-pOCNEL0+n+}ba2uBj(j`g@-i!2WQw*Kpd+t-km9KzvAeNg{ov z{Qz)#yh@l;EJNG~fy^p+a_s1sO`nqY=N0_=+YZ>spetLy;6;CgYu!@R&!ufrbo-Wa|B&LH2)-Le|Lr18fT_s!M*1to8dx!%DN0 z^g0f{ID7ZLsd$U@(cTjG*R>@RyblVY?vq`@7C3=7_1*^BiS$+W{WoW;ZpQw*X~Bc) zRyAaD>^gqq=-EAEmn>d*yHD?sj7CzmATD{UsEeq9>8Dw+x&4KTk$1Q)UT@BV?*FEy zEj}sG_V1GnY7s8RG&oXZ88WW;GHRA2o~q|1D7A$E=fVE|vcLG<@K4XiCLkw~e&inH zU-q$;qvYl^#JdbvnSQnU?XeNX_vuC4B>Q7x#a$r&$n1~HPBnjq;}5H5e5!&L`OlFD z+*wqxQ;XNstBco>V_uoDWKy2%`W=b z{*{*O%AnoaP|Y-=I~C-dc4xh(py!{e>>HN!y~;F`{1LBl3W1Oend%61dA;dk%5W zcH_`AGGwgoT}So$!HY)UB)rTncl@Pwq;6&L@t1?V|0Yhfz)u|LG#M?wo&w3^QmPRs zv#OI)=`pUViD~NCIqj1_fo6CS+1bRPgZ%Kr`lJ5th>euJZ=kB1$g?`4P_;LC3K-1= zPpY<;h&T>DT9pu#0Lx$5X3{D=xZW5{`?fCbjL%s(DX&~kpefs09$Z5X6nrID{9R0G zShLtbjXFgkcDKONDNiinEZH^_HPW^Ev~mF=5$?2cbDCqFJlZG`uW>%-D;Ya5R<_22 z-mK#E6j@FTZg5rh3@&~mYthJC2(3{4mOySFWS^0#sBs8ntYSW-I>~}3$XKnE=87^^ zuMa6wu_7y70xf;ZRN_t3XE^gkW-g6M9BOa{?Yjk%XmIh+_GSR!{Q%~9E0A65u zhI~^MNA7=}fz^3p#^SE{{A6=92vIi2;pg`=}UU59%w_VW6x*glu>7ORs&%t@JaIm@iAyvwwljalE_*jkliBZAwblg$ih za4PdzC~QxDqKr2zxQ6w5Vq1|eXTx&H@je z^N%E<`tGLiBC8kiNU7+LhLDgw^vbv&E2zcT}e&MZvpuaEIrvsQ;qs>zxB&2 z$MqHoQ6G{z^dQI94!g+NXMR8)1is}?lf9M}UN`tbrUygI+5p0yCCE2e;mq;V@*6xK zVCoJ(gH(Ay=0Gxb(2d2=DS%u^a086~@kmlAsGQ7M*`mXp1zV+F^;^{mYA?-m3{&TV zt0zT{RiBjaag8I_>R+E*dUBS$NNkA} zZ7lU=7k8;#JM)&TdvM9JZwNetOQ7DMJ9I(`sHt;oMaA|fDO_BK8YDQfwaG;4P2kaB^%k(~ z{?eI{Na?C zSq#RJhE`{;s?yQ2o1OBW^MVb@+?wsA!21+%1Kfy0XK?wCcO^aHW@ID?HfaaN>iMdE zySoCP5y8qU4;{zn5w*`EXPVHKCPl{O+#|0!2EOtec z_rU}+G+w1=RNi&y&=6P|w{Hx_AR}fN8~lQUGIfM$W2(S%=TktQWVH$Y30OFwz+)=V zBh;W?0uFw8kk|EBr9@*ml-#?0Jnib>rs_QRUcN{a?re4O#U<^yY872L_o3*Dtuz1q z-AO<5vgc>^R^$qDwz{$Ku1N>m7x>=G$N`QSi4ZKfUK6u$-}Brz=Gv{uLyI6fnuq2n z6Z6dRl+T%5II8T&xN#e{^Hz5@a>9dpI=yPNxi?CC(34VaBC4~$R&NN1aaJ%fyNWFC zdK&L0(Y`Irhr2@qWPlj^;R*2B2YJFy*3DvNJvF(;_wwpaN?{@wK24%_dFSGl;F(iq zT^*fWA`>&jjd}M;oGX#mTAk4moGdKlR-cP#(?p|8JoiA(*ah&G84N zz`SDcjZ69SYOz8#kH6d$-4WB^rijQRrMc?$aRP`1#tlB}6?ulmr5&cHrrY@UOn83% z(U=B`_z;$)iGvZcxqW#DDt&9Tt9qoHtK%#Ujtei#LiYElzg(Gukk?AelqeO`O&(bFi7td@P?UkpZ+TfZqFPw zvDC3dt}Xs2d)?9z9U#@qEA~f!UTY)Pe-HftL1Pdi)tkVlpx3*WR_NCsyQuW3G>b#e zx`&VMnlhmAU4lLoBZWCqUruz~$p z!O46xw2X)r_Jv~YMfJZZetW`<`+uBAHOAQ4q!Wm0vWv^y}5G5NluZemrjEAv156Jr6Q^4|L*Yw1+gb|?O0C*?^`+x#A*zl0?<}3;e0R; z*PAo5SpHjK9$`Rd_bjIGE8C^Q2FuB^I4hvXt9`dKY16J2khJIMalP=iI?;}(Ky{>C zvMU;Dv-5Gk&0dvCGgNSVw~yH0VhYfowY28(+)=lB0f~JqFxeR5iKK|lc69hM1mt{r`|+!DHwSUoez*4t zi9pzjZg$XS2nJ!z_fm)RYQ-51FM>tOW2OW5&8X=0^7R>SmP;2lvWPs?t@n+WD3%65ymkrCSVzG^O72UL3b^%yP2j{ zGA`(B*_~yk*Ak)l!Nbw+q*=y!IJ^0pDS7SQkkm=;_t{HNnSz-_lvRNV1lbPl2`Iwq zze6fQMrNcbXWZmp@qGIf5Y?at$vceIzSbbOlj~s3<`s4g_XoF&W=|mZQHngm;e7r@ zjZ($hzfS>8B|!2X14CN^ZHP5UWfi^HC_ot9kKv?L) zbfhO>Xn9pd6}s)>Wff!Ly_@gkV>%zvQ#0f@vFts5A)!)&!0#Gh9@3{0xnzZ?IR(6R zL#RHYAV^QuMjJGWpp#Xd=488+FZdGHAse%4+0p?uE;UomyY{0s=&o6c5VAd>5{yXl zeMiiX`Nwz(t4Vi8|DyxVucUhrdup_YH`FglSzmg~V`^WX4Dvur2K=1zO!F5GOzj(X z7OeH`5fBT}m-Fawv=8BG0(%$)Sky)Z9xT)lYKdG%#UhIbd3f#A~h*1vLm^ zqzkv3dcG!oKm5wsvsByVjLhBuUz>!wxOuTfPQK=p4Vnw&-a|~_aS8sRziHP^jUv1k|9ogb1T4q9-lXP@fO}SdYOJ~g=Y}Lo z<2!RG8Vb0XeEwXlY4rAW*fiqVmTsg^hMD7=Zg;PloXDQ*Ul<-u$6h@USkuq_v-9(u z?}t9Z$a~xOzuJ4N1N1}waZMs$e6y5>*C!`gMrHmexiZE_>e>w?py!P@F|P%uwsu{y z!O<6zT<_ZY#)Y4sdqAIb3gC8Eg_KQ~Af8MGnJ{m-;GCpFEKyeqV>^E8@&32@?Xj%0 zan0CWlj-+fL<{;>B75J;#4w3U1mdxA&C zUymY?ewd$kT=xW5PH%2S__~||l(#f5#N@b9M%_*U7X~R^3;3{!>PQ(7!&++QS0ASw z9ibFki7$OK>Y5vw&Cvl{8^ScVHh*_i{RYn${Q1T+#4*ZxQsMw-&Ch`0h1%rg331=k zw}bdW=ECn|Sk6Ktu`5Hx4pQVr~Cp;?8N^yoQ%iDWI||5ilL?4$UmeI+axe zI%}ka{SB~8^2yo*VuCgDSQe(mf0OiF(dF;=%xQ76BelxX-&;X!BcLiOkUuo3A(8R;7BT9ciz+6zz@nqR73Ix`mGCO)cCdAQ5F7MNC%7(=h`Ijgq6A+Ssj zYaeG@dF>>L+J5aT4_4z2cmK1YGiY`|=?s@rUlU$8S<4BLd?_ z3mRdAq#oMk=I!bQWi!@)6R=Fa=ABOUO87Kg*R{&y<9H@kNl$V z{<|Cy3VyHoYQxhy*=8VbNsL!?r~oJ$u0Ol2gT7f11-Hdtv(~ulsZNdy8$VEIW4feE zPq4N`Yw+nxG(Su@9*!yY(EU~bH$ce0Ujlq=pvJz*JFmv3f9`*|0D)%9dQ@H=vEWh?VGp>nal4jgV$XNd%gZ#OHHr^`_g8c^e(D?xFpzBgZxQWKLtC z8QMG-39p!L{s^}<9?b;qodVdczL-A++`0D~z%sUv?g*Bolj;62D$nafNIfB+J?^Le zF(4LNN61agj!^iD#-%Gsx{_Y$h~J^JD368N&2^_Rny_l>Sz&B-^hT*-SJ__?5};CE z7_EKu4GQk~tp)Wm$&aj>4B zvWcIj{rwY1#R1#!Dk2jgyJ*kRg*s^J^9qYG%EvyP9_V8ONv64d`IBpY$SdB6Yp+H3 zQrqD~gR-#?kg6w9?kZl^@Oj{PpEh%(CncWeOX=p_T2V*7`foP$RT_7Jx``e?h%&<} zT^T+Gz7Cr?6;^jv^{T~_?~0l9e_kV6>a~M_uhw>d&m*zK(jQAbFOUWJyA)brPY(aR03 zJL;N8;xEm%+}aV8d$=$-6gW=z+#*Aj4}^^__?p=C{F27Ej~%ZvnY7kM5v|Rv&5q*l zCvfZgByq#-krKDNav)A{^{%RJ zmc!Fh-bZ1@)zdRMh?h~Mz2fgCn}Ne9zPo9LAKo5*@658Y4o8T|x*& zc(0*Q`LAE2%3mf#j~)L}!E?=}ZZ>cnKlitocmKOWDVpcPTnp0cpRXv7`Lo$k`}mye z#(wYcy*!>i(~~*xfu8~-d%1c0 zrFO|zy-5bO_))`P{`t2xJ6qS^_XF=diPb~vwVQo7%XV!a9+VNem}Fc%kv=gzXw9Cq zX%O-KJ%IWi!2DR`ACMvxlN3w!59&&GtiZ%2_y$FJY(>#bcEKC_fprlZEDH=_v6|H! zy7QlLflFw%m7Bgs$?g8nKQy^2(0sV#6-n#D?QNiuA6R<+hLLa^!yCEr#gtAO_+T^&Rdy?Cs~5Pk4q@E_^>@rnh>>tMA$Gwz*P;!BXe5U&E^UX0uCf zJb4&%yO z@cd07)nTFWT~{044f$KXh4~=4f_YQ#f}LmO%gSC`npXvNa`F@`-gL0S`u^lNsHhYx z&mR_@f2_MsmfmwI@Oh-F#rL2mE_3gkPzv&efYNs(^*$5 z%tNRz4QURkzj8HmdR5Zhf6GW2RDa?xW0KsXx_3D?U9K1RwpYu+Q}0EwP1l;yq?}4f zy8gvvC5>rvq0Kj0RqNnjsGHO~IZtQ}fbnDtn;!Y*OTF*SRLji?IOqkm>nF8=PB)CL z);c&^>t4S6XE*~~I9x%NfJ8Sk7O*Yz)O+paOWsU49vbj$8ag~*t~z`j#=P=4;`!^o z{$9=BAC89HJ6j^ki*n&`)UDf-ap{9L2`Y8I*-M=pIx3Fu|K;9FhpSd*T)VA2url$T zAx7${Y+EYV7uptEm_#H%e^zcZGO)~yf(S%#_Ns_6^%iWCb06(~rUORHzwnBMAMJC@ zNbegq!e6MVAsi)xC0_6E7tw$qBFBhl0 z^Jt!zYf*{HOfwY1NVA|b?dbRb-FOO^OC9McrR0z5HcZN-Iabu=FvZZ{g<}wdGU>Io zjeir{TH0zj@cMn6f^PDYDG4H;WT`=tY;*q@htS8zAU#WDo(Jf1gONRifV__C81lF=KAlmk zf){E&+%OO|i8Y|$Enmw{xpK8;rp%4R#mHT+8Vo0XK=#!(GIW^A9bDsv-dt~=lig-x zhW-;3yB#;`(hie*d}y{0dJ&`UV|BBjUYk$M-kO`u{+2Jm?5n>M*3%z}>wk)3j$=sS zLR?tE1X(wG*~^7v?h_{BgAreTRdoSFv{GFAs_!E z;ZI~ImQ%RvJu@0MFlF9nB@ip&Fmzqx?aNFD>kHEl)dY^mVsCa5XTD&*&$~%Jm92X- zw@70bdkE`{=Xi~nnywHkm{v_(IBS@wj($HV`J8XRm3h>5tv}v48ZCXjstT*WeM5Cw z*?W3pi((c=>mS+aT_AGL!z%dM7`+BQchITi%$H?NWPY((Rtpe}I)BE#fyX0NgD!&8 zQzb6SWC(C2Sv%s(8Ywf>((zomv2EOY_uhAbUerUM?95^t%{DS68YTb? zo@_@SFM$Mly%al^#d1Vl2j%SOR88Ed8lf9aqD?N{v&0Dbt*8;1vxYCHBJjb=45pww z>gCBhwd;18I;~qk;WABCjK!<(8j#!Ztda*&Oc=fjOWpEiM>?%3-{Qf%cE1n{ynxh= zbJkxG=D!dxPNFdewxnGRhdGg2-y*urbaxPVq}fK91HMeWd5DDo-t4^g0DqaSFlnE# zZ|`*7a^=)0m~xB59ngbNA(d1C%0?Dt0e!14gq{M4qW2|aQzQGu$%TbgO(_9rc8vfc?&rs!8}mI_b1Wj8VJf%*K;=@NmU7aa#evEGtg|{M37l5Bt{wUr!z!=z_XR^H1^`gdQZgeXjh~lLTt!ELdL}yJt%Ow(v!9 zeQhW2#$04qW7-DepL)OB%1Axg*5HRRxJ z>H&Pxo}4;Blk;!F>kSMwV!j7lSPyYzk_Scm^XM!m;8YsdCfclw$`^(b7bhM%{*@lY zj@Zx>a&yGhds z6JB1^MjwSmm`_P{N>SY@pi)+FrQ zj!JIfds$V4Z6|ItvODk4Dw;U?Y+XF8NCx>)I-_T)(!u0gW{o^Me(OB7oj)U(XH7b!?oX-^o;h)UJd+RBX=Hc;g3c8r%X(e zFEGs<=HJ`%btqyew_UuUAXIeb3ZvK~+y>u*NQzuADj~`}5D^##cLcMEQ0qd)W?wYF zYn#m3=oo3PEH&l(8E#o=Pv^CQ-YwMqj=dQ##ep9VDpWlMgu!szAVOdB!q(@Trhe6> zBLg;%=nD7Hx$BtOJ^2B!xUbd}{S5yp;6=AVMR~5RkH?1ro*~IcZ8tbGFDmIfnT7UT z|DlzTJb7qnWvSt}bIGbO#LyuVUj8&+&6H7g4p^V6@EF@1$`g{~J)V^Vg$EhC@h_b5xbnNgOTSlq*Qbwhql)bAx~1z`*VEI#6P9S$qzf!=>l0Sdz*30 z%u}3)Jsf?A_L9w=LoYx;8=xBJrE+0%MbVhPnx zK`3t|owfx`s@&A>-(#b}1gi)H^-P^t5N*dxnpC2wrRH^}uTd-eGVL&VQuy~KUW+T@ zcOn-aTpq)5NvAFUTGtbf?g8^{{`Zzcqc|WkZ^C#yvt$qb;|v2LLKq|3tr;oVcf+bx zQ>$7yc)lxpF^V6*W43uy~OU1)^|6tSJG`01wvmQXyU9Vr7_1Yp#PqtF~DPaXwi3F70 zIJNPwbq~MMX1c@$1hh*OQ-{PhhDy1$XUY#ZSdifxIxlvP*UJy}uPll$p|g6u>TsV~ zU-D>d3A%nIz8sO!TVFHt!7k6Mc|Eads^znG2>cdnCal0toZWtbr`*%QZ`?yiJGC1$HhqEINqIfU z^BvX#Pzm6T1FORVPB2uuV+N`_iQ_#?DHoMGR_USr5JD&HX(rzX2M#oWSu&rZ9N#`V z!qoq3h$9a4Eaq@yybZ_wR97f|b2{Sl_%PHSN_a%Xf=52l;Lc-3rUG_1V@mXof8<{} zKEZBm*W;G$o+R!O%0%!XJk-Ey%KY}#U`R{dH;JC2*T^)bRDl@dn0B~1g{M`~EgFMh z?-g!CL8~QS8WK~?pQOii{c{H;LWKW@sX_({)OBHv%%wC5$_OwD$gzKaeNtBOxy0v1 z+>Hw6MJ2OuwEoQNb^T4e8o|6hi@D>bKzN9{V$jI)hdI6L{^w~0f3}aU;kdFtsBv4*ToXiPA3T6Ha3R{1igq43;=51XH=~q0no>M?X zRkaz1hT$ndefNF(9v#JN0@K9*-wPK^v{!pl)r0voR^IoOGZ17PM-hFN(1%`6DGD>~ zMm?Wg+mY+@iI11F#m2{@+(VFm%qn4`XEO8gcWVm_f;)q)rmd&%Yr(38uOl|&`j`t_ zN^hH%ay*n%wAD>VN|ROY?7rAWZiH={>A!Z~Sg9Dk<-hnT-~6TkuPc2lJTZicHVyoh znSCq_^BAsF`rN!=y;C^>`|a`YISF65sW`fKZ4MX_DBhBB!@@<}TfdIbBcwW;0dqR5 z1)3+3`)(6GZ7i$Yyq71I;~E##Z^QO(Z5m|KkYPaqz7kkaldrOJ8)JGcQGjG;cP?j) z(<9=-BCCEv9Skl^Y=CdKy`uP_tsUz+qR4VbFzkaY9|1@p3*r>;s?6@mm&Vt@b!LCn zwMue2SDpRUs;pp1uzZcUz=GIr3`O86!bBm@t%N;c9c491jH4uaLL3;EkCKDndB`X z_RA5Q2}qRfO-9;6W6rlD5ba9Au{6BxC9PjkH}vjx2?`q0d-j()XxN2axtm zF3d?Lt471$4O1ZVWNVdNoVvskz-t+~L>XO1PXW@@Fpal z9?b_o@j04axDcT~xEMbF%%UeTjx%^3oI(!+HLo1+%!h zgSz$|OQq8O0N@N`E#QVkrU#gt>O|7}(jbnWq2#o3?|({7td)GdDr?67a^z2N@K29W zoD8X{mQ=mKfpv>C^dDTX#uQQ_byyb-f+RaDF3Mki50Kybu#W~`5th}p*jJ7+F7}cE z#+?BDA??U3GPBJ0Mvx174B*%6(<@~~tc#E$r3!1MIpid$CFBk%zrt<4zTV3G+NJgO ziibG|Uw%Jq%JE%iY3T@&ri}x)Up2astF}iF+2d5u-v*G&{O}GTK`#os`TZ(eLch8^ zU5ryV+#WFjY|rE+iH>8w8m1oWKe^gs0~Tg>`?jOU%X_ud7OJ>op_}g?Fa+j0esJs& zGIa#+V2)6n4e#if#zZCUJd?Cg?OptMX?N5?MdR5_vjk`k*<7BKeXK(p_&Keapflen zxNl8cN5rc|hdzXiKFlFn9h{MUIKMKblH?djI%7aLz2TVU*N-iVIGX6)UA~o9)s~m`E6TI)qwPU$f^#E$thznOyjC&!&3c@Dw_UNk)n2rxrj~BaCEx4 z52ms5>P;S-%kLQhBD>-=rb{P@4>9m7jv=7(YLf=~b-#P+a;!;)aNr6!-*hmzh<4&)xdbN!!qxX8nR{L&47#~$Fc}j(@ zbz!~woHz)w1wx^4yIxRRVB%u(=qN`JVHTOF?(s434Fmy4>1a1HzKhx#tMAY*gBcD@ z-~Kqjxi@O^v=(=3f1mT@BCP1x#o`_ktKAV}TXQYxqTb7dmIHJV$R=27V*>G6bbcz$ zyX)#t?2+Shso1>QxJvKZ#b3exH18=_aBC@N zYjiKg*i|kn3`a0~YxQkbVJ|<5)(F+|huXQ{zxC3_=7%nJD;_4qzU|e#@f?t=99h|XRl^CHHG&oAY62IAYc7= z_Ne^wclE(kfT5QmKmBgU(}DX?_k_St8@Sy{XYm6)}%_FU5T^Fl1EkluIrQL*tuJ>@{dVvo_ig8Tbfm%>|!vuyXVjtLo` zd=A*k(}nT?I$R|H7b3E|WYV)|f6J6>C@}W^`A2MYad@K1*y1U`Jk=;YbGENI1=jZX zhVYGPxMDfmrzra>MPn9mUX#x>H6k7bkk7i>GZlidTWLGccOXHpu~@w3{c%R^=_V?Z zue=pbgnPF>mu*(otXtb1-xaMDz;_pnd}kN<9vOeG;S^9O6+-Xs}he{ zA53Jx6>}8Y0*^*Q%WhUIJ7Z*x?mUZ!`s-al%rBRC!)WRSRd#e+5I^&H?epFbR^czg z770`(L(UZUfZSO2wbU$b3--H`8+1$LUQ^Ku)e|qnmIp=W_g>j{ZEWcHOh}zQ>n|Ef zl1+Om)f1{FlSrculgj(K6d}}e3nWVGp}Oo_qQ1nmX8fzM&BKsH5x#%2L$avwmP-W; z4HAGtw)bUv^7&G4P65I}bjuz|?7TR7zTL++)Tu)se$n?J&`@o8jZ``2z)a0?>_)RV z6i`;cwxHadz_0|%Su^OKF}HWz&*~Rp)nR<}?BJ`!I{k~X$kL`1nY(Is?^%buWkf4E zqm%PzwDJY(V%5&sk@=ucvyMM>=+KD`POY#rj)FF+1qqstuc9n|#gqmMYsP&O=M5T) z)oJ9o;IpOcbTdG5z@-x}O>g+P_Gysu!!$g*?9z^V%7o%dZDIR5N4hvy??uaSO%Ln? zSOeXzFd@pg3zY89HF;#Hf}S|%GHLPGFDvectx;(G;F_Uk7-8!DASCkH&Zc$as^-hM zsu5>#m|xb_KF&vnwRq`~xxh1>WI8l-HJRp@0u@&V-V1c$o9^GMi2V7}HZVjL!*lz| zdO+4?b6slC)em?XDKytXA+xey7X2g@sUK(>MYn_p=NVKWJhs;MQTL8(_NC8R>w>Fa zdYI%YpBe3HiQi>oc!QVml4aEL$K3NSxRca)1?4u%wlHU!5CuBqn4W}%r)0&&WAV71 zLM~5X!Yu)}Lm5+}_wY|->2sV`QxJA(?aUf7xzM0?zxP!oBE*-RMgRE#=(^9CGf0dY zu0+tWThF;DFTB5nb;ptN6B0(HGd=K7XU{F6f`Jc~o>7@i!*`;*CNf-@NU_X~nuUK9 z_zF4KuK4K?*T6yW7WsxJWacl5R|7oS(RAvzc+pz*$47hAwYjgxmrntxV8`QItJm`V z(QUslZ7xjBLON|Vgo*qalK8wL{)^d9@ec5Hu1cQB(bvn!(e1CGf8EaY((Ni zk~a%mTW7j5Th*N7b3W9Z!1Fa$@J>5QAmzBUaiKv*RnLfHrIY$ye3MT{|0wQce20a`pvF*0pCu3_1gIQ;p;M z)GLVgku`oZeT#Sf;Vl=na4&sT@bi|yiAUs_F4sViVbS_Y!Lx;+*{IZ|rVL53JU`60 zY<@@VHIG2?b{E6Z*SqmM{)_mTYXd1IT3^+Ha@~)D*I0EC-s`7;X_^1_RqWr+|V@ zy!_ja0H#F29vMT6d=VmkJd}2&YXLnWHE-b`-#2pPF1ivgXia!?NULnd2(6>gA>FEv1}mpc zc}jeS=63t-ENwhNdH$z>FTh8PnfuP45DsH&I+LyYNDpo~Dnz0uGn10r(3fY| zJT0bzkvb80d;jhtO9IM&x~g>dd0thr2VQyTZ+mfSyRf=`f96I$rGx4XsuX%PpBhy5 zRBV`+Aea$wJ!aM9+D^Pj%;Qpcgs%v5+cnjHuDkqxQy^ZGwI0M?KL2zCFw9M__M4yN zThk=N4Pk7lZx;WsN?xg-(dQ7z9eGEflD{&fS>+VKeRDipFX_ondK7xPIGQ(U#yQj5 zlZ$DYv9_x?-uD-O!Rzg#aaPNQSG2$A%Pn^L^;mh(cTl)U{;*F_^v#)@n8v!W$y?5` zX#R#Xa-+aYe^I7$YZ~l!6C8DF46K?XZFX;0K*HXYN`hJ&R%4-O^nc1%*OYYWRQcZ8BV>Z)cb zC$X@xTNNHhBR3lfDE+39rW%G$-1jkhVkYQlKhMVv!yq@5N@#GtSQA&z`XO`Jz&zoB z)}0>zrkz(br~0xC%+R0GKrSY@@Z56Kv4ka)7CkX?wLzjNxN6qPWdiUv zrsfnNj|zBsnDSF5s7M`Osk1~V+wFaJZ@nAmJt${s+tq>tuCOgUJsDn`{X6KIXHw-y zr}~OY^o)>_+;>|06lN3fs`_P;%-02moe_)nD9)(;t|L=yqx1vEYLKkg&&WYWcn z4!b|9kWH0h0*lr65SE7ct@Z?0&khKrCR6VPF?k8Wh1)GN``uXpuCZNNl2;ubmN*48 z)kPA+Tbn|E)Hx(3`ro+DTnJno)ghc{A8U}k5|Izdza-1#uSy^WIjJQHUX@AMr_oa} zBIcyrQPs;(mJ;zJ+y$HceQI%Cf+*sf%!30fEn;d&v{+APC+#3mMoHZQYr=N|9ZC41 zDaNtZVV@U$XaDairXDMStD&MeJKlZyxw1z_1-rIXV~a~C_3a}&Q%5xM!f=+q#_A*Y z@y+inhpiTWp2;h7YdJCc3EMU0dSkDNQv0lsUNb@FNMCxMnDuk3dM}R8^On1+uCc_5 zEH;lH=pr;JVfnoR5-0zrV}|!V`>d72chA97>Llo7ft~T7J0QiIp1#L z56NX2KXHR@bfYqmmsPtxULISc?k$tF#&)bMyUO(zW;*RPXQMw6umsE zQ8NjHqIGePY6QGx?k>mgqkF+$1DylqIz)Z%t72#~qU+q-r)mUJglJbE6cL+*Pteq$LdQC*%&+zVC3t1uq>?Im zlke&0Rs)21ZH`R+HLHc=gZt&XBT13#{EBy#2KK zM*bJlTh!g8=Lr2+_22fQu^KP;y7+?E=0#z>V(H}?jd9=ry3CMF%s!HO!_V67D%E$p zG~P988v3)nC*AewDktz|6arfpoaSqf6g83oL8B%4faFLLs^MG`=l<8Y>&n-g-u{+Z zL8bewsAf1#HqZUwRwM#3TTzMZ>^60*Z_TbU{3yqvXV%tINtc%VAWcsF78hh96}DKd zDpMn$*Gv>MtLE41jenirrD{`Z^N1eUUs@i*_YD=xh5O+F`xd70xFCBLVi5$PQ!L*T}_1ka5-6X_^W!~rON^Zs*NIh zNmiGRTR1$;XB<7oE0K@xT>k-f4;tOgK9&j@2uxnzB{94l-kU^MteU&D_Flxw-52(h zWWK=bEpuG5O;2O6*d8SpQ_SphC?(zhZBIyIzib0|rkn+V*;AgVAYSg@Y3hyv&O$X9 zNe1a`*-d}Q7i%0L4$CGfz@;-_9pPw4hL3=+!`MVOvcs{PSe;G?;jF^oM`}AkP`ztq zS*bA3vZBDL3+2zGBsN-C*vF{Kqo8>^qD#@lgg6-{*FVkcN+t&X zu&Ee^S3Bfm!9CTEgN`mp%^$39xY=Hvand7~n5r8-P*cq>=qtq8QCM91Y{0( z<*VN8eI$W0MXd%;$8Eb&IV#9PuVFk+B)wMhtbH7~b7UcmzOPjBo{FyeBQ2GV5anrf zvU^YG(N$V{vy0vp3(5gmlM<0{rMB`+Hp0`GE=m&nB5w0C{Wf~pzCCGS&>;2y&~>HZ zP=0ZHN+o-e>_!nq$iACO_E3ndLw3^;vNMy)k~M^^lWbWh%h-)%nGj>&#h8$N#yZU6 z_5b!>?{&Q&p3mnz=iKLB&T~D#p8}N3AD?$H`g5w+qSM!KGtUdEZH5fmJYW&@mO2ig zs!nbpDSV+zcPxKS9^QTMd>fHGw)|jq580)maA;RD&>`S=Y`L*O;VZ?nyDZH=9I%mz zPSo0SOTXYWs?NKPZJT+8@aU!~QjNoaMBZ)0U)UV$Co?DLuacQud*c6ly{a2TmUPy9 zGr5SN@Y|Kkp8~kml~}2Np69mj^ZOkiApdCC)qB(eAA$PX5ep<`n`c}Lb<)wea}SGh zYObn<{eT+~h$Cpn=p+(iaj+S3!~u(5!NxexziL;S7p*lp!G^RUHNBmH_VW@NNju6& zXwFM=IqkAO`H?k6lv>WEKjwOGnv_KcX%_K$!fK_yVQ~z~Fv&0)pLemau)pj$QCAnP z`G+>^ItK0B=E#{`9NYV_D6!XT=dZhtWnkQ|K=1XQ0z8pZ(j73D?w(xH7F@qo#8t&~ znoD_=T1m<11X_p`K?YJJMq72|Gk{lHwITdpt~Xqd_Bfy;BHLh6)R)8X!6!b+CyeBm1+i^4VQJP$u7|r*$D6a! zPJP8o+1qizOSDTgtl*`Fz5jZlCUwsgoEK(}d@-NMKnL(6`PgAUfZW*_C_*);5p^*f zmgyhYk(M*`CPs2-rzuIz2V<(QQQld1Mzo}NJ-6#?!Klg>#ij4M%QT)1>!&pA(>2qI z&B|M2@2~E`hzOwdde>@Qk%W16M)InotQ#;`TX3A9u#J-DTY#JtS8JleRi-bjO7K4= z=Ee>A>S#nyple7E@WI?V`9$7EEGQ@uwF~T&p{6-9hwApp?Fu&1Q2SgzLo=5fpY0A3 z_wtnKcqrwo)WQwRl@B|EG9@~{$sC>5?X!~k5~$=TKZG&r*ya>Kf1Wm_*t}9&LIDl$ zTsI$nJ`hr!J3BuLfB{lTN!Ewh*%BIKK|ZV>%v$`Pc6jBFwOaY{SUjJSoe2-lN zrkIgRh+I!enRuox8`H*=_1zOKkrXvASCN(W=eU=N73;bjR-x77!R@;s%|XA*BL7Cl z+bGGu|LAS0g<_W5JvQzrG6P+4nLW(TXrD!tY&1p_ULUU9YWNhzbmfnhli(M!^A(@G z5K9DXXl9^tc{^Rwe`6qAchLToIo+ll#tTICADX89;#G=*2?u49Ev>Uamr0uB%|PBa z?qIq23R+ff8Z!Z;ll+aOx4=}@IE#eus|jQ!*dxRJu&7f%5>WBnHK zPF_$J>1jbn2wQ^d#`2m7dtN59+)3=Q$zf@peya&Y&F zY4*6PfckDXTV1!D7Az2wJc2f&R^E&uqCi)m6*IpO|^o z9X?ZkrAnNsmroFN^eS@lIM;z=;%zGRpgk+s``&oN_<@;4A%6wVd$bSQmZV@22nanH zZ}U(B!O&^xyL;Ht2)%bYy%(Yr(Wt_^tz*Z!V8@xPCp)G<|=ArjYJyyTw1z({!^5+C<0iYyq6%ReDhoetSNp7oYmN zj480AGRWcTPkLju2?6B5J*;U6y`37;Ws^K&~Ls$*j3v>lz1<@=9x*hkac_f?)Yg5@-rDO z?g&2xSa=S+56;!~Gt3u#uNeAcpOz+5_Y4fT9vi9SOE6w@j1o;QTm-0;H4l`pHLx&O zH#ZX=*g9R?ueP{X1!hZ_3yr-`j^22>0NTkud2*i8dI~rw)0eisKg!r7P&K4nDnBcB z-E)>FL*V{Dh_%sG_t(g}x~s>~;rbkQqvus-nd6qd;EbV(7ya>!qZ8S_Ucjz!)rsdT z$)d%1XgImJPI#mr*}wLu^xwT>Y(q`#LaikGD-1XH%D2LJNVc?;I@uyDDT1be3b61f ze9$u#q=238&E$4?`cG8#I&~Q`^|r5IWu-<^hp%MW&NZ&^Q=JtzF#8LgJQCW$Dbmp8 zoP6S65w}%sY|)Hm=iYodM(J<)A~Di9Z?&fg16Oi2o?I#4`b6CpUqLkM!@$cq76D7! zAr{zZ=+O}&vtaCFb&2MzVrE^`k=@*wvetdw0l2moKaGKn##;6 zpwh(suK}BY+_U)iiA})1is#xZb7fojl8M697aVPV7z0J{ z!{>%#5N}(B{!vR{1?o6SY_0pe3soWRH!IwFTyNsBH=VbwMZgCyFE38rKl|PO0U;JE zyTiO%@rab%O?GSUT@m%%M$7{%rO}F8Nra^agh;II^F%G+Lj~se_W1$(C==zdg>I`6d%l?Znk~#@#v#I-tM2N` zjLFNfB%NNPY&ln18-e>frYthvU6EjqXCicS6UB%ZGx71?%jMS@X3D4hD?-P2U7=0K zD#BxrO27hdN z*U!c=OVMGTI8hhBJ0I!6w`}X^;iX_$E|JvO^85-H&-piUS4|X+Kd(*{n)?Yo181OQ zB&WeXb_F7fiGggz+IIDIDgXY4Eo{dpo6Xxm z8=!qb>pt(Y7z0(vHPvAydu0`};R#0JqLwSY_CDQD-x{T?25SAd`Ib+53iClj!V2me zJO5$BT)sDQ^kc^}YI(o_j{Q^MlOIlN_fL2-VmVb;6R8`r9%+|`8z>O4rN5inbHVY! zdCh4h#`9VYxY`j^h45Z-@J4Tia^ary6Zpyan0uC!{>vK2SbPri(CxYS87H9Z-bf9S zYxQr)Hk_H1+ML%K>)W5nvk~UZaYBwm7Ko@V-sSJD zSq~EiF4ph87@VjePcbGPL5lBOthxQdFA>jE5&i-+S9=@U_Q6`}S)#9Q=arzMdLDSC ztjoMuf09A^phknEiRPa=p6q}-P0xI0Dte1QC8^kFmS<^~EkFL;BR5)P-BNG$=cI#V*lX8t&m*|hL>H0bwEsZJB#K#Mp8?w48meF2JS3{_52Nf~$M1Mv~O9OND z;032YEr=OmEwXe^n{nS*xv){Sj^B_|QrK`fSv;uIXmo44O46aep&3wMBtNsXk^ z04Z2U3y^{pi`<}r3OPsRsaFPHp$m#7;50_8pL7h2Zq3xl%^&L3occXQdp2F-7hd=j zFbP(PPLp=WALb;vR;>Gq)}xYs_mh(}viYO7tPY=ORKz<2?`UX<|4#qO!*^7k_hZa; z%q`QLrm)XnqmFj^$3_xO!={qKBte~-{_9Au-x^#&bMU)awCGlSBDqu1o_V~mwux*$ zLA0&=etWJjf}vNiNttenY`ItZ--XMta|^W~3?yQzIJJGwmHuMr`a!7t9{GLL|c-- zUjp=7W_!w(+d~Iu=1I}MM}ksgN~xy+ARA@i#k6&&!pQNv8*N6R9}~U?`<4cKy07`s zXWhcSk~on%1-unwV_pLhjCWXUZ9NrV&F?gNK&@b|)D0&=k`PUS^3RC>m7R_-pN-I) z;&!W3fD7=$q#y(Jb1M_XlXo87Gx(ct=eqBI{VsJ}`c^M0jHc`j@tJ+RwgDzPt3V_79s z<>JA!rhn9y8`R`miY;>AJn0BphwSz2_Jw)`q_gDtZGi30<|LxPhhPnRI)S?FoN}k~ zb#H)b!vK$CgD^17*EPBA5+ZptV{Ez7@6e6LC`=#qdS}WKLzoLs%OEW0rof$p()&Ic<(RZIl&hP;rnpoW6U#RX9FrEIq43DtMtRov*qR= zm*{-Ib_Ve(Oc#RDf9JAww`P9vfH(7kc+>HxJXX2U#xftuoyh|kKCQw(dal5hX`W+R zT7G_akb5mD@A`3+4g-BLi27_TPgE!N&*<{63x0WxrvOl2>!jtVmpc2>)Qhnj>4SR9 zogXeunB^6>0lQA-E4L~{845C=C(;v=4DemLHgTnuh5B(pH0Z)@{=_u-(2JujVHE{* z3$d8G2`3pEF{v-eKJ&j{_Mgq>dWpTlPH5#YE-!O8e`?7PpUu8NkiGco6mX?@_b!LT zo}%A68*;ZQ+oCl}aZbeH^WY|40YlLrb7~)fQZfsCm?)i%9Xngr4^?ALo0X5fSowBd zX`)a#6W-#)#3EUn#5QU<>x4q1#gjS3`@P*}>EmB=Bsj4z*e+N;OxPFNmeRa=JS2;$ z{Y`&iFWGzna~0|>gSHS!ZsEa~j5MW>id+dUd$5=q+nePYtCgGYmt$r=B%r+z=iHq8 z*IU|;e{WQvEUKuY_nY-8fC2Bt_B0XE_kH4sj($7wK_P8~JsgigX+BY;oG&{`>xBEu zolF`JB>L<*sat9gzUlf@=oNY;KK!Pqp#zz$tTR;GXevnQ{+e*27IG9-?$@?^vQzc$d=}e*pVxz0O?-7dOIJ8)b~9=2#Rb75p0ZW=hVv zzF+pScumz3jDuWP?2#>M{mH;78=&yEMX8nEYr;Aq@sG&W^EUaH(1}t1v>B_GE(3N| zCkN|^sCd{535n8QBCl^Y8>!(nO9h&1gI~6>^-pft?#6ljTbQ|3pn;O&BIyo9`_xiNK0|kSgC_iy;AkD+xEeAk5#Yzl{t_uze&Ujtf z{vA8}N|~qpdLZ1*NB9Ge&rzBTrZVU+u#V;Tl`kn1Dx|-EC10cYso$kH9TOSqHf;Kz z*`Xiz_bfay>6rA^6j0RC>rE+V7YVbplCi{t9{=j$ z>*163JAGGi(MIFJewB}=xyzBKA#Hm9M=>N2B9BQ`M(c|f(ys|ZI zRp0yGqvv7#ff%xUAEx@DiWi2v%-v%Q>P5aFDFnzP**z@z-oxyE-Kx$lP!{9-r?uFS z-2XRR`oChTbHFHq=_Q%=Ay&OI$kXOiveiRDB)!SZl)g+#=W@+R>tmc1&OiBq*~Uy0c}v_#IRe%8?Bo(99HKflwuF<+i`-L2iNFoO zH6~juCA3jsEi9>WYVK}E^2}W&pKa=2;{q=|dSPYkNV^Ptu_91Okb{KsSNJOkiz^dL z4T#s{^L_Q_FF(6I*O_oHpQ%*3=RyrIQ8@OXuw}?Q*YxnZALnp&$a zgIk!5!v#`A?Ag)LPZIThe^vMqRGYJH>dSf`+2_OKZ`;7ptFWzsSUv(mba|NV)R1vy zv=+oi#8pk^b=Wm4eM_?%a@|rL zW;a6x(bLDx81;i%iNLxs-2^Tu)fm4IO2VI*`n5a}>yRg11=oa}X zz3WJwZOy*b@87pw%Y|n3-eptM)vvV2C-gY3Ev+ipfS?F%js*GEDOhpsXVi+cD#JBI z^YoTA?J~8Nb_>#e)qftcq!h~wWG2;^^U`t)@A@z`20FwH`=IJmln|efL>mzRTBoXX z{L8OkHj35Aj5?)k_hNX7K&?HFkV?DU9=;?{;|aW4;ryI6ptlxMx|6e)*d|fKZxmhJ zbgiAm_>K$8zDhM$tP4)MZJ!EXGPDEYa`Kdi!q`2$l8@!qYY?b=+|X%1R0#8VU7l_2 z5X|Ng`GH4z9&buGr2Ex^y{&$PSL*TJ!!OHDOf+q$e;|S$=pFh}bt1V3!H&!Bg^m=p z{fe~piC>)j9wst`W)5S~zd;JcH4r%`d=3v|e#eCW^)~S&%5AF@8Rt&)x73hP-rE}S zNkX4W%GyhgH$%jJ{zD;S)>f>i|G2B(jceN3DcD_cQ8@)zl$=Z)Mc#eACEPvvWbLL- zgDr!YUwUI|3vann!cMEU6Ti|`3B6N*?+n|4p`BO&M?kp0q`G3W)Mqa#kwo^ox*8S6 zZ}cKLWXlzwrI*G&AIujK;^U`)6!55K{d3+RRcL>B`(guC_}v)>--g-Nl4Qtyq>bmz z&N``&(@i=oCQkj*hc5CLQ@XO80qRm#u&i#Y5Nz+vOZBZcp*0z4D{ZkmG2V zkwjV0W!Tt>QAOf)!)2!yY7r0Ta2LDpkAbRmxSz?sOh@1NSGYlX0(zS5d#QxlPwVKz zlIXkJpw$Y4g(COKY8_AWu?+KgH$MF@Ut=X6K8(Hn<-g{@|NCJS6ie+J^2#PxBbLEf zdJ0#0mr)sQQn5bREORav1yj}WZn#9MdbD1JuD=h*vh=0^AgE7vl ztH`RojQEPES)gzsdWX06fpI5yo4@`nzX}Ps0UM6!ki9{k-_;H;C6phQkUWU*j1%`d z(5gc_oIS8!$zM@HEsNz2t83tQSR8muLu2~}aJ@&5Uj}5bT!?NNsT&-A|L^a{2KmfghuYv~pgN`bgqfEDcJP#?EX_$MPMh9d=# zR9gJtb7!xId}w;mNITzuWtNt}@1X@YKz>r*1yjW`Pgw^iVr3|jbQ{yXRskCTB`Wlq zQJZ$>;HU|-lqPFm4$`2xp+GZ(cJo3JtJMevz6ku5+#P%&+o3u$+e`MN56OHt2x8hO z=)YbR4{)yAt+<_cELH?F-2f4un8eQHeUfw~7S{|T9~(aa##GVSlctvtoPB4$%6`0x zGI%*fXFP1-rFP3E< z(!k8LVK{@jq2m(CX8jk(2sl;+*+yBw5 z4`<})PcgxSx;@e)7g6pofr#mbzUW!#$`ct!K{!8Mi(1DO??&NroQL}>JJX7>!@vk2 z!Jz*cHC=d;_s_W34FX}jIC=8!^Zf9<`8LR^_vJ8!5ocndVn}^9&uG=Ng3mEn9d014 z8r+1a9)r$^6K3zLF8kAT)1)RxzhYXsRq^sLFwi#v= ze%K%C3+rv-+oCIGd%E_n_Xw%^G)HuQX#MDx5yTa)392{g6i~vIbZ5_l^sTP;^4&&` z>pBE)jS`SRMf6v65w%?&s)#?#AAbp5ajkAh?YBs-8Ay~t*f(hm8U-QaDFP*H%^^mv z11oaS+Zd79?cxk^m1B;%edN@_;xH*UPz1Var|WgGvm-@VS-3J>j;v3iLlH#VomhHO zogk}L7}c+jcmfc%{yX-8XC9?#80rs-O%DlQJ~|9f*!)=3RhgTw6?lk6HWa~rz((N& z{Zg7LDb)x)6!x^BqpI0aLRk)Ku6Nj|l`J#RDcZR{ZJFu61{< z=Nmn&nAjLZT3#ECeI0bXz@a2LyOr@Xe7 zbsV@P7R}X3lWeIq>W0oCH6TX?_o;7RFGR!X!aOQGL+X?mhZ++Zepp&QQ?I%#hSb7n zDF32pld21nu23AtZ@wu*=1~r~=~3d6_1kZsKHf908wh_uW~2?Cz`N~Wis*nug}zJh zMjPNrt8|zB1=`O@QT^6m^Yy!pD*v@>z9HQiF5R6calJWmITF1>p0qJIZ+uB9++@Rg zEU9HXR_194P%#LL1yZ7@b|C5{LK@OY(NRpPD)MCnIQc^xCpyx!b7gwj< z=sz3z>i1=3<$2rv!sCizvsjR7LJZbmgT@@D1_zR620LuLbA@cjldh1?t3g!_zf~!5 z>)2WOAd37KsyEM}@3{|e&n$SF%BosgidSd9H*Goqb)N#JJ0FvrzK~qEC&sjV)HNT+ zf809mQ4wpm-bD(8-HWy&^pw7Ox#$Nu=axLlY@$570j>_gQaC0i58sjma5i<5l{+`T zzi%CyeO%NPt>G){gC$vhgiQkpkL}nFL#Rm#r+_P>Eu4oXJ`97ZpI}D8lVEyIz0IC}RAvZK1eRKy|-oK}8?i&0-?6+QCL7uv=Q7W#Z_=*9Z>d z$4}LhHUGPb3JBvE_1}rM-l|-Pe(B#&H8}5>vLbzNme?tzu{Y-{A#6qR ztY?$Tb4+mbcyy6*6~YnkD+hKwqYmy?_Or3Bg~>HEWZPDMC(`Nk+}?I!XfwXgL?W-I z$c(gstl-{`qV<(E^K0aH&?3_MSz;Vnuh+>*bzZWvS)}3e1APR~-Nvm!nJw_G z!k{g?YZ;9n{+gJL!<~UqOhk?)qY6`N)PBI~Z}(?@t&AshcGToDRDgMH#3z}_B8-91}Z-4WhE`|wFtVt%tn8p4|1BqbCZDD`L zXZJp<;5WdUy^yx-z)Bbv-eKPEu)|90L)3%~2sUOFSBx@$>~C>r4hFDxo!dwDtPL?_ zCmvJ^I0bz8#KH5`V*%2hD4bgnYWdIYXVP?u$q2{=s`aE{bj#oH+me2KjSkZpuzLmC zBo@6H?>kQlF;Q`pjUxz+VS_-gea0hXWyLs_@ybd{R*0^=(LIa7IcHX1_z#+Rt6ker z(p{@#m!+MH9!Eeot2)wOH}B8lTMimngJaB+#rrJXIH~+tkd)-A=LsYAWE`{@lXaJu zb6~uu3GT*{VwUZdHaWu%2;|yL8edwL)wy~<07f}-uR=yG{3nw36fHb7&p8`OyC&q=h|FOrv*bV|G(HLzg%0#K6l7X+Y73oTB zfVoVOL#oP3t2ZA0^D_m6^B-%CLS;Fn6hwj|Ve?_ovkkuwN`Q%ZTE}k02}2y_$}y;= z`9zGeW+O5RzKA*noRdesfiV;E-no7AXvnDlUKiNzCe&x^bdkgj!r9gpiHT%M6*>(g zKDRrsG@kgUCiBA8|WUrkogG4Ci2Q5Xj(wZJNuXfv|&-W?APlT(Oy2XCJs3 z@=cxgu!a9weA87+-G5>|psC5nBtC-f!wC+36m4X5TByy%OX)WYauN%wB!1B3 z{;L&u3c#6%X%eqDeG95JdcHre7>sXlxbEh|;eZF-qdx^q+S>097wB6Rj)Iu{sWtc4v9YlC5j|nhvTmmRPDyt}i&ePK%Nm&FX20=lirTVi_ndJdN?&YM-Jzyj@S~ zC+tE!?NV&KgQkA98N}n@{1%@;jGO!C%GZ!yW#4}dU66T~^OqG=8UE}{ukVcPYlJSo z%(5?ldwclb!nZ=y5-KhOoHWkzq;O@ZSbY29=LQQ+#SGIV>*@%9NT+Q7Z8OHI&G_Ar zP}jyXB_1`2ENyL!1&o&xN`flA3w!1R%vkQJe4DQ~Yae>}Sn%NRh;lt?u?s}k?!NZA zU($HeJZgPfN+fTAYJVsu{DmTu{B8m*IsMMg{2;bj?$F1r1ojKWz_ql{T?x{4vEp5N z@Lq#Ea3Fk@Y#MfPn09$C$YJWAs!Pq>eTPh^B;Q|T9b*#}WIAXu?a)JM%LuoUqKDV} z>%kDn$a*c$Z=aJ4CE6T5BEg9pxb4WYxuDqjtSLEl#oegn?0kUVD1Fw?I_tEhxRU-d zx24G~27>Jd>|E<){^-PvvW;6N|9ybpAGC2}y^Cu?dt?$fa*l0w?@*k8>_AKf+E2(Y zTnW!#X|j0RryppLqqrIG)5Er;8bC2@kAu#&@8li4mYVpMsUvOFcjD5J>GS>Dam$J2 z9|R-lMJQD6(59KlN&SjF?00F5n5R?RmPvXr5GMUq`xL;zO+%6Y`&dIDX%x{$+iPrs zyiBfmD27C~MRnVJ0F5WVxhK~PcztxuGOp(PQc3_wRb7(cZ8(mZhSxe~xxRYRjCbEb z?9HIPsb47oG=P-*&8qVhAh>aZDQOMdtVwrv=&ZEAc-D9}2+9-Y6a#n?pYJHHn9{2S z7 zM1UXAIzRv@Op0>9!Dd3cA#!|qp>GTOIPkw35pRyccRa~w{-Evazmt-#Uasek0<90Y zWgNKL#VDr$)rq?BNe6u~KRSH$=7t*~b;&g!B9LQvL8^sY$ihMQWys{4u-7Cb%~Xe( zLJO$3n=m`y0ZSr^JWWicF+?tUC(>lYeZn01edesbn8!%{xPL^ykBmRli8^?-=sWUl zSie1wjfUsKv$p2OsfWN!r;Zy*baR#(Du$V&(YG6E-*hVbs%IsH@(Px)yz^=qv$@mHwj29m;Ia~MFt zZsn3SgHmySnkuT&0{NIq3p1D$_P+OhlT4Ap2#ZZkLWq7emfr-W_v#$qJX3;p7qp{# zI<}ot{(ZRDR~Si8moUZ8jCefBFD`$em1SYPiZ}U@6lLw5geoT+7Q3P!%kvC&U{$E} z3JYP6NRGHRI=yj8{96?f8}R(+C5fBARK!X#CK!!!vqh742XMA^@D-uqEnMqp#fw>= zZ+G4NQ;y%<{c^x)d=7h5{RbJex-^I)MB}t+h%%36>6ooB@cE+p3h0sT%rystXyutX zhl9n#stpMq|DkR8Viu@oB6(?t6}&My^C+ZWZ^1R>*ZvHW4qpluj{5=5{=NBc2PlnEz3*wc-7 zn9Qc8YD9(;&j4ObO{{2lM#MCWCb?DEY;YL8xYd|)i)qhGd68qv@+Zt*q9!-TOzy9p z@hRZYhGYcnM#NeNB&q3D+xF32<9X?mMFt(FQX}dRZ&lNi)Kx=zy~}5}FGlGs(w9u2 z&$9hn49IK5TSwIx-&(qAc$@w*CebJi73w@>+X|&f##`=~Y!#fX z)6yu75!UlZar`AkpQR)AR`QFc+akH|Sg*0|kt}icE$%;QFZwCASu;`P=8wK+%T`FL zZ~U4hV@BG|;EwPq-A+w8>SyqC|3ss}rwz$3{$!_xF#FB<i3_kS_3C zFYndv#I4_;LC7wg#z-VgcANq(!#zW{q#qM6Xx>7_UdGOh!@zP5bDEi_0MX)vW7NY8 ziD9|LQMx-c{{t|EL+sGHnwsAl8q_dS)>-sZDob(g_M9fT1c|d3sLBy`+|(E~pAYZc{9h?TX4M5>y_c)_+Bqs-GlHQ=n-q1I>^ zJ<)&Xs{WE&f z63r#O);Ot6$b0I6H&juk&c)1;dH2ukjmp(=U=p^^=XLn>z8#Bdian8sW=7vTq5M=9%g(~hXkJ={J=AJ?K^+q zN+V*X9z=5Uo^|W7pm9x{0_r69!>!#VQA|D!TetZWHr@tlG^tw_!g>+xVY(F*w;^2h z#DSzD*{(H_K{`JAwaqVE8qWbz%aDK9el7HHs%|t)fNU9*_;c7b$q3cH&U$5kIt#G^Mt-FD8Soqxm-`HSZ*P zlT7ZS&b#ET|CXD(q`o{9f26*DG$^qIx1lpQe+`Oaj zjx7rFAY7ltiS^_%ixxIVA;MiVz>+=ob0Ay9P9VnHc$}cyZF4PS$*WwTF4zR6tZg5f zb@J{IPUtBhYlWGPs!L0i`gkiAhM_X!ln3PoReJ7YtqHkeox9eQAoAT%mlTahkKQj{ zy765u%jPDY&mB81O}aVIR73r|QrlSD2(Dhgq|ak^6k*5367L4YTO$ZIq2#k@=wt_a zR6DxT+>EdwoBJIL={$9P#AIaNsXoTmkh62I*mZ zq*qn#wU=Ddzk1--l!Xr}c`C{+@E@AkTk#ew^I)^%pJ(hMraqXEl?vcX31Q}xN znY`I%kD)$A?|k2ckEX_x@tnt9-?>-knV?=9Yv7hsKs|PI)`wVbG>M9lZwakbdOZ3) z@!_^njEUKh8^U%E9GRy)nr%ds{A*CGk*bV&?2soh^UKrE@n+t?-P+r}OD@G362+;3 z<&VFWHcjDlAp4fI%lTxL2TRF#2GqAKuEY_AXWq%5Y*43xU};D#KvV> zJ@lIDXE?gzqF2-?qgo%b=o@^&ArRw91im?u?Ig28GK?6~nT&LVxLN5`^V;9?zow<_ zv=dAi_7lKAPv)yCi8kh>P?5{_mrXmW3UW>EUYfYTk(jfZw~DCJeDS!5Y)ImIp8Z2k zAvd9|tu1$?k|ML5#iK98g84qEj0Z)ANWVD+xFA3Lp(DBAP61bgk~dMH%bngV#00PZ z5)+`4QRSa5=PFzfEkW|OC1@6vxT9r>qSdn4wt`fH>!os1IxFIvCg14ytB!uc6ba9e zn_FLl-tOTo6DkibW2dWLt34M97NUF09`{}bPcPupqdKma=jMcOpG7Rz7cF}8_xi~h ziDo13jJ+;(VXl;{m6@6H3T4lG|1N%VFmPrNRj3s@W)`*X^gbb9*yr$9 z8BBxOu?0bI22C@q6=ViOOV@`XpOxOc?csG9oV`jtEiV@>Q`r zQb{KUR6>uy8%9apGj+ROd#|SVH|#$UY&z20ue91Y6?-xYCoZ`}{t}S&LHztiItAdQ zDH7QDBkMbJ-?fyVJb!(ud^(}iZqSHgRH;O1)kihsi!7nuPhR*5yPX-}XKrM{si4%( zTEz^J3^T14()P>z!JhYIHNOy(tcg78g5Pb`Uvj;EX(kl%%47G2e0m9Eb0l?`saa<$ z-q&*^2xQZe@O;Lu&imIfD~o?GF5i8<&&>B@XZ)TW3ejB|(leplf!f7ADgU&2r{}hC z-=N=OUYut3x4V|?y@G4kayz+^9%w>hSytOfMT)LxUw{EHq16GF))53ZYnt44ZEbdu zYg#Yk0;Yv7y!#SuP8jo@vqg`*no9O8S|q;}d6;Y2Dqz)XN0(fADpWZ@)6!VTI;`(Gf-( z{6dI_Oo%2=wc+eI4+gyWo*zp5?$E)%VOSdoas7a!A64L~&llWZ&_)YSgY>rNd=bK>6< z<7nJ*`pT-;mtowCr#U%+NMIBc8J}CwSYqxoUp_XQ+Ia6B4fXaTD0Mg6HnZ%f?`qww6LVq?6dZp$ zQ~Qu)?f}b$9GG>TkryKJ6u`H2V5B2p_@sJ5Atn!^&j7yV>iCf{?>^T4Gx9fEf*{)% z`U*vVTwSA7oLX+2(_`|2UW*jFUGUV%-FK{b>0k~CDfQA8S4>}PbdKF$n2zgU4|`0S z##LTlmG&<6y!YUq{rccJB-ikPzO+BLlUEf9KZ0&NlV&^j8Ltu|{!vS-zDRTR#8(?1 ziWt3^CdE=p)wV7-F-|$+eaJ=Ou$VA}12<;gzRMQ4x?G$1rqmup2bQ5c{yc!MG%J19lzQQS zjH!gBznzlbOxBRq z6@_%xuQ|7F&B@64l=hK%fvkbL(AT){&d{cP?ycj=LXzk(^akoU+xs(j>H$)T;>zafYYA^g!80kj77_sFtIqL!S{hCXc*y1 zxUB4QBT7SN$DZ+$3Al3tJx*;XdDndk_zvnw@Kp2=X-L|HHvUC!(;O$0GTCskr0O@W z)H@yX9L7eKkGyn1gC4byq+ZDM@#+zW0#3|}^w#tWG&~bnO{|6rt3L%h{Z9HKw1)`U zLSLkfX-ZM^4!rB#1NSOy^g?}SzosV2vUz)l6p1j&;=RFMsI<}`BQN%N<%HSq|KN;0 zsLRiiZfX0kDEB=L8xGKH9fEtAM1kvc5d50zqi5vFH<208HU^iM1=`bJYEFM~G40@~T{0&by0Tu5S~@C3W}|_T<^2 zzs)xHWTZqo&Jkc{8{ixo3l)XFOHp^`4UG5K;!V8jp+1hGFe$9%@tywH3&$joP0n!39tMJhyy38E>JktmLjR2l9R65d-t#xB+6qNm6uwvJz!K) zmq|=3MDX5Z)td`9QJb+cJMRX9QwYeJmdWzt+8TZ*(=3!SumyOf-FxBfDWC@W`4sT} zU3V5Nzg*PM$?;l^tZ%E$7)QmO$OqhLsQrU7Yz2{3^Z&AGVaz}wII7Hv7V{% z$MJs;&q0O}GzJv$x*-rH^{!%ec57}#|HblUTDS(>;IQ0niqY)QU%YToH5evd7>v6# znZGxmyZN@aa`$}gc^%E8V#pepBpUtU#xNWLqMuW(kZGIg__ciGL-Oau=iMQ3Rge_d zm(+?Pv*teC;wuH(!V%VMAXiC08arE}CP!P)IIOem!JP{PgGP1QvwCrJqOw&_cH7e7 zzRcS+)woQnV)%0evsXbYK{Hn*OyXf7FQC^y96fC^M0wukLoz2FWMtNLU`xGyu zq1f{!Vk;Ru($F1D!!B+Vue}#-&)Z1^*F2lt(k9;zdq@;$Pf%yUecL*imi(!3h%G7ik zj4|h)ym{~vpZNEUiozD0AGDa10l$bA33B_%5wzN=ni13bG${R}&3!C6fi$!0;(Jc) zySm>RA|K@8JstRf#IppSrr|qx2sFqRE0c$411h68yX$I2M11sxbW3Hvny&4hSAeS2 zrNB(DbJKFoV|m6zMIy2ao*bY!xkK27YPp z{CfIUF3(6?H96Z;+T6o})1z>C>^Si7$r&HW2W{Y^GOE_oXHEgpuWcl+ZdELkox9OP zYb^nsT7oh;IsSO{h+X6s58>uQN1n`t{GPv;w|se21XkuleU8_YAN+!?5go|yt(;_o zwf5>cMIX}a541A$;ULY(czkKxdZdT!b8I|csMiv4{PE4)yGGt)j>8h_7w>kD_V|#a zc&Q4ge6N3Sd@+;DOmgDey5)&~=F6f7ny)8cXG+dh`RuV{LVDXrq?{5SC)fWONR${V z8olnm+duI+T}Nb!aZ5~u-I^~)F=KIBLF5<=2{6lppb6favlXOB;S@gGa$s5!G;a3G zdPwY{$rR>C7C08I6a?!xuZ~?GguEHeUxWe>edtzF<~NEeq5gY4nx8Nic+ytaw8yl< zsmyc1DeE|A1C-8M_iAi$`HsZGSB=N*l0l!FnyiHJRN+HKqG$qyxgR3i`(`#x_T2)A z8Ztmk`eEm1k?h4JogWOme*hl)CYe*l3uYq5jj zbf!T^CL$wIw(QaaN$|Z`d{Oob?}0ngja#LkMy(|f{Ofs_$M$WIQcDxgt{uP|LNw({ zI1A7X24Yh-3VtJV-J zYH#f|(tJc>Jk6+DeY?!mcAeC3uZZ|-HF?w|B6gKIJmBQk~R;&c^YL_d?yeUs(zVDPj;ke!;HpN z%`j2=fts;<;vlw-i9P?6p(0V;8^<4)@$G{E*Ey4O%_kV4LlR*ur$2r4L7gYQsgA!E zwT0%>97A(sd6yrzGd%Dt5K+QsUJ9sMxR7|9k(+5}?xP4J@kO+8EI zbs1uVF7VNFZW>|&`&H;oa})1saP;!sG;C3WOo85mSfHG!l!XVQ@SBSk)9d@&G5nkR zeXne_RKB*-?Zh^@GpLEzGJHRMZ<%0zl5YC1!4yi-bybx)~5ifGP? zUP!R&LR5vLc0>6$p$H13yWvf?@WrXrKbT`(S>FU+SNs(Unh<0^tY-e*6kWh zyJffugo(%<|0S*SccyC{u2XX~7ZChV>q(E7bpnNrHXk6?a|SqPG^|)uQ((!|G&u)6 zyjDe6&4F{>Do_7dsKIgZ{X=6vLFqwVr96Qoqa6K>a>5w^l@$$SZ+aDONDN)gliY9Y zYhrL0t3yvTBBzZ>kAILt2!nYNr47F}hQs{7cPt;Zfi#Xy$`S3xEq9?7-L%W(cT2Ns zMxEWlibE1>{4M2fir;|)Uz^;IzX{aPjWOFs2yOj?fhmujvRL7l*WoOqBeVJqe;qAj2S__8Acd@!adH5ul;{X&5t}={l(!^wNsj6gerj8ie7vxJr_*A6; z%twlVSEFm@hP&cg{YPhjT2Qxyg<;wtuE+dfViHi2poUA17p~`PM?P$w*p-ubqc<&@ zgqIQOZd*?C3zO|0_u10(mnk2(U(C6#gB;EhfVTlzsoF~vBoo=SZ_$9567FK}DJO7h zbt~LB%#>R<{c?wk5&VUKN|1j~Zr{tO@?(^LV9@Wv{oKU21<}#(8$cIfjzon{ZIj_c zy;6D8Z!)?}U%f@@MAA;?VHa|#QiQ=D1*j#p`y{3fcrR-)yn@|NY352C{l&|H%SY>) z@8Ju;@@izq;%9zDlz?Ge=gH8x*vO%fw9G9NO(TBwrgveUa3b#3SF1yfHIqu!#6=pT z7%_5$YmasV`kl+bKmupS(G3A5r3LL;O0^yHA__EGY?nP%f21bg)vfCu_UNSN{}rUZwOy=TeoY?HLmbb@Pt z7Iy{!lKRmrrbDEr)|P5&jck_0>3kFVF#(AmChE1z53nZTBy0?0|C5%nn3r{WamXta z%dlc@zKDN9w84@hB&ylCx6G5jU4qq@_3|Dp?^~O;Fls5%hH5ToNjEfrSW9~n?8;Gc zO$!zr1s>R%M=RO_h=MuIQv7#;e^M!8TjrTcpK=albAvj_L z!o#mWy6us-y`TKYH*|h4J)K$5hlDH!xuB;+mKNKQ(U}Z{{4XWYNGt6g(1#3`F~~}{ zoBG8A6nc@K`Gcp!o!1<&60%A=f}d)P(S2(n^b~t3G_0*Orq%G-F3g2u4%4U{#npm2 zojSz7?cZVw>$ER}Y@lPo1f4U$HQ04>u}{t!phFFocE4s_F6w*mtpB?w55S*34eIth zgkm!&H_mf0;~Bsa@x?qf#OJ)sP7}17F_{8<+ocI5wjbsjAt{%_03x3f78A6VHlI$a z(-Wm4ecXf=AJmTO`^Y~mnM?CY4WSmQZf$V$QZ9^5&VVZ7w#AkZ5x{D$qmM9S+$F;J zcrs{dkc}cgEj_%-IbarC3pw@fqNXIG^lRanzf4F-_fkT3jp} zp@$c`gD(B=0LW=X3lnYf48RO~;_(}jDLz__zA~lz8;o*e)V&^mclnP09Ggw_uBEpe zgrsn82JN6g(#SYmY#xfRnkex`(3^iRu}K6R@eJy1YqekSytW)N7R~DLC|Sp9F?;U} z&;_3P(G9vTizwfs-I=J?^OUYw^-U5f@UnJtk*z_WtezAcB6Df?;V2@Nd;H)v@pVSe zkKE0Xr0XFcQtfWIoA$6i*=pa~vTh}!Xjiidhah|8RqA7cSVZ;JQXl-=4Gs(IU;dH) zGx)0b@cVGfOg;lA;aPy+Uh0~D8dMSyB%;0AkFvhB612b<*VVa*`CoFOeS5oDp3VVwpXT>`F3){E zwO*+_a7pyLm5?5*CsikW9+>I>5yC$MabekPUz)^2bA^L%bW*bFjOd4$AryD?iK{Cp%~9`7TAwNoQUW_~R8xZ6~Ad zoQIri)vtfN_+hlSW5uzy>p!LDwfhNNoKlm?Lzu*0$R$gH0OaHrfqAp~gIiR%R#eo5={b(d={@$yo~n$TD?Dv)1{t zxDEv8Y`bUJs2o$Vu8e@Uzmasb*Q{`LkE62e$v9P>M661Bj$!9X>^k5&Kn1rh#b*gM z`TY`@1zvQD%~nO$oMe8NCPJ|+KeC!I`gr#vCc1393G_L-W>+<)C1t5?kb6ZPQ(#O*n-`8dH= z7sXBV2x*QWjKZHUuA#qrm8H@Hv=fz(nx}bZfOo(MM1`kmFHWCTA4quylDU*HR>^ks zMASzJGC%|V=S+R+_{jXUxc|FOh~j?z26;#&zbtP2+@jG2AHkFeI45(qt^vK5Y18j! zFDFCkoLHBH%74}9@G&qz+_f$sg~<&tL#*4(2)Zp`t=nQtNXje}Hod!(k<$JB!d@O< z+YO9CfN=9wB>Xg`MV@+ls0z($2`yft)i0fTUa?8*+Y|5Ik=V^;Ito@{so%aJlI{V% zM;ks0Acaz#da;JrpqC12>l!)F0Cq}t77DDlQG<)ph)o7Bj(p07tQ_9eGduuR?Al~1S}#zjQ6rDQSF?m_q^vx0>4>t~kUt^o}# zCzrvf7><)pEWG>@>D!F{vWevFsv9A$)1Z3{nQAN?ayj=DcG(E_csA_r#pwt92GxN! zjDn$&PqX3QHmpOlX_FwHCS#ZD@(VIVrV`a(rK2p(C#&^w=XUBD(Gc%Ne74x3&RHG1 zWm*@Lue0zv=HjoE_hu1-07J3b(m<*Iox}QZ2DsjGk*Yq?WI_r8y%>Qhcq}^^JDz;z ztd9N>j0skH>*+C)JKV=pS&h!5Nkb>QG9QgMp*g^oU~Bsa`!#DIBgmH&8RY41z!CT& zynm4$^+@TbVKp}bbV=2xpoG)3SBcMsAmfee)qYZ(Pe*2XK(@- z6`Z(T;eC5jcNAXs37D@XwRBm@B z1!X<{v$1j*rhqY3A1-#P4gJg=HF#l$iCgi;CHh1)8HcN8;*~K(d;Ale+x6*Qw<2iB zi?O%ggoXzmDerGX26B`BegEDXl?2v-S)E2zfdEi1{RwZx7hyJ{THfJwwL_`3cil%e zoOhyZ2Wh}hSmhi}7AOco`!x|2s_KJj<(Y;C{nXcWNpbjWXI$;eC!&w@6ZBf-?fq#< z)JDmVe9NC}4XmvW5DP{)qWPdQ@^OYl?xMGO7wxW2dotL>jvwfwsq9%OLqgS-Z*9Qq zi9ZdGCuTLnjE=yzBJLias;Eu)`NmmQ6BN&kcbZ-H?WUi(@#SwA$^~C2_Q_10SYT@L zCb*dQJxkW)Mw2?nQ~_(>x9Y~bi?QR_R-Q8Cxdq~$GxYa#yE8YN2kIVhfDfJlI3#F7 z)TiZ*O(QNo{T}y=&F6O5dy}Gta)Ey%DL5Jl-I*oy}qzb;OA{`;vKs z+bNDB`xVSKUJ0K<{w`Cz^ZHABJzplinWOf)$lF@tZ#A3&!ok;JPY5g2`8y|pe9~1_ z{}tV8H913D&PGZYIg7dRVfWMZ-F|#q^gaSg047kNAKHqj8c$ zD7KJHZo=-TQaSWhlx(f@%piHCyh5x0(RH8pS(Fl=nzBg&%zL~A7&l#m>sn-nU4<<5 zv`l9G7x;H)0qgkE_*c1Tw#qRep@-GcxlDLi>_c2KoR8Kqv}yh?02aTwaDT!h<pNl?^RPZ7?9v$RTK`D3 zT_=D(!sK!Xa51{@(L(4iBDZ}+?FUQS2;hPu3HhM>9E&~hA?_B1aLXiAlC{3zFAX;j zMgd3ZA>KAR;Z80Bx#cdBzfAURN#mmN<{v5ut#4p7PEwqL-`UDyfoVO!jyLHODCWV2 z4-AzRZ$$ej()*TakiMU0(-d!pHfiEqAYEx{U2iQGs&R8ql!ZTX7_Q9Dw4|RFgWO`6 zXpFi`&0-Wp+lh4uZh%XEZu5=V-fk-WTh=RlqD#xMJx#_WgYr5eEdz%RRnA2?kA4{0 zsTP-dvozV1O7~5$^Q((^e!x^$X zs)xV2Z1i5rpc2P))|kw)4{lR@NEM7-jLW*Bs%kgMgT0fL|KHQ9EQj=4Z|xJc=H7a% zdgCn?tAJD<8!XQk3Cxf>&(sEj1$M8X=SEF!MU8fytU@zbzG*AYxlKE6BJ+ zCvde^t;8htc3NzCiI%*!<8Pw-l6|Ney4J{011w99>+oB+KE7NrCb3*y7h2QsOg>>y z*<|VrPy-@~bsJs>!yXedzs|6<WeE^W|V#aV6(Q2y1ln$4D^G_==cO*bG=da_f>ae*BmO^&V><|EJ`gp zTJD5UxG`zODc&^Zo!*08up?E5=++Gi=bX{T8uCLX{EV~`HS(qmMl5x5?IEF*)_V*r z=yK$vbJRPL=?t5RJW)+AgWQD17TAVun=67JGgd90=vvJ?{y(_lsBEBEwXEL0{-n#UsRhTBSRSJi_lTUROmCV5jX1 zCvU)SoX@C2pYobE=tY$$=bbl|>G)c>T^5$fG({Tj;1g3Gs|y6gg$x#!eo6N=Evo z9c4jlAL&YD?4S0p*K+N@Y`Es`FMPP>tNt*pzkAWuEcf-kLNv(m*}-l!u*NV}9Ypr( zR2LeT0#(VPuXYg~hbtu4hyO~X^jL_pnr4Rl$umgD9{N2g(CDg0Fj_mPz=yfVUH$0d z5&Ro8uFXtQLV5?~Kf78V5$BLF>iyQ3vP16b*oDn$7mSghO*Y89e5o$zV~DlUQ*YjK8aurA6lABn{zNv4Hk>tz`b6(P@X&xbdxwsV^kqBk;2KGOX$#s z$c;(|Ylaj6IY7q0-3QB&!*4b{m(KttNoCii0g{R$DiQQh!x%{)Gw&({Py}=@yTm)RZNU5_W(D z!&4JOLKa>R6J%pl7lzWUZsah0fLeKVuw+l&?}kdOMx7Q>H0L!K`fAM+*c*uB#JV@D zp;(`hcQeDsS@O>wUE_sw&FB%?I$Okvli|A(Fck=9wH(?qEAwyU^k*?$T`+WG=+(26 z4DQN$3XsAA?M1x1w>kFGag+z5lcmualwXKc9902GT~r zZ0`tKS$P{RGKB7$Bsbn$6Dohl)`Zwp4^@K#CO;jTSvdr-cRi6nubw0BCPpPHYi6q_ zp@NDp(yPO@;H((}F}mK6Zsyke@w&*$^R$u+7af7UrhFj(rWmG7oDA$9nO; z{)a~))K7Q3X}0RcvkNz7>!gC}dXW>r2xY%uss-lmk51*Fyq!F+6<%EQ<%c05e>c*| zhBTHvawp-a{k$(#wSPgAUXM7xHEWZf+!qb3jb+@qA?SkQQ&KC&BSQj?+82YBQzN7f zTDcu&GP;+;pzrHiW8PfmYcm=c5mH9k`RrbPD%PsfTBPkVNXWG`EgL zmg9+ELQfZ-2sSb2o7}jl0*6iF5Fu5%F4f=GXlzcW!RJ6*qS_J`yIVuANgyM==e>+v zo;)YEEC1~b$pke>qg=J~;NDbeqQW`f7X(GUAY{ZMy&h33`yWKu9MD17tZB*HnD;o{ zJMLr2t20vPl~Jf3BbeZ`FqAK%4}Z<~<&AMXk^aMrI``yIkUbNKfvS6&;k+v)#V-)r zl%nJtJgSni2?7;xk;^IUP;^Ht8^R653=MfR;_Q9OxgtgU)t4R!HJi zsb_5$@PdX|M;x!|1_5ko(d#HtXUD)&uOoQCphl~vPQu<0n$S4BkqY!ff=zwAjpLlU z&1^N|)fu2#8_$42Fi`oEI+fw&zhwb6V+Q$I zR?(+8uex@!1h&Oey006}nw5ZZo?PLs^vQAZHPV`q^|XF&VmqqN=fCv{b&Lm>W>rXa zA;Nag2lz{%<=J3k6gm;?O`LSv4BtJuA>oo9)m}-R%u9k^TZVF-6sKnyWn~83jXB0M zVs>$P2uRlS-Yll)OHMm?IqiF))vsH%i-3osv8SM9xbgV{!kXkxV<=D7jV{fYx0`)g z6T9to0#80^qyW#6V)#X!uN`X`Wi2`6gS;m5^^-pK(amM4{`8P&=JUl#TO?R#fIDc) zc!q{)e;l5Ri$8e)j zUwo6MB=F%gX(T{fm6Og5&c*EZO@HJSvJ%DE5+-(2$9J4ws7dPiS`rFf`zQ*swl~Wd^AY#)F){#^h#Bxk54pvi`%?K&L>wli8iG+1 z>j1HNhgZDxWC>OqM9MES7vG4x%X$Il_MF4ZdXf-_1GNze`G#kt&r7j0$5`T`K#Wv@d0#{Jv?H^oh{iJlXDcZDwjN==bKt zt$oM(eU7zI2^Dei*-YoxyD7P?7{K}4qb7{@lWLA{T_e(Oj8tAAc9KQneeYV41(uaGGF&8(i+SeIei}VwR#0~tA%gV7z*i5n(L6a zG)Ff-8rD%Yu_7{%avI5BuvbeDB^Weao<9F?((#HJs|v9vh-jJl#X*7!De9_leVx$e zX376=aRPVwmge<=iT|c?igt5cT3iM6V|vi>yjc$P*4lh{(@W~`{y`b%c`;#DE_ZbijV0E z%iyAAbb1yz&!hF4Dg&_7O~8p?)@>DG-@oE|C{l~D9>ByHKPF3OJNVLWjqa*yo|Ze* z!e731Su&wy-Lp&qoWy!6zv)Q~in|@BRY}fs^XDjCi5Zh_TK~6#xp7fP^mHNX8TvFK zXAdr;4cVj7_--kw+N8~qTd^)LeVR4&V@kKTuU;}5VY@B=kR_Nw)q6Qp+Z=rwCwm4^ zA*B-VMQ`4DJkn}65#v=WY7V0bWU0d^`Q1oA+ zF@!~?VZL`N$QeEDXLpuofSD+2+ko3`KaBHvs$-}@#Uu8_Eb6Uu&b~a};4umE+pxAL zV14x68xj4o5+Qi=hOk^Yrth~O_(?DE51Lo%tVi*OQa1e(b!B5jqdoQbgPA_=m$>(g zJ~z}{OZ(T_WFzZKSnhpvNqDstd~TZ(vk1CbSCAd23aCuQKXF~=1A9?FtZve_Z< zMq0X_4<8GEp4^`7aj^r^!$g`a&h_?-Rn6B1XO4TFN_Rz;d~jSLln?OvH1PHj=9~9w z1x2XD_NRrAvihypbV_s|ue2i*;3DUuWegL?l1q2Wa(=jcm$G$K4h?%W{e|InOOuJ9 z!&s4&qgYYtGh+A-wn~KwabeC1YF2j0VnJi4aB_-1;^{p8wp93cCt!b~Rs5Xc`o&8{ zaIU2+t0i(pP5*xUncfEtf}W8KXDZJPW+CkPmy#06?_W8}c>k0Z{rE5MmW z2Z{B|hGdiOH%EA9zk6?|mL|u~00iwIpI@iBr8gZqC8upA;d>aiXKVj{ohCv4uDADk z!M-0YQn~0XQ$|TD#HX{mf+@8|usP500S31vO}JS0c@2M^q;$jE&g=3FrXzU?$KMJ}-@ zjVux#Rtmdza(xt1np@K1@nv=e4R=@ZAe&r3BHFL13*?0@w@l{5-+RBQad(M?I^G(9 z7z$i2Eeh^@6}ki0!zE;4^K6$8)`#^(h4whY5o)F;axO!DRp)}35@Q$J#_J}Lr64ct z>&=IatU zyC;G7*X50pgS(RFm@D!%t|=Gpc=YyiXlBoB@!OUaK?s-cm8|t&xSnc(P+MF(C=2-Z z+j~BL6vWWzsj`tlkA-Q3%X%^dtMs#}7HU`Ptm{H>?>8}XgInhnNd4+S~LLdHy1z%fk(UVE#$l!_6Kg!^&_R)i(m+kv|L(CT z5u@QErzuojU6JWnBu8!j$NGRoBre{a#vW@dUn^!%oinRF&E94f7SKSqH^`w9{aE^N+UVS|@r-k3os@#o+-)&jE=49+>ZdKCpguiuQkJJOQoXnuj zFB0_e3^;Iy`0V)b^1h2pzh=>0fvJxMJ4z_n_%7Qy$G(znWq_GYNKkd`nnv+1qUr7Q zO#8a^zQ5(&q4Vu(4U;NZH?l-#Ds~aDRbw)9bws2g%yb*CaeO3`KN@-y+AG}2cOG0> zoK>Q)Z`A%H)q1rk77oIaxx-g?x92h6;i_a~tW-Ntz)GSMDrL|#;VpjrSZ2Bxa65Zn zK&%&5bYCSp)*pF|fTVJUV^LjkERx8dP`kAkLu(1274GMX<{8Lb-P$6Xv}{?6hm$l3 zZgEY1*n8RGsKx80_M_gV3@Zr-{o=uVtLdySr>`&;&@*$eLT8B}Di==&f(`MuH9Ygm z@OwjcXz;`%$^2MhuF9{Cy`Rtn!MN4lUh5Fmz!!~?ZeFNWC&MI2)^$^OFI;w#_CVp& zwzo>DM%QelfVj7el1LHm&t_2Nt0pi-2AXrOv79{ZCz)|RF4#MD7O%@^%#Cl}xI`Tk z-)WuFAgz&AC=aP1BCv~%!^(+2wF}K{Fw|*p&${7V441B6KK9Bq1UEGKl>NY=@KJH%Uekw1YiM86>={590GGqXTlLzn)TV^5Fk~)8?t7;H_j_bD zWexdlIQq`78m`hZrfufFy5qQm0^XUP`PjYLhWBZzhBAN4kEK&iyg}x%`^I%mF@7Dx zWlNp0;Z*VQriM&-29vLOdaumyf3x3HKu_xx2ZGiJjii?ZC?WK7T4+_n=c8-IjeW<< zvB51&LrV(g8BH$2AZS5h+wpm%=0B-?b6O;ar_-v4GpG(*5s9&3F1Yy`iUtn0FvR>J zpKNBRGS`ExoP)TvHoBj^=GoMs*iiw5Ge9SreszRfmhCuN7B)+dC+nu@7{Q`-23mbShWfcgZ4zhgR-q9>jW06dB%A6w}!;&>-Syy zmY0dMRPk`V;;3B8@1N19bIDxUOF#MtB#&JmtU!EYB2?1xZ=pAEW#Wt7?R`-e!oI?~ zubv;4YG4N9VoFr;>ZaSfH~{ZAJiYMG$YVbmW9Sl7sg&L*-kZrk5&KUZO|n9Xew6V@ z4-%hg(!*Nx-iU=L*@oF#rf8IZIyn*&*TBT}oB>$K;Ev4usi@HfYb&Rr)7a}eek}{% zDFs3Sdr&S_m1k8R&z_k}M)ybDH-^5c_Zgz55J90--Gcwh7X_AMAM+V$iOL5RbG{;^ z6y;xnL|HU?yYBM6Jel0|!z&QNF=v2J@cUGOaTuQ<{Ql5t=FHBioZhz_4yA9>HSzKn zFS0Vpn`9PTZa|Xnzdj7_0f(pyjj8JAKus_c^=?@Dipr5vyP5>I(!Rvel(^OVeAm6& zm;)2Q`NpdrO$o=8k|e!)GR6O=6Sw=-w1tiLJ$}4>MO4UxIo(TbE6J%t2grH0S&$Ba z4vw#MmRa*R_P-jrKx=S?N=0MI~yG7w-vvfI8xwg+w;jkn>Cedw2=0K!W z&&B07zUS}QU;H3L0E@vHpewEC#}Y-TMx3v%&cJ<^XlWl-Rf%ooF`I6Rx;iGwEwt^< z9JMqRqqLu4rIDp92SO(ZWj(hAwm(RYx>B?EQ|Z*=AdK%=WmCjpeA0Yc(FfQyxXsk!{-vR}8y5J9^3}rixTpc6UDI!Jlj+|5zA;?yDP7{+bG~aa z&Fao?ypmoHN$lpwecY9UfSFioo>f}0R@7>$k8AaJxp-iCkv><|hxc7wL3#F@45yM$ zgS_4}DcQ5oikZEr2}|i~y8g)`>sKI$^WvZNxYV=0Ek13JYdqFwnGr(WHm7Z#sc zUp9+s;T-jz7jl&t(^Rg~{UCdf`~( zC(K(FHZl=Z1c6-l5DXsFvD{HZi+)sLB*aZGV(#P-_erVeH2KN<^rD2dIX z6APth^Gcg16!c`Vo(ub>+VIYrldo`*in{%S0h?FDHzV~_i?>L zfCTfn@N<-`whY6WU^fX3>l1Fv?Zr-SHY==d@XoJcJj1(zpmB=9x(T@4zFQ9@3{z#Oo5Ukpc>170i zOTG)9YKgBclJ6qh@#5_?wPDyx3SE z$(we+TJ8J(VPRjW{j*==f{WV-iUYKgWHk(Xmq)f^^8e9u0@+Y_K=>kRx)@TaCJ>uL zy>h}tQW~S(gK?0>apHkN78->7AGoikt}P3jQU%5fcaLH3BIcu+Gd*P#7s+C+ZCftl z7_n&ehnsI+EJ}sm4o2zJradI>TR(5RxODi+vPLDNxenw>8*JrNXQK7CUUfZZl0btj zEKk>fPtz6)*O;zQ#eQ|fyHFt|CH0StxPi)uxA%$$teO*Q*e*P5i zP`^Dw)h)4vZkgAO>`c50Gh~bESBWpVdMWMsHUG`rYY4_2bye8AT5|V0g<$Hvpj@iT zh;0jhZa~mP=0rlj`_JDigG-;K`V(IVg$7JUAeNSZ*YoRLgufF|Z71+>r!xR?UBqQX zJM;P9mII2@}~lZBhD1=386CPy_e$eA_L5P1OO!eBh2s+(uFkrp25oKw>>S^EB^WVv(p zD>i9^iKpyO#3$X9)>Pf79Q~w$;nojvQ30epq^T3n&{o5LGe&Y>`>)sFZ@%HU*cKg} zb4&p~Ci`Igv#yq zj-^bhDJQ`l!*R_w*`nD>gL3cR>o!m>DBq7v(;am}&7G%yd;CHJvOUm+703yVdFz~8 zetTzwU*hMLxup-+82UUFyJ2dWMS2v`uqV-?8!92O_7xjg%SSgJ1COIkFIJ*D-FRuJ zNfTjCf*>4742zD}5Av-jdhxr?Q~GcJHCC^XPh*o}=V4Om3=j3(chpMPa0(@vF3nkzIanlVGg; z{Iz$3j~0Q+@HARKn65Yqgx+W_|~89KD_#XttV?r z!<_8p|9b`|O}57diRcesKOe#Y;o`qI8=u^%^XhG=>t_1fz02ayJeyukCkI+-7ZDh! z*W+-K1;k2He9I4G;_ccfp8vqx{VoQ)u-0l#?$?&lbcsr9nI1DO3+JVH3-4Ow%q0Uc zXdyBWPA;S6hwQFLA=#DX<@k`ug>oFjJKq;NCa6nFN;nK?Hm=iTfrCiOD%cce3vWNF zAwgC<8awARTOeU#tIliD%rn1>gX1KctlU9WWk2+PXpY%khH&!q z*LlJ5W zlu>wzUobOrZGnEFQ|67a2W1~A&Z8A2fAnZ*F-A7$J@Kv9u&fG`Fsd%)vPEwROl*t? zmAU{_4$CUm1M%E_QCBAd^uBSp!vbTW+@ms&9U@{#>b_a0r8YKRtBdA^^WVO%oDgYh z#kbWV`x3#|KEDZ{0CJuIma-EaKo{^ZplvB+GU>GBIF0I;zq+?Dg_K`P$oL!&b@hln zBqF}t7=#l72T))R%F_mv0FmXmQ@ajW1>h)p_D)<)JF?SQp=*?TD zCmkSB&G*jdgQI*RS0pvNP8Fa?f7C|qrt$0lPO*r2l7!-b+ku51&&9c$7^ zytF%uua3DFCiU%)T`Ue5 zYFqksdoB`QB;-S-a1R0yA=^8$2-e?MC9)k=|0TtJ10oEaEcaGd*6$fd=lRv2a8U$k zqi_at5QS|4Dvw|rz)*sGI|2jqA_<*dr7GF_e?Nanx$tT!vw(L4EDP@iR-FMpB0iwG zAj;bw+2 zDA$n{tv!D4`@+ol(^xW{=*jz*yX4kfa#k1O+F|P0;pK+9l$C!Kd@^V>A6lvV?wCu} zL`Tfs&BnOXpQ`Wjs9MC!*=4d1XTgh>s#7KlBizm_aY(UDsyDI#v6OTooQ-XzgKl;D zHGFl4N?CuoHSXe0*T>#8T-_SlV#Hvb`*yYE;SY>&c0J!`s7<>JE94-Db~Tj{WkKem z$ZraZj#o)27}XM;Y1Zl1cm<&h0_zj>Gcific^=VHI~bm#L7v1EgfE~w)VatWLAI<( zu#rvvC;nl*2z` z6c1>ciqZS)(J8(3=t4Vg1u-Lz623LmqDYQhG=5_5FSH%?fH`aPhezK&T1aWN8Awt& zP4|hLX*h32G&V-0Q`zKmN$AST{AO>}J)ajpwPL%!yc>Fx;M%3ADc%zPXA?v)a=QkV zdd3asX{;N0;3^wBvcv7Gd*{_&vS3a^z21dP>DZ8u;!BHs^OD(Ez4~Nor%0+@kBqM9 zZI|L*b#NLK_XBgoN$`;+Q1 z*2G@s^rk^=ClyM1gueg%y)JuX?Hqml6}3nBG{(65WJ9T%jM99Qm>Qk%8?il&pa@_U zIJ)I7I;R&2@tY}0V`=i8V3GZ|Xd4Nti%RM!Tw?8L`Aq)bhDdEQ+1L%E5~GK*W)4K~ zh-J7`_^bYXk7K*#Joj@g|LPJk9uiFMrra{6DpmQ8Qq6K8iBG$&ReX{?c9?D*4)ClS zeYGy!LqveNshUI+Q+*Aqv9d$Gt}iz^ER}q({Jf7;`v?dEAR(vGAO~hKHgfI~(!g zpq6@a5k-+Uc%qtixg2Q){o*XA&oW+Gaul)LU}+nfzNVi3ilP~4X)vLJb8GRgtEsGMeN}`!FDwa}@kET_zso(JPofiKMkHR)$A3*|-%`A52!W2pu%` z3Yc1a+rfU@sD0RT1_)&K4I5I4npPh z@09!ls#pk*6B|kD1hFnK^KnW;CDgAw%|b4(%jjX|ATc#gMoHxFafIkzP^I-F`|}k$ z8s8C%m7Ao3R^)XPcDWvd!A=+|gqW}8FG>zlh&WJD>3v>mTeKMUQ7eGu_s=uH;;m+5 zk~d+o%Pmfx3CqT*o{>k^)AiLJgZIUEiK6EI0_?L7`37JuB4G}F1|C0jP8gMTZe4rn z_^5&GMliuFZlAJrHIPacZcN;ad+3;E@~>8E*iUbWF8Zy#kiI!lYWp2-cY2HDG^T!M z7WKa67CGX>pUAsAT+5^Q+gcCUD9`JSV_&(VA4u=-M$m4ND|<2}t45^c^z_t3t>j9) zW;+G1u5hcFJ^rgCB08yw-Th(&|7Si>8@%fig@jV; zxIO>ptXusmPCB_<#=t(6Y)`w2BSOq8Y9~rz>RY5Q%rzZmMoN;;GRupvf#c!pYU11I zY3!E%X+BjK0>OeK0)$S05L5(|76kz*5*4IK3B5z;5s_XZJ%wHqgb+vwAMbzpU*ziKjIqvKd(Ao5 z7<;dM1$JG$pjNK&gO!z4TJ6ceE0su1CWIbHy|dK@x=Pv1B*8e30PV^J$PO1Bd(ro| zg*rZfoa2Mo#Mi0x7%AXkn-;J8n7rW?=)tl|i6x5)JxiKX^t&a> z{?Jd4W5>xhGhZRSS7hYvm_Y*&$UM(>3lF+H?O;dG*kkb>?w{-7J$P(BniBwsY{T5H zIQAvCnOX_KCLx&eexHh;g){)q5y19E2zi9RY2q3w*Dh|IqX5u4TIH?Ts&F%4-k&&s|nRSk3V z{#Mz9>QT6SUKs_8C~;avQ%vX1K#u_2^18sVupnJ<-i%rB`MW{A&9o(1_KJdCg1_U~ z@nbv6+@Fs|v8rP?PjJltOROVj^v2QZDB=tKW7H?vKP`T9I!l6o1QW^E`4)bB*OIf0 za`!j)2!XU&(51KDfL*uFLmb?+6YD6eH5E^%+f*5rL(w___*$PQypnacgAj4v?dC*> z^g^a#6kDsIeb~|n1p^yFSh@cZ54 za~+=Eo#%|H3+Oq8k8iYCRnH}Nqk5js@W*^F=*>utAFn+IR~rGYuJM)mK{~4uA^g!0 ze3`jAn{ZrXXo^M*=1PXRwe6h8RLYA$-3ZfVA_a%Dh-tVyUW_nvB}HCgPcyGefIHUT z0e{fNvr%(c96-_;-Rl7ibMYn}lHs$8!#w$d+j}*UTL;!$eocBiMgiqklhr*fY7uRE z0X2%13^verIdp75T39drjI@bTYCa{ri2kZn+%B@#0?+-ICNH>UnzW?n; zthng|g1j(Tk#yfDl(5$odjHV^Y*Tkv5`CPUx2!*@kjgCWdjf(Zj!$Px=l>-`xvnSU z*Y^1wAruRfO6*W>-I#>idP(Az@~NKpjF&C{yQX8C$w}R7htTyiyECFu0h4dc6>@{( zTb@}~oo@?=x6wc;L@ebVZybx0u0Uoq9s%BoNT5mP{}FEXx(2bm$d2;whT}*U9*?IF zlVDGD@_&LN=%2=ya3wU83}cghhwihOqJX&x?U^Hh3m>_9RE>9oGtPna=q|Ef@b!lo zWt9W8zM}@i!W}6{f6ut*VH*?e*sD+3EDDkspMy`iUhsW$Yh&Oxq~rj{JhstYPp}m8 zW>a1s!~+WUovv^`-F>sGuP)y3iDpLwd(TQ$sY=g)uqH?GVwTrGe*7aUu$AG(d@5?9 z-uaJNe=%^{b}DV&7l=&YF&2}rF= z6ecaAVt^y8k621U2*9OE_1>YD_%&qV>bcfCYAYLH^djxJps-qOr6Wsy~8bZHri9<^9p@#-=uAxMAP|)3Ak}^($E_?ZQ>IKOauu27Rq| zc;Bx5oaks+HQrPd^xLpVmUw%xTLOv9_=0Z-#~;WP)Tn3V9w_F+;5D^cH)cNPp7->* zVOldS#@Cid!XUr>9JJs=_O&Qcz%e_A{*NiNZ_YnFcnqpX%d~MfAx#%Qjs}ZYI&KkA ze?>|7c+fdBvbj#{!7e_=%ZoK4Js;GSWBjVeFQP#(izbHu3#M3N>DN`~D3-hvF&!+v zVI*%G5w>1pt5eln)55TIa)L8Ik2#swEAq~QeIvLcPDQl&w&?!v2;iBWfzt`R?NoQ| zp!f{6hMAQYDpzFM1RmK$SJdlh2_|A`} z8Sj7V%k$2!ZfUKt4D9Jgfa6NoqM}-l0O#D)y~2pt^T)&wlQeH0+&$G0yRv;+b3ZNV zv~jn8JOS^^5N3K%cw;Zv4zXn5uAK)}X~Q8@kIBA$}Z22|b3P zmPS6@4#FjF1oADu$p@{Iy#sqP^U4bvo<|& zU;l=bi&co$d_e0Go^|8+--ZZa0bSp6kf}oiib6$};zYD^k~{sjSpA=FJfk%lu5bIa z77B|SJVoo7^K#R>jzj)LFQhyoZkCrS7Ur#P!-HlN106u^8`*336ViMYZwS5~y{79w z__D>Mfoguxc)6)zYDB{6f79(B&=-yXryh(pi89nyB}5>AHR@XS^+BF5{t-X9PAeN) z<+6L*74ap{H6vZ<9fZC2O_%egRx@hi3T!6kn1dF&(gODX+VtGrM~CAx>4~7Hw(jZa zwJL#9i#dt<=#|*Ds)0AzGUKX`e%dXE=1xX1nbM7_&a6|hySx*2G&ZWzhK*WCK(lqn zfnI4m`xnK+&`b8ouP#1Io~H2J9I#CJlVG1TmJQ7Fs1-11N?(lA3%Y4PUY%GS7A&w; z3sLdrtahl4*e#j>fg{>9k(ZGJAnqZiQGwmcWKAT-K`rGAEiEX`Qn%xh%!BOvBe?R- zGvWf}$AERyzfr*VDX4e4&fnEj^5J=bu`@0y`bGTH0=LmKH9G3N5dGIZ(taVNfz0Y< znaa%G3}UGUfb4&viZQ0ANO=mu$({I}D3n;=hACia9cS%Yiwr`AZWT`b&)Q&ISIf1= zY(idXI7B}9hUkk2@Mll`az18<;ROj8x~yzhgam7#VW4vj$c<%Q36+P*4ksUtvC{{+^OPXMO-uUTbpyM4V;JZxB8clkb; zfipAK{8CZ`@nmQez=zv(fOU(z{TDMj-c7sC5IvOe{FfPO$6) z)jWF}T7)|8S3jbtI^N(Cvm&=(5jA|Wuc+bdTj~R4MBmzM!QUNNbc>k7BO>;lnryQ2 zQ+_L9MptD&nB!j>%3m2}?_6HWAl@&M#zw2zS&6m`{)Zbu|Jx}QS=Fnx=s*<1ak3fx z8jW?pZ(xck_{ipjC*LM! zOTE+!>&#;y*7Lsw0D{nRv~`Drw~cR&Io!_c0QUFpRVu+Eh)ihK7YG z%_F>P;`e>UJ_z~Kw>{8_)jDf^Cp34Ve8pa$%`UVF#n;CZgGtc&nkQH z$zf~Bf1)o(&CvwYI?uESEW*YpzG$d%cz8~^hH~rM*v;S1vM$69j1sU^Scm8@(ui)e z{N#t!O1takyuabh$|=2~f{_3{b@xD}_1;BuJ8##QTtmg52?PQk`kwEK&A6c1H~5>| zg-w0M=CB2?7#U$}-E+!D50GEv@LevWH_gMmW4PrFOsyZRqT0TA_j!Vp*C;ry)YaNY zrxK#aE$aw;Pbc+CLCWqOus?fzK}P^L>u_p^ev8GVf0u=?NO6+Kg$uQ>dz07~>{G@X z;r^t+(r*jtpkLHKf|}E}`@yCMW0VOA4Skv|zC)zb@ni+8Y--M~B>lxUQS?WgM|Qs0 zYr9#FW4k3eDBxv^H%A%RoUN%g=5Y8ga=Yx8@Y+cIGL(GzSTc~c4&U z@`<*5Rpit1tWzmxHc$~T+m)8{bdfo;rf~sWdu&7C(zPYl#<%3g>*!_{KV|QA1fdwj zKO7jcYwq7RY!4NUYk!vPsb5D}Y7S=oZ_4U4-1$jE;=fJ_{?YN(ZUQbe=1v=tF}GF908zMy8Bjw_3X8}>M*qowKucV zh;~hUo<-preKf=SHSvFYYL$kYEQ+7btj$d&srpP#-IKHnuN(O6b3a7;EKZOzhEu1@<{Q_BfrGi|`g`dbR9`qHF_1(S5RAQtp*H3hhnA35$&b*Bhl$j{w!O zkr~3-0$$H&^fC77g8Sq18OJ^Z@j#)3NE!c;Q?k(Bu4vGfo-8ZQ5x+|-b-n+(g$Fq% z;{EAgaoPc>MCgtYcg?NaIO1^CvSDh)Ad1DwO<~Qo&Q*06!k~d_qt9J0FLZC--<-`X zr*rJ1+i6gxw}GesLv#gdIZd{VA7j0^9Q**`pSbFldei6iYsV!I*X<*KUJ*GW<_Qa# zTyXdAkG$O@K|4px89l<%L@U}MrS(~U}zK(6CyFRLz+zH<_^-m~*ILSY z7!p&s?VkgoLK|Y0JSy}===S2c*y_zAKnw3k#^Lp205cp1N{*#nd`d!KbIRdGAu*dxFE;YyKmqxpq=XoFS4@+FS|rO@9X!5l{@ z6)_hQ9dZ5|LY53gam=VC{_q~QHRebJErVEJ)`oP?61O;4L5k6v;^tn?=_wP|Li*W0 zDo-EB(G)K-c;fdx3N7jnHIQv!&eUF-8{MivHSAejN7)4-p;MD;OaB&IlHB+upG-}~ z((`Fn$8mp#i<;3-5yg4N#q}SA1I^w{8bzOPt0@pI1A}}W%U%Ary^hjfDDk(-!Oy#? zq@ECpf3MFAcDcA$zCPY{$4V@DcnO2JgLf{cj1JnF2(_deTRF91E{|+X*;AU103J5O zH1N!qm<8|exxkvOw}Cz8O%3Vx5UNG%S3_JR2pYyh*+S8}!;ytuA<^?kw zs#5f^^n9@m_q16}GMti1Wvlhr+;}rn-w`IVaLk|wMl{GqC8^u0eOB9Ew$6opf3f!1 zTFh9ff$1_vUFK@3B*XI24aL@}?b4@@%k(x zv1@iCTdrY6LGhcJ@_zcE{~%GWpMUQB9Q)L~;;(lA&CiQjsaKSUvT0WdN=VJLKXC29 z*2=y`7@SmbggdNzE?(wr{;6Eh&*P){6H*InRRSBj!<>kR0`6(1Nt@lPI)P8G ze0*GXDe*Su4Bd&6+>Ml_#B1AwfTJbe=`}j`t(NDIy1{#x5(rUj_T*uLt^qOg{S&jO z!P3qcu;RZ9Vy+`<|C*GtoIMsfR2)~srksaKT(#_G9EZvH>Vc(N8hA|c*ku~HSqtES zFY2Nnt}+q%>|(U8UO7W)j`jMhh$3br=fhN7;|Yu!R4rJmn7OE`aP=_^K-BEANP zlB2WxWbkheEi=VC(TCpX{+44H-;CIGfN@6v-c?^0wBw)xM#A1-@%GY`P`6&ufo=BI zAQK5WuLb$*u?Yk+FH?^IuN8LfxMl6fH=aW;__c$pg%(Xj6!!n~D@+W{;@RDZDCg}& zvmt==zWf!C6a~hV{AY(#sGecYS45UaivI;GNs(W_(k5X+@@m4W@4weo*Cox8)VY!_ zPqxz9FnQqTz)7V}k+kkZ9-Lj6f_FD5(B#pBny1^vKK>v4yOHU?y7bP=SZaH5bRqm1 zx1R!I9L3SMn`%d0+_uJ_BwigYe_p)Laie}dyW^Wo-Q1K>2W^fY?5T$w=uoj+RS40& zQPj@woZ%$0|CVq2aAQd_vaM%8{s25c!@sZ!q)pE;q!Y=!yzMk?g_P_Zg`_F>vf`^B zbIx7#TB=1Pg)TNt5tQP*tAMeg=A(*^1bd@e*`#0|5Ek;t+HykKSv)t?9zwBzh$?k* zV$QDY2?RUJmFr6#*p@NwD5XlZinAW_iffCBw9$JQiu6VTIO^+YlZje(rVeN*zfZll zQww)hP%k;6X>!0-5t>Zt(@ z(<3M1r)tGq@kaoRHA3o*m!lXuO-}{ST&z&z6b@jlc;&YDaDIXn6xkyB#7Sl34=VJL zh2dYziMXBD$8`U2d>&1MQR1D-FQ(pl#@EA^oz2A0rtCwH0H=59q^-wv;rvNQ6^*}} z5<*DNS6^CUruMB@A87FtD68}NPm&|J7WTi;aY&Phz*843A$NTL|H0+|`$?!VydmOB z1lT*pl$w2Q#KsXIQG{iu`_ykwdu%>Qd_$@fr+YqF48L>ilTOKwW6QBGd4-Mpsvj9N zdL97fS=G$0HD8m0S?vzd9?AN4%pZHSMG0IOS)Y0ZLWD$W7e#PzjxzqyPSTwz?4%>W zI+lbHaYSfPPoql_x=~W~jaArSXuXbhjZgk{GsM@cOBpoYzcF2tz;5t_5iVP9TvvT^ zWVs>7b_MG_nlbAOxceZ_N>Yf+N2~u<7Xr*+r$>bG054|A2H;3PcDPF?MgTw*E94T*OZ$cIrgSZT}t5X zjaL%ZEgTRJ4;{N^5Vro$*)aEqo5u^f9L<*wp-w$anrojGr5eTR-gZ9IIQA^^>Gp;y z$>cvY4-HwZ>&yqWq<8=db0V*4qCu*CNn9ujL>_5pEC&r`{Y`vHz2I`Z(yU3nrutG zo9cMAfpWN;AH5UyQ4vjwJMn#SPP3n&HIa0)F;8zTL-VKUA)bi!hx|C)c?Vcl`- zoSXqfA+D@ZXmi~Xm#L!~Nb|A2(bYi{^ykViSVfb82hAb6)@=tU=7pTD48#0DXa7RD z;rMnRvrsbGzUEFmkC1r(%{MyuN$_c~Com2Vt`>~;RNE4cfWk#KwdT!=gb+pHx9?gc z;5d_nPDwW=?_m12;%w&+@SO>cq-!sq)HQv4Bj@ZU?~BW)yK`Okkwim)j+z# zMDC=1R#x)s1N?d|^8%W6)|sGZL4%AiA!IrAQ8ja0HmSU@JmZb-P@Y?4d<(SiPvv#E zHgY%^X}sA+Sbgphrddf);zgVuLvk~(WOx~Rsk>n7PjMIjURU4tPaNAsijHnJ84$VU zmxG^Biq+qX4Jzukk_(y8@5e0ufhj~WYFpF0&U^Zu*Z8Wn2`QG`_u$4Ez5B{0m@^c? zccK=x3Ct0$NTJJRMujx;i55ZSj6XTMv7tfrd%|94pGEjTf~bbhz1!_Y@xXaj=bkh@ z_0H>wR-TCHUCG#nr#jsCmHksBD+X-Pd3->t=3f0MmF<68R(|g0?sq*?aS-qZ;#W~N z0m+}r&ar&Ew0O1aiIwfTwz+_rSMk8&3xbo+e|fW4Rt6W+TRh`kUwO!3gnF(jZ2zif z2l#+R3d2Y?-Zs*I6gXdG<@aTS^OqcIve)Mq9Jo;&jz)^*t`}}xasQxh@!UuYGYsQ^ zYup|}=r~^t^@@LHhs){|LZ_7=zEB{9BS7@7#c3OlG<8q>`Ky7?_a{3>5~uM6t1a?P z<%7GN1zS>lf2T<5O6_GrY`_$xM)%*z&#RQ2Xm8yHuzGl@No0U~eQ#kDBZTg3FtYPS zD zz}=0!k+YID6&Gx0jLszLe^|Kfw0`yoplf}Cb=~21&AyxH$D|qXz;Ip_)zyiA_=er z=7#bdi%+z7BImEsgfls`JY6-rLnR3RAlD!hb9Tnm3j3>f zZVNj_ZaG#T3m`qiiSd%DH$ALeTJCMSsRhgOg+O|Rmj`(6TgJJvGxV84_!a=dW~@nt zWG3lUv{I>ReQuMx{B^hAS@zYl{Jn5j`y;^H2)o2Js79)vdKMq#c#X8#SYB-H!tUpt;(i8MahY7$tDi#kG+Rq%v}Us?WL+b zG%I>%_44i+`>Uem(`0P3U(L4s!-W)^z;5VZiyCVn7|qUnGHK^9v8u2j_1*4?{O7=# z#9M9RXG%pJPOP&1yEAA1c;u7INn-8o-wHY^V=eql7pSqks*M*3zF8{CRjORy560}b zV#ZLD`Hpz3D=a3|I?~#9982V<8oqW_rP&%3`$)fK@Huo8_C`;3<~=?iqKhZjw!>m3 zV-gYmxyv#_>|djYV}S{F9S3eOK@*~8>MY~oXrQl`C;pQ7 zP-{JxZ`Hr#*8bBzYVl!0PpU^;2U?^ki)p1chp84KOfz*)t9ZHR7kzGM{-btVsKqhv zu-XqGZA!1zCA7<^(zG8(fV13H#R^I%i~`S{EM0oAv7Pn8&p-PW)$#Brf(vCf)TFaC zu@Z!(WZ3t3{V?vA;w9fe2ai!0JXmS=A)luTK7J9L_uJc~AmGLX(K-cQSX-STt z-i^E3n0G*mSwt-BTys-d#jw-3*VwznFq2dRA8mDZ$rWoB`*HP1A}>QTs*AJbt0Qj@ zkw2;CJ+*rJAy79PEJ7QI2FcK?Noz`cYM3`8k83Ha?&=s{VuF2 z=hn77Wd9)Z;bAp_s)maU&?>Ep;O&X4Q~TnBn?IJdzc*7gA7w`ZC~_onTlGlA&yp3) zV)#XRp(*%u%Xj1q_H-5SUG~{Qq!?V0HTSq_XfbgKGNwDIddM+;qcvR`eDxB*cnuFo zj-|7+I3%gP`t(AolGzYKAy9fL3UMJ%|J%x=-#`Um(DM&RU z$-b=)^OCd~Qc?{+tx-R^gXJ|7`O#2x>Yvo(BY=%I?~P4eu3A%iD8nq1$KkAtr>pK_ z%ZNfNj{Ww7$mWL1C8#w#wzR5tJv{xG!D{Fo#KQ<8CK1U)&#|l?cB0zESPpHLx@?mK z2h|^{JGaN2j7NJnIj>nv0$FE?vKzdF61fMIO$;oLUTIik=VfGq{g6Xxx=272tAFr) z!;RE;n+zWnT%@#gO3l+le#2a#(KM<&-{2}mBU)XH7BcCI#_DfgoAne^D(3Wd_! zf8Q%BH&9BVxc+M+kQ47M$tHr%YWyZwYAZ7XC|2UeQX?}F9}7vmbZKn2T!P$RjLZ=JfDvn9}LVp6wZ^#$^$;&xU_NrZ;=R1%MY>)=Lr}8c>~(cd2D7gFPV3 z&)JhvS5EdwCC*(H+Dh)0TaK7?rMb~xlQC!3vcc%i)E1TD9W6_>vkETHYYh7Twmo6v z@U8Z_aWhd9lgX4V_Q*a-MWRdGOVpZKncDVKzhm5u9-g_hyD@4#ZTUmwG1*i{+Iev_ zD>HKj9kPZlN5>$~)4%_3K%iiY;@T`9HGuYUdRpoUZ*V@Y-j6SrNBFaE(z$|_{j(SiWZPjk0zrMpQruz${~hJnNv|q%pZB}*od~e zM+k2fGfl`_Z;%(MMyQ=Bwd&e2nN*vN`NaL0kilefRLpy-gr)*wu5h!Q3{xBaMV#)M5^3`2l5xPcu!)Q>dnTuzyXov3!rR#TNr``|j zRiZpIHnA?pv`SEl4B&m=a-F&gwS<$%_XQjUDr=QZPFylCh}yf5_4Z`Vjjv?cToaJl zmFD?Pnl6~dVM$rEh(TYhvV#cG6XzhKKWfaAr_Q%Y&LqOc_PWBs3{kjqN46lH{ijj~ zT6kh&1%FOsQo7}~c<&$Q`NDPOuMq;ubGGy}S{%JMhiOe!OfKyCW-gYx`rSg^VMUQA zg6lAXgK?V7;;^C!cBi(8lvU9MLvmIQBtCm7mh3RbWJ1*cYa)SsCbVR;=Eu+HgYG7) zVFQrPOmC{eW<7bsV#9g_vQhs*KIxa8q@IDFdd0rA>D#o{DgKKOxjN79!Q|}?^EMKhZyYe1R zZmx1K3jdI*7*pVW;O}&AKIXxFpWJu?1+Hd9yF>3OK=#d5L86(~?p|#6?#Zcqjz*u; zg-tb`maRVfMh={mfYNlx-9<_p1`GjcM%VZc0+@#mwtv?qQRrWw8Yjv3q2TL~p4DQMz*3Wcw>-PBii(uT&NcwjVo4#+ua_^DXU1b!^rf!K4a{y(zqmx0V_4bkYnI7 zOeE_p6#Jj&B+jN`RM&IJ0h(6!OQxbR(d5DPwkz=}8_$ioLc2rN5L*mq#5H;fhU`~pVv<10$SJH4*bU7&vCNXErZ$(l2i<%(JPD1yDHia&z70le zz)Sm5JGwt2jvN2CXIA%miRulEV4A!C{66E(ex`rIl%YyIIaYO$aK7hzN8v4e&n0Qwb7Z*YC9?3c(fG%z?-`Y# z#AFtSt88qG3R8<}h#~Y|$_AWG(6|S5u5AeLmrbv}&9Q)zzQr!otbe~+<71C=fbC4v=P|z!<%$L4eI7V~V@n>yJ&?;38EesoW7?3XMw@OHPMDug zCnkstUmcX(G{}DVwaN)eBLvUC;@JH;y0rLaB7pUAAN`#f*fa)Goq!j01tr5XW;x4! zeVygwCDVgXIRDaO6AQ%D>OzSTF%i|)>k}k&Y=cBp4*kA^+A!O9oBlpph~|E5Hg4*5 z;umN-6&GD4Zgi}Uu7wD_!6rS`kG;Aq`D9Lo(ev+r8GN)$iR+zu1A3Gt_5s?>k~2Xb z0r;3sfke>=rS==2G7dz!=Uyhj$?S9^@o;uMIg#>)`rH?pL%f4K3Nl9k16Z}OGc*W* z-U|KCa*FQP|L>toLU4!3k`$qQ!(Iw4R=lyZFF*8D^7+~4ugVTYFz(d$F-1WbI%}T0 zj=y7lKJc1k6+MQM|8N+@jU%sxtwmIDlJomK0n@qR<9hqzDvl$JD+u55K+FVNrwAk( z@t;!>JY()*qKTSTmD?^*d8T{FgDuBPzV~Bf@;@FewFNdBoSs6((4JA*QMxMJUHHf< zoevFFH){`a5@wxwZx5&qBY(|mRaYHm>KYKx=hyZeMawf5)N}-EVgkAstWxx!y?Gq1 zXVLq{NNTAj9wVxf{j*_kN6(G~>_ELg0#p1Ka84Mr2mdb|9=BJ)iB4;|>ft*t) z4hfsT0+VBZd3)&_*naqDNm(K6rK5z<<1)i0tde%T(A)H9dh9Fq`JKEm+9{h+8t+P8 z8deQ&p5&4K6cTIPe`^gzEd`OuDZ?|W=ob(b-E!wA#L+;M*s=!xT>BBgwWhXP)~tnQ$itH?-vf71stn{}euAMD<$CO?zOLYw`8!dBwr*d-G(#vw2=egYf4O z9wj=&n1pY`icQv-l?dKVgqClfkzysZW-%=FecFo{_7p!Y@zWufta~FU76Y-zIJr}v z>)kn3Synx)B$akQ<6*hlSjQ!<;!ea$rKCH-o4h5m3R1VAULaxD8>L!ghCFksv3T>9 zvC@S($#S9Xp?c~2COAu+bL_;VcGhsheE1lH--3Hb7f=h3yZjwf-3B%5sFuAnV+$n{=h*wCYnWi5PJ( zu)PW8m^xrisY&zwIt`DW>*P#rv@%hT-lAtMQA!)z=Bn8fF-*B*n(F^SGD}dom#7@Q zYWGs({57p9EC%@CreO?3&JL)L?1EIfzH7N)5K`bV`Szvw9Y8OXYtfRg8~F-lN<9K3 zf~%m2FzVlPVvztz7BvBJ|yewax1T7G5?vjy?fT?xRAG!p9AGN~V!7rxs+3(hEOyc@qPT4yZ}(2alg z&yk%_B0zoutHSxxEIH#rAu}8MRuTN%uAL3JX&K272ZujX+3qRnb4P$NGa{DH5$^ct zB6JV+rx-hkZ-P_JrP7yKI`}37^7|6pySy>o+tQ!pxGtFc4SU7|_zlUe008?lxs>|a zs@jhwn+o3Y!noh-e%~{FF{_hJKiA|8>wmGuZdQR$cSQWK>kBB+O?syFX~`WlmvDFW zYKf`YcirU97NO?h(!2HlO8zdqfPA)g`pPt>o~mtE&^L;-8M{3EBgN57y3UtVUHcQe zFiyBDxEy|>v-S5-bR6R?GiL;4>jCGrs5Ue%LDXd~K07PO3y7D8L#YxFr!{~0? zs}-xyixd6)!sTkH*tp$vdDRWs&WzG;CGM%dAwd!W>+M5ldmeKkEt4!H@*3il*lcW> zHI$U;31Y+OHvCHWrq$CD=0>{J^AKB5^*NfKZswD^7D_-l4jOzpIwGCD+QZ|aYDQvm z0J^d6Lu7qu@^JHc7~t;=*I|ZMkh+R&UnO25QQ{%yx5*KJV`0eRGsacXPGac@aPkM$WJp(%s&8D`P&=f1o8%>}pgQveHgouS zi|dw;2G^^Qlh0o7iqExU`00@}&%;WjNFN#YE<>PPBE<(263i7%(~%4Q^+Dxd(&OxO z$xE~=EzTpG-l}#lqbE%y<7>!euaphJ7PfYTK;eY0(P0b8zz`wzt&#xTIZWZ(vTd)* ze0m%;u6>RNOZWzorhXgtLWB`r@QW>PCJk?Ngo$be4u}P^pL9+%^4LR7$dhkacwKj81{1L|sD6$f3NmK4ogn19309=os3=m-jZ`}Nmr^jFDOEi>RR zhS_|z74>ssnJ>D>pWipCwT-ZO7w)jk076+4z#8iq1RG`R9vwTh>G|&{G5OhO-4xV@^f7)7!wZzTSDAM!$9~i#D8jsQ3`b0z zuK@BDvb<(mr?Rz#nE4i`?PjKPbboyI$rr*6H$vy$A+KO53h3y~>c%w;?_X@@skf-l zmd)W7gFD5mkK-y0Mml=rfZrgMF-(4yV;aUWFEEU-Bdl|Ds0{@h?bZKLtuq+ynoS~a z?xQ5S*}+}?CYy5es0j^XF0gtax<$(40Ug$9Epemz*j|}c4&~VF6l6RVz4;5<{#ESi zNoV#_xjv>G!+H&U3LzUvtQ+@w)S;dBSup^&|82H4;V>~2SgKbv3MQmuDGzwhAbYVq zAZ4S{sPZwj4J~l_ddiFKEtwOyBo$Sv5FN==YL6fJHW~(A?nOTOdj#-k*087I*KZRb z+;nt@_R_0eixd6luaTT&&v;|7)-t>(`Kms z*BK#Mp3^2$AMW3bol9x%57Y4)-Fx3;_KnGX7^&-WEH_}%kHtt*pDKIx*mp~>=i8{= zZ=iawSbw$rb)^JT7JXUB5`PeYs-l@F9Ig8Di z2BYs1fN#JRL4`$1IJrj5d%;Q7)P}$)vbl725>_Kk1o!4g4Z(Z4p548z@5gtQFgLpF+aCu-8-KE2ns#2&6{%0>KYCt8EtO35ik+dlb71oc8O9_A3gF{i~>!r zKXy!wOi2A;OP4e@hR-TUVEexB9Ci(&%XFtIEOkS~O3T9$QVlJWFXe64y-%~#dF0~G z3JNzi^Tg}lpOi?~U|#Gc8-B!m@#`fCvYx-x+dZ{=)^S( zm%N{e$7Gk-wUfSVqwDe4=c)ZFtvi?^A|1!jWetFNn6f$a;8tyR6b7RZOi%r1 z9jx-6qFm0eX>hXaB*3`a2O3MikcaFCfewFqtHFfbHL`^%ausSVD6c@NU-8z9yfXTp zzoZCD?1|9P#X;izYcoa^ka;EbZ5oX<&H`5(O-yaQ-pw7=6?2hr$zI8EYJ4W_f~g5O z0>l8%?trIyJ8O_!^soZNeTuQAdZxR(@AZ-juZNpcj~lOlY4soYZL)?AIQ$;*92T7o zI4lNn(^0o6**|z+F&~~-wY|qFXFSYZ{~)m~I{16Gq1KO|e=(k=NULS--GL~WDD1yz zVeW8Vh6=JH7*YdytF~d*QJWF|Wik5a_Eg{XB2#+;K%227geg4&5Pm?)V>-|hO!gM~ zYsyGFt%Y|aKqoJH$Dxx}t88p@l_TExQc@kxd`6qRFh`d`ZwTigJLanLGD%9pD`}JY zQ4TNc{(7c`p+2qq)c+S-!^7=r*_$>qT`(G7t!F_3GB4mdumG&{2GnM>+LAZE_*Ggj z_jd1;o5aN0ROA#YR@LjoIJqj3|o zpef7u_D$6FtxXnI|1YLtOGqClHwf?7)&#WAx zZC?1cVXl=o4L6yvrxnQbw6-@;jL3BBAqd6VVq)$VU7T?@T~|(QkRD-Q5%Zwt>5JLE z#S?Y~1GDTHPwSq9Xiuj!$y!Wvc=&a1)lsRk;4uZzP19bs6C`xHBN+ zvEhB--f0*N@*1N$~=PX~Ge`#~YHi^FVq^@fF#i){0)Tctj^mOBaJ1XmP9e*lp=~?&WMmkM7bhoKLTfGML6@zD zbit&#Gt;({@TtdjO+f(lZkVi=)&O`(wg%eWauso%%G)uQsBMpwZphdq&Gn>SvsuV} zOZ*UjP$(X8Fq$)JIeoy%;YS4hLPZBW+I` zkm)H;dNK7z+j_N@$-mZ)dqjUkiLecF=PCTwC7L|=nG}a%K(u6MTg>U~j7uJ1AQ7AN zn>2}Emy%=Ux((=9p7gyuX{7dIU%dl)x$=OIaOr zl)G11n)F5+$oZL&@lf3pPW**`UwXs)wW%ZdYG!0G^MYtQgj3f*FMd*C=waub7ygan zm46SRsI{`@)O_p8lv3oQnjD?LTHwbYZ-}J}Hj|+I0{*?tZ;TUgSjZIDve+*7UW94S zSOft*$z3>i;hyQXzB-)wv!$B-8_#)=1a@S;qI*{|SpV->*j;GYj|^ekvsM+wF(*Y1 zl4(hYSyiy;IS#3&>O{j&_xS9~HTBvsY3d>WN7lK=GyVQ?f2C3pm4uusO68RE*-~F5 zF*-QLDlshQ(=c0+^I;*B(~?tiSYpn$97j$$&Y5ivIgHI=#)jMP{`0>7*ngjGpU3;~ zx}LAkc3tl$;%oiFDxSm6ebxBc4185#l=93)0!hdHY0=Wo=^pN~F_@5nPxijn-bf*v z--GOwOo#j)QM34Ea-$c0_d^=zN1sf-UPX0w2($_LGT0B9V4?I-xGP?e#^Y_E&=$l= z-F?O2J!^Awe!@@v)61714UicAzWbSW*19c4QqH;L;I@s-MdHYhj)~|+ot1(i-+F^~ zqI7n{bCti;DZ};p9sVIhh1e7Sq4mHokGfb<^yP@Qo`i$*;FxWK!9#ZOJhPI^>JTtb z3SnY=_T$)3#lzX4?^b%AC#rwmGU(&vJ|iC0!G@;sgR*WcK!x(Y>`jnRW0Yp`O33PF zP7~SIT5fe~>=59~AHx?;m=?)qJ7Et*|F@wLaf+GN_GG*|-2KXA3!2Fa`SY8hL9WM) z)-35t?nmBCA0bbh7@B5ur;p8n)#t0`4SWcqupNvs^Nfq~UP^1}FSVMe_nGHfw<)^A zWU|Iosn6fsTlpK>6>Z`)cf+PbKmwTCW355Wr$FKhJK4{zeB zLab9TL&jRH1+6berlGc^Fv(cQRQWi$zjGE+hrSLvWR!@afc2((XU&vi2h{8?X32Zj&&7l+X)DcvKBO$-dWt zpLil86Z7H0+nHNBhNJ_1cs_-fspimXe*w$-4=3}%KwYMa;F>+twnvox-+m4u`U#H> zSQqFyhh$^Dr;dRVdZ6n0caTTN=fR?LyjjTEJaJKNwWGUd#5NGMWtG#eK<}6D4&1iz z=SW7Cfd=`f5G@we5<~}BxDp#lJ?_R|=1&Po?e~2fe32*EL8rJ2__lAf&tgBm!Le{D zD521?*s$oqVw=j(mo=S&TJIJUCWH5a<=Gb{%#tk{m?>Wg-RY4L?oas7)P5;nnhAxi z+oioIDy`I5hI76{wBoA^*pXEhvZeiZ;XCr4bkQeaI_0~84Zq=r%6aB5d z@W4f!bVv7H4PV>V*GZOBjdK2^mDlMEU)wFi;UEvThz}j`qhwqxvR?hh>pLLe3k%EG zqqviKqs4B}s`3k4@?nS>>Q8Ll!^BkeS7Dip)dMxqb>>xcd$FC0JD*X4(dh*pmbK0S zLwW&(!v8{{fKFMKt4E%4EkBRl_Qd7-es|%1+COO6$?#6sAuN|h&_Tp@u|ux-^fW;# z9~NQ6_PLxZrKmFddDc6yCnWxeIp37qfqo;;_zgw)FfiPDXTCJGobUERgEKbT;7`Ay zD_lK0f}}%rv3tk<=Vog`BFH8k953`EN>SM7MrM4|=pO(V`YWLt6tow$q!lQpW75C7 zUFgEMLZnUDG!KH5LzVv%a&l+~tU*T*0x-@t@QDL0n7u66xM4tkp|<+VwVL~-l5b&@ zGG2U6G5V)i?bm_x{o`SK1hGx`v^k6H5EEjzDq^OMKgzZpG*DsA5w&+35^UZ)!*R~!ElZuOg4${kP{`_1b*`Ed!dXm#6>AqyCP3*_43y|`lD zQmdk_qME)v0Zp>!=wL^JHL;LDS-XuW#b>FOpjFVT@jJejst(Tey+Lo)XB476`$prTK#g;3? z=5wa32gEHql4ph^6j-WOHsP#3|+&1ahz z%=kqY(_NFM2QXw00io5Hs0MS0RBP$eBPy;)%q=I5Yd86E`OLilAV3-K%sr3&({R`` z{Dzp)Jx0eztj^&YB1W|G1yeOHI@^_ZSU%Ac2^vxV;rD&SJIP(X`T_hz5$lGj=>Rx- z9$cjsfknrOX%EY6X`gX>+nt0{ds7a)!y@{zbYTi|c!+S1cpD@4?VfMJhH$20{0~p0 zh*Jgp0n3c7HMow!$oj=ouP6$xu4Wrat}juKeBvOox)^GIqOpIgtBQt6Mu2i_x`m{T#(om%`XjL*V7lmW;Dk+!8ns&h+GI!MG^nGX6UjK{}cJ zOWxhtkTE@L!rEwDnWs{mFXzu6KpF@?mP{&))#YZ!6701G9U49@m%5|0++%K>Ky@cG ziSjHN_)G9bwOHl8vlG)xxN`$=*^nE=6bWSOfEVBEz}m$Hb&ij zWy#IJZ`1lheS?d+Vk-hwsLKsRF^?08*mnRC%2i7GUfgpbQ&dG<2^EUgh)fT+50oxm z4axUn=^%O;b(Z5f*m7*b^eMDLwHc@OLJew+z*wSzs3+<7SALHVm(_ZZf}d2SzfhPo zI@b`RKKU=xPsIBqoaYdLwM^K?DE3s2&KZY(|5;)vBn9AMZ%A)W$JGy;jRTAatk zfCsge@>X_Ke{6PoUew5Q2i^DP75dFCrfhPHc;01tf{FLS7^Od)ueZ}=?md2U$3N7-il)RaUNiwQHvSTwBOf(97b0c)Z3`X( z&hFt4xFSp88g!|5zWc__0#_c7r}T`e#k-&~9YRCef!C!sY@a8?S51AgrHiE)us?U) zwQ>3jPqHr;$~gKgZ?fRd!R=Hz+IK;Z>Eob7fK3jale&_-tao{!eXsZK*YlE-){$@q zTY4@vZN5PH^DB1o_(4xz|2)!VL>H6HnCs7;#Efm<@7CO{)G22pa{>4XYPi5fMrbP)x>vOMM)bEGyIo5I3A-h!-jvyJ=%c6uJ}!np=&V)(?9hUo`aj~ zcP-6p220Cs*3{J1e7W0v|4ovqy2c`^6kc2i8$TGjvtIx%SWDRxI%2gB=H@J#$J)A+ zV(r#?cg-ms25)=NtF#Pl>ABS)BkFAUg`vZJ!a%{i=h0c@6H+i$C;@)Keow_*4D6tP;MWDK1;9Sh|llXVaN1vh@ ztiO;q^ZMd(%{O9zr6Ip+UNAz=*V$X^r z?!Pf@)Vi|QM*^}h%QGUGH)iAYeDRUG{OQ8&5Y61BCo=zd^;lKUuKNF>gH_<1%q%h} zVTSeu$;)hMv)Fi0;yTV2uyigLr2Xl*duektm^k)k7k;<2{nPF@_IlAKjP1~Buo)@M z?q5XGp4`f<+sERrKF(dx%!~2X3bVidP9K|6RqZJ~f%mA)u-?bOLzKC*sUkLhpE8?k5&vHPwB@ zK%|7NKgtNP72=WZyQh`790KYa2G(-x!as6HTAT<8vRp!=5Wr>e^9WIxN1LWva~6;^ zHK(?Md9fUnS{^=}@K@-f)VQ_CJI{b%ZzCY!pmPKvn#PEt*)S`*z&yI80Q|J+jC8l% z7(u<=CuaXDvj-|x{e!tCE@2EjUoZ@BynYVpIuE$^0+1Qtz?%0F1@tbm}3%kvClTrY);@{qi`|0L0aE zQ;uv!hVI^*+s`tK;1p`%2Hab~96_P8c0ex7=Qoa%M$KxB&&J+(zbPxQSQF7La^LYS z@0Xvg2@TwgUKNaF(wd2iixqn)`;VGin`JVQUo}}oGo z!^?Q*@oRCBBQBg z-?vpUXa7mAmk`c@BG?_^)(UD}=J8~9OS*XqIs3Oyz-4Kfp5`hm8q~p%DA8|lfp==6 zf(Zf<%GoQrKCHD6Z=^2tYd=+4!*@*o_vD;AHxF3%^N*K4iWBV{^)jwF2gv($mb4yo zhE~k@P|XbZ4y&*LbI-ta2C0=(4<6$Ztf_wW&Zb^xq8wku&qiDoU5OCXU{afs*%G6FdJ9moB@L6itr`{Nm;zHrM{wJSdpWv^l1 zU=cj|t9VxHaGD!})5>Z}m#_98Xb^?aM>H!cXuTGSAV&%ntz{FeYd-W&rtn zI?=YDI`3#1H&=Y?gm>geJGZ{E)Y`dWI_)tqpU{1_BQj~l7=R9$q}vMhrMlOPcd4`z+K zim6YeZRg|j-c^2mdsXCkqp7D>07fODuXiZ7+N7lWz)Gt2=CAPQsssOA1iin78Fam` zUSnL^mbo8(V7Ia*K|s??!5@(2i!GRw$mY3`25Yrww%c2|5!th+^Qs5WQ=4m@g!_8f zI!!C>a7)r5U=>TNZ$AW70cat_*4xTpjvjR@mDnkr)Bw)4oH#ygtXHZ!NAi-*`C|QL zR60q#fg0zt^3;ZpQPbOUZR+<#CkEf}zXuFav{f+eiH_RrOaxs2d*`bU!ko@Z%e9AWP}IVK5ohl4YVvl!0*O?aj7Mrs!1`{Yi*!nZ>7uy*yiN!QOLdfx5O z<3ttOe0lU|wphPjf?{XcT$hR_1>!4}>nEHS%w;_Mc)G(-^@)SixbH_*VU1|3lc!3| zg2Y`nSE37+rv)n2EG)#V0)|c-yw=b;X2x@jMH#6E&X#BnTEXNWV8Q2?f;M+Ubw>K{ zeExXrm^a=u@++ay`>2N=ibrj@AkS~hs$jd2JcJvyiSBuJV^=pC=!2Q)NAoEl7yZs$ zi>y_jgRA`%6vK}0mR&@%mRlIaJm3{5?($Gge;jl6VdVVVMQ2XIN!}Nhg&-Q=ETL7L zDS?b`@F1a2PK_~hoA*i^Q+msNJnfCY#5Rk(UL8syyVTmr^`=+GZ&-8jJWKx~K#>6`u!FU2jRPo}8Q4dO{G-#VN#CAr(;4$fwNk8#A9`#dAKYfB?&8VL9c6I1H0 zai77&BSDe>!=vTXSF?qQN4{?KETr=0j(5MMR1cMDM=#Vwzp>)4`+2TOeVbff zXpNO}i@)Sn+NVWt%q!Btk1MalKE1+@SJuA*vTuYgfjJH)ZH^aacyJH=-+_OO?JXY7S z<)V3+%}_=?QN{XfZ}lJi^79Mt&jPe5f5jGR`@+O&W};6hl%WIJBf{Vnb5*pn*^dJ| z2Zc^dj}^c!tey1dL71N6bzK5FBbid5)>7VCxnxQg=3EayCUpQdK*_(xB?6cY^_6s! zIR#oGAU%>_Iu5D`jyr$&CeU?_qP_~%7E?{VF0%C|tI~f>^Rwl-nQJbDqgI15ceHN3df62CPidqP+>R93 z!e3yk+leZ3Ij@g++_k5g{i|Wcz8`2^VTCe*$xDMPHkX1dn^2>hZD>*L+ojO)n`mL@X>l{+&cL6a6B9{@ z=T7d5Q;|=@;)ebr+7E8j(+wF<4gs&fT;Z+Ur6SK)kHsAVN@N6d$}>Yxue1fttiESi zJL9aUB~24bc}!D5_&7osor_w;$6YbKWmGhVYv)xW;|&Lt_0D|Qfbw_ z`?2X;=gHBe>FuVo<{}qsPrN7Al*N(**nAiYuqotn>vF1EBnX$W+Al1tCzrdaRd{4r zw<)80SGN1&W-6sVAa25uG!jcbMjJ?@=)acPGUwAy_nze_H|9>2$mAnx6E*0z6ma<5 zUw2;}DJ!~fy39_owmXGsQTW$0Q3uCp(?#En z9E#2XjnDestVruMHX#6ve}2r%zB`IB+y4v?{2zjG&_Q9?m1r3X-SMY2Bx0~PD{B5( zkZ)T+kUTXf=b#T=;n6D3`Oo6YLa`g=b8fWlllL#7H-$7_pP5Ox%L9CD*@HZ-!Yb1C zDOjzZ;+?oqAiFu|F0?{$m8=}PK4FvHNP`@lS)WDn9etBwEZecn4u&AN-&6h!c^+Rz z(Ghl;Tb#&$!PGxe_c^8q{Xx@#a^0Y|opScozrLG+ublkDyqk=E_t_ihRDfS2n@rgc zXpD7|M~nZUhc>W&HTDwizm=5TOQFwvTX^<6b}-p^C*CM~4w^^1-Ko9ZEmp8H`t5+h z?;odTFAFW%YZuCeT=>@>{T^Pj0F96$N0 zPb%gmDAuT}G)=&=H%(7n*0)4y|8h*lr5uw-0F`Z5u%ZA}L)Q+&jXmd6%nbpHZ0}$P{*CO6q8=BS zx8-Zjzb=Ih;CA+taY{_7CVV-g!hy_tbH?_|=$bQr1R{81Zwq)&YXlbUT|Aoo-xMkn zPny!@7{SRQo3#Yub0fx~id3IrQZZ4=!;P{YPOI=Pd&3u-2|kJ0xM4~iZ&ZVLG5nUB zF4?6LfAN7&eNXa2f^*HT7aN5sbw>*_Lk=!Y{8Lp5DSjR?*R@y@eBW>sqMc;42ax`o zTKqI&99;aTlD;mM`mGMDmS>16^*l_|+u@ zz7W${2|G%B02ED+57GolD~~MqcjT7$8veV-mY&ufTO4QIeD4$ zEtf+~$M^jER_g+h72^}lJi6qQMeA}Bweh*B>W~P%&=R%VV&pWnB+bCIFPr#PeR_)- zvzSDEJ@c%;)OTt2qr2+J!87krjZV>(FU)8b&onHU9D<3}6`8gkUpAiz?8%v2?^`mpy9LWqJ3?7Im4!9O5yS6YfC(iJi z7&XiP?xVV;AuoFH`^Y%TGpo(%H}OR-m-qU|8B1>!lNGo6zV0p3z8~B`bR7aN=t`U9 zEFGxeXt;1lVf*VCScmoL_EUxk;MuJnX~q*~mTVjpNr##{jcX4j$VG}~=x~-vqnI+v{c{1EF32>(y_<36afdv|h66K zH_dj9bLo1w;=>?Z^;frMXZ;BCox;NE?((?ic*X^ZjFA0DkaqcfJE8@J2AI^mhTf&$GYE+^*x9n*SJ1=5~Ni20jx5Xnvv@|Wv7FGVt5%_tQOo}D7HuR5eJyA=boC>RW(F7e<)CB0T_6OEH_pf`MwG4=I%IKHS>vo zCE@l3tNXlbEf95TTM*_w9-`f?QN#m)+qTodR>vRx3f^$VD#+;)4?hORR267 z*k>Ny1xzd<>OL<1cxs&_vQVV8EFB!=g^ z#fZyeaMArdwl&F4Y}xI8i_wr{RaH9a_`~Hg!>eA|z;W|c zNYYi>6n=a*g7NSE&I{Uk^nIYB^a6f7eWuOEk}8Z*i!Ze&w1MA3@UhM(9)ctt0E=Z_ z({(=wO{_MT4a~Eq3FyAOK6h;bCzXeA??v$+^eLk2~M)uw$Hn=(A%d;7L@u4dZ2ziu8A%2GJ!IRpqGG_2V= z1KL`Y8ozV*rBRh&SE70IxI=3Rq3hn=Lx3;pGsj2uIm#?3dKysGe;~h%6Yif&I?xK< zl_||iewBIZn(5%6ZUp`@LJTpStx1!j3KzjD$ZEeEjjc8dl1%PUD^n|RzrdtLNOz96 zqPL;;9=nGY#(0{{IN1LMcMQzYg4vHlm$n~LYVKSav+lY>DXb<;m22&-t`u`x|*^U~@-{meWs%!&HDO|F63D#%FJyPxjpd*P5D63udD zYtUy}`c5&!S`O|o-~WL9m@)cqzk4t>UPIVYa*mRqiFm$YQd*SVtHBY7h~cefTB2>> zz5llE(*5CWz+a``UZr(w1^E27agLM-_!A(q#=)uLYV7ZHaCzKQ*Q4I#?k`1lLc`87 zl+Rn?Vtc+<*RlGu8sGCLIn(0*Or7$nJ_M9nLma=&~LuSa4tF@|Fmf61p zVR{+?baC1K&fu2DcD?b$V?*d$dQnK?{O|ksQ+qk5wpBI-R#_}gW(6aGspmyTo?Euq zgIYC7KbEY$yPxl{TNQ`2SJaHzoo2NLq^2o!di`)cJ>oi2UO$PRDtmaVfyS%NBVEm9 zp_CA}`QvX=22fvD;Gkm%PcvH|d&Sl#d&J@HxVWuBLdTnz&b8iu_|ss08X`5XLp!aq z`#yl&*`QEr=Te>FA^Y-6?i(k`^NQ*iGa8V95rQkwQgd>d!L8#}UkY3w^?04&OEEel zlHK@_+`#vw#%0|pakN57v~@=pI|wbkpQW0CYiHEXu81PUE0+|bTjUnrCv#^HclP8M zx_Md{`^Kk*o?f?b!_58qr0w4SbFC4YQ$>8MvZBC~FP^L!cjFIw;f|j{zBo7YgUfki zsLUNkHGuOh;MJDySSf}F>?$TelvU~DnKAMRbkOWOQLe#fTbCKCkO1q|cj_V;UlLAx zR-NoM>$8_IB$vovhgdg@q`j`qHR+f73VX^(WaiAuN2O)U4QPW(te`t{jZ@?o{Lrs~ z*Y(ioY)`#83;FlDN=ym~6XSOdsy8C9+-UeLezq=kxZCLsvY}9LcDv2T{t+e1NH>4; zv2DmIko+>v#3JWUy;wLcn1Ny@(sZ?=wdKhn5A+j`qz-wdvranV#Lqt>p#~szid2Ei zz`>aKr3M{JF!eR)^2$Zm>X!YRE^Akws&BcqCaJT-1J|^}&oNkm8oh#Vc!MIWuH&-G zM`0iS(w5(xb@?duoX8FwzZYxFg^o11U%>V2j(Je z(iaR;S`?`rBCp^5_ZF{KU5HhBw>UrVt+6tI{_9?l%<5YYx^gUQv4v}_R5_zob}Xl+ zYJWqW_2Zs;-|o8IrVueO1?q19IRrFGRyq=GTg}$MQ!noI zY{LHtZgZ?y;@vT#t~P0GK8e{lGv{w^Jfu7bJ~ZUuS&`&d3HjH*E5y67UP#(Q)Wyzx zw%>5cFRGi)kB*ip5%HBh3#)uqDl}{gT)Wqaq;0H_{F6m@BHgd_f+XBJ^+LPi<|vsv z9T*|zSV;-mb^8HSoIgj9*aShU+$1{?~E1iTB>y$P; zPcQSD>cg$cz~gY!VU>s^VoQ0YJL{Ps*wfVTD#syUxh?QxVMtwexXUOFDFnX`jV(wY zc6gqwZD0uYI^b`GRs2?~3b0skyzrx}TdKP>LF20L0UE#SbU$NZ-W+{d z6;wu+UhHGuN=4B*7;enlYSG$yUuVY0$0xZQWMmS4*57V_G`G2ZkkY8F)%c}T#-K_U zvj6Si_!Qij2@H1n(WC4g&F}DZQ`J*_TZ5oNOQ>h5t)!cldU3g^#q}#Z4cA7btY1cA z)nc>*M3QZE%N3>JO_yf*n8P}j6w7Gr^=bH()}Hu6U(xb7$P%H{m%t@i@;NhOGM{ye zeRl-M4=P&Oi%3>hg}Ti($wc`pr3yB!$Ekrv8g>{h%#0B7gM#rX>XV$j=Y*?Hjhcg$ zD!fZh4`e?&Af)EC`kGbL$84r3!8~&dbD9}8dlah2bd~n}@3y-Y9iD)zC&fZ53k}B# zhkxC9w1}FV>KO12K6ow?ps4)bhycv;*F-hRpSLk$^{7&y0pubOt=j6>vAn@Wu&I(h z`n7wUt-tKmPI8sX##;ktvyfF0$t(+(oz7?I4cvSVm$3{55$&kq3+0|7$Mtz1g{0Vm6PRpRr$)>a3R z(#DK5WO2xC`#m|vX5dMx&c#o-LK7G`rYl|4WrjcaH2(CG-!=o+>D%!AJ4Ex z4EMN}@MCopgB?2wl8{4y!X{Tn~U0ik#ioW%{u6*@8!Rk`Ci)*|C=#D)9x1x+sL-KtnktQn+UV zVIr1`aKEs&KY7rB`uLL4{)4o^HQkB`1$94hh-L81u*)vA@QXlG-^2qlxQ#1XUPU%Y zGIesz%Hdu)+RU)f!)8bR3^TIj5KzU4`~j09*o*&c1VW^`om(>=99PWSC}>!35~qQr z@jT3eTvLKlA22KE#LPw91!NNt&Q}bbzD{>Sd;M_ODQ~)!zHD*U zzx_hsBEaYU7N%3NTh(_{kfjT?vu7cj5Rp?(pEHY>-CTlwfoBf^?x-;m(h)PB(KgMQ zpr?FAW#lSC*ZDIi=x>7b(jg$4;YI;6CBPA7#C7MOt;8$>5T@qQgj8a}^H~mvzZHlf z@yhC0wx6=>3B*;L%gYa0?YHi6U0EEv$Iswwt_L!W@w2fw)dwObUb&MKlZ1DsT*lSv z+sjAbTu5UtUm7-{VoFhM<(H?mz}rC0|N0@2wt_Y7XMsKk25q(Kur@Jwbk}$KlYZ*X8&8kJ?ZccOLyHsDCDC15}tWqZw zxu<;B5`T6uAa;$0{Ed&q^EBv_fRTGTjSG!VJ4tqr>=+N@EYE8CJqZ+Q5+VLUUP5R> zkIVu5aa{z~cjxK-;!7f#_hRmT&(#57ejez+1w3L70lxy8*LnW!RmJ*|`_6?_$=)B( zYL%?$sr4Kq+*cP`4yJ?onJf|lOUr0YcBx~a{R$^1I?PJ`S*owZl*P0^qYklbXJ=w_ z_lu5tAw-_EmY=`OP=W=`FIEpL)2oC6uFpMG*t}4k5G;1i8^JT6&Cj~YoEAme(EWe< zxm{k8M1d-*_vc4=ka1K>oOdAmJ5!DIAJbr+aXRC7SetE`5h~=+*~d|<1LG(Sah%1!mnI2oNrSoBI&>!tnd3^Al1}G; z?cKC@d|{c3iKu3rya1k7inu<}le=s-gLLXe@wal!J8^#Pn+NCUo<3@=c)4UcqJ?al zLjnr)1$yPRIr>2P1gVY_f~fAN)g0e4Uml29c-N;EB=tLoIIzyL?=yRTz%op#>Dg$g zBPsrldU$^2lNRm7JF~A1U({TE`4YW?8lqnD02;qP1T?%mNMVK@(M~5bayEpE623p3 zEEOl`0XOIR^s6DZE1^Y3C`|Ppe3mlbaat=I=%y{8ISF&>A!^y&kN`f~ph44w%>#_G zLy0^MUyAfESyuXl|9__un+2J1&L0BUB5q`t5~Ne~wOH@cg`ATOnfvo6st>w$o$y?2 zy`FEaJZf2aG5bFb0b!r~KD!~#I5UbB1Bq7#ID~+A#cVTC9hPKd^ydsKdcBWGoL?Un zrg1LwPFJH5B5JuEZf^fDvKf7Lk&eSa3YUCjcB-ot#@mFm-gT_<>&d>;kjM_jZ8Yph zO)!M^(c3qf;bb8hb_kL)>+7h^luUX1BX;f8loeu<`YAl{>0@GkZMcJ4+$yEZs#CK1 z?Xh0yzjaYW7xJ>oAz&^b)T(8{k4C)* zwj$Zm8KU8PZ30GG;G%+yzw&LzRgQ#JuK~=`JLnqMw)sGJ+0*H!TQ|@IWrn*t!>|C# zLa+L4a167L1f*iTikLHIgK#~PPe9I0=e4RN*eI9!At2H{C}2Gf-Hy94)PO9WS{4he z>z;@eJ9VZc%Y%_i&o40>>w$NjtJSqXFU=k2w=&Q$sm42)*SMq+l%4W+An!o%`<`eT z^;~ILeFz!)-O?>DJvPenYrLKgo_7ET#mhimtwI0F=_*y_=T6(an2?DN=z0jcR*xeN~0QS zPixBe(by-oDRAscCZA0ZYLyi10p*gG40X4JY;UolX-72UaxU2PljgLN!*_SRV#`AS zmN%-*&4$nCO59q9ULupIRcKl3nr9l&KFw20^Uq}jf3B)h)LA**QlA2Du4Eh1%Rm>V8^!jy?non_MAH^UQlR7aRgU zyi@26HJOXzOMipEn${7oJ^)L-OrIJcVs<8(j!73uRV{bqiVtHFqWf~ul*-1%eddt&S> zJ2RsJWZlvNn5&K&L7aDC2zyRZ+h#H(D?pR4`C|*cH;5-?7f)Mfpy&cEz%#nhUztfO zpusiq9;kbHJw>=NKFIQ@?%if$Y~*qlf$H0BEe z2z{l^{xQy`DqjnpTlOMbx`*ngLB*VG?yvzrfsP~)wEdN-mABSB%5p6>NYNS25|ZyN zNlZU4zYsSMr~XMJ*!}jf2+1vSQ9&`(kF}6w8<>&&lNPd4x1ZkNlFJllgwpJ*f7rb+ zaVUVQ64iu`p;D8iFN6`*m!7GWZ(BAW0+^C1_=r*xSZHR&^2(}N9x>f1*|la+G%ZM` zLV>I1yA+2+SWhq^RQL2aQ^KOkgAZ1O?NPd4)t*Iav~NN`A9CQBe<*6jjywr-YY@{Y zD`q5B4QmIxksB|wnk}cV(q^JmZf)D@K=g@UKfGw|;PxtSaW_+F`sXvKkxz?kRij~N zA`pW#w3#jN>_1fASdVIv@Fbja>Zz1o97NbB+voRjKlR2!)za7_CmP;g=@D)dk>WtJ z2XX#xGJ{qnRI3H)P2zE$2*>u|pR@0$@#?_YoSEbBr!-qiCW>t0>cMA7mVPtrOMNvb z=TVBjCYU@kfA#%Gg%R8s^CT^lNJ?wPoQL+qkgYa()7P=JKcU7`M*0=PaVT`0B88X` z`IB%|Oij;U4#HKnIY~OurhfGnEmBZn zQ{Gd+y{!|H@eP@K7Ob&<5u`L~fUw?dR8uMNEYqK8HB5E$oe1s$o7efpaQVJlOB|g& z$#J8uzuQl6-0;H!enL5}iou+;+t>Y6T{ol&?c_-phQ=2dEb9l)wDK~g)Cg|UO^UFz zC(K}s&5~-lP+qH`^Z7TazN|l-tb3LyxGwV~g*R4ABH5TmjP!H!Fne!fFr$tmA!T*u9PlM51}#`QCJ)z|?eTe5o#6DYv9Y3N zx@J@G>G4jsM8Re>`2k0+9_J|;yHOQy}R zprpRmDmqU-ce7gm+E#7p;;X5YT2oC*z~k*QW5%t0Jll>Xgo&!$zd2(vqOC;Z7#HMx%o> z>DW?}ZZxg%;51(z`{6!X8GT7S%Gjl3d0cN;;+N`|=gq072{7qV5zHUGmFGYw5K|_8 zF#&Or8L5~2tYKLDS;y-Ea{XyWg~aiCYg>t$<qR6q&_-4L_v=Fbv^Xh# zEZKGmTk6hOBl-9EDg9{??d&XRe~b|iHy^T;m?L1-zRBaYhx&M)O2h>*3OX+zKLpqS zoT$aiEdyyiP2%=Lfx#d7`lM)u+A{Z9TTN|%ht=+P>obJrI83d_wW7wXQxd~&b8<>F z8t1#1{8;v9(2HDd`o%v(^6|X~d%OPcFJp}Yv#YwISmqZxNRMV1-C*pT_R*#K@-GvH zF9MK4=!m2fIMYw3=!^C~XvWhl@B$M|!_98Knp_z2H$`zrrx_@o^9PD%;>r z5cTg7;M)m#&^Em&d-SoW{hUQTWA6O%X zfS2K3|NEf@`K>L7sgigq-%aXsT7K7C=gl}whfk(MOhDw(>JS%{7IUBlt9VdNS7|H^ zWlQjZg2~VfCzgi!*rkw#-%@1&k?b!o+Ramxx3p&-@7Ey|;C}m+%HXJM@k%I0?0z)# zWYrg!Mo7HFgRp6WoxG`9z z*6`js+Tk6-wTsEY5`;}0oY`c#GgUWR#BR}2F$K&nkXPYy`UiwQw$=2^?amukvw&yY zuX@k$@0b?PqGM76di?yzC~la?f3!+(*G&VW;)@3`rsQrfXs;sdBMd-O>R;}Uo9Dmr zCvg{hw9vWlV{l>zgX5=S^OT%fNz^gmM6S}0?Gs!h4jWl015$Q7F!KDRRs4uc#=(aD(@SM ztw@45Y*y zG-NdH@>;~=gDXy1KPC(uSUSzO_g5-7>Luge$N6J8_EA_~UKk&FU}ahY+kmU=@1KvE z=5`A7^p_5P!<{X??2!QGN4mPX5?j;$H$-l`QKDJNR&#nO(b+&+J(nQK{&H5KvscGx zPW=KG2gm)veyvuaon$RC&6C8VD7U>Zy_WihIWe!y59 z-+;<3g!r<}xtK2L8%tG4xqp}cmA+HgwiIVcEvLDN-#Nm`Js3;qp(yMh~ASf}Mpg-637dIUBsW^q<3(PqmVj(C5pKT~)LU z*MT6MB4U8(3BNoH@i?~p>&9?eQg+ZWSFSS7Zqw;PVkttK>2q+#nC?IUMq0L|>!M!Q z$(8ypK_rRg_iuhI-#xE%e2Tsjv$Y;2UY+*d56_f1iXTE~d}TZrb_g&XhOgAyC7mnh z(3rxnrCh(KkU0n8AC_WYmTJMDLcZ*az;V(NG76#gw+4(40j`EW?hQO}CQbE!ye<68 zR-;#sGhv&MI=6NA&ZCITiHz6fqj3*R3r$pYg_+eXY1rayUz-Q>{xi!1k*BNKclx{AsOKJ+AaOlb z;eW9qtP`-<7JDvK6Pi|CK(w&DQsNm~@N*P6)Q~HpxpB%>351I9rM2o<`*9{B!is zLM*8TxJ{zl!^9nnH-XP_YHWiV`VL{{6kCI~mP2D40xbS!68z|A_e;A2TH`X~6kjR5 z&uaa6S|YQaf{B!*x#y6O5jasSEixJlrt(&SD6AgcQwdKNb*=7|U6GvXys_tbN}2>7 zHDve?;i2N=hAp^LgKODZJ+9Vgm2~<4bAIEn>D64cz4Uhr^Bw5{9{)pO7%{)(!Njd- z2z22z%#~L*v}0Z_${})=RuT}PgGh;g)KI7I`q;U6eDQx9X=ItUNLq!}02N45qpiou ztd+J6?~UCn-%kgx{cs3h))N$Kd2febeNPb|`-Er<_&-dYcQ{+`|No;)YnIj?X-jFV zsJ*4rsFDsvt!PoJs2zk9Z+oODYNl#cjnv*^$0(^8Vn*zlm?05gpWk1v|J;KVTCF-1r*^w(e^iaT0c#fa3Wr+$_{|4hjzVD7{mxu0`aOe3i^Ihm6(4(OgdW7K9Vo7WBD)z1Qo zsNgdSeNOAkWY&4^;?yP8M7 zmw6jw!Y&A(gq!cknD4FjfM-m3yqx*w_?2Ss(`-rZu2s|Oen}ZWp2jHo{y>^`4@&=c zv)MZo%QWc|$Xi^(Iq_rYeQb)8*ymj1At31mhzTm*1+N+lvLz zuq)oJp5*pjnHK~Vn)%{4=AN5Tml|CJf3i~z7uJ_|rbjEbw}^TId#f~sok(k@H52

o_TCI^3uL^mHmtmnY+xxZlNt|5K(T|Oph6##(e<`20<7cf$aP2 zmtapu?o0o;I%PT~?|vWl>&6Zv@u{_NSiEHYW>R&9y04m^psl|@&X|N(G>ZhPU5{Zo z#tngl;Wn8{dMDA%+?3%*|MnF}s#Z$Tl?Ab|?g8ArT7ZqG%EBHo`xo3=I(SBCRQ-JE zTGow;QD7PLG9~6CfXx3y)QxGPpli0%ko8!eOkc!Kp@X# zT}6GOqbvrb9L|>7GCx4ytvS{e^e2}v%WmAO6O13acNZY5V_lGo6aXxKW1`v zdfuU$lq}4bnl4IMIxlYN$&^;a@!&_bV0@jzHE^`m4?E``*5ni)g*G_y>M(vzen`vEX-GdTK?>@j>z0t6<|l^oloi$6oUgiUe*_ zeu>H$`d7|dPCx1Rm~P>;)Nl%juAspv`?+hD54>xu8tR|b#xmgJ7u+arLyfa0Lz6F3 zKKT|%w7S;xG3 zOyt@GkzRwjCi=<#`Z4QiF2Db*u3W%d37cSft*#u^16`7KpQWKE;U3Vk(9bXb2=529oA$9bvQ zbjKY=zfvEWBW=mUrjy^Xy)InLRwvtyYUkgWc9cJ`{ET6wl<6lc?)q^4SpLFzDf8;Z zo#~_Lp%A$Vv>l3h#vx0(dgS8{vD)_DyL4V`L7pkOAbhJ)lAH$Surw>K_xUb9E6h6w zJO#Yj<|gm-KM0sV+ zZyuHbMHqRvhkjXn3NSkbTxe01M0aeuJ9|9ARq2^{{@aqbQ>SnFVU;Wyu$}+M+n|;}@SY$9T^fJ5f2H{+;wY zCwYx`^PtkkiI2#)_t%~{K+9!)FJy2&-$g*)&*oV}E!(w+lkL*%rE+bAUnT{bFBk02 zSBa6;XReaziN(;{ABXoPCC8uz5$DU_-Y7g@aKRtvX_HbL|99U=^Xo}=qcvGzo^i8S zoo^lyWsI~pwz#$Yy3F_W80VG87p&MArl5k$Sp~wYXG%^|^os+rz-n+zqeS6a@?lzD zN%>LAOU1o9BU`Ih#Eq-E`^D%WZ@S#c57_x%(25S@tSdvb_l{j!wGD$md4^@bJWZYW z(!mfWBs0mCa&|)`xw(+Yj;D6alD=9B=@})xv#E!t7TlxEov5-u$6R|Yo4>JjU)?6Z z)b-4?UrNFWLL_vQOKFI6Ez1^Q;NkWL7~G4#UkbP1R5D0$O_W;f4Z@wV|0tvqNV0&0 zN)SL3LsX*}U6Hl!9Je=B8cm=RFWNCBOEGGdBH|#D7UdRgta@8qi2Wn5N-RC;@0-o@ zyf*{`?$w_B{#4_#W3wm1wY&fKZ@DLJmHU$t#i)5eBjR94Gpy#MaD!p$Uk^@0meqV1 z?#L?Z08V8N75{NYgS-F9a`MuvN`9K^dU^4h*C=EVuZQ!OHz6jG6w#VVS^!mj9Uqr~ zV=pL9ob0*g={$IB+@dKrY>hN;3|rHf(H}`=30%LVaD3%Vq1*qePL$@>A|zeT=)N@f z+my}+O#|QhX^wjL)3*x6W2K=5t`eoa<@` z?y40YU4j1*->gOcS?)Y>GOZ`=K-1byhVzD{it(o@jd)nrVbpf04Ot)( zdTw#KQ##5N9446`B@k<{|7mo=>eqkO(-`GBFVt_e>)G>5Vm9%Q%J658JZL#He6gt|y-1%k|#A|!uYI~SyJT~xg zb^hyblSbMdL+mrtqQ;bEADNQx=PCH+!ZV8|Kcr<*aN52jj^2VIZ$WTV}0A1!jw#Q+M+I(Ch+TF_})Ne01MO3_tm9gFXxN|8rXL99`jZ>g&)Vbre zT|OJ#1D{Xkp>g1d+Tpgtgj&-6uk<&cOi`0_C#L|uqd*sE;S$&y0`@s+4iKu3Zw$m#vTnUpWRd|7=L74ymFkGLDusS`WSv=ejO#Zr8G13=D?1J_OnOZ~7ciNtPwQt5NL1o=5jBoTWeP5Fh?0j{$rI z&!}MZb9i}w!z(eg>jmu~Hcb`UlVKX8HFr$`C9Siv#uw-n^ijanFviNtqXtQ|p1r=> zqh~m5(d{Kx>GWoPTD%Q@wecA#;d;do>{TJf1MI%ZFIsLoS*`hzzM||p)_@vkCn_eA zo)C*u@RiZ5nf*nR6*8D_3vp=FBE%IYaZ<(@3b(^vq}Wy#ZEr|Kl#1ZQR1F(GeSl?X zV{RHQ-$>Bu0;quELBIsu3rbQEtJs=e^rd=V$t8)!?bjW_#+1Ns{#Ca|w^!b(=r$-= zA6gR_Y1e()0)@*>DlPm}q@=D(PmD${a55ZedGu^4mu9Wgna+E$?&xx7dk$7u{is&w z*cXx@F&_j_>gEw)$g9O(?5tDf3gmcWE5yKkxr~b{sCu+LmU1U{3{8GRh@FX+$D4n} zo3@rt_P@XWpkMWOs_0|_+tT!x7OQ)oWuMtGaYUC}7rl1Q-Pfd#o&x4_{RV=H^*{%s zqyI7Uc~A4I@t|MDCGEJe%q(j9{h+!uFKsQ17ST0gMV5gMNtxn z##Mt`jWT(i@(29RGZ{6UV3G3wVl=1MgLZ|z3B1p;y%#np-R$}YK8 zM$}d_dyr{7?TIM)6wqz7l64Ab65;BGJsDMyjsy(O0chv=oj9h;VYGDY*;^@8+x(+ z?YqER>pPhxg%-dMPQNLgB=HX9g~sQ{;7HH9%D#n#oZYMwZA+EIes|D&tZVm64c;Yk zex+Oev9-RY^q7+M=CIw-n{+UM4IPokU7H$cdP$2eHX3nMx+GslDKOGHa=rZqSK=is z8U3VosQ8UuO}$y(Ln&c!eSe%AW!HT9K+PBJg}!&Lv*8R;L}JcVHQju)ri9a-+hl`W zufTe4%BLQs#(r3}ejBT9=~KQJ5|Qn* z!C8#tOR+>}asAr3wF8ySttG4S&K6!iy0FSz5abtLe3OH!zNRTqnKs$k%vOKh;K+610WUy`ft zpi60`q*GgRzXKo3rk9}W1EC|eIOw6mU+C~b76}xYrvDI%YDdf2j=Clya0O%N%-a1~ z$w0H580*Ev65wR$lWU)+eUJLVqdZ#XPWr$?G|6N(hR#LCY}C10=TJhlM@mIT=OtO2 zhV*Ww=q4e%k0B3O^JAG(|oh+O!XEyHO7p&*LBKy>aP`lTvZj9_NF8Oy< z%CA3DY+BSb;`sIu)$6;=HOS;BvnZQ1y%i8o^$6?-UTIdN`HaHc2&aHpORlQ$4#Yv- zeV3cx}0JhBo?Y*wxMw$;zBfpx-ykkB z)EjF3CqgRX>eF1t$(+%eQlr%0NxC9UGxjSf)?L@NUkk*43~Wz>x1V(b*Mkd`L_+#( zlqEZv^`JKXc5ErqXQ_Khc0l>CXPNg%Tcri{SI1?^0^Q{OaSnz_i~mrU+BN!hw{lKc z-#)=$BlV5*yYd0Vf;lB@+9LSz5bIyx7VI0y2l|ZZ=xjSM49QXny0kIec(V}d&DHp1#;La<9q6d7Ys|b?rI%qRCH!t8nQZb4f~a>2g9E_QIV3g7s;|~96Eg> zT^~L!*a;b*Ma^H9CuuMZ#!YFe2JG=r<2$9v^madWd_L0c%y4vSl5by-{tmv^K@?m* z*I3_o5K8e7Z|{rc)??=|Tir28VSHiMI9YMy1`u^$S@6=P$tmC({8RO4vyf5<446Gh z0k>C_H{l;H=A&(SAqoglwsvJ9w=Bn>St%k(O&q;2*^?~wx8ww&N1j5e^T!%eifIJm z`A-~oZl@xw0HRr6n3gsgxqN>?^Y%=PrcwM5N%z1PBtU-v>lt+JQOLib?(Cct1y6zL zKulM1!h}J!xuw|tb#^Fm~#&UF$`De8oD>&=^N#~mETdfY= zzn1K+&ZbHppMT@B=;7W34iCHw1CqsCn!JUSI`9@{(Rtu%jB?T-QH@a9@P(~H>$9CzEzW}eo#S8 z0L1bxAbD*2C3r77yD`J%O=YM>Q#k6e#1{&PDhpl4D8{ehLE+n|`>(CSJYQ(nzW>AS z@$_W$vuO#qLX#benh)Qopgx9a{DVE2|L!Fz(KU8}BR&429{3cC>DBI@Oc9k9WXZZ1 zxDUHFnr=#Q&HLM5m&V1q&qaX{L1BSPlpeC#Tyu6FRQz>KBS|sQ&f5RtM)WluvH(3m z!oONi%SV=3apm5JYmZU+)wAn>|NnSnqpWrOrm!O8@$7TqmKqQrXl~Igj9)ucyZ3Ds-+93u zwAe!o8uY>+x1d1t;lU+WACxt9cEoYs8TH|@{>K0*M3UUKBQ+<8h)eG-zMZ^1l6xq= zz;!fCRbERoLQtPWxpyt<<1o)E#x_f(U4$Yyo|YG>5Rvul22SmSlh2LQi{ht%M7aW? zJne;)1wW+_kPQj}saTHQgL6C~Ex(RiewM1BJhn7D@T&6CZCnCi8zXpZ{EUntVlk-6 zt^=n&$#cH<_ZB8@=Y{5I+X;rm875reoim<%1#bn@uR<#hn#oa?Go_iX2jat?uGh47 z^sm0>1JqjsxWzA=Z(SCQ2OoHzRBB#ZMOJiVain*e3MUqutj8*5`?y^Qb)s3X0SWQTR|^`~n%r4kX7m(6T|0*DA#7Xwe8Sr= z)6PrdMF5%MH)@Sk_(ar~V{Bl^|Lspfo50D_6MCH88JK0cm2U{o zzS6$;Z%Ed~NQ3!+kqi%~>5(Sq!~fgg=5d(e8KJ#${*-LYA6?!;5R+<2x)AcubNdMY zzh5jj3&khsHs7NtLgc@g%H5p`FkW0R#zHEv!S^+9!R$ygk-sf5`K!lCw3k@-W#)4{ zfU^A-m9A%ji8LQ z*zG7RiMs)P(W+0iT<2Z6DucWW>^cRMW7?3MuuFeN)L%%Ob@G41^u-y=w2>LQpCFpDmP6ukX-(N@-BEQ9 z5&;*6>CFlF3!F$p5~fQ%{hgBWqD<*!*xx%>4py@yCQ7@^S13#1iDlhb_=3&Q_$lDe z+$q2`6>g^?W{g+Y&)>PEC&*r4O09T%HZN+cN;860q|!)rd`d@=1cH)kTJ-a`7W-}Y zS;Yt1r-0v$dh_5GX$IQulOM~Z#xb6>Tt5?ToTkoAqd8bfVo2AuS|b^EfvAOk@4mZ839a2;+A!OSy~P2+0oYH=PY#BJKVi)4VmzeF|8z z@-DmmJXqs0$g+8K$NF*0@nCPP$n{a|OW-+m#lL8>k;6T9(dBsKO6}8HHFCDeyd&J+=j)gX z&eyecuN$Vk*PAxBD_EH=L;ly;y>JQ$jU-Sg)6~vyL7RuFNSCAu3j9ElG*eMqfT+~} z-SGYQa}(=7yj@`6_O>w&|ZFrYt#yS->~N;8!kwR|(|-3Uir&OL*n_WTVZ zqG0g!f8UR{_RGx`w7N#_IHhR^(VmHi?8^_&HH-`?&wUq6tT(c}WWx4vZ$4q9b0h#8 zlyV?I`j{d`#YXxWa{RhKSzO9H=hZcG1Nq|5VW(6X)%a{wCW9Y`0$E#ct>HKnns8B4 zJUlP{d;g!_(EW^sV6&4S%Bb>Y0RHSc@=0lxG>ap@U6?0?ZRPkyjchxCl9U|q;|{~5 z@?wuT68r=rayGulft)lIiuJixf(G|auZNpxU_e)i(7*Ucn9EU$o(r7QTCC!pZL&+= zc0H;|i?b2Z`Sn>J(|k=Dx-luD3nQul>9gj=dYMBHEH!jH6BWI1ZBDMTNUwwf~H=BJ*P0|t{%>albVYP-mU$)f3RD5p=+&0I48#{CZu~i zYS)ZajQFzNi2thfKaOOO2OtuvhloD$-FlCFvu%{egmdfU-m_aO`AR#)^#<= zRAqAj*2wjNT_{4O-zu;l&I$iWQFlBATvdORw{FQvwhJRFc{dB`!PUTx4X?gOsq_Uk zJ-TZ4VYv)wyYZObp-gjn?W5+d}a3SqEg@$UXeq6$nX-8un-`6)U_*(5S zem9OEZqhynyI4i~o4f->%)h9w*5QGC480|SvrBJ4yukel#6rrnW6^WjK)x#12)e4% zI_Ofj?TGk@w7FTyzt?WAR|0vIyR>_AY5+W<{DJAEknv6eFr;28^1Vc^UjV&0!J=DM zyI(02{h4?1d7La@;O@2l(&ddYVJ&9vg&^Y7m}Xcj{n1; z%z16YX&D)j#W&W-Gv836)WKaJnpJ2|Hy^YJd-s(Zw!DjK`hWiltE?q6J6NhxMCN0! z8BIm{D5hE$X)7EgDlvYj2c|Qs#|6~(zdx%CV;EzhBk*!FAElv7^+J{qC9)8&?^G=M zCnB$D$K>7%?HLvQ9P!~{mv@G1PR`h%*~DSgI^-F=RSIqoW~To|S0nywd`Dz9N`F@2 zVC~DLlx~!u_$a^8KTD9_BSU>Z8Tj1DYXvgdsXZA()rHxJ7mo)3)}&9 z)=N05G>qRhkhvS20*cIaKEB)H6&+ORwy2Y+VH6G@s(}enAJQ0461Thpz^xv)t4n^1 ziTgtvmtniX<42E_H5Zs@dz44N1BwVUDZFutwFwWlMcC7Ykwew4sXxD`o>O9E{4#M0 zP&bZ#!?oQYv`2Cn*3Sy13IyVWSt&rW_B;lmfZ%tmmdu{ilMbgT4$FUD^Lf3!@Jm$i zfzTf%yBOmZB!9CMCFCHAQdk5n>fjk(Gp#OBNzk=X{|W~9F$@bay4*$cOJ;|3C2Uv} z{~eeU+`JvnrA=-lr!jNQmJ z^B)VzC;}HU92J@>%vYsn=1cF5?;b<}xX(+*?5oc=9``*PRri>;|8)O-1A4?I_)7Xy9RS@Z&H|o%uI&&w_vW(U`kW+2Qr=2*^40wR*<%%(ozI+796Ju!JN`BxVp2T6E1DDu zc<;ZEVO$;f7f5=(%@>H%yiq%>F8#~C+Q*3VVsrJV7*%65?LoJPFf*6>&W{}x3|I77 z$u^M@A%TK{qpF}tb>Biu2h~f7*Z;amzH7wFclAa+4(>FVXOq}OU4TI;(j>$|6bTj6 zc(>TmQi`k{si2!~Hs)1mTa#$;CB{YOXQ(=DnvLr-;KF++e_q2v(T#W#8Z%1~mqyT; zXfC)$R#)p&z!i<<@apvFSQ&nu2pcx`8ysKSZ$yzY!H;SOw-+kwV>g#Vdvy|6^K{lO zqei8J(OjNr9+)R369u7^?{N*}n5_!+mttJu`^=Zk@q*9 zQ=K)(TJ3H~9qeOxfuSC+JD$I_P^?~a1%@j6uER9T=~zTxv!ti>Og8|p>O*r9(f?=m zdL;Ss==ZW^CX*nF(c)pqR(PsV2`=r23*Jo7cmhJwL0_MNUL)9bHtFe7ESn$T?r-GO zR^!BjK2{C2aZ3t>VP*(_3f%B&EOD6;g;H-l7A^JHnA51q@Eqq?xk?`GiX_Nm% zPW)##)Z9{k1`|~jpZTV)=wg})1#Cxjy>9OvZ6}0>1f(%1fop9L)}Eq?!3^R*RxPvV zP?URIxK1z=lxjd;4*lfSC-g>-%9i@Wft*oS=!VIOJ1u4uvZHP3#upxh3Wr> zGUS#~eDc=ujCfn6nuOK-dA&P50;DP6w{zMG8NYWVy0IyEhuf5-Ku-EhGY{z$5JP(x zPz+NjPZ+kWqrS~h_1a5DPJDN7y~bx`8FJAB^9rH|Wu!B$&zJb?k4n@?A}Yb&d_}^ zY%spd?+{fEcLiU@QYm3~ z=B62ULe8JLr_L$B0mTe8?!a+Uq+95WgQgma1HH?hJAFaavYU)qjF!;zSyhvP1D4#l zMrkrn2OU86^xIEqMe~^T7fk9Z>?BuQShU&Ywej4>)bOJEXD3*vnf)o=EZ&rbI!ozKlP^;fL|as|vp2Jzw4rZ2)tE3XGBu~;%KCl_Iu4+F?ju2%j=oB z_zW%Yh5b@-LP2X2XdaG{-bjaVta_{FR`e(|Sb|cR>uokaitcwY7J@?k&Y&lFi1vcw zW-S&o!$&F^ZBD8FmnvxybY%xY+>XhhXWo;E?*Jze7W zVM4dB@;y~A6rx#`(nG&XgEWjTR#*I~ADjM|!0aV);l=XLU|qaM4+`CUJ+PH7dlFV9 zbQ!8dG!FMfMp`~7i!&yjbXfN^YVqxij?23XX0W!nsNnVe_^S&0P4$weUu*}#*)?y$ zTOaNtflzPi{9%NAzx&vXQ^bapcr8_`;OYmaKa7_{M1IDH@d~+-ZqEjZ4buYa)n1f! z<35c4-QY4zZgrjsDRtUI9#AP0ffK1EiI>fJx$_Tttqz=hs&jFan%G-B=&p7xvM}W_EFFjn!JR z$lNkQYsuTW(Qj0M>-NCiVm;*Ys>Q|S;HB!}*tVVv(Y!~&Wi!ZdqDcu`4N7R0_ZSzrGk$g5*xRHu0fC-*_Z}cIX=_kG+9Yp?`de_#%96>zN z^E*GaSNQGQ+Xco!2)nv8RS82V0qWvt3}jPh(=`CjG&FDIKDGN4knHyL(m=t|1;kiW z#ev01D4iV-bqw%-O>&KDv~?{sAicwQhK=Kc@DFq6c2rmqLyay#%H0ACYC`&96)7&q z`iJCxY|X@m7wZ%4C;raBX$HubaSS;OWH6=FvQ4>jh+z*&IZo;dCl*DpN4TVIL8V4r zZYI3eohrOlUaGrn&$s$YxlVifqx{G>)a`=8eb! z2g;=q2Z@w@GV?(d*)#A4xw^4_thjpqhSBA@4y%Mq$`h9CM1dM*Xd#| zCxwpWdNGtoLCZTh)JTPo!L`Ns3d#XVidzeO-Tm&{rHgEeXUk?C(wQYa+I)|KH6lxu zz(AGz>pfDXwtySS#vlHEmWeZf3av9*4lNCp%6y)&R_+!{t#ozP?(jn-_?!fhs50}vn(W{>e2c5Wm8T zhiyE%48RoQ77!opyih@xhU3iEma^0knbz_3eHgpQY`(+>mMd@^e*HaZB$6$!utNS$ z0rV7LCkSk0cR2-Q!UTxnBQP&AN-g1a2E^v|n zzP3kmDa^9aG1&YGCtQVgPO$UlclqS(E4RxUg5rEJYO%0M0wQka2Ewr3-s@csr;5Wj zrM{ah?oDcGRDt=!$iUly9gsiX(FF8Wdrh7ln0~(8L#aEil z&vjgEzCN|tWt@IBtT3tdCgJd}igf^6dZ*=s5!fSzll{()LrYi5ERUdL>tiEaD?3Mv zyhHLaxJe4c0wkX}wZg24tRE%~YvZoh#_=dmgj7aFVb8EFO=QyPa{;eMH@4*ND{p3# z)l+~yT8h|Ve2HtSuDfM(Z_`rFx4_&sDu?Q3Ng%8nk^{c^luK>P_)f2{I8IWuE|?cT z_=7oo;B=??jh8^qa*>7Rn*Y~kGyerQvzLyq?SJ(+IZ-#PdixT$gDi)6LQ19-ts=^g z*%-%iPXYgV^R}VJ2}k}L=i)vus^17GKYqN+Cxj?#JZD*G8V8}nNpXdqD`n`O zgbf)i;|-3fk7#vuHwR~DqK1orR}J^UaZC??%R~fVTtLH+c;nc39LdgJVDjaUq{$Sh zjizmk%zPt_0(%)DuFq3%*S$(q5W^KaON%NVz81O8keTRy?PY6;37!(Y3AanIeG9m! zcn*D7wn`U6vi`@-Z;&njul-i5$TPOtMsSH42^(?)=XnZ{H8JASF@5Xyj==`x!RZ56_ zlXkn4{QIj%7YFu^Lf9s@4b^Sm|Fp-0l5W>m^>@}+UXJc9+Zw4H&v%;yOJ$3~ zI`8+(a;k>Bef7{Xr~)UnCgA&&?NxbEjMPlAzRC1r((=;Y;eJU(B>$xR`Yy21dw<;^ z^x5yS+v$SwQ*k2)AgNJHT_R%;*!v}NW=iuDn|28R`x`x%pvg=A-_~gMnU8U8ikdv5 zRU$ck6067Sp<#5HF_|qeABG{aRGQArNH9AKv@rXjv2B7_5~+7*zFXJB!4+D=0qL(z zPEw@(Zu+B4TsH-gUd(dn6M%Sx-pHo2LUhmOkEB8QvCbAI6^Zpdb^dTVvo0C^f>KEC z)2ko$g!4@FJ2)+xXS!LKYV~xrO_v3YyJh7j=JVt1gm2NhcOew)d3=&B|4s_V=tXRJ>%Cj~ONmeHg<#V8Ld&LO<1=sJ zq{~l0%`EB@+h)s7M#qu_KR&CgD^E}<*D^SX|1)8@?dZ6Lz3265a2 zl(lf}@^oP1@XMWW!L=+=@&%u?u(DzU7pW~lfQ`q7Y5?Q&0bYxv`b@$8$?lUcCqLnH zD0GGErUF&d(UO6jtGbY8nSE9GlOj^xK*fmh^NnD&z$Pa$kfw#?POenUtue=YQ$b}MrfQHk?gaw}5>fr|%#w01rBgaV{)W47i%IiJFYtQA3 z5(FK3)qr)#%b>a6$O`F=X%Y}j@tvFO>w~b5Ps%=%n5fV>>JiPbDbwiQ-bZ2B5yE$B z$l;yR*Vj$eJ@oAg9X+N^@8^69Q~FxIb=b;xSjr9Os16l$v`$!tik|ahA(HYDz%n42 z@Zhk7ROv8`*lP3mw%D)a?cy-m|GToMth?{dh7*?dG+n_T(Ln!$dl7iEe7`&q^n77I zy}EhiW4a4grq6n)K2oBHPWHK0qoRx&JX->%0NS;RIq;?r32cgUZM2=&6Vhv|hB%HA zOyWg?K5v-I^xQjl48MXJhzTU?u8!j-fF!VMG@J)*2V$VqgBfWW4P>ooqW`smDczIw z+iky?+V8#jr$SU-?R?SrcWpN1$?z%Q1DbLh)ef8#la9bAr_7@`pX5>=>x_*A#Its+ zb$4v(FC)KwQS#azt8>No(XTiW;KBUTL0C_(ySmQ5d)9(P#q!c$b1HZ4J z_LP$hO<9`#Nha+k`Fv}j0I9lx^)M!f!?Mx4Ja0cJqD<3r>blyypaC7>Os5vQ$jXdj zl|8a!?3mD_X*QGdhnEOI=HHd@ku#r~TnP}O`oml0XmZqhP;J6M8DUoN$$Sw|@Crw1 zW0J`So1KCEn{kVpc67DvxA0G=0E(DmBvm1>$C8T@|C2)1Cnq==2lo;;WCG{K?(~NS zVB7?BZiL>d1;(BNDr=&e#RJdEK%Kb=>bju{39+p+(|FpketR{Q*41Mj>=ECkdUEd+ z5UVLidj=ktenzniAecqaM4WzCmpB(THMrdO0c6)ZFH-Gh&olfmKXw{9`rO4au4Eps z6C#1nb4yJ}q^pl+iaf0ylj=|;R}RUvytViXXUh4JEld<}zw@*MTCz=fxG!o4u2AaL zQ5Isg9BSruOiQataS%G8^sl3z%n$DC_ z#8GEHZq|8{4%*H$eB2k4p#9MA6mY!0h4=y@=^?n+{DcwnlHPjPenOtc_c3+zKjhtG z4hq5T7E64{zUZFABYDdm!U1wdvr@41E7^0~;jj9Olw#CDg_S#>xt_usRi;$v4^-L0 z$*XYtZHh$j8k{YVcQx?Ju(c{GklAPTCN8huYA34*XiY6FtE^n+I+$%oP((m& zCvSA(MF(vX?Cu%qX4v@coe$Zx%>LiY%ZqfjHPcVbUW8wKUu`oZrl+YaNwv1iO>zPj;k-u3w4_4Q-%M%VmcC3O%KCA6vz&Rj0Eak3J zE0T>qqWPd1O|?Yk^gCEP^J_TG*r#zZh>r*MMJmM?iap+=5SqlhQPZ8*k%DHzfe^aW)SiXJu zfa|Tju0;T58BOC_KRBkmA|nX;HDR>74(t(Ch2NhmT+U`bc(iiGJRzV-Vwb}T&I(QF z+H&%3?r*YnUTqNwdvu6eWdO~E!7n;*@!Na)a+*sqYo6qKDk}(|>2g7q0xB|*SMu|p zlIUqnd8w;Wv6mN=v;SPPEkmerBG31E<+N^(`H@Epn)GJ&%h)WVCuM9+U)^+^K`QM) zwC*!f_RAG4*p!xbf+~e6QMF($xGE&`isVm|8QuB`4zuMO?wx)t`@|p!`YgPW9)UyL z#*ZZ5i_9g2^G;Ge=7T9WrP~B<(!-tIKECtr9#j&K5%e<_gCt`v-ZhA^ncV6xGl{B= zzL#L?3k;qmy`B(1B;ROPF?U^a;G$*!Sx~)p@{`U4Z6|y| zv|oEi3GYz4#x7>^sWHd#$3o`hqh;ads^j5#BtN=gZnR4EX2{m4&bC5q|HS8=l&ylhnTI+Hvyffta#t8098+Q~IOz9l+ zn7yUH^dz?96mazb_45?)9>H}s=iBW~&v9Ko#&~e#*n+OByEDtdCXjD+c73?i-+0Rw zNfQ_)`D<6jF@J0@5wXbT7rhzwz#WPmE87CiO#*{FX5>pQ&i?KE9x#K}D*gK+&oVvl zj;^#=skMO==WBf!wgWiH(+Ogh${*Gab`ix%<0L)YtCuF;h*~kM$H|Q~pdumF;^AKZ z^QY!?(lY;s@vx&i(X9k}FiqVEIor5K+T13MYrz8$G#DV*4* z#FJuLRV-{-csFRiCh0i&;RZOMcJBS7mI229C~_?as(oj*)2L~Yz+;&7f%6^-yST& z_FFZZKuM6QvuAeFyn;8;X2KT9VOqX!N=9i`p913P7yW_qa7B01lPHT4mv;>d^SKo@ zQA-5ljm?JjA#|=2f}&V37lV&Ulym$WbD1NvQJ6NmDMx2*p>WuI-70HHFaiIiV*6LS z++LFtAn)nt4P8g!5Rs#b<^+EMgw!2cdHYZSDL=>yUR-pqcj(T2?*%esXc*qw00+2; z8K-METNNnlwk_{)Tj44V0lnlkwcF z=}Q!^<2|u=WwU%D!Y<{SGM?d&+iP+@vmFh}UC#3AM0e^ypdBNZI8Awd&H>?iz=Z?( z%Vp*U+&LbFEYO~ep8|Y={o8H*e2}hWb}!faq~g9L=1hzT&1o-%$hZM6SOZn#+JT%D zpO(+FFpbfYy$O_cdG)kov0|k9V0SD1W>7}PKI&iBnGy5Qc!ra;ss?%GY>0nvAPpQ< z;B%>TKGO7A@*h=yW$nuE>xL2jvGxnSu}iBfp1C_a8~wD8`K}Y6$Zi1v)jC)hI0NF4 z2LWhGB;h8Op?b6C?5io@p?T@Ay$#hdR#u*XIX0u_vlSQIKvVt)8H|2UQ#jM2nPeR7<&?guNPSmP-^^R*+2}sZeh?{& z?5aHl;Lp>qq|ZTw%`59`8=F1`#fyL2vZp_m1qpg#9i4=(Pyg%`WEpO-+Z`f5m~Pni z%c|Ohlmj=^<{^`eMs;PR&avd0ulc*Iqb;Es?2o4ch1@I{Hzld(pzU*K6}}&NW5`uX zUcdH3FQYD@OM$JY$ z+GLszMUuf!<>nEzt5l*=+bQ7kn(0!G-A_!xsvF-@W)*Mn&mj7t=65b~R`$m+{{Oxv z8`)2FJ%Pw`SDB;)S#TtRY9|yL?fx%{KzE zn)fNTz6Sw5PewfJ^55Kw{>85`U4CV|wZvgG#8g8Ep-PEE9=twDr@bLZcjy+{(*+vI z+{oO&CEj1PY}(FuTQ$ZUXR!H2ow%N%=SOfzHL^0VKaFD6UjKZ8BF5Yot!wZa@7&lJ zW#GdQv!mMub_WS*^1!snhphss`K0EW5@?{VVQyG2;peWlpdiP}y|FTK`aEN#`m2DV z8K<<-u7Y2Ws}JSWOR@4+7cU$5nge7u!ATw-I=ya*en2DoH1In89JGL--<+AhdhA3w z7&!Shz2a7Bg!&}QRFfJkm?3;U4*h(V(nRtgNOyuMwr1n7pVA?+du)O>DTAn72<=t(|qk^JTGmN%2l$*&!OEFJV&SiDAuP)noqoe{z@e zFfU?=yT2P<-TW1kV+acYIMz^n$*UqB*Cxu_q9)F@p}CI1`f}1Ep;ew|^|Kw)h=Tp! zN=rJ&Ao`Vd>T8PLfeX2-PCWYlc5`2`L*lzfzBbvV_ib#CY#x4Ay1U~3AmH;o722!0 z06X*M=EN>MAxrl=M(*)shfNk*MxCwYU>%~0$urk7mZ_aS8bMCrRIC@P0X<#HT=x{^ z-1KLbMvZTR|C`Vq|!v+RM@g+V!K|4P6v@r@Z z6-N2rhuG&Tk&Muob-dXMKlY$MX(kD=7ku@m)`gJFob&N9OU;kZ`+=e80Gds7NbHr(aN1O1cJ9 zkrH82(x6hp=#H@|h%^WYC?FFlk&+xeIz+l;fUu2_-iR?+@bY{Adaw77=ileL&wZc! z6X!YCb9!jZO?dP?-3xpUVu$_i5NpkCCN6P?dm-Yv%k1;uIriQLm<&Fn_vm9zerx(@ zipG=s%QQtw5y|24lw{zoMV9ehk@p*UA#122FiA`~ZeWiHQgmc_r9M2+)d<nZP2h)5l;(*JKba?V`9ce#(BuwF+wWrNcYb3EJF>?VQ9UMOk5Kb+6G#N;!N(vh( zp*WQ#|a8I`83*aiurM<3vQB%(AFkA6TMN-RB6vr=&Nw1ZS!o-`;uvJ|&zCwOi}1Iv zk_3b1%VuTAi>vq)F@^%O--cevi}E?R03)c9D5D!D#I3^VKg?f+GMJGhOtq zUR4@=Ip6*Q9@Gs-D_f3JE=hI&BTB!bZY+{J^gK%hHONOD6?^Z_^{fRr8FaBOoT}d4 zE@>0)sk5;s{Vr4KK%=J;;NlW8SMw0&ivj}%>i zh>w6v(so`+H+k>czpS|jSN zV*56E{%=p7dmi^hyxQs>-|+lyuk?j+Nf7x7TBMopZ>c9&=-FQ{q;+L})dN>V_bajL zhP<7diPuRy3oX|oYeBa`=k&n7tg2(E;CIkZyT;MB(CAIdFpc>7&iBir3gkP_^&Rc6 z%G0Hfg-^cI{p#>3?~u7UCfejB?g~rSQ$xjivW1+Fh_d*Up&>7O>ov(;~X0Dq67m!b)g_DrV_my#XWq^lIG zWTm55+CAjTgo3>i2^}50m9E79brYwNlyNChhlum@7pzkWloEegUp>=(EwDtMYubNRt^#4WnlXM&H(biP|KzA?os{Lp6x{h1}#Fj*6X}y6E;+Cu)Qxw(vQoR*#I4jTOTy_ zWGPEsJ`fv+>c&XIgj1@ud?cG6dpksv*;L`z{cgmQ^k&(b>MQTEL@U+C8s=az`&G>_ zzH=umN4bkXCPMIg=Y}PbCNb42RY>Z3lr4=Ywu~s=$Ix|V9Lv44e-}8go|s7BTi^D? zAKOxk>r$9PEU?ZW|6ZT|Elkju^0c4xZ2j%U%DcWgBA+YZs_=Ca4@#^O~3?eihP9kVW`FxZ7YDuQ#S5OTS z7$eNpkJYDmx_bLl^Q9W!t2|Eb4q6<}U@B@97hQ@cvZKRkSHKw5+-T?h|4qcYktaEW zX-S?T{$d8O07@l?8+7JVvZ6LMULT0hKir5I75?8pFB&NZkrVrnaP})`Qar&D6nk^L z0ypIcBOGuth>PdduktPJ1mh4_q5rkwpQ5{wF?&byWut5hywXoHByB2X=S%7%P-I){rp%@)-F0X~#;aC+H8uNN zt@{l&f~XHpK)LW!!?wDD%OJ|J0doOmpDiz}-IZ-|6TN4|AbQcU!Y8{A6^e~RLx$pR zyYW=J32VUW50xp`w`hz<$~&Kc=H*LU%$TLiq}zj4M@bK~*MI-u{A{AqdFgY5vJZfv zoo<#iOIC+6BS{X_{AG5bkSG(vMQ(_vbjGv`{Q?Vz8DXHv zhd91Ks>QJP3v*H!XJ^guBlX|iltnyWvJ^cxAGjqD;H<*SATs+`7;lJ*g|nRVnsB^z zLn+}pW;n`Sh<&_d)=PSuxgQcD0!WwSolnpEW18rg7vk{efOwrGPkszkGd%8L4O{BT zF3y)Kiq6Q(bva96z@>}sV|F19 zW~h4gcbT7I{Fs(z}deClMz*n%8^#gj5=tta$pmWJ*#@evOFO5 zJB5+J-|Jm&M?zqQa?W*pQ{I3Mk|SSSvP@l%`PyWtajxqPzs0M2#2{b}v6Y$y6M=VX zz~sA&7B?rYe>FBuDoSZ$W>j$uF{Yhcc?I7UTS{pQ?PAog!0SclfWsrX3p6fr+gSOt zWpB*gP&O&#tuLSW;Y3o`*k*~35{Ppk-JR{FGK0tJGz~p#$^9#1Sp9`Xmp3Yu> zA&pBj@=>?2AnVi6Lf1&bm>urrytnxzhdvrJK2hQll|n49wOjOBluUh+$aCi;a(Q`$ ziiuaOwwI36AoJ*Y)+S7An|>V&5v zKXY(4^OYGLr9$NAI1UK_O#`bLrw<`LkNH7XB~Au5NBWzP3Z?(tlGcD zp8{w)4l!|EUbpPv&Wd`gf0QIsVAI z*J}RlkbT~@6DD{Dh_1`ZHd%0M4k~Whnep;#>Vw6c&Q2omMyN(g)f0- zm%>Y*Ak+7`R7b(IdZ-1V#jG`|M@b1Ll8xQnGHlTMbp7B#BL+OFc}frQx%7}*2=vO zK_431{Ih3G_zh_azQq4)eQ@EA_#TIWK-4f)9iM|)e+N9z`%9OQ_?@cQ)r5|NkcA4=G8JMqm#3JWs*{Fd*LG1`Ttjrv{<^S#P5}2IrJSR{}cm-5F#S97GkqC6-)0?MT z;|5$ZXYgIn>k!D3w;P|cT`y~=vfn*lIeLR8QA=&9R|!nmk)!TxKz;@6DO%47)I`i-x4_HuwCH) z{55ro>mADP%Vjk-c9Ge4A&^dcY0^@uZUHH{`!us6;A=B_?!m#+2Yb;Mr?X9v|7n0} zj1B~O%u+WydS1JkRO;*&f#Lm@DX#4M*>k7(&SO8d7rS&n@9SLlN4NhbIgr&!${6@g zaM`)k#g=q#A?S*xj`d5J3tIzfBf1B#UVWg>1E3TCGuwHe)`8$zn~Omf0Bs)%jZu@Ee@7>Qw{X6HobLqwzUY!VVH94p=GhHKM(-V&(}sd(fs zma23Ad&DJ&yft#SzgF{~r!%-?Bh3vVS{o#{eaZ>d=2pnOc0D)XLhNK>kV2wIx##24 zfyrreR4`J24X#F|KR*{m5(FC@hdQ@L3D4EQajo(ghxeyx)GYJ%nVWK<7OcD`<1dm* z99c4PyI7RQPOEMp!ft9_QRN}<-jRJf z?a~LMtF`^BO?Kraw;l+rKns$azDZ~|&I!MOa*mh7U#3KZII?U>8F)lbwoyfqZD%p7 zRP@XbuRLYFt`994Y(~Kx3?5GDgRlXIhTylb8|NZPo#L4fuK2q_lT8bSmYF~5qB;Yl z`33Hr#0?5o=VcryZ>Qtt+NEe?eBgJpM)<|@y!#*B9<7@uj6@EvsYA!gVWbh=c3E`$ z@CnPDhRIUDpLb-upRCnxn$l95mm1av z9-{Ia*Vhpu+E!Og4Be3ulK)E90$9`QPLHaZQ0}8>ej`^Zut32aPNW8fm@o*~NU^^4bLQ=@VNg_F(8OcD!t zcZq6_hQt2-PS67~BgJJ(lMebE)in7MnSH9q@<{icp0WPLhT*Wk;ALP`l; ze1*YWVJ{tSrYS*;-+LBDq1*MS(X?}yjalC@F4|nWifc*lviLp|EN3IVhGe;4v$IRr zDdL1vS?46~?IaMEh}IJ@22wOs^t(IkHi2{7Wuotnr`VgvzuEWfR-WD0Xd(71a&9O~ z6!|3P1{fl;+Xb`ttVk&(OSAQE+J-67C;FM;>}+b$dOY2F9W#&M z2}w6=@VqS}+N(5+eSLVsu5QiZWzJ&N5XrR8bGsc*Z9%!o#Gv@k0G>f8QuytB?rxl7 z{m;DD)~bS+$0g$nGv|+E2QDT$xwKmH*EV>lTE<`Gs%>GGM6US|kVd_ptxm&j1`^F@~vL z(z}(kaRJBRU%%k*su!5jd^jP?Iy$>08A`E!X=~ z%&nfQwmQnrVfT-}dt*~f#$nS)r(a~f?M0ND!k&aqyoFnuOX`y!RSM;NGFOx^b*%-w zd)cgv+iTMWb@R+#wyvW5kts9PuaX~zzGJyHD%4aVA$)CNjz*J+IPmy$Yn>ll@7xVn z2!?2G|4M0eof^Bmv#s{+&(BoAJGxd8L5;0lhqvc;UmpzEgx7e*5G?xIfzwHOZM-1I zamh@V$v>(*sYnhV22uAN@zQ<}OJ#i^YvOoCnJzKq%R(~h300dKiE?w8I|G_-jXN6Mf5*7~=WWjEtaYkbLoF z+60SkMC=m&V?%x*QU4GU%jsRWvnkyuC7vT7td&t?v#UQN8M@(;xRs}H{W)I%~teq$IKS3#oh6A~sIjlOf4+u1@a1BA zv6voB@f736x@mEFNDu+z;5HIe{Gcx^Eb)1*m+YFW;=PJrze%{BB_^mLe$P62-g11e zuBE2k$#>zgaqLm&549D(Dk6kYbe`F7{ss%x*TD+j`5fxYvUIIg-nW1hMdP@I0Bd?w z2>*VkdID#ITc0Q$+cX*q?mVB}COn-B>Qoh5%iv4)F>wW(sy~jzTAcyLgED)AG_R7l zaifU`id8XC_41H-8=ls_7;wGY@4I8w<_z>Dx0^IBAMF%6o4YLB@9^;@S^U#|tI0(Y z?uB232}73XVG{7JW>VAzDMXxE{N5CKR}uhI5zSE#J1^z$}Mu=5(XF6t%Fz}#N`*a`F z%Lnc_?swahOmW~C>pHZ3MZu=EQ9fkfz&qGu-0&JMlE*1f(0#Eo3I~b|MuXz&HH6KO zlYh;dk(rxZT*p6>1{ez1`Z-T!$!?T8q=%R#VW^aiLu@sv#b8<{TZV@e$^2(;uaF=2 zJJBL&?4gg^vJAm7?|{Y>gR6>G2I0Y;TAg9S2|#7V_9O+4kgz3ii_PFV^L|G9#g8X; zabo+vhlQ2h^Y%kcc>D8$vO#m zwWUG1`@H81;HyPW|AQAkfPTTU6`AW$(PKv_pz3jb@=^|~c~d&T$ZMD;sjk-WkGl~4RsVUVVK;pZ12@9^;q zfIN;a!F%r@ajcr&95$rt{7=`vKl(Lv+e~S)E;VDMivf@?_@mrWr@*WK-R8_pSc^WJ zMPLiZ7SaoR^y4Q*sGV>-$3L)SV}H>GeITmM>zTJse=;*tQ}os23=sZv%b^H`*OiHS zo+nNHbTm|7pN!qd?rXmok80!84ACGriRpb@ox@F|X*zRX2Tenqx@Bsx0khZo zn$IPlEl|kcg=Q{}>4%|${z%QKy_z@qSw1FVuWHX>Pq}_{DP@gUHnU0qqsO_jIMYj=^t>US(_4$hI3;*=g4ho8|!XGE4%v5d2 z>j5Rl;^zOhfZt>_p!a$`88fjOWdVsp3;QZ(0L^+%fp1NbzpMr93zp9SSN~O03yked zX1M%XiWc%yaQ$J6c=1SS=))hqB^wR2h@RcjUcm(9IjKt8POA zVehzKSC;YUcvOku*}bhP$J7+sy>84>(y51a9)g-*{MU%<_4V8OHv|aD5hT$qJF{xG zfVQG~*-{}ZzjNH~Tbe`l3IlcnNKkz@i0AE+YnklQ<{#w}!vcV_2%uz|vkz}51Lu(p zg;N*HmV_M!cY*M+uYV^Ttvn$8HKZ{UuVt_)h z_9Fsnhr7bf{tjsot3J&A%+A!Hu~CL|`}H+1{<8bV9kzJD_9fpZN{R&%xsu`74@e;w z)kDf1vfIlvhQFH(;#)gfUv?IDct#x!Bc;FSjJ!!U)UR=>m6wwj*d-Re<#M_i$EN85 z>bYAc@pN9(@QdF)v7Euc69<15CwS5&|LZ-_mbY(E5&;()playMg75t=AwFZ}>t2iV zkCF>#E}9_mE2;pLXs5g_A1bNBNh#=LPnyqxG3*c~up;Tyh5m1GC=Ldz186#tU0R#4Nd1W1&AP<<9^!r}2G+ z$~et;ABF-0X0I;ZB?DW+c9x@dH6*|~q!OYxw{Gb`Ma%XXz%^vDa!i)SnT|UHa9eK; zx_Y~^q|X1@dm#{Mg+LbZE!?{0$rhw-C7S%ylkUxmBg%FY>$Or4E=+iZDtOuFsxPSy6?Zo*6`2#9U-bgfPK{q`$eFtYH`>*dr~kpa}g z7Q%f8wA>2fJw(N!Zcx>*iZRW`}ik; zeMcBGFZJjE{IfRCvDv1BZ&B}J<#HJ154PEXBw?|=hy}exm&61btmAF7b!yj`dFw(y z#yxsL`K5{z)o8@EOR$TTIObgA4isH?n9IVt#sK*V?tNt2S&AX1O_TH0Ec#wbLyu3$ zBdf5(t);ezVSECONf2+dj7apPXbbnGB<1~=wkW_V|19mUXQf|>`#>R%cP}?8Id^ug z4(`>Ibxko9Cz}6#R}oUC_c&b(qSzw9m85%6d3@u@6UbzFs())E77a`MEBZ%J1Hbd|Jdumi(!a%=zPjA$8>SS-*_flTl zIVIBL7aERJzFX;67AE-Lp{{J&r1>u)!qyV)G~F_I?FWTg2yiU>4&5?n4hw$YE??VJ zk8k@@Gjvf|>BC9&;~SnmZ@fBKCsjAq=^XA_=F5IxM6Qqv8ZN;q;GIT?CyE-%mQp_X z;tk;;e{kOPs+8v0m811IkHh&rX@l?CdVWcDi9%o!wtCIqM)1b+x4DA0ME91^m8h}! zc$X7Z$2W2s_fiRcxol#e!vYuo{y?SFrOSI|%lUv-zpiI%Ba-p8bFI?WVK?;v%6gP0z_qJSi%So{vBZ zpxnc&#OXJC=W~|s&m9A~`qq}r>aFrqj=cwdIsVru!>6?hnTQ@4Pj0KV+o|<@p)T`s zj0p=3K@mXS#5bK)k9)f5FTv_h-Oknc4Qgc(9uZH`#(=pYfVn#!e&&@d3 zh1NbxoQhP(R*L(HFwyDU^7v3pspU}C2&~LyQqVcHR_AQ*`P_bND#QD*F){Unk=h0M zDGOtQD~-{WV7d(I9@@L=o~d**pmD}#OFeulbHCT7KrddOc``SzuFk7ZQPq0YgDgs8 z%p$vPs0sJ8Ckovr94Bz>Z=$=_EQ`_t9fLTtm@gagCNErK04DmV5FF-RX-tD9ln|1? z>oQfmYfqycQJVBHP|!p>ZI!qyWYvXp8!a7SD2Dt&EyoB~&vwI;K&*;M;k}oao=?v# z|JXPf-v4$%sYz>LwP{x(<2X$=r_K=)TF5;;Nx@f2~w4|e(Nhy+tZp>Bn zlx#6-idB=j9|{+3+X;8`Z?<|`@bFd6^PLD?*vuKA-X-h*4myy9@h#RbMIW94xZLdj zOCDDkvWuS?|E6EJGx(z9+Dabd&O}>nf4lfJkb!)Wlwd;O?n$`-)gmah73yC22Mhc$ z|8MN0>f8+{ug?}21qmm8YIL1e8Pur`eADGs;tif-r}O2gXq5GuD7mUdxa)K#0of=U9w;WEiAY+WW*^(>dijRDDVT!M8PGKX2d7y!d3i zuKK41KcSzeALkHo9;|{SjDF7TnoJT@qSBov@^+}T+S)*|+);&hZXaQr>fivIgtG>O zd(S~E-`0gQR!X-j96x2DKlZxem`8crPnsQu;|)RcEgcRFFcw`5|7w;lL8|Y&ctg9* zL$yt&6+luRw}|KHgZp9epUeXBu*1N+6G?o#6HQy^hTn`)lZ}*4)T)i?YzQ;Vt5Gxv ztlsw+ZtGhHUy6_F)A563kw9f3-I(>RHij;m82-TOPkCycbxNKve7NyKL4IfDxqdPr zTSFDcDc7;=F|*b;(nDIz;+b=T!p+PZ{?beSpz6quYUP?!Ev%C?c}XtlzxvYUI3)7w z;N6A&F9mDj^TJ6!vnjPDoRHT67^%BWwx^@ZtO#OWiTiv;{vQEp$Uh#enQ`*;!R+=j zY`oNR!4o}rCH76oic9;uxSCIg6?mmu3EuER;6!Swwng*Qa*ay1B~H8;7k|hmW1=rS zWY}NiL%TrD2PzVT`@;I7ivB7zzmH!P*Ljpr=)41F`ASG#urS10=2+o(R+Nx%=kQp2 zg+|-!jQ1YA+?7XkwWeUQwo?kA!0E#;7P>Q4g;NUHAz;;=RIlk1pYEwVe{^l>?X2cX zJC)w0&tGCl6 zhmp+l4=&g)MRM&`%jnjnz6%Rs9X$&dy0ezno)=}DP=hL+plDKmKt%~U zle!Vy&kWXPw$Z0oKDg-Nj7JF5dK;r*)A;p%Plle;_vsLbLWOi)+Mqj&c5v(nzvd^! zb>Yh($0}yZHPSKGo7+uU2@m(~`guDqo=aV}Qyo^4%fc2Gw)c>%V)%6sGoK{<+)^3{ z^7WPURIr(G`m|c`;>yM!@^j--4SFm?kCZ&7FNT``!*KP%grqFSKp{=G z>pOj#{*D<%f^ZLX-Amc6@x;LtU`foy&kbW993{`*j) zfqyVl=~r6G_oK@dAvWhGx{knXPzE6eXLhkmdA_W@N;x?LSXx$V{#o|7K2ZOcIAvZh zPf;c7lY)CRZ_gZNgqPVYUKY<=m45O13=q&}r@z^1E_@L-{r4K_ZLxb+W|pZgTL!b; z6PM_MC8jgL(BpxVtPLyN^3xb>URx!EZ>JRxu@1<7-C+4xIu%vsn#+=$k%A`^H5>55 z?fI<4hSTVxzK>|BZ~Z(e14xfNu=*$0pq6 zwv$I1PD|1yC9HD)rCy=LT4bn#mhrVd=VV!?a^J)| z{r<^?2c|n>JG)0RX?)~=5Xl&q|X#&o71OxLXN6Muu+pQnG)kG0CRf zTBuhOevfL9c?T1B&oidt$USa4sZvI~^ZEJ1m226*?v_6*Ro zKA^1m(1bD3M^A&*NAof@6{?QkC3l^^PZ8ic?T?YV6q|D~;ZrQ#Ti)d~`P8w~Sx7lW zCixhfmyUh2#e$B=ZK%u#%}9I*BfpsO{dm;OsKaNKxeb&0*NjN=f@*Mfcs?JIQL|+F zc`vU?lmV|8h4DsvcWFwK-Uee@`1j<^>Roh9dCh_xS~;6J?j0_%I<}Cyy|J;b~^o6-;`bY0u zrE>8`1KwGUv&sZ^-Q) zg86{};CX(D^i%^qCZH3+{g~_>*LOPozUabWpoJ7}Q8_5_hvR_~YIu{OK2*YgQuFfv zKI=kt2_-R_Od+-1L>N1=6<_8dRetho*o%kKBeE_kp0{{v@sZY#z&~#jCAyQu9WiZM zox$j$-ZxCMWA}e2r0Ku%jT(+{AiK?5Ey9Kn915-a^7Uo5x8;Cs2-#7GFw(go>&FRS zK$Eok|FRK2-me&q^L*xZEbM%MzM0e{AcV-*U=35iJuz!4u5t-gY%6qc>_z`OW!j@L zmtw9aRxE#U%RJB3-*2BB(?sVRK=)2!XiVZ{7%7-IFcu&oDBK1A11|hMDt2(y=|vBr z|C#?}gW7BXY*M&dypsy&04Hgd**LuzXO{3?45Pw=iV?>hg zgeVh#66((Y(a?vb;1c&)u3|fBZQHWu<@>6mRYq{2MI7`FNyeAJfK^H_T(HwEeE8ky zCv$0*hmUKiYR7ja%casA}QC>hU>)}(y>)<&AYiBq>q^OM>Kc0r+&gaIr7_D8e=IY zc=uh^6whC^jvFoUJEy&34HPzqvMFzP&j~kChnf(`j>g$eODa&G3_YR!s!tqRbgy8sAL)QADsU&Z=%Lp&=oRC|76i2|pxxxezw$A`H zV9NCkxHEe^2)%^Q31R4Y7LjLQ>UwKJw^dIm&1apm_7!ijgTOe<8A9#wdp%0Zsog?V zw-$?wFr}i6_eGVU?O?$$p$?0SKa2`sqmDHSm`i)RAu|7)qnSd6L--LFwuEj?>;yD! zBg_nj$zog>|H!2MG9UlEju}vY6-gW(1La*#AsJ{2k|x1~+X*G^jKvNWoqDdwFAMkH zCNCOAFwC^T1QTO>N$!4g|BSrH8+eC+d2faYhAd*0j zUFwF%!I-Bs`6#^jFUPSmK*wN#wY4K?R(+#n@RgXwezNXtN!U{6x2(466b0+LV8wdj zIY^I^FryTWV-P>ueY(~Z$h4_sFZur8#|GvsCVhT=QPI~bBKwRN+CQAr>gY56*!*)0~1v<5FJfr)6A2X=Fc-A*t*?(83H~R>bcJRAB{yb3)&5Y6b zEGb^lZ8v>;w@}3JF@+0dN1LWL)i-u4Np3Gc6~?HD(FD%`e590~^#Ced*!r}a#?)PY z2JnI{!B_R#mg^FnH-AUYe~IlkS}biG z*vdUMEr>4pc&~I&h3T@tJz-gfbQ{&@5KCk84A;j?*ZUW5a}>T8d><&PstrV9vJa~q z8N`r4p{vE<&o%8|1FK$BlR+*jAU9#5hMe#23E$iZeNN$74j(`0SZFj3`?b?ib6Q;q zGJTUI@9uWN>G~wU1=+NbiMirbr6V!AK8a1l9|R8cuKf~Jk>K6!9iPWJou39Ny={}A z__#ej;%lf>3xn6HX(#StfH?2-^k>kPgwNOiH>)yhSt@9Acd<1T;x*ne@z{#E=jA(F zRmD3DwZI{m^_Q2f|J^uX^IUaiO=+hS5$>Fq&Ad-v8z2(COt=8k zl!X{^$&06Epn8T_3oLt&L{bp5ibwgHCFXJL(Vu+3h!HukUxb7J(7m6Oy!u4H?OFyI z2<1!1aracn=m$Y;_!Hh4lzsSY6Chq%Rk00P&Jw!RPD=bMd@gBDd7P4LM0 z=}&Ikm$hY}TpuFl)spD&dswch($_(!^;L=3hMsn>IjOwGxmf{M7QK-xpgUDcP5AX> ziWI?Ai?G&K02w1)w?@f5l#|dBT%r59bt6VJh>myta)$YHb14R=w@>aJ>oSv{Q@C46 ztT;QH?qCk7o}hhMWTSc4LVp^4iet)ezLVVp-83_DQZ5#y4O%V-)r-G@yMwQhl$J2a z$X%#B2F0||H!NM*l~eIB7L2MxGS|I5;4qK{=CWrvlFUo(x+Zi>Py>06qPJ(5w+`2u z@BXqaL-;fUH8nUkHEQnNNBi+}{;>)vAe(epZ#@USMmJiGc?KMgR)nn~$Pytqb3D*q zET-%9Cw}|)pit4R+FNBAVpqjP-8vai?kn|s7wt%|4z`bHu)HxI>%onR&|gIQA;lDC z>=uHS}i674i~ zcX@5{FTRLW5m~EiWyMuEVoKtrj*{3;*NvtsY}LRQqpkEd259gk*az4s9B&SKe+H;W zzIjQ4lZ{>n9iIX2Mo#urKPdBsAhgIs*`%4A~>`DKSt{ z*J3ea^afh7D)qv>fKij*;c5EROW~j$5LxJTvv_hKb5(TMEalc;-h&7A&X1%&2?%g@ zjL8298ew>XH(+Pnw9c%N^eo?%mPy#YD&|}$wSla-Gi5T(*LTgjUFJG~KK@NnWRp&g0u!}ZI#^RY)BvA#Mo z986wxQhO`5^7CWEWj~*68Il_^&OVfw7t}g|YGnI;Vozl!6lrIDdkuIjE&wMK^sbeGt>@~#9g09mP zHW9pVCxoy&QLR4)Hzi$tx$x(`6LjRwi_n5--t|ORfy1gHgHOa?XMpW$-YQFy;5T=~ z1(B&b1efJjHmo{=C0?>pS$EKc^E10w*r{-Z3(22o@xQKv9Sf6sd_&!-;m`-1z+ zYZd+Ea8ew|=}tSl^+vXHa^mdH_rhG z&(5~>TupM~5?^$0*{v3*5BGas?6a>vBbgFC2{AqDYf;^5Y!z6BB>Lu!%oP9nE1Qp^ zQu^xF9{Xwe9}3eLqsYd(_#C1W;c{v)M)=CcmM`x}Nf1l0^*24GRFvuqx(?<CfE&m}*N(Ic!=^yj;I8^!b#2V{&9${IJu}?b%4b%R zRg*ex3CUknHmpx$c4n~>V<G46L7R)mzpu*q55)amh_hF2YpCD zz0Y}^VxFQk?)0lIIn^WczKVv{mB?L6NR?3N=d~eud1b%QDg*EwGd8eeA&;Km80I;7 z3q+RE1#RaOm>2;$o$aF0)yMW-+Tw!Y=C+UwkI+{3IC|&z>ZP5PDVWq+P2j{x;e5IE z{xu(mFQu)QK^fkiWEs-t>eEz`gJ5UcGB6BH9`JlofM(A8y(75M%kT5B{ z-RhL@e){IjW_2e(w9yQAk`~$sQ@Lg$fwSaW%cHSqa8`<%l$o7mp0Ot-1B${ z&Pln@LB-y}L7sJiYN6tvr}bRfuQdvHD@2#z%a!(b@hNdA&m|tiWsB zer}p2%i8lVt3OZgKK}i~Kvq22|E=wl-@|-+i;c;J`w&PMO|B7tux;9WTh)0Oa^<_W zc7TL&vscmW^z!ndCTmq?AD@T982c}dWXF)LZflkqYj7ga+`aZf{>!ObaiXSEfO3hb zbepk~Ps3tQEBnP)L|k%$e^@m{{nzr~*pOB=B*-A>-s^OH@893MpCJBrb_!YYPuVu? zkgDRPgL@7x=ek=4N=LB4vG=e-o|Du|=l{_}@D*7Ibzmv))K%nF%5s^P7tG_%{GfnE zuMl4|vZl%LJ_{KhWJzfng|(IK?vcbSI_EUyNyok1*5W-H1|7;mf)l-~W8=xv^#K2m z4;ux4=;*KW3f0+|NVr{wB|*&z{V70mvRp`1m(U%84g!;sn3erFJLZoh+Y=k{zaIG_ zTul8U2lMTk4F9t_=`bGB5&qsmFM2js@rt5Lb|B*wA?vybYFKh{8EyD4v0GoI!=OdPA$-ZPy0$ zCyBcz7UD}OGp&=)P-Oe^S)nICYWEnE0f%Km%2Q&~P`6UMr+rpl(oU)KQ<=aSsPog! zQH11GOSZz`%7H~~+dmr&NngnDkyA(jF{+FW_(I-_Tp%4t26e_#q__1K9g=f$N^qpugMKA z`^z?~0(gmK)Z9T|J0s~5`9TP%M^j}i%X&Ou9;30EeQ%)hjkD1Voejgq(hil*EeA{3 znA$mq(nKiFr(tRo4bsN)7w(?wAGRCT8pBO>*~7-1z}Bl;_n$rBzwe`}2%JqCv0ma^ zI@EkgEdfdulN^cjNc`S=iq`j#!GPf>%>JeBZ+fMsJDk}nT1Z+e7eYFARY9KT$>~J7 zOUUU)RGa67Od3o|9$M|?>!W8dR;>#hZWvEjdsg$7Ist^Bui`W+E zQ)~OTlcOU=q>tD90e#8WQR^c(TAesT$|pa8s*XeDaVf&?*$vUfHA9!`I}FR0J=s1|ICxTT#e>EZ_blo0y5&GMAa?s-Od zDP%G;ZDilAVrSs>tCV|>q7JT6h9fF44#K2!p7F;Alh2|4ax~$;11#5jjx_~38>95* z4@Q_s*%5ZZ%aHXmz#NFir0j|(V*}Sp;g}uGHT3?kaD5KT_tPAg*FS`=SF%sUJr*>KT$QM?Laj$b%|R~f$U47qu+u4BHhBsvLx6W7uDPKu z18?ELmq=aS+ci?d8B->bajTi4p(+g}$ePDu*FNfax1W z_+%uN=(41*3~J~egKb^f4X9B8VD=^2)b$PcRYm3m{_xd2^}E0Q^slz6UgKsw@L-L4 zn|RzY9Im@PPskjZB<|HtQf$Y!SdcYV3$_S(=XY8nY62@lxraO&YDuBqVslBl(qB^2 zP_L`rIpBYT>e%Bc*Ke0V%8L_%#+c`ISSlI7wgNsne(Zu}@zX$kp&wf{XpJ(8*Ja#M zj~F5_1TVB(}}{y)NIs10F@q;=?Z~b}$dG5jpup*WB4D;maUryRa?d!vtFt z-aay5Yv=B60V*V;#Bwg=!*z<5pc+2R_<5aM*}%Wz+*JI~ri-$RjV0*b=+u!!0{P9P zEV|_0o0qy{7UfVSlCN+tdz_l`yH*XsHeykQL(xYAao*q;U+Moi9qq)Qnqq?~97C9; z?xk1@A@*5K)qk48gx33#6K+U8k1|*K8t*H!kGG9?ee^_`^eiZhE}AfdbaC0vVR zvu}8(drhuPcOSI0Ug>IqHqb!E@6X3xxYeInkux2c);lc8~V|HCME9 z7>M;=UH+w;sZ^=DvO?$wI#6>#%L#c3r1f)vnC+Hxx3)`8#}g0d-NWKsWPf+YGIH~Z zMT_UYU<>UKm*cKW@n2~(z+Mc_w&{@4bh-60_od1|jj~ZaMh!VsT zvM`9)fCOY?bGzrw%7Q5ag&bkOFLO*C96c|-_dNhW$H}e~j%sQy6cT~S8Q6Aiul0DS z`0Ycj$g;A^^3m~dNN`MLMgH`3Wr3Bb{b#|0CtsR^7_|+(A}k2Hy&zUifO|7gO*uIW zOHDyf*la0ItX3xsSeQ6+sESK|O-%kI7*bJ%&LY;6L~$Bg`cpuLZ|>HDxtaOWbxmW+ za}EsmD$=fu!Zg2>tvbZ2t)+xQ+!g*kwqS}HMfa3y{+&+92Sb?kCQe+SNyQG0m!!3C z1;y~pm(D?7kYX^45cB%<2ld%{Xpz|qP{Fid<_=tm`yc8jicBH&6=@uE24LTUiPqya zzHGmjFC77mFN+DbjOg5Gpc8u|pBLG>)T^AS9K1yoQW1J-94)nDZOvBg(lA#3SMMG? z6!l$bI;f^bqA2y06Az{_&J)->K=rq?Do8Eb<4|M#-w}ULf4C6JtD(%j+pP&}_wNFw z=Y>#r8fz$f68!c5>Uh<`JF~bix}9p55Gg>Ru>~v3-e4b^t;v%&3b9m6Q7%C4F1<*k z7JK>;nBR_9?7iTllK|q2$G2VnL=dw7zkv4@fd>|}sM zaq;9wqlfa@P9=sE)&Dkc8O(96|8}E@b_=$FYKAfpvn0#zjzB8lb6cM^~scqr}eDf zk;*TsMysC$*adcVmo+bcM?XGNTq0z>pN#EtQnciEas!>e(72_bR^$3Cjy3TL_e)c3 zxk_sapYt4yurB!Fzv&I%-&|P6{N^;Eh}m51u{<4LkydoOa%t*>=5mnkg4RlJW%76r zj(7yx?nurRgr-Y1+41+EDAwQQEhCc)r?1h=nq6fQ&g3M0i6(8+4N6E_lq3k>>CFaH zUyrW@N$8bi;x1$D2Q8ltbOj$jQYL@e=>>(nnh?bw^PU#=a^=G3LrhACUiF49hQODr zHpZ7$N`C%m5X-7-&SO%LEUvxfI(pfMNqm+yn9X|EvQof+Ci9Ec=9r zKl-o^^KBl?<`%9wR5YaCI94qmuo_<;>^0-8{4?_+k;g!!Hl-qBQ})MW;HTBlylocO z$2lMyYsg6&3ZS7M&@D&ThP-T|x z=CTpn%FAKe92tlKe9+%Ve?JC?S2Ujaw8+u9JpAL&K<>!Cy>9*Ln0<)Xv($xOQBGDW z%72+>5uHbg!l^6jHxHcR-2|rFn#qDbTMV zvVrB){SHt~3C5lz+TB!_mzC;R^IG-scaUX?7S4fgEfmurey+4nCJ+&PbZWnf<^OJ; zh)xA$8J+fe?VH|v1UV=u$M4c!Q4Uk>{CU*45>3;E82y?BLHrQ_%hF);xHGGPzYDmO zDix~Ivt+EFD%YkoM(l+q>A@&_PPMSp6BkngRT_N9z7+`D{pPj1y?4v`Zd%}`a__-z zWj{pZcQ}z)IOFhrsv^(B@W=SfAwU~9)N%p&)t321)UEJsj@JX}Q{FL*OJT&u&#*=b zkmhqXAEe0CeVxR24*GJQ9}6AGKPONRn5mT;b(RUC^1ijWrd8!yWfmEAmAu>9-8J=O zdbY)86ht-$p8F?)B$*un=o5I8SNz#^zgY{$l|%~@oX1Xuve_x`ffH`Fimcr=ldp$MEjjx&qy$^i4XBtFj=Vo^G8 zrIK_Weh9mW9M2D#6XCgfYWTkS2TND9=tD{2BO-ovbrZX zW5Mz?7a}%ZH^jv+=<8IUzmmu2M~~|btsYeGhh3Fke09yQ4;7<(e@;i~3~lqlAf)yQ zI^VJ}II_EXM!elxDl~7^H-!W(lmP#?!^Oo6IML9Rl^Fq73U{7g>$j{f&J7pu`1r6# zIOFE{R9#GGE>_x^Q+*%j_f`M;*9XSZewy3hW#<76o6r58Np^~seml>!^a2No=>dF{Wv>^n+!I!P4_%FJ#ZZPW})oQ8^&D zji&A}OAGN3*GjK#Oi+-@%ASX~Op{J=KJ&XJ7&C5@FYEoW-v8zoJ5i^nwT^onTI@b< z14|cDk~mIs?gycAE;GL{j4HQ&ON8cUR!Sj;BrXP1xe7#o3{0Y)xsiYc>_zEDe=H>_ zud%fI*o;-MRj2Mk#2ZB2wlDJw{8kZiNU%i9sdkg*dI;c_Lv2dkPx|ai)h7W9Z$(DH zQ@yZO*U*Vt7Kec5Z4HASWvE8}q-qz>8MR(k%Y9=K_dLIMYJm05>5==?D|%nRX^P(% z{TFxowC09Cr)RA^LcDM$G@`Q5!~(bpCj+iHDn$QMWI1WjbyZLWn`g2g{2THtlEl69 z37*jdern8CQYRh+FMI~jS)ib@c&VwB^SXDkliA;P>p|SmJVuEh3p%h5#YX6o)R=>N z8}OQ~QuD&cVZ#GOqT*jCyjmf*_p2dpC?2!Hg?(d?%bqu-=F_u!AVE}H@ilWq2vllQyag@g+rWRdUrwS<^L=x)l!E?0zcwP4*H zCV&~4w?v?RCC9rR7^R^c!^^s?L*Ks939-OnlzW91x7VEhYo4tp3nUY9XK9EP1h>1y z35q=az5;V=mBUkI<$5teM)bAx#++x5)_@V1lNpDEg+b3D1||4LbX^;GgJ1sKf7T`t z2VW4LOYh)JY7wD_u};In=E8Z~^8igWKT5$}%2IM=zxrx0!t<6B@|l$Ex0ilDfETWt zu$?U_`)w}b`H(-v=$bj=;i4_QH_<_wMvT=J#@ZJJ660SObRn+{? z=B`j>RbfKKQ_YE2FW4Cc!ULB4JuCS0v=3h!HoSqdn9moRl_FSr(I&LlMIDv)>bp6D zw?X|nFCGIWK~OUPlw1Lq6Sf6`M^|%pZk}X#HefeTC@iU@MI^jIQ zitn7U=5HVLcPxfVgV0@rwTG7PR*wiMSO{!ag8W||*B9EOuF9<|O=-+;B#TY@w~5d$ zPX^=+-awT*u9%Bz!&^`8L*-IZx%Mu%h10evs_oX0x`x-g=u;~;+TywIYBg}WP#62y zpf_9Wi;4)3?boEN`-v;ffyyNs{vY>b82s1{8v)R{U`DkV5_Jv%0>O58>mNhF@fYE@`IUe1Du26#rJU0T z|3EDjP)nE@yWVfKv-*6)iU@|mxWDS}*RE(j)d@Sp6tYp^m##B@_{fkUPf;S7W>zHc zXC*4V2ppg?R;mhB&(^kAw2U3(O#jN=l!mrSF^`qodHzaTi}LWzgJ~7GonjO>6Cyxd z-fhyfD!h3^u)<=auBlGUg3xj*BAs7)#LFSTWfjCY?`PE5EC5_x)TraNemh zW1Xt|lqg6YqFBCvWKDXK&c)(!X4|=lHb&1SIGv=~(D_+Ef96S3GT-ic^TE#GE_MWo zMU5Z7arehhdRiRKl6CrF2=TWKwH<~#yJ{U;RJrt#ucqHq`)BNBThE_6l8@)Me~0XQ zxD5Qg1j~z(eXw4@>9;U*Y7BNd;88IwdfN1*a@9Pzx{f6}N(qKq&3d`i05 zXZhxrhJJ+e@6KANG8b8mDAxrr;|PCbg45=WN{FpNn4|Gk644xAe=4G@cY}3t_26sI zl4V1Vg>&DoN?NZ^U`6*BDZ{OJUNcU{6;5Ax#iGN*ty3jC5Bs)|c+`QK3M{YSBs zimxKEL2>C$={diyHBX=_C57PAOH|A(^4dnXU*|JY5m8BW=S) zy^7}_^UJqZ$L-LOG==33g*z1pXiVXY-tqb$jIA3L&G|Ih&30x$z-fC0h<)n8Do5Of z#pLuU054A52%Nq&h8ei$)~aU_7jX6Jx=~D(4+3aj|}w0eVsz98lpjMK@_% zIV1M>&0<(SrU-siqS?2}>Zmw)2z;;UY*gj*Vyvh&BH5FCa-l*U~o=m!THpSkyA zKXz@vlI_6e#X0ZQoQi}8He-s(|J{0u_=g69FJNH{5Sp2^H=jan;ESP?60Q%O=Pr0f zp!IO-B%9yjd+oqePDX>BeQsQmrrU}DF`&h6CH*mNtveO*>)Qk^i1;GerF>R0EQ0Tz zr6?vpH|>>$rbh&x4SkIU!d#coVkYjKwGy_TvPzl}C-q`@XOv0947qr|B2B{rxLAR( zTDT2e-Kn**{$r$qXvMQ1t1s(za%79u^)yjOf$^f%NDg(%O~ue>y?WnS+F$p$+-kgP z(*zNvo>72bI@BoG1Sl7Roe4i@#yp~(#RD6`Iz)OJ#2x(N34Z)`Y&LDHa{zu=y^)W zIdEvMEuL;CrzY1n#eVIS)>O{3bG~cFQR-;mj9JAan%*gbvC9%qiuTl| zxl%F{A9G@w0^?qJX;0#~>S=b|(&y&{W7`QxhEn%xC>8|^{o;ORbz~Cm?ea&3j_|Tl z_L+BuyN_>hO0>$!x##y=?S_iGU_6~MA`hd|&Y{FRC-zg=wOrh<$6B#v)|djwFSM>rjhBUE9+WSmedE#qAH{-@{LBGLgSyF?9xa5zM%2F z=gFC=1=23^%KLcp0*0T+U;LXVbdk3de^t}|<#mz>rxc+K6nRHF^=0EyzIv8!14bJe z>Dl5&;hF0G8np$h4)DOs2Yr}SPL|#k^7{EwZj8m=|J4C5GmNa4ZnQ6&eSL(xc9f`# zDzkrmZJn-AyyMhR$=XIyO+nF%Ljf^`SvqBG%+Ks$K}w%>DO3FaSc;>-D28Y_;#^g1M&VQV{BbJbuVz5oE%-VqMc7N4hKg6p3UWm=SwW@m;1pQ&Be*G1v)iH z3(uXC8&KMX#u!smM%petT4}1oN2}2f0qX@~eyj~MY0W^}Wb2u<9KW^hu;OxxnN=&E zA?o&dMcch^zT8wvI%{!Zef4W)a%KkPT2*q#EV$KMXeQX(p}Ou3^D*6l$G+Ot>&pO_ z@Z$MksjQEVvl?}WfIlKwWd71X8j{#;cHigMH~Bob7rp;PVZhME zfHly0Gjh2@a_64NyZRx9vG?_O`J$;SVqO-1zi_U-3$^(JI=|Q!e=Esc#;m%nc_xx> z&mMQ8<5FLTrce){4_Bhz?uM*=IEEr;nvIbBZ8NRMlmyBdGcSN{?JOi;pHV|2%TE zs%$~Q%G{IELF3QRt6nxL zNmVlM5mT6+N#jHhe-LNi#Uq&K|0JURYxPJ#p8tCA`XzvlzQ87#FozHZegBQ>nmJ8< z-*Du6`>`Xnkm!ROS@`=g+J^vF)x`Lgv^Nj^unv19r(B}<{Cy2*6K+7II1tnz-%Ja2@Oegmh6shnRyq7{RuUzsm31ojJF%F2^-}ReGZfyvfFK| zG;=e{)xS3ft$p#ow$LYOC3ner)x_*pi>(7Wdn6xWWvg~bBcpf!l)c{Tf0n4$P&~FW zbo(yNWBVVk+RAd5V%9{1DfQ)?X>C%pSID}mT|S?#4UBkl2dQcqwKs6xX_*DNJ$;1}Z+}$eCdw`yybLO>l=@XQk(c`2qw>iw;KsTO~B z?&;LD1c!b*TVo|ufHfpV#P<-^g&3E|4(z3Y0Tu7Jh)|7U69+MgbC!4AGqFljr!8or z6h(XCT9d@0$^^T}jZYg=N~h}yGn8$Tv`gNu&gH7w5e>IJO~}L{;66U80ku-EolzN5 z=IDwyFE!Ln=p4R#?&kN5zbcwLa}S`$>VW6lMK7}gB{GCj zUwfFmU6K1zU+?|TzJ^69pA{$h+LRTAWy-sJ;Obe>L~E#q(F5FzZ!>d66!>g-lM z{L;#veI3H(h*2Q^pa=>hh*F$Sc@uWhf7ixLpz-||4xZ}^c^_9CKR8~sG}_hlz1M2H z<_UD5;23Q9N@m5qwkMF^z>b$b$P4;#2qZ`7(%!KvDCg|BUguJI|()j!^XyBEy zF7F>_89ccvf^~Ag%-{&5;=wY5o=+O-Vq@{rM!wOL72^YX$?j9!!Ngi~_XMA+-QA$U z{Fjc1Uu|qDi|M+mUsRg8ldH=SjVNAb3;OxyDVj0Wnc_&zCo)xLw`RNlM$TI*yjzH} z(w5LXV8T|*jqX1eJuz9q)ro(9G$lqmX7PjxgRWG&&0m3+a?1XpiEBGm?%L+6C~p4s z3EK1P3jtDUnV?podFx}}wZub*TN>U1Ql|~2UY>ln1^%JV-#s+2ZTD^FPrVjt)VCea=!cDp&Uh!b0&FE9*pDMQJ(?gQ8t6!Q^Tj ztqRGw>d`;ywMXOaDg7c{uZ(-Obc}C?1CCdtpMa9B5IA(LM)Yp!x|h0?v;U9!8+X1J z_&oGw+{!sNypR8OG|l(buF50bVLeT@do%XsQ=j1FS7suTCS;O};Mf3SII^P>hQf+X zdZbuLj4dg>FDS$PG`YiOgw34orZ@HoOwfZKcifI}I z>9e3GxbizB@8g1ZJV+4zB>6ntI(t5<4ptF-)j3j){xoGtZ$)Bh>Wvv&p6{@h?kOVr zndPKqH$e~$Bb-^Al^c^DMSZp~aNR#xxVf;NKIlh2mf&JN;vtcEq*l=b6-7=Wv*=fj{X}XJPCES-*Gl!aV znYV(QkoQP@a5f@so##UF#79GBGts8smOE<0B8V-4D#;5?>iAajcQx!G0l2mujJ%(; zI!(%uY7|*tan2}GbouSK!^YyG)9u|M-*F_A3M@~iaTtDj-t6OxkzKvpIRAq;k$$|r zU8;!#6VeieTSn$VplTdRpB&Upr~~$tP>QOe{SEde{c*xfCS zoVL-n;ks+%sY-^5YZmZ3)X@``Q`oTjyDZq;VKYW_EUoH2fn7*S#!xm37fEdA7qCvm=CVR z{EU186$!pMzh?QT?P~mBfXi3+b5E1|jwuVh41AnB!I}R-OuQw8K+>2?K9BeX0=6g- zV-U)&ZQ5BsLoOcz-nw@}>mRw@N_{xsC#o#J@9@k;cSC(!CIYPKK6_%Y%2WQ9Z~TYJ zi;FxDZ67bxTb6N(SK9`*$u!2%Nyn12bCz`@lI=ogk|&yHm#2`m$V9O43c4EIA*zWt z@D^2HY-qb+D>-qoEXViiUC7&WIdh@hP%p$Nk_YWVNX|cnCQAK?##{^bUr8}jSW2kQ z_37^!KjVIlL(qG`WY6g=LN+)JD=2X_PayYZ%=?SSNVr`+7#_h(gIb_z(6atA81=vq zpVlT9qDrUK#Y}RtNiWC{D3_!QzFvF~7_>>tFP{}*7Pj%xw%hZ#TB<27(HmgCU>D5G zDN~|ZnX|bS?EQU_jCh@vU;G`tAZ0DdCA6|LGYWhKftP?#I4a3Ub!yw;U-`>TujCLh zHyF2cVc4Q?s-XC`lM;DjXxpBaUh>Z_tgLYqWi_BT#{8daU0$m2FV1R`cvYJl>T55U z;y%`7SKBXZ*VjWTfhD8%S8QQg8mAjZUcxFyz{;z578ewlf5F50o^mIA-53=1=Ntx< z=%(l?ulm97V`#EP_|+#bw%eR65cg(}+{^-@NFfn3PS>3F|1Qq--To#4Pr?S zPY8WDv#|0I39|_hr+XQ~TW^Z2kLhyyPmC%RS$HxYOR}xND`hT-nv6IR9 zZxh@hfMP(6qU|mysP=%)@4!S+oHMPt)at6)=GMN1bg=cD<2Mc?ALXPRo6j2St(3__ zz}yanp+svT@ajSezE8}$9)Jsce!CyjF@8tuB>TR`>pp(*BMdne3XMGkfa*4RgNHjp zhgMh@v#+`pR6I5FpbU;g$;g!U?TX7a=2Pj_%ycmKY95HjJ%4JnN-~J8ht=von$b)waF+w_uh-P*b;bZh4qZOTYUPJNL`<{RVZ&ToLkA9ctoh z4~AHY#wvKv^9_^^{WEmZu~!4FM&XpxbQh1k(Ok$GA&@PB<5Kg>J*YQ`YZR9^tV@u$ z-fHz7LzPOG->mKy++1t!m%JkRu5dYLXBBQqMbpyfL6i5XuSZ(E3uzj6$uo(IzJ{J2 z;zgZUkxx256PCR!0BcS)bWRq*=`u6czkI2NeC~6_n#lWAC71Mk=gH(b!-wq%v@-5V z1Ky>1_4YstQbyI%q*h2)k14`T`)4O{NA!Q%QzQ8Hnc$hU|R z^JCvlxY_N#ZiSwAvvKK5VI8z;+=LH z^1L1VyoD?ER#=p9tiu^G9%DVOZRmtOb%6q0Z>C!~24hUgij`%wzA@kh>pUZ-6h>#dvxpH@n7xUgKM^yVQ!y~N@Ui*A;PX?uL zur$=+5^njN=0_J}*f%rND!^A)3Bv0A;t(tO&Y{!UnN7)ik({!Y(h=>P4SF~B3wpq^ zv=!vMUML3Rq(Nyzxe#e~OY^Y!{Q}n~78MWBLQGYs-NGYTG0-(uT1S3@tBoSWX_EsA zm#qksO_!F(Cp`p-uM@Yxa0w$59RFOK62&XJat4Ms?l=VS2<+W`ogtdtdP^syg!Y%& zKCLr%K77scqq4<80mkbP03*ab{acWYWnF%eEOnV>!HHMrN0DMFH>ba&l3N~pY+tZ? z@4v!$7#TuFb_uGQU~ad(kZ#~kdpJ*1osWHnrAib&NLcRE)N8$>9r9#+^**(g_CXju z-$)TyIcJ-Vm1b$7DvxSQPCk#WDJ5+VjnzT&!?N;Y;o@0J)aV%dsh|01z_Pjn||Msd_ zVU)@h_5gMx)hS<)!RK_>ZUx|gxd97ud6G|Yfi@x=1hl*zzNx_zZi=n5Huaf4xa%(> zBE~&SFiN{VK2A*jR25-2=ubE2UQW!?@_Us`C{Z8yR}Y%Z?C1RWw}v-Eui8-~4k2*} zc-aR3ey z4vdqL?n-Y!5}L z3?7$xU=Ml{=s*@o3;*)_$V{%k@HDeA%`&?JAT^$;;q3t&EO4}xP-~d)13(jyc`I7b z-LYCd{|}h>N)=~mhh0v|^TxwF9jFQK*nGZqr1NHsNJE@jvyPS;QrPXOxT*hJsP>Qv z?NJSqUf7P2o4084#FKl+)R0Cw$Aj!nLtSQDL--dsQEUarw#VKUQj&*K91l zybmcTvv??_V+sNvCE3x>MGnahmu#W+&Eq&5;&nw;e;4;iCI7xYY{Vw`Ol*Pur4I+t z!8$(z;tqY4sr`N|$cevUrc7pH^sTP`1&Ex4G2p;?whrn2$Ua#GzKl zmU@Jq_CNn-yW#n>{mC~|u>{KR`=?3nep;%AkBnzrIO!n_jcS?!f@SErz`}L&U4gW}$; zonNVrX`Ax(pkz{Jn83Z5^j1&#&2TixjA&4WZ5 z>FeDnWr-qs!Sb}TAkz;m42BnM;8lb929W*Kd6C9sZ$(N(W1`CeVVq z=0rnsQXPf2D=RAURK<(IP5YnEh1#Fw9U+stjR7rfp+BF^>@#+OgwVV6<*`4p^tR;H zk;GRE>{P5;k@F>s!20}H>N10;1e3=-vcXbtpOqmCzENreF~Bt$TdSK7BS;OU%f3mM z5O-fy_obE!DVUm$g05#vLW; zBCZorN0(s@jtM{;#8F+FLcw|1PTyH5uGD=??_;BB3PvsEU)knR`KzmF)_NMIajQB-jY&^lofOR|{<+6#uCt$uBMnmQF%Yr;HgyXH zXLmIDheD&(&3eK#t(AqOgb1}h%`r2t+Xqy99c|to0=&Gr|Dn&w!$kwCpboCzCYb4; zjisJ)?}0x`9|G+5S-K}=bd_!&6cF+2eV=LhRG3H#IjQw}a}aO8cd4iMh3b_a?rZO8tIp@U`hS zeq_hhHU+ph`AnW9xhJ!PVE@^}uKqK-hT(%}=!{?IAor)#i@P2qXk_k-3w9(=>6p<> z7d(O8c1my6m=L=^8K@UbEa&p#L}H;LTMZf5uli)~kBl&CQXiIOx)Ar-~gk~WxU_UomA-Dt%I9p@=>b*7w}$?E=ZyUr|Gma);i-G4U;g{; z%$J^0xeyLCANm}*zI0YPV(ErzEz=zpsTMD8xTxVljJhsM$;pS_RwtZM%r7<$PTNoU z<)h(a`R8G{sF{6pV1}vm!<*+lP9!1T)cI z>H2O$0E-^KkZ1m!mWeq8jN7DC?Y_Iy{CZh3Y_w7kb2Y@1E0tIPE54|%&scp`P=z^B zRi+lWC7*J&{RsgNTCVe)r1_a=aJY2#l!9yk{H$;1trMm?%(Y{YIt}SMY=zt z8R;3hd5+Cns;JM}R-I>QeL6FvIH`rIuZ^qT?2s91@TxTv7+lPDw*OgjGRnNi=>rQ{ z^gP(Ob1S%}J45@9s_~i3;fmv?=eSjTQ^VzE!B4Gsj7FiXkpAQ2UvZBQe!?m%#Z?1^6xKfOok3_oE?pvyW55SP#&r2 z5$Zdjh3X{;|NBkEop-XWP3fhke)w3R^Zs3!$UyF`#f9*DwW7YwvQszr@b|h;dAZrj zmWri@o?>#)MCnFw2bwWmb_EU8H6%-bM1svMoRQD3qYBNgBwpIbNF4{zyQ0>%^L$`) zhkz)XcaIo11}EpAH$-|%Daa*MIQ#TLZZo?mz@xb%Dm0LG3;y9HR6e*;{-xM=l-kcK zQB|kEJr%g2`H!ZMBX?y0Anl1V5W7`x{bRp~Y(^cRU@_j4yxm!Q7*O=8HvXea^;s@H|oAdl*DSC&OlIUJIVX;U5j8}{3a|Na?eRn;qTUdJ!bbM6HT_X5T& z+fhe2$B=WH6sE{&<&e6Q*eizqlJq&s+zx@ws)MpaLL*29kJ)6(45%I z&^QWYYLl8h2$?H61e|XJ{X0Np76l9FffwE0IXX=D+?5`PlQ07CCjxL*0BQPzpVreu z>h|@~%jg8~g-7vY%<0uY>eI6!$fS3{X|~&*3*PcdRw1ZS;FJti_h{957%C$S4*Y>- zBE!653hQ&Q$fG!O^|k1`V>vwftH@)7BPe_Gh=oOPGYi|Uy3cZ^nGG`xWn$MEG2R-H ztY1^x!hQ*qguPyza7B^hr7%^KpX)Sl;^pQFnmq>S2~#@_Q?!*c5{^ga|8)rJQ82Kk zTyEeV$>*Tw07Of9;WKA3bs?G81_H=Vv0kIoUvF!8?>CD zUt#^ym=zxOT4H|M^w^Y%lF1Mlyi7Qqej;iHD=DFJ)(zPq3zz~zgDCD5HNx7fO77hH9KyZP|5}w0O8CMLZ-*5nc`kJ#1)@urI~o)5PKe9mZV z8X6p&YxGH(FfN!gC2I?m}E|=p++$)>yp`MW}R*4$pbAo z^>;%&oxQaj>fXw_`@EZvl?RA9zH$4Id5x&L{Nr%Lkrv4OS@1m8X?V$Xvmihy=?3EQ z$%U;2{@oYZbU1^pf!2HoI4x>Q)2KuxCH6z3!$a?RHQbqM83OD_Z3MpK)Z9U390FWH zu}zs+r38`X_<;ESFh>KYCfLWPk%3r=Pypwr1@h)tJ-=uP?2)+3x;Oa?c7c;5N<;%! z@76q8<>fyL(pOx|TWe1G^rwjawktFwWz%kGqeZ8}uCirH3gi;#*!sj^Tyg{i`@Ydvz>9bVeRZqJYr-x-Ec@IR$W;148PO6mFl9=6GQ)IostyC`2obNda z_&V0eksn9JLhA&(4*?v(ntN@ujiak53-Y-mH+Xmb@Vx zEcO~VG6FuL@Hek$3x-V8E+l@;hTCp+ujj@(Ur3lJ?Z(a=;&{pG)`m@8xRo|)yqv`) z3?x||iOVhWLwuZ|aSi!wT^9~s9TF9o_yNHAdD4$|Znv3!9N8gUOPDey61q3J9pN|X z$TMh+=CUhha=(*olz5rC-*KyR7qGjsdW2uRShUDxN^(+5*j%gN-PRfkAFu7IYKQRF zAt2N?W8mb1R>fu%M2vL_fyv{fMb0tpJNK+P=XK?!?R%dk#%O`A^!92>e45*>V8$=i zVWxJf`x)#<|H*j;Er51biiHX&>DowS9s*A4E=`K6a%|RplRY*NJTM37V8|}VLFUq2 zFc9*cN>%C`Z@x#plX;)y@wdls#T0&D)|-;G(39ioUjTM1y@7mRLXoHL4(^_X7|>p8 zy9ZKc?A5Fsx3`*j6EUAxl2k`djZpGQ(1oKM88^O7lM5@T5D4`ur|zW3(hbC$A6{Pu zoT*-!txb|}#7xe3#2mRFCE6u1LQTn08ldL$8PfGxh50>=Pd9V0XS z5Hjh^;xep2{BD49DWK|1s+7Q24cSu+4*}pPn+F{S0w^omb}{P@R2b=uKDN@3f0kjA zCr}1(D|Y#OJfQ5zGgR>?0}}qStm!!jszIQV4JhmHHM+g7honX^qW0W_Sb{P zJ2GWn>1%DA@XhBz&!r#^X^;hmE$PQ1oQ-bh?!- zQ8}q7JtHI|#Jl8T&lihy#aGPO5O#^9V0X-2-%^3q<4tBy> zvi^)d&6^=r#RjK8+m(D{!i4p>99cBWc(7L6SZ%BJ7IkCQFW^Gd#da+%nc>O@u62Qn zma3t)%Lvdvk%nl7Dausf?u9%3OmjWP@|JrrtD;9fa9Z0AWD`g$8|1`_LWcOUsNWA`y&RBYuXtLN! z{=}B*jJb+3_jX+@zo872J7mZ~SojH>#})0g$y$PKbbB9rR;cXkw{zlc&VmN}aU*}2 zLd+j+8jL{NF*0X6SaeMHN%2IY-N~vaba}eE<^tgH9iwxc4dBA8{nOMP8i-=hE`SiA z1SPB6!VQaQ-+#LdtJ`|r>XTi+|E=NfPvMuqIZO4aNo2hCIP)uf? zNUZ0&x>nVTx~B7}8DoEsddLAI4>oWJ@I+2+-e*?r5YGJ*U`Y(?O3mT8x}FZJg$c-~ zxCp-p{F|L{u060%`q#w~j{(=7+hHIL8mbH5S8xaI(R8Yn@AeIjmXe2Kn@S~JnVCGY zWHu8Ex#1S$VsO!ui^h9X@ASeA-Qf`Cn>IPP{jj|idGi(AyyDRoe9esOlEEu3;kzLn zoZ=y0wbhKj{?{dies&f}jb-Mtl)mhnZS}=wex=Maa2&8 zM&7UNjq$qm>n3g|6c}F23%Vk%x<87FLDviRn6$}1TD5VqiDH<2GXL=G+flZ>upaPP z)bSL;rW-(l<_+Ojuh+^^Z#Y|j7{QB(e0b0+( zD~{^^b8E0-?bXY|T_H)9x}Co`7#4>82ES^m z4&`0ZHgiw2#g;l=YDwdGv6Y_0)e~kj>!fou(7QC7Ij`*NtrXt*hhv|=OuGvlgvXK@ zFujrAiXmyfokvPJ^JjN+zkwWotBJRw(x=lzOuH|~AHr(dTSJ0oET6t>a#D*Nb9+WN zyO#QJQF*}k_lv*mq{}=BQ+vR$rlU(d1d6k!>@qvi$7$bP{e>>{&zGs*Q{eNNYEzUnN_^u%0ShAUNjMuIi-)gzmE@^Q%VL) zla;z+bE~ks;H@6NJGV|4_ZMX+@e8H0V&>6ANaMR#)+h~g}u1ocJ|w1 z3IV0w%`jpft*8ra8?7XpuP2?0@&HUy` zR)2Bt7xfdp;Kz@3=r2mwKxZ#JA%@2M zY06B}{Ys`OpZ9h5F-`s+KxNz88CB@`r0>^C)?=892WSX?`dc!BUFSAUow{G*h zySDk)k4~dW!Z<_7hXF_tyy4P&u+*U9#z)=k@~2!$5+ctg4p!-pc+4vM$4jM3E| zP}ed2Q~216_srJYAkLw-yjq7(BaR=Jx(hdO|1^;udTrb*seM%BiIr1@DbeDsDuxf6 znUP@Niq%cL1aSC3*^f{E_QJd19%bl7*LEb#`1|G@P3L zp$8*0so^g@2edn|@0mU4{Tj++(N6^z@hYmA%wKggA* zjkxH^tt(t&ObLDPf6g9;?;?EX?`(+hbXF{tn*OT#@2KwWmXkoI(b=Ev8Y6>E~vpYF?IP<9JJ?>hG*z<=a2jRI>rMaT-f4JI8EL zSj&(mydS!Z>hBfwWk%=0QpMmB{ z8Gh0~Uu&2r)g)_vauab>THQL!&>04ah*t!@AZmp^9S@4qPszLdsN&8EOOaAM2SSR% zj87({$8bjY!w7>K8`8Edt$o+8G>Y9`-W6D4$^W40l^iO-!5x|=>Hey@rMfT}vg!p` zYUa8U2aF(jPCIz73^rNc5xn1SdLBZzIy49|dvOinqO5+D~DhC^Et<1d%SmH9QhVBEuk|0Z6BC077=a|G(k=zSdrADf1y z$8I5(AvfJYdvndvca^dpymsQHd%&_0!Bp{l@pLW)yj}Z{$&WXjzF3Y*N!PFq=pf?+ z;XOl*x{MovfKtwTUd;2I-W>V;{#821Zy?8r_}}mT8Za6EAGs!Encc?Ki`X`ML(%qa zTh9s2P<)gN{N>_fV88z3($d0+_Jm*cEozi5KPwpxy%;X@&@#a-yL3Ird*?;pNp3G3wvsutsR=nMiN%OZL$XMr)hX3{#MPRi zDGgcg{ZelBn09q=V4(Iv^14Gk`2^vHis?Hmp{dBYfx_$~fa}aOPRw&S$l7Zk=)Bc^ zV#DL$2+$t01w{7QAu~&_Eu?j2=J|dXl9A4cz9}3i@n=8(hCX`XoN4M(uyh!L?I~sA zUQ^f11b5Jl#>VExSHq7MPBf;6{W(Fm;;ESDJ?(MKSl)gy>qS>6dkb;5Qw%=~82xfR zXqe}VmNnEbfL7ys!bNZu}d4IO76XQ zE#ZvHr4YkqCm){%;KYsUOe-SR8rJc&rX|72f7y|wkf8q_oF8F)GY+xCeZ;GV^alu&M`Dfv}coCD(Py|Su(;Q znjoPrxlbMuC1TtAw0()#XoOKHF`_VzD-r6Vimz^o`)Hq}^Ni=_1X+PH2fMJ^Bwh^V z+VM=&DTFCMeEWIIfum>jjRvjD^iUtJfCwR!sXcVm_U2|XWF+&|g3d=Y#)r6aAyrC0 zSu0MssMq}qH3DA1oCSBq2-bUfu1y%V#JRN8#VfluJihnJ;8#}0@(*GoJ`PeX9gS4~ zS)Li>&ynf@r5R>laZM!jT;|X0_{aktdr+F@Rim0hIRfP3gzp4~{yB9LF`GkwLApzi zfmRJ1viOdj<9^E0tFo#PDe25v)syN6L)S+ZTbd%()MOrH?suXl(RZn1{qJf=g-l0Z zz64hry|on~9|4*N&Z1xGvnLeh!$mu2Sl$+yf)(nFa^m0CkN1b`9NXV0hMEfO?2}J^ z(|t}I>Ch~Uc4-RroMZA7!aOUMXF5CFH4dBabQ^APTy3m~uR=V8#j^yc54xkja|;=a zSn<7~f`18#v-2>~5 z!mf%_t636MmCTfq!s#_ZeiJ?eX%Q>-dFndk^AVsD7puv#nled zLeqmDS&-gJaUl-GF8%$)WSxd#)O<4dq(mL`6ICy}N)q!JU!s>y zV%a&1g~YYIR*Ii{a;U}7f=mvw&YJoVGSwW6eGTDUR{M!Y%P`0-b*syX-FLPk;-Tf# z&--Cs7^zj%xrKTvZ-k$g@EtGJ^@o{WA~q*>HXX5j^_4(H#6xBSNOm4Q9lngibJlpc z3^|M6)eXqIHTXlq;1nq~?4Qf}15L%Uhff+azTdQzxB;w88Ml`m7L>TDxXy5@jXpGk zd$f2RYQl3(-v=s>E8^<^7FR@pfXDVIn~Hzu($G*(hu5FSr3O6WI+y5A_i*=%LK~LWaVh@*3?IlW$+vA6~rge_7o3AF@`wYs8~BSKrpcSQ4qJ6FX(R zxG;S4yWE1*y|5+kHYUo>)k@2Y(1E@kC>?uV z9HjJtkAoQN1YY`$`VH!_tDj6KiAO^T>9)6C`WxA@e?0dPcQq?JDKt2MWk1v};Y6u@ zU-pJ}Ycb(xt2lJ;{f7hgBkO`3epHhQczk->9`IWgMDtLjnXj9TOxHv)FZ zK|cZzm%~wR5bo7r-mqP!RlhSg*ES@qkyD8)*4YibERb{P%EBK3E`VR4&e%Z3uhIQI zzWp`!ySj6d^0C@a__2w;M9~r8;=cpGMzo|;VVPM|Ld($h7DEu*#^(+Z*flnGiS8Zq z`X#dOoMRpE*RVmLU=UF;?BgkodeO=k%^JD%h z&(F7;EYCVjBs?<`OOExyY4c{6r_yAP2`bouH8KaFg5P`9_K5}|)Lz24)8+n2pUv+f zWiT36f+q?uKK!In*todU*uU-7xGRrCT|y3Ec&mq6L}|vp#>0DMAfpge?ytE=-mPK= zUps(Jt>MAD!d-A|1VfYne2cFEM{TwU5Q`Ybxp>2mzaw8%YJED1^39sdgwE=yBFC_2 z{1U>@T)T9na2rwBdqZ5-`gdK@l#!tt;J-?CLCMO6-K#BX-50Gp9Ob)^A`_TPtE|hz zWSDdu>?tO$r6~PXtCf0ht8~IWn_rofsu=qMFO&Sr^XN1%O6P*7gath??-37~);l;a z^Q}UI`KcC9H_&0HBT0>QkD)_Ft$pddXM*H=@B*S%Njpy;T(Exf=E;K#fd6+`vmM@_ zW5y81c3cAfej%w33gE3%SQA1hSGsmdy>Z>9?`l_&#@1mZM9**j2oT5r&x^i@VpdRn zyHZ0wvqnlB`V#Sql@$^bn2_G4i5z(MUIoIi_|YAm(9v?A&4r1~HF6W---7tq%20x= zI<87zD=<*01&jNssD=Dm9@8=6@od06sD{j5bSwg~KL5tOl3M-wY`hadG8wL@gOVpA zOHxlpFt zJQF&2mLRc6TGJ>KeqlNIt8ws`1EVmly1du33^;kW?vL7M;0^WV3nxC*k?S(9+|=}S z6lffIHY}&}=SNMBe$wOT)i@^~+XMH=a-A3NU)@9C7Ihl3xkf~VSnk?e!rQ$W(OK zMRZ#X`1BkcZJDe;te6)1DG;{U&MSFR8sH{PEnPP^Pmtj@Z&J6{AVA);UZo%E%y^#c zOypvIy|)L{Wt8mh;H-`S+#47k`tv>BDQK6tjE;+TS>+lj^`?~f_fzb2F)Rr=*m(E&)#5!`2#8+Xs`Brz7Jp0065a`G~b4uVnn_#0-RDk?;b>X z&}ve4Bk7jlufGF>3O!~s37^C!VpsK4uyJ{gLnW`Zp}SkGGp1A^4k*-e5zE5>1`)p0 z#A&ne+F7};>sB1dC*y}*kruB`afqy2m-l?A_K6$X)+e7o0$ovY|JR^{Z6xzO6aW(xsy|{;bz+I{|l53Xi^u{94Y^`BZBkDbgrY zEvLL(7i^8kQeaHxU^G&PerQ=cRqcT}*PJO#yE#NUu>OS>tvv$#2Xzu3a-saps5|)N z10-{>zng97=2*`98Ju+lutv4Kc9Vlz7PO&k9IL zUR|a8I=NMtpeZSHhS#mEngU+#N(9oM5c_5ogIrhx3B5fhyA1)P%7d|-@2~1`1=Ghv zbB85wFK6DJmWJJ*?1dGWs^=xsjsWz=tEisU?=sGBsCDDOy9!Qjc@BRcK&7Ybw3}~d z`$}z5ij=kb?6vJ~c%PRFbKr|bnkn^wquhbj2`*z~@O%zRrf7$*xiPUwr5`6SSKuG1HJi-=>YEx;MXbRzozEoTdne%`$=d3MrqNpa5chFw z<}~cpZ5Do6g$$usZbc){(-jW=;pw`6c8$RX!yDw6zozWVue_fdzabXJ+ELi0kxdq- z#AfP1&#~SWF;z3($6jKmQ?xpRS^Q~vr{wrnU}3@xn4m)i-n2-l>(SSltWX#)s7|)= zkp07nJT2U98eFY1mh)#)jzew-GLPi#pB*?^Il!Ee8i9+v%vK~71d}Xjb!({yL&m_N^ z_7x7F89>}gcI_1C!4F!nMEcI-gy{<6j3TOMpD6q5G&c<=s=JQ=XT1{0;0MmjM>C!t zUPHOlar4~~u=x<-rN%MFlj5MbBF_f)u$S51k990(^5nT0wu6iKZul--=O(nHgSKPu z9<_b%`Gw{E7(r5fAV$H|J|2|hW$#i6nNB4xw2iR%x6YHF)_%f2)D{0S3we#~!U`jv zQ{`D_+z#(J!gHN|j+ed62^Tf3>3Qz@tn-KH`*!9Wha>JM(%GIj^UD!{7i`BAVSboT z>0q6nq)x47BGO}~Z7gndMDdDmpdYE{W|usWENwz(3ROK{fCWdLYer3pkFMkQlEh*U z&&JP?6M%CX*(>tyLx#S-?=ZI7#$M21WZu-XJ|DHrvl;(s-Y5;dX=_Hd6Ss|5Sd%fg zZ5fpq;hW4k)UG2=-`&PF_5&;_d-*d-Eh$wsNXVRTE6{E&cPMvc45k8&`m$#+`w^Nv z?Am19$8~kl^>9Vcmu`_IIa;x29p^pLYZEmVEB8nHI@<=AE*;$se2?V>nU}z02s6R* z$v&Qb|45kgRXxH{CjwFDBtXs-=%*+-|zgaf|IFjLCYQF}AR*(8iqZDVz(?5y`$)GoI4)i0qV^m48 zo&CRY+S>Nb4gS+CXKf`L*`NSNK)Ao_%{y!gsR8=FS+yg=MJ1AM*NbJ8Hh8&_vqNhT zF_0z6^c|X;p+MpUpVupvOZSqnl}mXHC=hh`d|B>{h9v)9xeSeZ90cJIl)1I|{D_7%&-{C~TBOb2X0pOOCigu06F6I~;!;2p+HW8Y*|Q zG_%uF2b}#Dnqj^K)<4dZX%IdTK${LE-*M8?L0ngTP=ge& z00AMc)00CFm06Qbby&5C4S#5;l6hmiqp0nhzO!;R7i1En9vg^ouyaMkT7P87(fde{ zHyFv`J$c@>iL?g;$*<}I-T;P5vp3mGUUgtjU!FKNN~l`P{Ae=d2ymvb%S+t!(n?d! zKHqx4s&|25mhznBjm;S1Yxx}CTr97ORw8rdI1HSV@c$Mg*UQWqn*Lzn_8G!1- zA7zw}{E2{g!d-~V8(S0(TJZ?-I^3El6kqnz?`s?x8$F>1bhp%)^?dHeS+gmV0Zf(9 zSi;ydzaIfS(y>!9v>2*&{DvRA<}fsXTKM7be~A1Q#gIy|vpK=z}2(%1;3ZgmHFQ|k+>_{9Q4{bV{nZVeOPTn>lPVOhUF+@7!zQVkPaP@1}Z*6Y6M|OK-YF%FgV$rvDs)d z*>JN%SaNS5xQ-pU~1BL^H)(x2y z3Xoh#nIM{OB&tPO&3S>l1nXfw0)00bLy-ghe+R*V9Cb2-Wonjo*Mnt^jsVqx8)cys zdy;7+!VC7@Be*L*xfmBHo3R~1%d_I@(Ome*D*=8;gG~Kk4Ip)xg(`zUD4t)%i({bv z2=I`y^!e$PCTNa$f3eQ&8`m4FgP;n#f9dnlWF;c(B7Ca@BQzwdTn{a~t0e<%Zt4D^ z^y7}v znL7rJ>kGSn@jj6tM$zN-#*`hZ9-Ap6q#zwiOQbInxz!vnl-m7-O+u<+!|1K4rMbIb z=fov@XB^`>j5EB=A&RVaRP|N|I0gbNZ;>Z?`8ugiOhgzBNsT-`*XQ^9&=UXKyz-T< z2GH(6)bu#R$Rd>fU_DWSaF`7}vPc!3Jz1XPR?ty(>ES9Qvw7yFy6~dD28f5bEc<{H z^J0+g_>uvJGo^yeMx8dLa)e)t-yWaPkD9h_iu&7jsq4=z!|74Voxwx(1!r`upHWEW zU6wjo)b;0y!H0)hth0TGqATD^T0LQx0(qBiHiR&CmujlXB1pDWe)8u#$#zy(SdwkO zggASp{OYLnMjytsIllWHIcLaZ=6iQxjGwHz$?1ump!XlY8$~3vTFPFWBh>eD%{|QN zPb;%XOb;q_jB0uD z;-fc@iLaHPw$|e`VMa`X%z(&)*_t2Ag^QLT-H^~C{3ga+^m=>2%n7R+*?VU3L&!nz z>RXauCO@S(99#qpj+PbFj7r8Ye)(Oxl5zfP{? z#K{)g%cPLBx!Q@^{Na|`#fK!H1!CNtt|~*Fxne=YEM86xdfvMRoXt*dUD#Q5dhT|uQ|;Ffs&r6%>8I%Y0Qx&Tn&=j_TQ{28@dWQ_ zMMb&SZ(4QMd|>~51ZWp34>@5*OmE1-jRy-c&Nbu2xzU~V_;VoJZ*x498z6^ILsqZq|0xV72d3<|> zE5>=JgoyQF3~tKi1OfLRqYY0df@H)5>kk}j^VG~Bn@n*z^-5} zhA6X=afJ{ngcGE(1gI8u6DX*p0YYo3zqT{dp8E&)WRKP>9)%>&tU?vd{>?xLA8J1O zV!}qh^Fe(lZ;X>51@m6vyuCxIlCjF~X!`x9y13#&fo)zKEDT7g(2<&UKahV{3i5${ z|76d(F5p9p@_iF&bBZ_X^zz>{rWAdPGBVHm*58r;9#y)VSB&A@Tyw5fnZ6Y{)>J}T z;t%a~aET0U$EX~y@2`xLl);VKLwnm*os-nN_?7K@r*b*{Z+qyT^ zmyu;q5uz|uG+m7fE29EgXL3n{lgZ{3X7q;^M*@@AY$C_dxF&F5+cx*MLvO852cO~@ zpp0{dbuw!T^#d0JcA33*FV(SOWY0^!OArtJF?LHzaeC(9jRD82p21P;)xfSxGV_pV zKQueNgSgz~WklTi;Kx*ziXUiq-@NkE5_rp159!o+ZN^(GLE|zV#SjdbHl|{}QtCFx z5Aa427DKC^eRMqT;HR>m>Cv zK2~n;aK}w$N`KMb#AG7~y8o%<3gpYSE?EBID%jH~K@d46etHNY^BtZ(kAAzWEohZC z)%S2zHYc{(ZRwgJ&io?}?|5@+U%&rS@Qic&T|!5IAFNucXm{FD$65Q`wD=)b zNSxgfAifqgIj{y6q^Gm^6q;5$UP)w+r|6V@ zpM^CXJHXk2jn{@xW@r^<47O5M-vJ~#w|cDR(5k8KiCB^md)U{?aKq!(F}7}p{ja-h z{%3#}&xl>x-~+1hjKW&tRW66(%jeX4)YS)nhO!;HquMkOY$Vtl9m!}z%2H;wXI)X1 z?V1mpsLVY2%kpQ?0#bd|L1o?KwV^~^)}`z95<5o#+8gT6!S>l8gyo?QRC6nO|71}Xe=};F~G4EW5PpQ-$wo3r@t)2z9_1I<@UD|TISoGLpb2iU! z-0VC8ludjfQ74`9g&Vqu)wT2FeY;sVkV87RscP*%rCXb#V`^uuJA&_L`PZdtulGVd z>D`uRT3e;Xzv>h;$nxGnTSVps*=boU-xJKq`fJw1$t4cx^V4d9}E=N^RKP@M7N$&8}0k2#$XNs(|v+hT~Se(Dl^~Y5=`uNvm$eh>+EC+TzYiN2s4O3i* zaHsy&y;hK15XI^lF@dMp{ngqd z4L8V$FQsLcpA9WyL&qMlg=PF_VruuPv^-p?dBl4W6_4fgui&8TiKuLG^b-!vP=WBe zbao~OWJ184=0sP@Uf-X%*cog{tt;b1H1SD@oZU~B8Pcy9#_S)*D}DudhRiy(@`|BF zkAV?mx-mA#rjRT@{_no7pFBHXq8H{T^0@QN1*wtZykxyIdQ)VDD zPoIXH%y~$k2&J!2i{H4C~JQ7 z$S1ks!>|M6!*sN=S77D8`jS=7pmLS`3>~we>}yR-qG9*U{t_mena>jUv^oM*b)zp$ zw9+WS?LXdw?vGbVIQUFRpH=gh$e`g+;?(6*|_qZYi4s)n#oG7%MF?iLz&Ppf?@#{)0UhW0T;eAl!|Eafbp)XT; zTL%TCZ7ni{I%DZ5e;20`g3d+PnMT)Qrw8ZvTk!(-%4{>C`ZYl+j=Ik0^awI=IcWYS z1U+d=3!`9?4{xsqi#L{?h9y5rQsPbeT_tnsNvvDE58Zm%E#YNeGqs?|D@8AwY;v_{ zB|lzsw;Z8ut2&yRy=Z(*Krj?Hj~7Q6P^20Bb0h7nGt}qU_*<;Y_il{k)Mgfrf^;&) z{}yXJc+QTGV*ccJ!$&=Ml^`cV8!?x+$&BAcyjR@}MICFyB%|MR1O= z;)kk9jdF=Ls;Y-@^b+92e=d!Eyfq|x<0TVC?YPj|BLKTr6a8NvUCpMN!V^tkhP11B zw+E@*5L9y0a1y(HrI{;MJfhHU{usVW(dYaiB5=2MTCiN1+jqO^Y?$HMct@UrfjW22W4VE@%{FE~tkYEIeyB!2XLH@%4Pjhj6P9{=S3VM(#X zjRV%XQ!yPu*zY>6BRiu{<+Z7AY)WG}C*q19_|smCEgI-)DWIDIm@+H!lk5oo@V*Xl ze(GRHOlbYU(oUzfQ1z{(X0~e2E3LZQ;XzI<{uLt30<3EgONepv2bH|si8@O!u^ivy zu-#BzAMpjTGp7IUu1{n!|Ka|ks{$Dp0tv8i@H0_v4zoZ0A}yicR(GcDW(!gUI%Q-8 z-7}hf+AhyW?0e=5PE{(VHk8rb5r@Z9BTCn&pb1^*2>rK9!({)y^}euTdyk}tf7(16 z@0-lMFnF!h3T`(6T>U9Te9?HQ!nj%YV|Z6S+Db=z#NMzzZQ928E_@+ncOXB2t0qoioM}o^~<+jY_CKXvQ~WBRCd8( zV0VZRLW=o$PgD#1HjA@i*k2Z8Z#QR{EtLMa{iD;}2HVpM^XTq^e1oq1nJ2Ls{+KMc zPRKFDcR-@SJUa5Lw;9@FWwn>UW+TomqdC>-WWg!_zPLe{=n>%DlXw$@0p80K!&nZ~ z3)m#D9Wwz2vMhmDcPYWE=5UBQPGQ3&!4scvpW^+|R#6Xj!_se9MRjivfe=M70u6U_Ong~ z_FgsDemFLf5-Pku>?Vh2}qju^DpuH~cQC}CfF=B0xc0si{9Lw`o6qpZmf>P3j=0!Xp^xu0- z*&BJ_mEY!$Z3?@)!FNOKCb=6Ye0g^rt#*9dT;xPBgzR=Gh7fA<@_jH0vh=w2XH51M zxl{gmr)PGdmM-UX)a48w06pr!UZwer_sRC^bDI$Fwl!_fxMura;yXh9i!`>IykD3b zKZs42nl8s(C@aUgP)K*0>kKyY>fz2w_s_S)Y#ZD|Vwu4Q>}&iF3UPIK(|Ayku==$I zMr3H_aje~>ix9ThkexalW6GHq=LU=fYwxG1-!10K4cOo<9A$DNv_kSA@FbP5UZg|0 z-^KUpy*Yxn*Ng{-Lro5z)DCqR%5d9|!P}z=so&;ltj}X>N%uUUK0cRryMBk*Nhi3m zJ5R`*J5(+H{LfA!_`v!BQ6`~UIqUhfL(Ll3)7*c0A!mO#q=}!v+=jmZ%Mo=`Z%Bp& zvDJe=`(i-idX0+RbIuaKUx1uRiFR3B*u#?vYUkcD23-Evkqe!xV%XoruP3X0srCk) zd!?t*}~MfQo9B4!PE9y=vZ zmO0ddI{bt*(*1t{iX{MGEuBEArw6B-lGpV zhY|1Lc4%JQlX8;Z$8em8`t}ikd+Z-mJk#wOK1G4%Z}zA_H{;;hC&d}LtKYf?bdCTO z&#t{IF_8;TZL+=UcVvOjT0xvb=#W76N3OBCUhI3gT3fpBsiG{!>WgOm;yIVvg&*>Mg}jv}Y+B&mK4H-PYgRg0Ms2 zoX0>5KzZBu^FMAG!xDr?D(=h3MlCj& zaN|5U(r;_Jq-z{=v1U}6dCKdmjhAe>?oMKxp7V4g@V0mENLboIN7p)3s2jeeB5Q3i z1iC*EKP49Ut8O8(2O=*l!(hrR^#|aHyb&mv=>>TEV4I)<^TTNZ+BCBBnF0P*X`%YF zIm{=^;(p_T2iH75;HFSj+6BrtzD+keH>RDG+{P+^e@{$dPA8+HWrGI(j{5FaM1h}q zIW3zF%Snx1cGTJ4UMzqbPbvsXGnO#(bpPup?vD5lfvzz6z=m}zEU=XKJxdmH0?uzW zo;EWRCpT=Ldrn=x(#S=-I@XF_3VY|o4-uowTMUce<6E;DwijZ%cJGErg~JXn`_TXP zk!J~wW1p7{zK?Nx_2X}2xUotma%hQK3l>{e-&_AcLr3Dz%ObBaRE8P)>@P$e&4%O> zUDv{*ULik|43DkOI%N$$qC3i-eoHz1ikEL8?wozdKS2Ah^^sT093snQ!STryZ)3Lk z&aCs5m=M21P|A;)n{j_6_+xo#x~&J+pqm!2tK*|BNXGiJ!C!%Az#eh(#KO2*ZE;zh z&AyE)gStSa>*qahM)M4zT?RBsXa{dc#uKy|)smL_ZPlx|H!t$g0pp1iGwHah6I^#Y zRAH`BRQ~V2F{RTo1kBlhByTk3CXV0Y=yu`2kWNO=iMASIu$#qViX9vKMZ zO6#6z3MX*txmvdR<1UlJwZ?Ar*?)6zu5&ZbhI$oy_{_}M8M`S_s1Hx=>STx^Ejt*F zbUd&lK@5(%@2KKkj<`R3>vhYw>%_mOUYq(hIEO;3DdUO79tY|PkDKBTs9&lzag}$p z-wf*7WNFdWTu4U%5qHh9-6w<0sBO*rYa%vPBygm)(&Dt4Wn;?+C(ZvgOrPB%SRMi1 ztH^5P*`MD3BAa0V`FKjS&`d+Ub*aITgElt2hmBxKP%SjIyFp6QslMLvWlIXUS%fo_ zkfpF!VM0%()bWZT)JH*J*ySG|X#A(IW3P+9MfvT5;$;Suw(Ysi~KZ2;Okw7Tludw z#r!TWgzA=}Pa}s?bZ$=M)UgJeYe)RgL(RD<@>*H6}@i~ijr)f_5r*`9mFo_S|bTd7y1_|tdo zk0fD#S3ITKU!D)zl!=b^Tan8hTDa|C>?5BN<$OY+h)n|!A8a`u=~z&f=0UmFW< zE^QCY{2mvi2XUV0;V95%YKeaqL!aGJHuimj`Qv|bWZFt=^IMX?8U33}* ze&)cPLV!Ff`Q+XD9Rr?!87F&n-uSWAS~xV;UijpdvjjPZ^@P#yv$*Myt|zO{o)C>< z?ES-S?}mOY!In`vjT`lFde(^o$rf?%D7|o_*qV_`@W$$ zYJm5aX$DvQpA!k$0(_swYBn5PjPa259AF1(3OPaK?VPpm$Tdmp^r%;y)(340k&Q(< zydbSvg<)1YH;}`cyzPVUE}BG#K>bz5^Ris}x$MV($xb7BO(_MNN=C$r@Zi)BEj|Tv z{Y7@Tr}_AToYV2sUftHEAv^o_#Uz#FGS)9666^v!*i@O~ zc0SxIPo=%2>xNLkgasX7<7nR4mFg7JYJ)X_+;YwgdteQro;>SWnKf+!jUO%l1G(GmIy2eEwg|M_F6ka|%h8|L|AM#&lkT+I zcHw*Q`mF-!1mr88Vg>!j68+!L>b?APJgctPRgKA#{+^wE*`_gAlFQp_z3PUuuZ=Nj zaQEu(>bz{UtvcSilDj=ffFy${*04A*r2(VmaWUDwDJ3STaHZ0|CzXTwLgd~5s$MlD zv@7Ym^DaSJd-{SpR!^Wg`}-YeamGVtAyU+#!=IAUx{AD9W%JcvtM&5p>9(oH>5SNf zPyR&Ad3xO8Ex0F+_Gbhn@g4P?4mQe6g!RW_Tpxq4MEB#g48^-b(za1y=sHL@5a3{E z1J~~szq*rm_4+MFho&0ny2)#8j(M3~6wR3KKac;wx*X9B;fLKq=#scqduC<|KUV7J zXPpV+Fux3z)3|)X?jarCP*^h6{lus2n)Hb8FR+*CJL@ArB{0GZDTugDnZ+a%wgl{= z8mJyapPrE|{jcPB*QD;HRD7&^8D&S5zG?ZuDb&B9mS{LZeE z5g+YAa@vCr_bV>3hO+qR)zsWJ<9V{G=+_n{KiY_ADos(}Wg((QuW^1pQmcAE^K3^G zCA6XwJpF6u9{mUqR5+NgUm%t9%@+6SN>$Cf#;MX19p}!7Xbk=t)AM>DJ<~FlWMdcx{rLTv5?v5 z9+^YmW@GqX6@;l(+w$Zw1hDgRJ0Dq5JDd226O+mWo=+NsjKy{ zb3SyhRUPD(5eUu%)+}!r9V6lqfSR&nJhFEKWJG|gf~F$h-Kx8jB>b>r@g#hCwd-bL zzT-~6ZRaq$CSTk@s~A{@;bB%_xK>}{pHpANc0cNAE9hKU#AcauBgT1cU*D-s^!CxQ7H_k8Y z0e@kP>B)zu)|@!$9^c_fmmUr;k&H}L-Os&g=6Ia9lNEZ~$L?w9r{}+$5fM4`&yZ>q}`j zW;3n!Jy}!rwIcUvTxl#1``62CBgwenf95oQW+{S`h@BjmCdhXJ&(7I*UFuDfg_vF| za2XiFNmS^zf$a`po!~Q|Gly4@{c|_t2fF;%6NKHjRqDQ$fxK>(##FxO;3A6*UIJ*Z z-58-+^3~NdPTDyQ3#}fY6GrN!5arWY39CyR!1s z!ZkaKArU!APSFf;4N%eaBM>8rF%sQv*s@-B3Sd{5fa+# zTD1SQJiEY2G|h%Td1H3R;AE5B`ym88hoo>%KP2h2O!z+>^+b}fN+}n~e!%NX_Bnl$5$Is)+N2-DLoDPytUh*P0D zXU=Ed`FGFNjZJ#0K|U5-zxCD+I~i?3hs=Y|tWAX$l%bY>ALO+|ssI4kEoT9ZCxb76 zc1wlEy_jPOi2soMzLybxAHU57xegfG616gab4qgknBUbHOU6nWu^W3>AJSEe40YP;8Bfe~hA zv=}QHF4hG54U}q~dpq%Sq8CiD0rMwtv3gjyzJ9sR8u+Rgl9cDNS0SpCeDEo0{rP@P ze5o{5ehsD4)Pi+SB0hThr8;rbP^ERvRWzzQ$a7Og&o%r`@EiS!pRejker54Nt4!$M zc-)N%x)vc4{T`(4^J?G8@i+9#h?s%zAFKPwvrRRr%&Ws|*9HOI7U%&?%kjKI*09_x z-j%EyRO2q7lI?3jv}7Q3`oJe^iH)- zl@|x~MSUr{oZRBY{)R`WHbiZskgye@3EP;+rt9CMAXA!t2grywmf=@F&V8Gy2?|I| zmwvH99nvT1YeJ1eNuL(#W59e2Z9?jVJfb!(Z|YTBa9A41jj+<9RuY;b6Q*`I)I2^K zpT?A<8^Z{Ay7WGd2D#8d>FdI9Qy&a9q??btj4BS~ay@tXuFWk-kfHElo;bWB20Q=F z=_=(|@H~$I{17^)v7=1;zK}>wy$u6%TX8z%l*Z)%cE43)!x;(luUU_jp#j6( z*o>!fmP5NMo10Hutz2hoe-?X#G>1LFp0)zHadjUdg~Rz2NQ5gjt6CsW?YvzJ?({Hb zOj^9w#89UC?j<+l2-7jdyF6>%*xKNUHuT@ZE>w-x$6-2HA2U|?Hte#^ukN?IeHro< zX1oH6;*ykFTomYmYU-<%k+v)EKd3HB1_K{5WteH0YwpPZRS*OmLp6t&|9gfgk(d0S zv1ROO7^C@1uk7KtnSHqa9li7Lb@Lk@e!tfY^K-U^;!yMGEJeC>@$@|^hiL=l*Q}VX zWJGXpM7S;oJ6F6#R_=J?5#R%`N-Yk<*YPy8Xr*Z^E4ozuqW|uA)q_hE?X#}Fqe%Z< z2sv&(NZB6GtxLdv5Whx$@1HxJ9^EjyFI&o^1Dky>QgzztEnDjzX;eq~e?>(#kPndm zkZct(D)y%5;Sn88LoHOPj2}UURT>|qHviiZM6O(3Y~;9H0R9A7aUV`xV3JDIn{t2IU^D0^Qk9G&Z-OY(}f5)E(Uak;7LrzwqxvUX*Ah`AyIO zw{ae8CW||nX4^!mc#pgWhe0T}?ASc&Gy^`fe}rn{FRnhgNAn9PJFy;iays9bXF z_0RvyKn&H?q&vlruQJ~K&bjvD2$15UF8SdQMSILl#|Te3de}w%B=$o)QjX;)Jnbd;#^@BKZ9GVgP%nrfr;Jf8Ahv6>te4{e@UPu;jig%I%3 z*ypB^G}Qy#8?wL6bARfCx{BvZPEI!x-<@tVBp9$=PIzT8)F-tiXz7tJ8mM!u-r;ZP zIKpxl7Jw`I-)6=wC=wZZ4_0kgS5|mhmOL*l%w+)b4Xe-mM`8!YwkSbi-`A}ua|7eF zDg*ZTlE(1;%hoGf41q(Ead#nQjigV(zSFsAL+4pG!wW`dw+kM;uq1j6w8ft$NfZgI zOCnz+-DTvlI4GAEYcXfp31k30JG%XAAMKZ1>Tvav~lnQA!7 z8d2QtOx^|naAqMBXDGh37eh#SdKSqv9mhIPiB+Y1#f+6XC_i}=a`Us*@?X-lN*7$e z)f#;PWHxTKe}1aFb8!LoIfyjF5?Gu2UqzY+!hl{&<%4m;JqK{s<7MPDa<+ZZQ0&7y zvMHBQe1|)>hX%#3Ax>SBMUL37OLl`DnP5HYshooHvge2tUuDCh`x~;$0MhFPH;*+% z4uKg4jQPnA5?nQBt@_~G~ct% z*LE!p(LDvVHWP7BFyrt(EwS$OlQ>A1)bD~tVYr9Q#M6y=ipJu!Ed+eU?4=RPxc#ujF5=C|)3zd!caAKMaQJPybmyZ`>=DVur?+ZaRLtEueU6tzpVPT1t6c23_K5X#Qs9Dg6Fe==Z*m$+6p1&Bu0h+Iu8F)vDE9PMj|^v7yu@r1SMi|Kf?CQ)x>*y-34H37_{< zUt#k4gQ3ER`LtsIfBQ*lJJx_Km|ou?G*s~yWd2?{*^oh+=iN?ByIFcltjR7!4Y`yT zgIAoa{mGD~T2)eG5pj}||4qAcet6gj4rjH@xWBwL#px0+DE`m7kr`vS#t__Y!ATv` zimiCT-~Q#^rKNcnRu07b`qMrUEL9M+%a4lMegn16=dkozE-jM zHX&!Nw1mB)nqLNdt^~~vwqro04N)r7Wc&N`wjkZj{{}8_>A!Fw2{(_3neMjEM5h+Q ze0?|fwDsOqMGL*iPf@G?Yr~fK93rqI)G;_w{S(DUXKfxk2B7`fsBR1+Cz}VT9l;k? z;HxrMH~J1;zL0dIj@l!+9N|tRo(`vL81uvd6UCpw@inG)k5jMMwfkky#6PteK=J&y z4}I=BIqBsx*)2Z;&lD95K~(Vd4z2Lwo#Mnw+`Zkau(y`H8F224;}?rDVf1=tOU)iz zG}50Ru1n&8g%}-GgA^rWT-hcGHO751i7J>`D-XuDpALfK0Mi4kfkaie-c!i{insCv z1`5s4d07HmEJJz{7L2*Ob7{2Fo-#mo*RN}O!?kt3^y;7l zEy;fQ1(R8T-ABe2^{Z@q~CvP41 zB--$+ME-}UPlE$W+ZM3eZg-~?d4r{jTUS`0NAw%d&)VaRZ-&m<_ZoIJ`vF1<$nB-> z<#XkBnD18(-Z}c|jQ&a8AX<7~cwRZ6A?M@xQ4d2D;%2_|8nSsI}he0U%XA zvUGl9n|cKjCqt^xLQs5e-faLsKC`IP+5OEVPhXd^Nn0*b*ptvo_??z>qaiMGuxLiV z=1>1KO?U9MV?YZdd^{vZwNFLI%uo73gU_CGpp(Q_`O`zy&YN8-!;kdpb)_YjYvAfZ zr=q{hG`@8PJrh5F(!Kp!!f$6O@}H@m*y$fGo(fGdsy1Eimwc7~yu(OWeC4_;M~Z+9 z*R?v8Ppk``E4X$R{e1Wu(ZZ6hj_`NoFY6Z%ROY(h*JkOSoD?Sbj+JZ>D?^r;s)^~d z#d@&9aqr8uc;ZmCl?w^E$*rj$TzveG0pa6$j)(u9&LNmmvx}VYF`zoC@3Dj0XV;ib=Y_5qfxNXd%q)A5`{X zW879}o~Z_aWP3&SyUxAP>%}1gbJZ&8Yd@r(<%ZdmMh@C97piynO9Hu8y%$XE3eDUL zIHg};pL0nR0<>Rs%m?Lu_KD1gu~9gWvLYqv>g}T-^?-TYyA1Q0^10b{Y^6+QL`(2{ zsp%cWi$~}C_Y+TpZz6o8@z9fWU$Sn(d{ecmKNse?_0&47wLTd(`w|@U>=E~AeI5z9 zT^hyfzj3l!b%{6dzaz8n@kw!l_2v%to`Ym*&5EhuC^HXaHIg&y55pfGp-CI318bv}-o{Vq|hY zB|=WdZX^70Lf&)AWJm`}6t<7a79FcYiQ78NPTNj8yiMvFO6Ajd@i1_I0Ag+xedAj@ zvjM$+10&OyYV9(aoGd`~Ik4`FFM@x|Zw zOq!vtL*-x(P6%$?Og`bH(kGufrxfD(rT)*(zvZT{VrGm#%?hu3qBS(6*PPVfwL%JK z*3RE~_v1m=KFp*=$#FXd$zFG)2me)3xo>2CC#QJLGALaY#oM-=aW)hETiiV(c!p>~ zVzjH2EG8O!UnF^E>=ScB(9wjns(tNu5(|$d5PW3tf`4q|95Q zwRUsa;l>L_AU#;pQpHtKqSbn2QKg5ooZwaV@X!Kp|7I88+#@fb&^lA#bYD-Q^pZ~@ zC$~jw@JD{b#F7t-c%X!v*eU}5hF_ao(+|?R<>|xS*OLswfDFC*Vf)AAB4JT zv*GPTdvdE8_< zW_<1fR>39F8{_b4YKW55xG96%3BGodM}U;kU47CUajIPw_5_2GWFJ$=3w_caas8h` zw6FdQYIZi^m)NPmM4gRYJp!06Sd3R|A?;w;I@*<~arql_GKRwgn!Bq7F~&c;ge?u# zwmM|CdKHpKl3uGIrhffljI^_mi(^$Qy)oygAr|#5?agiRpIu`$Pu3YqB>C+9yp$yI zYdz3xxwe@;SaA&SIR>1B$vGZn!=-RsOroZBX+_t&WG~?3s}82$z7J8Z`>gOKp_Qd$ z5Xc=lg5!qYBb8%BO_E|;<;q|o55qmS&KCYlOJ7$0JHIo)e)w7|mNrNkVoJJ=D!ZT? zqmpwL9zf_9-FVoPXjkEPk?Db~_>*SSp4iBw7+m-Q#Gh#AJ<5&L(j&Vp%q3Sl!Q$-6 zTGO8%U`3M^eRSIqKig!pX=Ue`0~~Y6p(mp8e@MD zLitTCcO^r6ocUVoscjW-izWwU@wM<`olH-e7YQeo&So1)i-59CG`39SX8ozzD5hz5 zrYhi}i6|uGoyvd1a7yNKRuL@Bp@h&J%-cQp)Vpy$@m2pl@<+HfwU%Z=g>+C)Ee=bO0!JqOFvt`&+_F+iF}lS#__|?lbx1U-UfwNN)jx;hjW%*)VSFp zg~yU5zwGV`bb7Sk7zHUUXq!MGEty#JnlFwW0b&BMMYfBt#9#Ah3fPO@PksKpi5B$V z5gH;X(DbNI1$e@N>VNMC(;o>`Nr-w*trdzdZ3~( ziAb(40?%f|a}U3uBkO+-u+2&V$~*KhOTcUWGqM`5U1a(!ocTLTQjU_ znsvqnuT>i@rE{OP#Q5DFxTV=E&_?2+bRQK~w(9Y`p>rX$vjU+iMrV8_|} z!*&-_(Eo0hCritna#__eiTv(;45*Lk3PEZ`ti+vP5Z=GHnDWm+a87CU+DgoxA`5jL zJ-%U*ac|Uj(M(4B#-Gz+#C6R>7Xd7nm7&}vghjfoj$a*EI0zVXNXgPhbhkWYZ_-Y` zjApZN0&Z@6^R!1{Q0x=1U+WR-UHf5`&0ZFU_dh+ld3}EmA9!H1aXN3II!0)UJY-F{ zmwA-q8RNC6#1M~6+i9TlyHmV}=tlEb>1IWfc5C~Y;>=jnv z-{58;*#1W^tf+Oe76c?E+XH|2oIbRt; z;jj9h9@~4EqUR?`_{AqctFU~|A}szWcDLy09bJID&EVK3+x*OIn{9uKr}_>Q^M^f7 zJR@qsZ}Q{9ZIL5_5| z!WAq?)qxOPegW_30{Ecei^|?oj?ZJtdoHUS~HtdA3@8a+j=kh~m z%?xjY9LF6fobgBQ7{GI$s+Xtd$sI$QZ5NwXcsn-s=84d_ljXUQNAW2rSj}SUU+W;* zUrj03RQBwX8I$1pcSqk)^Vwh?`90!&O(s@^+Z&9^kN?q+ui1V`=XzdvW;!Vg1UMBT z7DCgb%Z!8FOrV&^8|26|o>;mG92c0RTX8ER#Rb_aJpKu6njCXZP`%$cI*f;Mt2(W2@YabP;Co)r5S<%UhoT@hh^!3)_{6cIdhFJ+Ry!Ffptu+lMIs zw=z51>B%FGE%WZA;hGg{a)}cZiSF%=4@}8jM!BFK<0iK$O62`$W~YeF8+ic~b?`F3 zSK{F;-KsWho1~g1DAf}Z&uysvYF$XG{qlDbWOHerhkErG@JxNtin;A@NH56Xa4Y z_tUh&Eadx&X}#n{hoIJ-8{hao7@$<&=X<#ujSdG**(txGK0)0_CQbbALY)6^fA}## zK(!qD`a4yKi8ASOE#WmK{TI{tqd&38eYu7V<8brtAB)`-!@G>`-zW*^= zSDrvzI}D$%PH1PN-#&`3g!3)PHNklZCfXL>EeT#apgFZl-m~wh(tb0EJisd#7BhEo zF;G^zA{j;LAw%CX&e7F}>G$&faOkO_+7xz2tyxyg3vM_^I!*Sj3oo<=GB}dwj{z~j zv%1o2&LSk!)T5kA4{MYQS)9_5f?nR!K*%U5)ZLJl1tkAGnUYd-{eI+HASH>KL9)<4 zO5RO60kd`^3&s1Ys<&#bOiJROvI_jml9dmWyoI?Cq`C<_h2)Wd3o&uRae5<%8*V3< z7rtQfsBkXL)0J!3^S0iJKYuu{J}L{uoC@f>zz9r}kDvwE+Z)6op*;3R0_l07-u$?T zCutvzra$P`{YsONkC>(1@rqO=e9vNVX$xRC72 zqd@}40K=xnua@Mt-&g2szX`tf>|-|O?Fp8?9J0Q-5m$b+P3rbc_2pO{13GNs2yh(O z!&k9O`r#PTfrs7TD9yWMJy1T?nde5W_DyoapIhKrPN)yn0AHMxkEEKAiU?j@bPqhI6VH{yV~Vr}lH-t*E_PlJ{3GmqTpCS07F_Lz2=F&$R@ey=~U8+yJ@ zcsCfC)xDoyEuVh=(TSfaMrH|3;%NiQbDHrH6)nItuqeU}B?1SuMFRyr)TdN3fa`SX zq`={BFQw{wC-jGt!G(hdKEe_AB9@rZ(m%?j^N|}mw7e#%DPUe$7IDOM+g+@(g14zR zX$7zdyu}9YiN|*AVCwxB77t&PBO6qTWiJIso6)!i1<`fu)8OBSa^#ca5jkNLF$AAo zC9>hOU+>=w55fp@t%pOtlP|P9+PJpQor>#Lcd+?wm31YT)Jn+QP!%&$ErEZ2Th_Hd z90V#BXMP^Pr*KER^1i1uS4}UizUH7~Q_fBCU4pnbBU<>{CJWDrnkBcP6o*g4CFfn1 zFTq$9A8HT#oodUFDYtPTWneNPuj!D$&~i_Vc|)@4#Loe=Zdwl6p{LnDj&5^_l2rUv zYo-cR;S#WAa13xxwDWy5j9vF)j2#0SvWv<76iX7gGk93RM*$>7l*vd=5#5QuZZqK` zI~tDt_5AYB>0nyY{mu5PNp{pk zJ=#~chYsbTqMFi+H;B$Snj$>#FI|%yrPofr9Gfw293s-FRF6jE2SEW?(uOn8x4<-m zlP7&H@XNJBtlfNdbaTTy5X8N3+P)WSlOk_cR<%51sui*v`#t{KLCpBdZXq7{PEwL= z5VhO#TPM&&ZD-m*#+#Cci{}a%JO^&Xjt_?(iK=a!cm!47a6ZHzAXnO2Bqb zL)Z`<_jVPO?*z;vM;X6EB)X0NO&Km$?Xe{qqP3nL+B8!GK(0)4u}gZRWi)aO!0S5Q zzsOft;!hNwHSajP+H1KHI)V)1iadKV374 zY~VD{bToZ?6f2_eq>ZPo{gOyKt4E0Q6>`sV+`{it)hm@R)_f{cjQjXselzG>5pj-r zb->pN=Fa^O2|TB zFGXr7KBN&>v}TbZ&fSxx8X3vG4)#DcCN0g1B?e++SAH*T-~0Lr=`pbtn9AUvbhEXr z6<5%(5u)i$wXJk0@*9Y!=t+B~zJ*PcD{f7H2p2tMMS=p0QhP+<2FtBTNJSaAQVNz2 zL9~Q=;f!uGkYwy;4JoxF7*%sQi{O8L4V#(Pt@R?KAw^^{#f{w-AIjKb!#ndR()oob zK}{{!=Ge&kGp~|m8dpZn+FeV)d{xjfjky>2917LjV+q>O zs$4iDPqe%EQRsSwP$=g4X~=kyYO1Gh*+QCN8a7z2NO77t97=-3fA}Tr+p)?ne4-KY3R-XQe!E>4*7fsn;B7>i!>awu zhPw9J7+p(SLjN&9vdyclE;KZ|)6xN6GnQlS1l98Zhf0;~t8#j$$0||YWvq9$TQV6S z*KTIrI)|Ga6y#kr1B(`O7?cWr*P9~X2rmFSGmuF%2T$OsV}J{aYb`9}9SB@)B3VG> zhdyrm{OP-h=4DfqeH8+ca_!JD$9-!@m!jJN;k9irE&;QhE{rp8XpAV8s-dVJ;7Q7q zFH{zC?Sfwh-bvknoK{JxKx;$}1zkf!n$BkKR(j*dP@6lnFt~PWN~iF<=FKo+EqP1n>%E$2c%GW!zjO;)W`)tCjE@a069y9(cG_-T^p z>mx0je&`QuPm&mvZa1a^6n3l&IEt2Q(~@f>IK<`N+7W@ba$W7!p^@aiP-khT)Ru09 z2B5)K9YOj&n3P_N3DEGj z1$VK;U}OLvPjY?Lf+pI#zXxs*44em*FIZ>)SZheRYP(|CYdwg=K-Qoc#{iNIgw4p4 zT--%0y*6D*`N;KLoh5qHT{kLe0A(F{%`+LdnpK#nVVl1NJqB1s$|E`+pga(~@Tb&Y z&8BS>#aimEwzp9RlGtQZo6`~u(c-Gt)W#izUk-S!Tv8QnWjfA zCoDIq&Y{#ND=vRDk%(3E#rwF(Wq;n?rBszXa>CWQ%aHBE-yL>Qn*N&rI(g|{8L5N3 z4I_A{HH$|Ndnf1)Sz{iW{Y=(7(Us%14reNaHJ6%CbEhjIVl!6~6x_%5;*?cOGZE^4 z5?H1RM~Ti~*-qwFN41}$vy;`)xbsz6_y|>`L+`iHH|%$M*Yg#yCtqb}kL?LKKgJUHEL7A4D%_$AtWM-0s8CX>w8||8J}-}R7vt= zudK{J$afuDfJ09GF@RV~13NPMGO{^IA+N4WlRy6XAdorv#9N}evFXFVz!70WNWJ$? z+}#EbKm3mH(wC<}&aJdCD?N^4TA!SHsj3pUVhWGm+HErDLP%`8K-r|Hq`ZT+2O=QA z#a&vT7JfpTC9|6p(*r%X0p>yyK-n^l9{9=NISb(@+>ub_?}M5HS~koK`;H?Dl+lfj zKGD_lCu%*kFwwRS4ucYT-cGkodA8XQ86t}kn7QU-z*Ixm;Y#N*V6p*&#&!aEo;H#T z%Q_-Ld?P=!R;T{z4y#%Fw>#TH^-lacGYTJwO}T$ICmZ(z(lt&Fil6Go#Hu(+?1q|~ zWWLEWL60<^0%k1BtqxAd5uiVDQ?eLck#SXj{`K+Z_N4r(tRQbUyR--4?=C#5*3@AF zS`yR2XrbJ3(FpPFy?%Af0)Dy1w*P(fJo?WkpOojDWW#J`#PJpAGw`Gt&)D^%R1STz z?IcbQ$L#eT$x)iCpyCOh#{lk&_xK;)_!fHw@c&2kn`6LyOIR)Q#hStQ^~9sS#w3kC zk;m~ivuOuR9A;zP-~?`_F0k8u4gvAzZg%&!BJ9b^lab53+Zu}W&l0vyi}cUbGiAEJ z-8Y|w1y_k~J?Puds?trH_I4LE7Z2{Ol3Ldp9B-@rxCed(=3Vig2A;*;AF{;_ipyQO zcz>y}Pv_Oj6zTz8uE;sE1Iw({Y19qJagd33iRVy9arGBB@2690FPqROUXAQl|4NFn zzdsF&G95z}{i~ZcGPeOd{>uOQR`q|sgO;I4Hauq{hmHX}yC`nDJSlA;t9Xr)+@Uj< z`^t^Q!o!jSll!v|JkX@XzkCdc!3JQ`?*BWGgpdsw91{4i4w&Y)gW6`jpm6!$LiC+e zi7YyS2R2oay$F&egl#RGldKrCrP6XxjYOwtN5r<+_U4^v2*3h%#!**PTaNA!EYiL< zfZ`o;ocG#D``uFwQApeCQegE@mB?n*d*Y(63LWnmZAB!IYddU!Y^+mzW8)i6UZJAD z<}`n^@B0x)62EYR<>~unUO(0wh8+$6INQvoJiiygN3)3>$`(B;Zz@>7Q$} z@PU|QRJIPH+kF)}6}M1Wy!n`vr8mM5-Z<=i z(i!};*)OfOEL*A*2z?Sch^iAnZ6atoQ?PXM3q{_B*tGcIgn(s7+qCOVuEdexk-`ZeK1Px@OT-~E}=$Tfn@#b-4AvJRy)_IUo z5E@K4N)u0=&YVwJ3y&ZB{dHC*beqV-B#i-54pEtu-vbm-iHpm!_3Wr zm==)DvYkY#?(Mgq-c(nE$Z#3B0G)p-UpJb0q(4Jyf2kCsb6k`zcS-?6g zELVeI`uB2{7VS4>2;O#-<`}F4)KD4u1<`SXelM5)-(4gv=pJKqv;6wDd`BmY@1@wL zghF`%p%w9$A{~V6vq8J=I=&gD-ON6!3DTtL&_SahFriuk{xHjUe7EmUMi}SXO)W^> z(<^BqCyHO{{|$c{R7Ah|--Z>c?0{xM4$U}?uvpGdgxOZzc_IwL_lQz zgEAT(sW=6hUzfhC%Z^c!`PY2(i-nkYn-OH{KV^aE(%vE2`1JP%R6PK!&{`0KZIEl` z%k@RUsV3SRtKn%e#8gto0#gYt-N5sp|MtD%S!-J}EQTu{H#i->`F%l&?ZHds1dJ@} zie`Vr$qGbA5JQ6QH$->(?-unicgw#oj_waXE^w|`Am)Cmn)rSB+=W$$tc0e7?ztFB zBGvhW9HR4M+#@#bsn+SN5m{mS%OWt5mo!d+>>{Fq<^DZKP2KE`=+!A%ic6Ba-_d)} zloDbvswG5xPs*XZK1xwx7N+L?SR{nSD_sjU?T0*#44>G8{k-6RZ93X?hWx5d{CU6t zGqiUjmFX;_kpeKqP89o=qUzZYNcyQ!MT5-my}6Id&nRWcpFEKZI3vM;=4>4UJQbsr z45h%VyG6wG(JC{H?f~1GgFS@EL;B|AVw|Y>DxDJP`pXYNoG!9qov)T5fRlz3Z71c} zT_vhZ{@OnyQO`M!8f%f6Uq)^nU=!3=H|E#T1<&V8icsxnic|s~ zn0Q?^L2|l#r>(!f;W2xrv8M>{jdjCc^r%;TVr|cLv>6;rk78PMl0W6raOD;Vs8&iALu=I+i)S1TRJvU>HhwhWe?>_~(^(m((`-}b2_!)g zY#YG3s_$@jAEm@JlJHSpyTrtT0aY%azVc;V zNP0;JaL`QKvA9jUPghS3JqEm$D0qNEER9z4W?+*qO171Fs=CEef1ad0}__-k9Q9|2FRQFMgM}- z(!qZy{?u!@IK@_-Jo-6gZA-E=G$zxJSnL;h(9zK`&p-~r@+l)!Iht$aFB~^rj(mdF z9eIkZ{?dohwd^_08R80S;Wg%6zWUq8BD*`g&49VYQ;(_41aVUAjszePZ?)74DNxR- z2Shn7cB$l(1{?h!K{mv}Y(fuDnWRiytCrbM-%FrvGpYLEot2p75B zI2%2)A{~3gO4YB*MGFXD@CQWnx3?>6m?7L?^NBS#mU008E zpfJ+*WP5P$!yt*M`FBw7VYs>r9yZ-mByyn+*wT!+^u=&?|54fAYLu|}nN?47lS$Q4 zdUp#@6U_tqVj=BFGB8UFGgIFdO6@CxcfkCvXq`oII7}Ls__oh3%^%?wG!_~_k6jDw zdi*JBuAXY!tSkN?tWdfwmNv0yL6~jW4&2SJ{CRZ$zk`Yr9>;+5U^fJSio!=01}vDk zI1lGGjS^j3qkct)#A{z8h*>$vy*6SEsZK}v=yj7*`t5cAo`070>!GPxK866^VVcJ9IcTfgn~ADeL8Yr8Y(IijS;KeM8(RJJpQJ?Y%s) z>``oEEhlwOFRE9%?LqL|a-Ao#^stGPL5V;frEOM%I0=wRtRA_C(RL`jpqC&_4f>=82H)Vda7|?!(zSE#?Wonu5Cj}b@PFqSpAhqbOf6(ZGasM|m zb4fBfD%^8&KC4T&oAEYxGJ4X$mG8FctD}Dla9)d$W51F*)?IS15=z&ktaNWr8sDR; z611U0CZrQsE2Lq(jaJySkw98pRPb$PO#+Jmk^^ z){xb5RvbMkn-^@C=2L6g{JC16u@Rh&X-pXCcnCLIK#3VGAkI>=x-&r`?_3&c5)bH& zXmHEdd~p|nMbue$@*thxg7R_bg-&3%Xmn-SIzHd1s^DfFuYMt=WLH?@q%4 zHBH&8JDW)_s6Zxc^^msFijz5x%Px-OB@+uJtuMK*hHh*O()8O+YK}_j24x0P z^(CyFv@-ji`8LP^F#OgojMI z^gx9oc{~{Wt=M*KeqGd&$V0zdFOvr?67_ZDR{SOABxErS<^D2pl<;VFksmf}c~xcN z<6dshm(t^0cB?ya{OzZw;Lk?e)omx?PcnL*IrUYBD*yIA`~GX+leZrZvaL;d<_NEO z^!~*VmB_K%6wFa>5Lnct*kNiTvv4NTQgHF+hfh}f1AkA4W1A!Y;CMjV&*xltm7qPJ-Cx9m<__ai%0K;YvwR-!lS7{);!+H}YS-I&_&r&F4co z;NX15pj^os`1~cZ%HP?$CfVccx7lP)m?|Z&dhfIhJmKEla_QF+khu2;U4rKRZLtca z%DNK+7pf@#sW$cD+U36Y`4n1LBYnir!CYA%?VT)sQV!ZLagVhly^ z>?>G#w+KD!X3wYpd@1^8Tz;DU4Y$drx?88-9k2A4I>?^0dQ|*j;sT>hZr^wwLgdX` zJqFYkMJ-es%vYgY9$(MmypW_9t)D=7tFCl%=Tom(gBmx-zrfUdNakv6idhI4NIy$D z20YN^xm^+QO|uGkLesP-rePMmvgYhh;0#qET5S@%b80Y`U2J6ibe_SgN4BX~py(V9 z*p&a9_A6O0UajJ{rxy`gQ?pyLgp)hqHNd zMF^y-h`mz(c(vNu86)>I2hyIL*N#p_@X~zYGNhcBdx|_zm;oM>0Fo`(P|Nl@``ov4 zqY>7AJFP=}aYd*6r>h{sgLlTZ&wn|fvElxtcILfOxfHMQ=5UW%!%ks0bJoY=%3#!R zJ;Lp*bXORzC(f2``S%#$hE9;`0ln5(d8TXSCIjFZwNa{~+Ot=Pu20Pyi`LJGm(rDO zDIX$!;2+k{yf!+t4w4>Z<0nQIB?pJ-#vUPCfh3F`DJN!&E`9XXyV_Yuz1}`zqWQIq z_=!IvFa3SS**1f6scbeaV<^0W?d5ho(aGBZfs1$6jpmFW{nPllue#Wbipd|5zu1)M zujDo_$0eY13`o0O>^U;?qb}gr?3rr?E2@3s{OMv7T8YPierzDrr>(ed$@wdf<^zgzO#Zd<1W2GWFIZ?KLe(^u8JDbo_6O>+k>)ZG_?7ep)zDX6HE>o5@4Yw%dp_+l z9Z0s>Txec-M|`2<(xc9I({XzJlnhOaJ^{Evcs1y3VE+$7Rm|z~k3I%)K|7ieT{I}q zS_76-4yspJb{(Is?#n>pAMGs3yHmX0-4f2-B;HF@4`aS9;PeMPqv$-e_|Mfof^6>HiSjz|)JbXXuYi_hyO?(to zdxEO`u-VFk`1Bg?if^GM-&PoQ!)DWgz#|OTK6*#j#N$N0{7F~?Qmcj6p(>#%VK2ql z@ZBxi&)#mAJl2)m>e8%{z`ie;69)tgj&!dLJij-PbPPBX)8o&!8n`|#7buyb-MoI; zTKq1bFb#M8=%>3*fU^?KCbIV#8&zk-OmDJTyjqy!Jj&Rsj>qxtR9Y2e^5UcVDlx+gD|xvg^VGDsK}zKeH~V}lI<)#D*!RCvOsC6frf^;)HS`-b1VT!WVKyP- zy@s@REuR(%5+`2U5?6H{T?EY14pR!v*MJhM)`HmY4vYm&5c;y4OZsi1#j16{G_}RI z!f$9N>BA02buWa@%h+M?;--pkk+Q4tz%#I7BeK=shDNQ*l)+0SR&F@H8wZ9R8Y>!@ zJfI7;7(zns(*>owvQH)bWSss>*T(-&T~bKT;a3QA{(GM*U)Z6WNyyq$-hwI+`)eQsSX_dLzC4a+X=5vGzN>oC-V3 zOo7lzzx)4`sZVMtAHN)2Z)$;B*eAm?JSS);yTUSJ;8tWgTe564+)60!#W8@_QD@Qb zFG$&5=u*6&_(?2im!Vfj-cMk9P&>HBs4DukanH#7j;M@AFa|Z;sz~uB55_Pq(2dAY zx>WG@F1*wAo!$}28(n|iJQryQOu1niCVD95kU2ixIimWnhoT-|@fxz=+9O~NnUw1=rmJSAyw*OUKs{mp7{H0_&V)fVoE=$DhCC3RU>f})vgG($I^n1Ni{z~V z>bAQ3UNt*evS~ht18z53Mdw^lu+U31M2*OdRQ~x}yVpV7n11C1eQlagcJE9zaVNhv zX+3y}t}$X?sWLSn#QxSBj<-t8Fh6Q$+M#Q8L-fbF^)Z(V0$Belr7I6;(!GuWL_Lxn zGoaNRx7~}p!`{aKt)9Ag=NQn`{G?5o%jFnQ?d(e;+@Xf#(H}&0F)oiQGA?+Zy(wly z3H@NN1Uj*S)(LcOpn1c=$q|HO}xN*&SZz_86V19>CS&pa5HTE;;<M03>Yg(az0}r_00)Z_jVjTK zBZ*Z_9hm>Ibnfv?{{R1389=>g`7gp!)!&!S%e(2cRX%YRc$fmW zAtq01%zCco*ia^k6)xD=jx5ow#MUIwX~@gwt4LxV+Sb6~hm%P9%51qc=6V(+>59gB%;xNl zq1A7C?s~80Q>E9G4;+x4QVjCrv7kLl@XL!lwRR&ZZ4tL661+END-pAqO;+9D1eMwA zLvXWV##>nGpk^tlK5AYV{;~aS%p*fiQwfP#3GZJAhWLuR9BnhD^Y0YnmHzM?B&#Xz5Z#k0%c8_IlUWP!2k^&~5a#N(RY$f!9P&9f zT0_2!gg@y%t4ZaL50h&>Diy`jHY>W%U3$sa1CnG*WfLp=Ys%8b8Y|`{)h3^~ld{i> zVSRbK#?|MqCttYV!1V?vMpbI>IrH6Zc)>5cYsFvk{RCnZ!gh2G<~gsERtiJe){fkI z^j^8BCHU;GtlJleq4NNxaZuC==Ge2?GA?5 z*d8ez7Ahz6GqrrUO^e)*0Zs-5ar{B@Pp{rM17xiUTK9y(K|3&K$WjmN|5z9dZLo4z zsIO{{J2-gN_!HLyc)1z!@0!PQgKDGg+`X5`_NM}O8yJM5fzKWpED4_g=@?mS{YbiT z19w7tFW@_hA-zGF5LgS!p25@*FVHMwzw0?X4QY9QYVg1BMfIQhU*B<@&%5u97=;RH zfoL1^u5Y$y6gtq^rU_a)&JHGwdMAwK)7w3oLCW*P6UO}cDpPi)5?MieE*B&biv@BqTR&r-Zlcz90NWXU^>fP=?=U}5QD&NtX=4~2dLaA$?pRSR{D%EU8ts(j2vH*-6~#ql>?^I z?*r2{)#Qn=b@&{b_c(B8vCd?_K=^%d_0;dpRTMw&;4WfJT#~?iB8ACQHh%7TXu3AA z=@r6$^=+v0YozeL`4Zjq@FVj+aeTdi=B$D?zZlegM8N+}?krgy2zjWZ#84nokT!7y z-LXugvF|N4mpKi6E-uJxD<$OZYz`1Q$EQeIX;R%ojKKBHbKtp;{>!U-1Sy2K=gi^a zHoYzpKUqUGiKSMOMi;Y)pUeWwFL)hjcce^he*V!rpW>%hX~gh6;AO(l4F3|3Y^_wc zCd;Pc#g4IX50Ps=e2>p9bEe9wibepn%hDMAMGT}p;Z{0zj$Y$l?_05mxn1K!e$__l z4#oCtOhSwg3&0&EU6$zIQ!vd3=sy&R+S8Z++`Dm;z!@T>#ptKDTyjJB`@Oo z0bIF}Bi?GjvL!9cn66{MWLoDjKnQbzdFf9jab)|GJ~81kAwWP97ZB-s(TR=vu}>0Q z!dKt=YeVjP$jLbX1_Bp~+QFIf!*q=3DiF_9;`U;*Ah3TXeVSV-iGhEa?8>S$R;#sZ zUOuci26&V^wH*Tl>cmVtgD1UH1Fz0EUKYt2lW%;&%Z;$S4wF8ivonrtzXO@i$A}#^ zGC{<08Djx!>H))>JYZ?4DmQpH^8K5`>7-WAcMSZ22@FXFQpDy_d|815^8K9}4)rLl ze-wJzdtPEzQi$A^bFQn_{>bCz#ENqtn!eyE_+!Ay7AjnxEEQzwUc;kS>S6co5@0d)pqd`c`#u~Z;mez^nuZ?ZFLp+R-wQ7xC zbg*HZmb&-6J;|{5loe2t^Zh1EDYIzcPOJzwm>Z?U^jYp@XZ`yqk1(o(ZJ9H|jZ ziDaejCS09*R76Bd=r&Ogb1j?7zbDrfeTXt|H>6WmbI*1twtR5dR{7wJmN<+(62p}* z@279U!3~VWr!V;5_of<&KI#pk^h*o1|AQ?lZxQR#aO$i%BnwWQW>MirwSEzErDEA)W$z*{Jg~=&PszPVj zo`gD7mY3DLrN$QuS zj{NWEBi{KLzOQ~fH00!e$kqSPcX+JjNdT5hi>F4(4%a4cr@p-9BpR;mIfSmc>UKDZ6nqT)L%#SKfAn<$uak8j^=rWyj_Nm)QqurA(qfhpxuIOBOk zKScPuoZ3kiMq4-Xbqo$%+RMrr)*70Eq`yjNJjJbF=k9e~)7^;c7b&5OpW`2<312Y>ZGPD`^MF6iSpe@!Lu z5&RK>k1lKJL+-52k%;~-1-9aYxm6=@GEF3E20 zdg0puLOvMk+EU8)iECQ8Zg+6^kzHQh^L|oZUGPndFzF4oL0|i0K*Dub>THSBr>>jp zQSZ3l63aY^z&8pHtO?XgQm$ucjTi;C(3GbH|^6S&?& zsM*WGe;v2k7JoKVpCtQ6TTlkzj`9Z^<-pLs$!11n>ix-kuD-c@5xI`)^0qOUXkV6xjj_Lfj4Z%L=)4Ms_s zXWlvLVt$dNRaH?}eQ?cpN8iNiv#yM2>jeM)fRovs?Cd?CN?QB79-Ejv+El|PV5uhf z1nhs?r7ecv7+%i9+uK`GsXdFbl~Ol%$Mt@(aK09{;6D%&+<{8kf~zs!6s=IF_7Y2G zq}pvnGRnBO_o}nn0|(+VAR|S>2bNLMO`Ijcf^V3R*+vr4#>;A$hilc_max z=YB?`>o+dH%^At&8HF=l+-;oxsN&H5VAmsdRqBhL0r|m?g zy&&Ub&onPi-AuZ@_f%v4Y3@#6W#AaZRnCa+L2U_zw&(P%*KsWC{Gl6-o))r8$a|#+ zzzJ1;VCk6(QlNwejNZ_Zu^XR?y&M*OA>XyyGY(Ew2f|UTim0j zKSwhq%d)}~Q~is5g7(gu!Oz~HZtL@*zA&LwtF?IQ((M{F<6XT#%?=cSEo&97BNGN3;*c{;(k4Nzl}Qv*kVK&FJcSfE>%hT&qV*+ z;Q6`~iTeu;fb)G|FHA&iWR&E6-mGs(^cqp9|OQGHdI-XN~9AR^;SbNTmHxGO!MEL4}2!HgD*a$QL^Vt zAIQjjGRZ3`Fe%LaWB`TUg-oiFL7m}1y1+;asF?9(%90gW-k$>}y`4Y(PHcHfEjNB)%Y0@Ab@m6p`Ea^GPpvjm%};rTr4dVAY@_fiy|7gX^*CT{3wj6Imkw2(=) zPi_t#+0s^`zoDX|nSozDtTeQQRU*H7-J>b3*@f$w^fz#lE7-N>3Hd5DM9>MFKGKyO z!{PbSEMX%`pYRN?&Rr-YmI9SMngUlp&Xc5dddyxX_|#$}H3G8-zPekU7qn#ma18jq z+14}7lZ*JMPJ+1mOc-_Uqt^n((en@ySdQaxKyA{hQB~?*MgGTYY`2#*iizwOVUn|88`%i)~F-f}S^`13H?R7h5rxAx;_;~ox6Wj!9p_RDodE6W*02PZ7XPKgxBusVA zsRG~kDSn_4p6o>}PnNp{5fAb2zrj!j=myKl=Lfe#1kf^#64|RvDbfK*^xq8+Td$58 zn;Ch=!lPFmv9`?bp;K9+l~Gt%BsasN3pI7_&aKIkRIjlW(u<6H3A9??P$ycMBR>O3 zM4p+%i&dn#&AF!+r!OWL45_P2X7nkK8(w@1$8qdgfyt=kSrFr8cVOkYWn0g$gMAfz zcAJBqQZZ5WvQx%8B43zisK~e=zj; znHP{EJ+ig&Zmy;xhNf#X6exGss5emV!j0Ody4=oNVO4qh+EMq3*olJ9eS!FSLb2ze zg=HP*5BoX$TKpMr?rADSX4`w@WB22)-Rn~3hBp6Q=`#Cw)yZVTxZBMT&%6y~q$(kU z8mzp?f7@noeE;$kV<^I+o!%QCazhC@ho8PA`yB($;43^M`DkL+!TEhK%$QNmbps*8 zpv1=sOUipS-&j(o5Lh`WK(C`||LyMLM+kUUYUshkzdU4XxY$nq(Yp#QLMUTWWfe3Y z4a7`yI%$Ow7V#991FKbN4W1%ZX+2pxYtrcazK|k6GW<3weUW44^}moF4dFQ7Qb{uK zd6`;qZaQB1uo?T*hx2GaW8>`$Y7D)n^h(t$iH1Lt?_HY#qU!)Zr3kg&eXDP<1CnW* zPaLEsv63~{h+dS+u5zcJbg#PBte0{e0(I@()H^F>C+_aC*Y ze&1hqnO+Y4v4Ys(n=sz`IrkGCJ}4AcHMtuOGHE#cfVhlomo5)D2E-am<(7qk#|wFS z+3U76`SADzt6$LCU;;a*jhcs?SsknLgg(z3x0h5>*QA=xoJ@E_aZsfQRL;V%bic9WsH2N+ zNS?a*c&Ag}Pu@Rw-{sW1GgCZ4snHj4x8*OT6r8qEsSN>Es_n=9JqFC@&#^l*jL3LS>lNXhxwtye zkE|;r>ynDMa#PNo$AiOw(y0C-i-aokdxM4PXL=jS3URjJq+@`mrzx+8`Q(+HZ*#i- zrM2K&zJPvg0{0Dd{1puIu=)thNTXL^>&BQs+Ld;U2+}2)ky%Lg`S@A%!U?(5#w9hi z1vY3((_@hZ%fz2m9eEo2$AF!q^nF&@oJ^xRR{2wv?1$Ije8sC7z5|!S7?nh8CYvk(`t2ZSEsnTn$PIXAzinb}^mHJitj zcRe#E`X>=}m0=`sB(fIBJdZc68mmiG4hWYp{LmP^rmJWwtTXpPv{C!E`VwC}X#+S5 ze?oOc6UzpKMGnI63dm$<6r7cOs1ZJ-5h#I?rS0}?&cOV;n=(FKS+(%-zpl#PcWLv< z`*&^a?V^^}_P1Vqm|f0(F8fn8SuebX^+MV-`%n<2q!4!@QBu`Ni^l-5{nZ~0Nr5CH zHcNlT9r+>WQ;(F60dGC&O;r1jllW47Zl#~H5jU5|umzeybN{J+JzblZ4(|PCvYq)W z{DRq?JNGXUCajuGOR}g!=Fp5Q*Y|i{x7~$Rw8?Y*LG1A@19Ru8%Xa z=5`AFeb%1n4~dYAzQcs+P}y9+uLT7<7jnAffWpeUDKh^oC+ z-!Xt4A!bOE?V(Se&MJ2B)c8cMzVGugsxS?(B)E1nZ4G2ncQbvo-B_uwE}2ue)U$`G zUlr{7v^NS#+OxXBXTjHyh`sVPha#4 z?)q-y`#v{GY2Y!V=ztp*)1Jp?mt(^MtVhwR+3R@2R-^uS*avTSNrOI_Z>J5l*z^?} z!VFroek0oISTCKKWjw1Af|Cs6wby; ze3kygywkvX_pD8PPA@$)8iy3st5l zW2eAf8OWNhV*p1$;)APN5@DeV>t0T8Pe>Ms7{a~PCQF2lcpTplK@3^xZsQY1)S2(I z7twA^Y3G-(SMxh7u*p`S}~jYJoKrNnwhNbM4R( z8oebZzTWd|ntxRO7u5X(;4OgPDG4SDFszs&L7BWxUEs5IT;_NyMiw<=>e0}-+A*Js zsD|gKgJi0cKhlAG{zvR3)Lo)NH#l~(n$g@tK%5$(c%>{0+^`S-?f@{30lyGnq&TjsD>BAgE?ig^Q8{#ye z|A=bZU7Tq=;(fh>{0kADGf$a`V7(I5X$I~=bC2&&>kb|H;&?V>nvnOumd5bHeCTo1 zx%gTKNqvF1{L~qW7?oe`1n-*NKcL5f2JVRcZq2x?BdljuGxmbwce64X+VF{!$j><5X6OQ)=w*^Vy_cNc=S^5n6^O?H{a- zdH;t})TTtPD0&vir}=tVVYBcF2~SLe#x^e})=W)NEB`=W^KZG$QSU0m66~z{n`oSm zB3EPTm-mhV8q8&Mism)%kji?DC_{uq=t452y-Qt*b|Qxs!~>6?yZmGCBwZSxSY$le zi+SXq;Mce&`#Y^#YyTU4N5_ad7iZP6{;O&|M@wgBN(XfaABCP{d@&BTN?kD+<#4)q zcE=b**I~qRMpbBmNJ@h{GsQoRBJ(1>J;ZeBcNvM{UzH}A+BB<)t<5(jMpKn6$B_G{ zXh6MSx|1RMZ5bg+>xs%=jfZ86=OcyZ3}40(uCYrXGejb${9hXgbt68*|F_q!3ll`! z?Jz3$pI^_H`nwyw#!FtSNB>7!GV|66xzm=cRe!sOt>X<8g#j@HXm)K)v#2r{vMuih znsCeR-MXAh%!3Sz6BTEktAuVvQlQ3;M+8VMy$PKdHZNw>S>y4D!|SfGL3O!damTUby-xQ5XNx1qn^&0OAJQ6_3jVi&B`$;oG!u)|WF zTMShTnrjsE$+wlD%pZ2$vhL+Re6@FP2POXe`kEJ~tu9F_>h`~K&qeBcmeCOh8;#co zgqX^^_=6|wVqIPJZQx<39x_X(?hoP@@(1wsm&5oCh+A^JMpEmQ7=O+7Vs}SyB3GMB z=1-7>feKrTIQMD5Lh6N8WViW z6DAvcBJ(aD79x1yqGK2l9CfK%822VHy5HJESaeIOfY%NlVt?(ruJ7~-LbmVUQEs^d zwXYal*-;Nmx4jhT2SaOcqc5uh{0Oe$oy__XxedzOU>{z}MZMl%f+^#BRSB+(Kt8LZ zvo{Ykn5u{AT3)5@m{Y@FYLX4niLU48aIz0Kro4j_o|)e1-&wYYL}9KUjX>Gqas~e| z+<%x}pU2$=KpJ+s1%f2kmrKEYnG4%5>Dz)^bE3?vj5=CDk8N=y$>%=?%6zOYHgBDR ztuCImuh#$#vKCRPKm-d)Zd)pu0fh!Sm=234Hp^uvcsgnsp>exW60kwN?=26g^43`1GJ3KHIwb&nMCG{9yso%?s4A z?;6`8O)49JwAbsJ3_TULxSK&uxO(z3=cjLFX?>H5#=iB?DuHe-N8$wbH9m{d z0f?~Vq5yEM^cs-rPnTra%v;c8mU?V)32>-8y*cVnhE!c`FYxJH|I;6i?1MwE6i)>s zsZWyM=%~_=6oEiR7}${@_xA_dlcS$YePQ$Ny|SvT$BDBqwqC<}D|Lnu+DCr`X3zZD zh6=)kV@S7jM0$t4;kv}tto8Ct34of6!QNxhrAxQ9WuCbrqR*NyBxY@(YH-YRF~pLD zc3MRpNzU9frYR#$Jpb8+U-jq|;G=_LNxn9rf2Ttu9bITAj?PRF@sZe?%x=86hgFS7 zz3@#C(X-6v&zHt`y=*T4X|K-+;qCJxfpG+gyU*lScT+uP*bN~O4d$^C)8779Tgp2& z`(NRySe2B9lbbhiqGx{a60bw3e$$cSa&!h0AVpbY<(h&r$ERa=UOeZFFxaoftJuzl@aP+uUH@ z2<|5J=rO`bi}vf+vz>nxhAzm3zdtZxfUFs+Ed17`>cx}9i+3;W^{{02x$si zGx@FNYo8?9Z4i=GHd*<`y9MHVcKUEakQ)f~eFB#X3HJ(%=Nh<``xMloL8?51qk`#Hhaa_A$bUwmb3AZE{7zA~)Xdtxo26%U!LKVX z`oq`XnB07Q6ME~2fTccxOiGXj7WM;_pfFuypUk!Wd#3EqP#c>^uM@}Vt0)J?{|*fP z$}sh!T6AiN&9&besRMIcce)LQy!tLO`ot#Yr|CeQ323Q1P!&n_1xDPt<&R4yy+g9o_Ctfw~*o%h}CJ^UXI?@XhAnA8;ggY5AI1YWe+RhT1_CF4`8_p`b~83)}O!&nlWZ$2IEU#fq5kC)nkAc z=rjY;iL6tIt;NRp8Tt~RH2bX4110`St1X;(?Z+mOq6BT26Nh*rCkS-mhLJj(TjAW{ ze)D_5=iKUfjC?QQWlYaDT;ydJ-5SHPBRx<_=Z=0uYSFQ9r$YCe|AO{MSB*WL&YrT) z{Lw*6)gWWs5_esm?GDjZbxt#%(tO%BIAIZ7z^+|e$DGRh3m)g%I{O>VP%USA^tE;t zwj8-s-xSkS<0=)14TlR!E+Npw&nVmFo&Ev)<#?_xgmD>s$}A|F-1_1l)I(tIU++Nk zU)hN$vr(5usin8xw?ssOvQ0Hqz!E1?JV&t4XjZBA-x~4<6ldr2dhYy-5oJ~=!92AhUu{J` z$sftJhk_MVF241x^?RJ){M7Z5(Q{XX1IURL{3I4UA-nL=yR+9>Xwl;((QP|&>AYEW z27gUs%X0+NZ5m@@6dIaK=mi6@PAatBm^y7cYl0k8)z$UomTmc@dbr+g#mfm-Avc%O zUf=M$A8vGTA2AGNs{@@{$ywPVr0rIYw;Lu|AFu<>fF&;U#b8R8Wp$-;f4!fshDyShoPMGh+JJz z-pU1M37+164@C3Il5u=AQ0z{*)sqn)`R~N{a^4ehhF514OaE~oZQ=F7GC65pbx!LF zaaii3W58?r+z(U~LIehE)9BKH46Tu?FeBdO^G0FOH`5zF^j6@nEJ}WrX*lTzXlJPS za19hq%a^`ej8lI*$hN1iK4pawWeU)OyEL=FcZVt!B+-j^V|Nk7Um2JUvp;e#h7>3W zT%gyrt;Z3CwBK>>h7+Jo?oMmT0K_ayuH6sBVfc2PYYb$tYLfB|NKK%w?@|2A)2DaU zInV69Bci=~?!)cKptD@OP(|RDoHL~PrIY$%O|4av(Wm<6gw&@_V)t!ml9LtV&oGGv zNjKjS1W&~IM#TRPs`76`a5T{zHaToAClo}8>qhnBEcUEsz_pc>9GZqg^c-;KtInl= zL7`*u9%JHqZ!|llYRx{5A_(F^H8&oOw*m7sL2tGpJoav}@9J+1QogH6k62A%t15BL zNFF%P(XSSU1rg8h;I1kyT$t^eb@OEO`rjJK|(ak7|_OBawacyGUw@;)@bDz>bfFj%P9x1r1Le4Nfi($=o z{%pVvOV&{OHUEXd04WMt8fw?Jg4Ua@T@whgO#3mo%fYjwKL|mpcsvU$fefTMI)05` z1CiyOQFTM4u-{v4Q2QXK*lf|R;rkK6O-~!< zot>Qzja_AaCpI=^=_L*g(RJXgrt3nCI9_CsNl>7>+&7q=tq+&Gr*_xABI>eHY`W1r z`lZY~cTQ5sGVK)h-S)H?4+s{V}q==agmCRhRbmkeXY6a zmVtTbCv!gfS*nqLLfW_$Ug^FhS`fUd)T5N@>9*!+qE%J(8-{MTsyA#B2%*&Uu=@;E z1+?-yJXq?Ft-s}T-I_AxApV{tXVm#yX3nlp3MCTjXjuoB}OAVZocK=308uD+OcJc|lT^v2v&y70!vpizO;+5dW9i@oW z8i*ZaJ_jsRt1x+j9>>5|GUD&CCR7w0;`F&M+{^PBdmXwi@d4#keEX#fX>aF zkz+uuKpR8|(U%HCnnD>5bS@nOJVP=<3no4~Jb@OdtB+d*37|fvz3G8yU1B7XlF!UK z#)q3e8d@0f${zarG^OK8RD;|2wZA6nz$6(E*NjKcxv?K1@4HL{aSf$Ae5k6Zy;MS@ z_`qDaCb$w@lN=vVIi+yKo<%cyNYIiXLb+#PGCdZBtwog+&(Js99M$2A5O_oQKr^FJ zPu;WB+WKC$iG8XgxVN9Sw*Qsba3|nU7x^{_DM@ns4Ws zVf+16_g76rtVgNVY4B2AD7p(0m#4+ZB5Etn+0*0}tK5mb@OXp2={alex#{NNNc@AX z3tJh1E;CE~d%h#t;~12ExLgKoQZwYV-ODheaAPHlG3;~H6q;nU=1RL+hd=GP!5MtV z!o0ds+@&I)HLFB!Cf&qI6NOXae;`vh2> z(N7Oy6dfqSI&cSm#=0FE+hN|{CqB(L=nfLhZ#<6R28qemGVUB)NBn`-YA?)cQGaFk zl!v?cM~yCw3~9z>2_z;;M87y8nn1!tuwwUxHQG#>(g%95SyF!+f{VHlTiZR{{f!Z0 zR-58b#?u#*E{oRU2TE%>RroN^cjB-ojzIt0zu_&aXO36d$n@P9<<_K0j&frExVw@Q zyTtVe@WI=X{D3zRnxlmqrQCiCi}je8b{%!~ibaQ>wX3a#73C25zMB;kAks@AO6MHo zPT+jG$KtR)EjW*GI)o_Ll$`slen;rUNdjwe?IB1{)9ATcU~+(iYWu6skWyG+Vcf2H z(#5iCl7H`r)^l@vl8~>#7s`+LV3S;W%TLHB|NHfZs;GoRDB;Aup(r3SMVbWaD(gSw z{$=A{tz!n5YHY6B&+bVwJsXnNRk$;DD38-}{u}*Rtk!h~Nqrz&ggiZ~STQ&I`sb%3 zM_6S!;s#TlHL1#}X!GA*-k9!?5T0|t{NVLF%#g~I{~c+}KSwig>@7APNc;)%O+tMN zFDG%SEICr^x<7p)FQe1+t2IC8C%9I13s#b9&}>YJzowDcYM(CXYw)CJ!7-piv#j$g zVtr9_X0BBb2YwW`Pmm%b8PclplC@sC_gkX59xUD+wvG*&Y7yl%(r)@c!5|gdL+a+1UgZb*t9=8`S6eCUPTgX%Rii1l`@J zR>Mx{vLG$t=*%?og-0IGZ?esWy~#qWJH@h7GNHlD)q=ySV}RQn4+5{lJM8*9-=;#L zP*$Q^U{g;KCz`;9^H^*FQo$rvOjx(chFjPY$Ro8e;AJJ8!uo{oZV>oq>jrK=IeOtw zb|*AkN7LwQ)|n=k+joF!czCE&k(CPCHg;nJd#0m5$K~mz?)HLTKNCA9Jtgy zP7RcF=HHPn3YcR@XfRC=%j9-M22NQ1W-53U0|qesPMT~hZ1V?%Ck4z?4225ofzvtP zYiw+>S#n>om#0(w{0ise(ySTM)ELttA9*>Z{*|=n-zBp(xgP7ieKYK_gz8i-`djyQ zPgM;ykxcKR0poO(jftk`^-JaqhFhB)r|hEKra@-o^vWQ{l1g$R!-V98_!(|w_?Ev3 z9lv2D2z;}VO-8=Z+=x`k&i&2MF0ZJ&??tl9*pe5_YjEm=lm~%py_>JFSoBeAeO>gC zo7Jl~J(hkZXK)qVp+R2+{H^rmWu}vGc}z`~Irs!M7_EzSrmJfpDy zy2Z1VKJBN+9psu~xVMX&s0;s+-iQ+}NJc}52GumS?W)V(Q( zBhxGyU?PgEb*Bqwh{^uf(dPA5=a<)dsEU4T5JW^rX$34KL8W0v6qHX5uXS|2c=`JF zq%R6b8*sIxk4z?nI46lk#0rR{!LJ+lS{FD#$`8t)aI4;>3gY)!A( z;%QiVZ>Fo2F?>CxM*p(7kew&nnrC)l!0(M0*aW6n;QXiHH7fz0fks{C$4h#?11?6~ zqd_9UPC?eL)M8`Jy<+|Mi$Rh%opO_yLpftt?+~qDo(x}!@;xZLOIGL)dlhnFxp-oe ztf?;z^BjD$ZG|12cwOVo%X%XxjZNV^(5=p^=PH--yTl$tKwHC+#!mL)Kq={c_Tx zkhh8qC!}OItE&bLSIsUyG5!v7EPQnK$0h5h0lQz;Qf-3v6u~)vfvMrL=ey@l?X;S9 z3glgkc`%xU;xv@Cf7gH4DurDev%I>zVRtkCy-i3b=X1>aLl!@{Eo*TdC@~*XF^%PR z%AXb!mR-D5<<2Xvu^}fUlAi-T#$tM$9F1iQmQdrF^nO~*8j4kjl6e9#dJPVtqh1wu z=Jn?b0la#@k>cvW2IYT_s{i}W04sRJNTU)QXwosaMBW{N2MPRR88^bC$JT1floYQ` zil&QxJ@KY}W0PgyVjF4qf>wHePaD@p=vbun=##CEWbEot@soqZAD0A;bH9qGPYi7M zeLPU>n<SM_Z?v5>NJQUWpJE^yfw>9(!+blSwo1mO-B^q&T#UMrMA32}Ho&#N zP4xwaZrt1oVEnG9^d}jdHHH3cfKFx}u@^W|bLc_wq?iaTe^;{4+0L(GDs&5vmqqBD zA3TjxF($e5kqQ2$*$elFP5OUtnNC{K$utzjib`llfN3rxO=&RsYXuSOmWuZFAvt~y z`0KAeJ8$7E93ds{M=$>{nOHd4J}(8qnLAo+6nm>Uo%4n&rIM-R(`=XIv+x%; zLCW>w1!*37eu?#04r4&CcR+Ek{vprZYOJVD^gQH||D4vJ(LELQArR=^-Y&WYy@zbq zLpsf!WFd%F;EX~CIM!PRd%G(UZdq?^{yW&G~a=1NKfo(|XMWimmD z+c|R=V0v5TLpwbqm-3YAE;YZn-PzF2lwD6|NMhT;rx?4P2p!sedZtPh3BombZ$B`q zZUXJz&%bpxU0q5~GeA1h9?!f$AfeytXfhxF@zxS4>H^st(H_ zE+7E&8pG3_ln5q5Vp|L=7;!yD@$aS{1x4z0tZzw9-k2F29=SHCVf8lyP5W;jdEU^M zv)bmnf2INXImQG8@Snu8MyxwzLe=`P0_i#s#)8SZRu6-Mde8J)0dadB^F(~QwDyJE zFmd$(gn7wp@4~T@iUXjJLtfAAO7Y6A!aqtyy6_VZay;}`fNNpLfKz>c;38C2qu+3s ze2?ttvXY|($J;BG&hwndfVv~)RdZHFdAFSKXLoCnE`Kn@sgIFAYzo*P+hCqIrC+Cd zCm&p9AdLMxn&eBr%_y15P5-!_e8oDw4_Bp$wpa+|53PW~$wpJ_gMwk(cB z|ATH8<9;`c+7fr7`qLNw_fY{N;O@t8)oq|s@KF>;_rlz7x;^yXK&eFYGpkJ%_leBF7i6>zp z*JPF852e=9^lK+pnqY^h7T_`9jBBR?Cr#&W~f;@dMW82Inh;U4gdRKr>>4MLp=1DNw1|CN*>($kuvM85jlzZ z$&m0}GH&*$%o3CguKWd^2qRg=D<1;{8J1#UZ4{yp_kd`ot*&O34QJ$MuHU%@!S8r} zf8bTr95+E&E9Bfr5szn#Zk&W$F*0e*^dv?y(F@WQ>K#?Y&{?^fKlNNHeRSk~Dk5^L zZ1&&YIO{Ficb{Y z#bF~t6LIm`gJj!bW!X=P|0YW^lK<9EznRh+`MEBW>rh9TGP~QK?FBtzPdspjThK1U znhmMl*r-4dFAQjhcH5cQo(gJch~oD9%&kslhFNNX&uD?EuJfO8aTrneUAisi6MG)c z5UY??bW(oU8+R#L`*cX9DZ_}yuPtF6*;$_lpuLDMsjX%U4E}HL+Q>rv=Bp4K@e$LN zaf8Nm`Gb+xMXF{J?SzKN#%3Ry?iOZ%DM_P+1=k*I*u9KR_+TY7bP!9P1A0K~z-v)g zvJmmaL%S|vKcOdtzjc|>J=$!1L-)DpZ>WAa!(pFVyH6fHgR;(H#iwVoZri`lrB}GN zi{F4w;@aw)wpDqi7#x;p*!uM%U9qkO-txwFkqdm3k>Ku-BNjNFT%-yx<)UcmNu_>T z^1pqK2IBU0Jr|MqN5p;K;mp)qtb5g$ zHDRezcQh|hcG`cc$ahZg=n~VBD%D-zn9s25wB3kVU%Jm!c**Pm`~tVzlxIZ68`WvK!DLd~vDs`yy_{h@0WP|L(u+>$Mo-;NJ)HkH>;v`ITC zOwuP>*3??MMl$t*@o;t5QrqG&66_sXN1FOZHRtWmFEjAXTBmSbR2U=-Fsp>0|A| z0>r8AuIh7&!Kx;nliM?jbB1-+a$k}JEndI7QSeW8QGpFX5LaQCI{6f^L|(iBZQ1Z{ zrRg5@WgY57bjN06WhkrSf{hqB;s!eVM;~18g`k6|qb5fljK1 zcrnCT5Pa&!;TL7l#4a7t*f7MQ|IL#(JZ|if?*cEo0s~|cQke;P4o#T*FCh7(?FvG* zA>5*ekb1Kv%{;>BjgTDkQZ)cLgjqT)MY@Xp83|O_gFXAVQ0BYYG`E(56@z=X?jlHOxo%{bWb)MmDzwi4`tF6}TvPZO( zwu;(Ysy?M^Rkil0+B3Ewq@}1`6fG)kQ8Q8_HnC&W9wByO)J}{DB7VLP{>SlukZ14Y ze!q|7y3X@;Cb{nWcf=rNBruovE5m3}#gL1N|}S9=ib!9PjsqM~Oj=ID{enwNGi z(q$tiL6;K8F|iiXxvX^`@Y=b}70y}C&KQC3wfo2cR?0((&8#9y1;&yR?R583qq1|H z)Mb^j?QHKE?7uEFYIFHWL#Ctfa*zTt8n#ey2B=bjGlns_&2c7nh161A0M&ap(1gjK z%qbxOe0%-+EZe`HL;6CL;fm+p{;1KWNIe9P0O}0eH&4jAu{rw-y?;^fa%oFMWSQ>> zSzeW3WJR&corer!=9$B0OD)!3xvUzF4C$ZiW6rkp1M$v}b*Fo9zt z>=v!x*59`BWz-(1@uL%uY3KyKDx@=1k-(aSW`}|Z2o94`sC2=4&XplTn&)Pf&R~@+ zzW)34mlPi!5#FU><22_wW0y@^?)2Y?rccy+=ar*Cu`7mv^rDn!by}pRl<#$B2LrQK zl4s=q8?08`WLEA#6HU(mQO$Ccv{1KF7kQ3m`pOYn@7)XoV-J0T!Xqhp0l^<@6fDmo z>onM4OpVJ;hrWeQO1H6%BPV~?Ux1&%YRgY<(nf4fkG>Ya@EObaFQTtp@V^t^0 z8&R=)`Za+^cVpjbbMgY7^RB9vtm)CUH%pD~^8t;M+Gy-U2mQ}0T!tudhUwa`ybt9{ zyq>Fk=vM5OCEB$7JJ&fhIW-Z#YFbNCltZEYM%sp-M4Z&RCl(wiY}vekJ|%j>@e*0<=>9H;FHD!bwpkyOFBuSEFU75h2EjHzS_stg&lz zLZ`KwwVqy8K(Y&_LxX(Gtt;C;`UXwD6Y*(!HjXa(bNyz4AbBX=LLB0Mo4(bJ zK-GWuFK~>@eoNaDhGn*KIC}4$0fe`M%I0YdO(#l_z(sUBjB(DH_PCmKn|zp}Nz}gE zBUNO$NB7|aw#zyP$jG8%$mp6cr&p@Ixr`f+Nw$jf7)y}4aJ4Xl=K%o@YFAY3n*c3lc)&(#VTGe z)s1}v+BL>v3j2J^+`|fN)#=lX4wDj6$;Su4`^u~@r(*`BSW(db?G+G_Srg+y zaN}X@%lD0hEGht#4E}en#(P-nJruLug2(?(6Kr~i2eM498)}uK7#(fJ>6H!mln)iz z%<_J29)S^^8N+a84;RN!Hj-OAh}pgIT7w=DinFeA|Ar%4=qyK1lIY+n+Zta$$9U;g7(^3>M6GSy;IfUhfK=6ZH>SXwkHvi?!|PfWSPljwI-aH}>(r7s zgT~Sblay5QBa#ushJcBdefAFSgih4RxkB7XDnP*W`PrJRblL;t83G>-2}T@TL|>tD zoUp8g0Z+f8&H%i6MXuK=)2&K*#@Nhvp9P_2w z`w#B;QM3n7!fT2YdIOUVYz^b$d2J4SD}Kd3V83nn4DkP6a*orCKy{l~5YY!7Yra0; zIsskW*%lH6`T^)|!W76zTwiKj;IYY~6O}g=uP)z#q<4w6>$n>dWjJR40Y18qyd{O@ zh)O!lI{7tF3~I~Trw;b9-q5wHR!LL+wCOendpCc>hWd`=wl?>Oq%ypw#ycX^fO1)} zQ3%rTd3Gc0B#A-QU<@K$D>anRFqH?8IBY7}VvU-orz!_7SP6qUp=!~s-hE77a=$Yd zYBHa_l@>|9^Jr?h;Q;{^61=bQu;*S;I}L}f5{YfpBhDLC)KOya% zx_Lg)1quMaI%Q+O(z@pE+C-_TBz30e2-FPw>+#9A3ngPjzLs)X0bqFB76pQ;)|Dn6 z@*YKlXwqU0tVnGI-q@kODJz_oEtn*C75k{~U0d2;)KuCVGD)R%pevyu6h{|?svLw= z|25SPzBiU4$CRP0`JZHw0EfufhxnXHh0*vU_qksy(V_trY8@o(mNqeD@$x_7-J{pcw-sME7(HkD1}a^n8lu|cN+XHceN z8J&*zvblD{0Hns@I=Z)(OW;<#f595)4}Ii0Z0ES~7+l_%yH-Brp1F%(IRh9cuIt$s zwRPV7__9Kgx$8MFS_Rw*pM^-rDV+Sq>{eyqlb|m|YLEc+Rdm56PMP zU9oN18nj$eH#?S!A?Rv3rGi1x!MT4nph1h@rQ2(aNo&U+1LxdrXMUXlN)#1=Q4d2I zTgunXZy&yT@a8}93a1^Qu8Abqo}E=+6n*-j`AHm^Gh*Qk&^|wv+L4Lr=sGb*6`QM= zv;9=;v#of}o9I1JQ6zuW#%se4|6N``3cp|aF>-D90JM5M*8FgIbKhbqYGTooP8_e{ z1eQIp*}Sok6xl3J>BKYIeEK{ys}=Ze*qLZ1yj8;z5HYk=sL1P$ML|za450VH;b#Eu zgL#(Iob_>c5!>5=_g}r%FTSc0k>o1)YPaTdnbR6Sm7dhG;(!D0c-|+jwUR*tle}b1jgUmbayEIqa_t~x*GsE%pyuojFoBX-RHJf%N zl)#0+#6~k|s6sS;KFY%bI9PY0>@iB-|MJHe*T`RcoOl4$J9%1j-hY%7Wr^r|zGk@e z=L{ET#}Iq^_?yqIb5l>ZQS_U)PP`%VixQiw1lA~i>6-CUcc>W%$74Lwc3Seo=D}g; zKhkGS%?scid$TxlDn;)^iTaTAJ9U9)@HQmtH7T@mGIH#fsr%+HaO0vz$_UGog$oU; ze=OoEOcecBgZaTkqnFq)Zf9=Hr$$Lws1skqL#sYF@tKHjqa=M;4`K@KImqiap{AR2 z2Wx06u;s#~K~n`W?6Xqt7Hl?%Y!#iTZ{%FBZ*mKj!fI!{X^0LoU2X4*sIeN6sJ=i( zHiZeF1J(^OFlrcVSJ3uH>*T%NgDUvW0*P9ZlCRxWAXb)`+yZMUEPRHX0T_W>rO)Y^NrEAH5M)5hI#FzU^W1$Xyp^Yt^p%VbTZ50chRu#evJbR#t>pmdQe;^YF9k^&#RDU0oGwaTaFTMDTd_^~yxZwd1u0=KUg%^i zCJfyRi?HFK$v_gPx2%OIA4s=!Mz~B*Q3uy16cR^#)D;B6fab>$1mlQ22oC|gIk<2N zY7b)_S20_(;vSc65??p{6}9dWbMlSliPW~S1JiTiXNw;ckLk#jq(|tRX8;EvuMWPS zrLXlkvi@D~{HqiRfj=1bC4hy3ph6Gx`yc|y<BU$9gHmHP9TGN)tIPYJNNoS=pZG z!#gFGRn@NAUhZ?1zMOVpG5W6-$b5e=;vDjk9VJOPy2XLia~tE(#icj6xRUx|Lh&Dd zzj>=JVj$T0VGmk=*oqn$!Lyu{xUbYo)yHk`q>@U$pDk`?LaH$x_=*j*Sch+`J z08X0_=3^g$Tns*4pMgHdR#E(pwgpk)%2R@-AA_bi-*`y{5LEYaemCn5!`vm}&9|$D zrl=aEj#w#qjUxRQ@gZ{0Y|cwAd+zcnDoo&!ucFOXT)H60?+5{3aoZZ4>eH}chP8^x zs2VM(efwbp)yxby1ANTceJ)r#F8IW(y3i}k@@fm6U}5XK=U+9=8@|lgUiO395WqO_ zxgYU&-EY1JSuT?hWEv7jc;DF=D)NLe{A;8qCE=@^7I`*iE$||VGJ6b_f_hVLw2y5+q^}{;V-- z_lfYytub>8bJx+1($|1*&o&xuD>1ATY+D6w!iEoZebkh4g1_8Z!fq%qCT^*4ybVeV z#!}hJ$P)w_gG3PDULRlLma2%b{u`CT4`e>pk!Jkq&nh&pYkLcvI8YD%NT9e*T(|7I zSAknuc``56ZOJ~v<~6md*fXfR*5*=YeF*dB9WqRev)f%6C8H=?-fEN3AVSPi($1yE zZ&R$ztZcG}TS25n$3(?OZ-Rg3lYo+Wea6!(LCDE-$%O1JaI_d)hH8-5&#~j`7CfOU zR5b9D_#?ywVKY$b!C*#1e9*^);wMK>1l~0ZoMwXDbYQqF8iOpc4yC6q+b?gBy+a$S zisI}Dmr`d?PzbG6)gKDZoEUA2z&$Gvw@Uir337!eS@Zqbb0kG4Ana`0d5XTU>icfO z1Z`f2;jAB$=sQ3ZL6Np5r;f}fa!sMNTjdef#FtCh_FLKou@tY{hqN!SR%$K!c-reF?g?=6=bdC`EgB?vK$#JYJqQoaJiw>Uww(n1t38&! z`z6-*NqW(r8V$jI=_D=soC^JN;c?N1M}VzP1Kjiqy~~Lrm4UR15ql>l+NO4ELUxVu zBEpUCvSCi?WQ*mY?BRS1D@8yJS=bMZRa4x+!9MOQ`|pXndw9MnV7PW9^|AcyKOf0A`Oc_I27_BL9cHPNqymR90S|+2s%3?SLJuq7ZLtimx@P?EGq1 zwF}fILw811)PF%rUXN1to(-gPStf4MEu4GO-*j}U?=+6 z6NLxg{3q#NJzBbwv1$KV^Du2}HGY3awE>Gc160#f*$xTxTROS;RF__Ke>R zchd%`Ri0(u?|m^pxMcSe;U_jw<`IyqMS{U>f?u^PR zmfO0Bf8c8~zhl=&zt*MX*vx#2IOk^rJnPmQ{NN3WmO8DKh&Z68n3{e~W4a0f-c2bP zR90^pxX^N&5Qh2BDbS4{TngzdlYy0MfrXs6>M~!M#gL2D_^?7lNbcw3(|>ulluhlD zBP_UgVm5bVY{6BQR-S{I2`a!;$iBqDAHY{5QlNQkCmd}S9x@qHr$X{j4332T+O+QU)N*KcTJC&)8Le+c`1u6 zV*8y@;8)cLGKjZo+2^9?PU|M00f;YmaE>PiB=&q^c)l~4wZxV2`W5_&La#)6&eES% zUf)*aOG*GQK+wM`aPx!!zU-Es!$D;205h-8afmUOrmt=VR6bVNbDHm61zgX&kUY_> zNzpnnrsR@+C=I}PHQ@Tqe@b5@s}!Fx^M0B&{IVnkf6DqK7+Xpyp)q_T(c?K&+z^gp z{5nk|HtP9ih+lKPLE@c&9u@o5?123H1$JDTP^<<2>4{ueCkSu`a7Bh&i`I_97G=sQ z9~Kce_0)gX*L^~qwrT$T&+y|+H|PDOh&_hXMGW;8qxL8b00of(<52yJle z8Rkey`2?w~UhPu2CHs z*$NL&KUQnN!=kY{!oyUcL^yIO;>7x{VAdO+Z~A!stNb$r0Ja5I{XL;9^5j2Cv_a)~ zhDGAsTePRae=9Q4El1$Y+7EzLtV{JtVV{@M^_ZcJB9&(_fpZDWB*? zNP1FYV~!|^x$7sd=B$&)oCQBT!A?Ile&$;vxHt7y`aPe@PWe&2Ntx7@^mvFPm1;D;S4Vo zt$P*ZJ!bElS;2-zM=lQ~0 zt{3pHc8OtW!_fQZ)fPw_2*$qOSKiqg8xu#04d+X(+iLq<5GbTedVx5x2c65QVVPXH&A&$_2(D;{kU3B$RUD z_A4G2D*Q3#(KjZ ztaI@Aeu_np(8w)*v#0@9OFLYhn_F}^O*s-bBI>zxP*%TzsXjD*#fY32mFQv32rt;M zM103jyGs7usAH?StwLj~A2$6(`-yLe9?3(o?|Q&@WTI8PM~94!<4WaHr9I5Jgf3gX z=}qVF@GFZpA%%Xy34Jc+`u&-T7O+Z-T%6VC6M4NSqFZE;R=qtL>aELYUK2aFKEMbR z=|O$mcYI_pHsYK)mT95qS&r%u559w&YjOp1Kw<~q{HckWHFp`K?n!O+n-DRd?u`6O zmlu{#{;+p(yM?cO=gAF9mQAWvvl;)LYY7)UFhZj?wYgQIW1?2`vi znhMvim_)0*Cg0FzD2=VSQTqTl!+SuzY)&$W`AuT(aPJm0{qit=Z|Gw|zjou;2Z$|u3x7+l0KN(!0$@YrPewwb1~f-ytTc?`4AktJs&sqb zCm)vYY?$chmzr-#Y81L4T~p;Q_FS_J6B%hPJdJ9;M#<7XO;xcX!~uEN`7c=n8dOgI zH^@PrejMX+#B-9XqM93454|mvZA*tVuGitwGl& zM+rHy{QF8kgw;TLU`|ayvglYN>mry9qOWYKYcxAME7ceB=$nm{I@R_Q0pLB#S>#R= zrieVN8FBYpYZMJ7YGT?9_>m9QZ#H5X@->&cb{^M0mF{CFh+N{W0B3f=OtlEu_bQiz z2zq7+_eY+nYvX~O_@@{;q%MgjtA!Vd6egw@S67P^DAe#fE4zyBS^ctB!@qP$8sf7mk-s2^;CT$J`r zj5qc~y=(2s2m442h+$oRBGXQ+bi@LY$3sXnFv7S_5#d|Wgj2ccp16(-_dokLp-XR1 z$VfTVpty(X!z!PjCCyUJq zBm;F1koo8q7-7ZrCJ!WIPx`F&R1I~+<8~g88-{2qn+V?W=A&dv zrk3?r0l(s7xT6WSF=ZDJ4uhY9uHJ*M^<7+A%mXCB- zsjFr7`rAxS!IK)2gypFW#W8J4B4) zAFS|e{VRA6dWQs1B}gBYwp00kGWXZ2S-#R|a?AOcNLfk3g}io#@{)~BlFhAcy3@%O ziogxdMDKr!$Ou0)WCm!#;`er_R*w!#G zIf%5J_~NxLrB|837PlIw&Hs&r!Am5l=#dEe#DQ{xu#`)=RsjMhk^adiII=A@{DQl0 zd^YwIZ5YUiRG}xh_?;RUx)ptiOHz_D`AeUC23SWTRjv_NjY*)EhNMrURup}!7x()+ zuJ@ELXMr_E6N6b;f_-hSQ?*EH$n(S_&tZO;Gb)o`!7}uo_e0W)1Hvn*shrpE@CRxY z=e=nQWub(SqV-6Ab5ehrn`=kkFqdfTY5pJ!at-qG9^5Sqo5;C6Oua`^!m+ZtRJzoQ zH5DaZN(<&;;I_|6Tp>rEgV0nNkKh;rs1F6?Jq_6;o6T|JUDrJdb-< z`J{Cuxi)r_`fm5|V(!{0bopHI-ZI`ATN8X+%1dpny>$HUlSMx~a8@k*irSXU!#+Vf zm)X?rjaNUwcLGE4J{Ptq6GD98c34b}_2s578g5Q1K1|8?mtUM~Oyx!|wwI$~y{P#NMDI^k_r7k5H@pb1v*OZBtMFD0H_ zk<5XA_dO2m*g~^A20^7xgd%#~R3v%^#m)fOGCN&Lf!pHXO{F!DAh+D^A2QxG1FRZJ zq#|2Vb+jAdfh?%nMyg6#`v!Hf2{iblhzvIFf1|@6Ly~U44!P`3eUra7L98lGo;CaX z<2|b`X=lvDfgoxTXTW4W`>$F~YS8P#Zr+oKAA?JJ5VdlWC-4@fh{L$9sdk9q@VS6g z#|L7WEIa9dRUsq&kt|{x#In_hVvvFe&NI&lF z{qNmOD7l58mbRBy?qRn}Ea2pe3~`w6JTC>xPJ161X+Cf`{Buf55-9Juzhy1q&uJ00 z+lu?EZ&6?ryZ)0s?OUH!K{;KTJx)<{D2LD_@aeoF1+GY|Ke74}{02oqz4Vkp{PE0CN)iiMF0xbkPGhaUciE2yCBEL=T3YO^HqJI*5zwB*X`*Bxh z&GQ!tEqC5}*T$3HOHRH%t$GM=cUnQeSK+SLN)*i8)eP^Q^BIweaCylJ9I2o^g5+R3 zXv(#Xl~YUI?e{dLw5}w@@XL%tjqqaXWo4HVWIGasI~Ynk6Cs?0>3oNOb61+jP5vfI zmS@og@(g%ee|%S0H@&O)Yae8YUVy`{sd3`M29Cw+3LzWDW8$c*R{jF0Px`6*no;wt4@iKxN7ZFj#W$k*_cECii5G&=)uL6sL_ z7igVI8PU+UG`2=kep7GXkHP#G!e6_l12Z5!R(TKT0tE_HJQe>XVt~^}IYnoHOLnIz zjf|w41)EPOn_G}DW(!04EwKAe-`!$548hv&TViR8TDL4e#@g8x*JlSz2OQ2 zs-bS{tQ3K?zGp-pQ&d8LZhaKq;6x|l)NK_`5qF9;X~89YN@jP-ZAkVC_K}9KQA{$N z9-xgzV_!Ug^J#FV@UyC?=H!fpKXO{0oymcxK@xLM^sJsdJ^da~bkOy%By23>L*>$H z;#TbFWJOb{L9i*?_Y5~DPRn=?1M`-C^%pGqV)xMKgR!SF^sB`%}gNp{hs)Gdu zXU_d@mZ03p@)P@z)A9OH_%_^H>mpjeQH%&|34465o8Ee5^ANCZ{e%Zp^wF^O$7vPc zyEm^2Bu3{1FJSTiJIvZ8rfhZBzMQF&mkzCLfCTlT!D#yoe!=rM+tYb-XEYBNSjE=$ zzMs4l%f;-mo30wq zQuIFed(C+#yiwdqbZw*U(lrGBRRj{O*Sdo0pI|w%-UKSk0S=Lo5f%6*hN%~|hTssVw$#SZz zc$%M1Hl)(cmt7F>TR}BHgtZz|^{&8wL(c0e$^+C^?16C5c}1UIuxyvT`S}Zw+=odAg)%@+ zh?ef|zO&tj8kxyKj`N);@U6HSMOy5Y2a2(Z~u+o}bQ(km809|3N zY9R1VB9KMxw$2ZVO}jLtQe$+*(m*zAK&*@9F3VLqp;Ilkom=M*bPmYQ8cN#~PuqjL zoxM3A?!$SC;CNEhEwaj}J@I(bz*oM%@aoueWBqIr_I=P!=5g4%M5V5=s@#M|_D#Vq z&;@Jz;<1LRHwlDivSD_M$Pe)9qz-VRwc3!(8GzrJJ1pYonu+GFPK;RQ{EA^)$|M~c zYEpf^vbLHqMc(8znQFn{iqpkr^fDQ0J+`YQ0x)5aL!>$73_zsySy1Ry$G5V*r}_ig zP#X^uh6NwL((>+MBcZpB&YORRXmVa&qpwL}(f-BE271n`l8v3YX}ll8>$+I9*%JAD z-*Fe#RAb&euN^)#8w%^56DOH$@tjCfl-mQs9udJGW#(CnD(!+|#J8{7)iBJ^^$a#E zV-sPmMzq_oHpKA$>BT*xiGz(eOH0JR>NkI0slChp!UXhe%v?VMIA{_Ru$%9b7HycO z-R7^mO9&~&%S%ej{O~uO37wn7&;_b)7?JZx5>cL@cS&p(>*nBCnb~0c^StnO)1<%b z+gI_5QeMjbt8{h9r%JD#m=N~C^6ynViXbHmgKc~kuL4rc?nVUZW5Aa}l4DQW7ZA9? zP&Xm>X)c3a6VCpyK-vHY%=t7vjCcJ;cRyL1@X3>QlPd!_(tHM>+z1h{0{P0s&)n34 znxvvMCd@}wmxGNQPQLsbxE^|6@NQFIj^gg%<^kD*p1e?0CJ6~>?F|+)7DDdy8O#}p_bfZqa(CkC(#MIq z2C-6amXPg8ft#(w$_{RkxKhOCN@LTlmOFKOU&>~#t18kQt3eAn)!zT=;hnQm^9&^L=Pwy=?TcA6q2b6$&dX`-2b_#g^Z z_wDC@iC48i^_)kaEJF=~k26}~45GQ}BWM?0tvN`#<{z6S zNmuf3JH()B{Uy~xA%nn0D~HvH?cXH-=6wF5pxf6q?c8Jqd%mQ8|0|iDWO)WKk1<-+ z({_P14!>TWkg#6qO3QE0GsS?x+?`Ah*=}gEJ^A;rl}qMAvbyXjXI^Pys6_+Ql3{!- z#|L$`C(p#<<>^)vY}S>A!47PhTT!y{!S_2~D9F$y?-=zWy&5Jp`lZ~QSAbHYuix+K z@ja}Wx$5CZaj#s~EZ^Sv5c@~*_OO0lin#y-4?@_-#W(h?`1XBzneX@4?_a24tQS5u z`Le(UwIMB`v5>C?d)DN)}ogN>NAIN#_Ke6WyU7LYtOWM?83kFM~nABFsF$KLxh&#dE~!AmmHOS7|8p`%cr?ikX)sU z6R%PM*|I!k>uwj17jN2X9UDgTRXp;RD@k7oP9N5bu859rzC@b}Hi!lz3x-$5tNQ8? zp8HeZjTbMzEfmSA<^2#(n#2yF8A0};jO4)aM#-N&B*sphL4u0IDyLn|MT@|z9S+0I zZ@N_t76(MT8vVg;b|o%GDOT?9hwKA&gnV1L5yzs?t~0a&~ABnh#B(U$-1!m!%<-C(gP zDW=Mbwd2^gDSxZ~uV~EI=G9a;FC9_-#&F+$ANh0cYotHngvt)l_@T z;RJ=e**|lnYs^O}9HG-6f}-X)NCpv9BRoR7E$kK%o#_5!jI%knaPD&5fP!XsE9S{- ze0|CD=6jBswG{aU@|&egnX3Jk2%mp6i|=Nysn{gQHNZvS71z6-9Y#E~0`BCXV6QE;D4}HR< zYRJK0ey|gU^`jcsL>TKDO^C$*EuX^CVear(TFd`d*@n}c+DphlDCqcLkb==V?^Ecr zAcPiSt<+z%2WYuSo3RpsayBP&d}BL>n5Oam`_@CtBCxAH3EBD|75E1zxc9c`^`UQb-j& z{nDs@ZuW;1(!!}uSNgFkIRpPS^XhwLY7^moYqWJcV9z>H+&fa-w8`CP@qX_cMcl~h z{Cwr%=B**b%1NGQfJkSm?yw&^9GA_li!&R$^vTTr6+Qm~ zwlEB1@)*?qbz&y6X3y-`GtSqqv;ii9C(dh~Q1$%T(AnO;Jugv0Ico;DwQmQE>=GO*4V^R+#QnslvhAG0{=-Ef7!%N}q zKfAd$Vo#x`8DO<>qKU@V@^mpCeVxWZYf*blNySTWoO7X@;v=eHiLRrOV2P4um&PAI z1^T)JqaV4a9RxBgMW)qq#9NVL&!U`y(rR{QZxY|ZuU zS(K$DF6^yp$u@Ed+h$X-gYhGlefA&ZSW{a4c6D5cq?XIX?tXEZkkHaKqIm_64k^=Q z?LGrsY?NF?b5lc!>1hPUA`cbWph7M7pF(=5kI$l>s4T!Ofj`%5d`uzoi>&X}B%x2o zWxp1}XE25>OucwLa);`ev)Q*-&>Jg+N|Q3jUC zy%SC2Tk|f1=T~_>^9MgpnKNdLy07(Sz{|%M{(=Cr`%Q#}%l5l<@UtunOY*KO7B_n%hgv@rZ7S^D~U^zt5p0KzlRSLCQk(0VMHU&FyVhVG*yIKwrE18 z!DEh_HfSKMu-Xl5!l~Qilv6?iOJOna>IwLX7F3WVoJEq*Hl=DifjOvxtiLq{J}LU| zLAUiaTQPjvYuVWD0Qr$;YD+Jd4)}cMevhL{`W?5-Z5nf(Te>dG7oNr&cVs3-IX>Eb z+U)gahC<^m`R(Gf&S7oo$`x(kT7IQ6#Kq~M)@|=nf?Ibi2#C5cNWcVF_g zwjd?ZuJyPr4&qX+w?K;S}+2&c+k2MRGf$T`+r@EdAO5&Yi~0^(-?_fPxqYm^E;ee%HE z#O|n3{fDQ~enxvjk!fDqUE2RxM}M7Gq3s7*)^b>gJLjl&3u-<>bwNTZ--zNlWsDQo z-LChoD8A&qVw?STa|!v6CnU*Fb490_HlzFb*tBmRqGrV@SyliHP-*nd} z)O+Z)&WU4n#)&AXUB`z0-{;x+`M6ml3+KMMxrep(38wI5O+X7TElAP7cI5l7;{(+s ze9dOji8L;(*SsJ>MVj=#+1(V2;{2SrB2yt>gFA24-sZ)7%miK$@Scw#<$V94S8@(b zqtFzeVx@DX961A2@xi;AtS3BJ+l-r8M(~xfb2@H8_Q_6uFPT1;cUf??&?OnAKpwwcexzgoBzAWMX$NF+MGFHsw zTS2(Mt}{Rd=943d^*vRi2om@vozCqMIpyo$@|!GOtxGpAv~FM6vM%@yYxRJ+=$Nq$ zc6_&!Oi}j%?lD~jB|z6iB)5)U{OM9{coUK(YutW!4_CF~{OzfPU&tAt14$7DV_@+# z&Sv5n;8SC0u`9PeqO-Ho)-d`vfYZh^ZDB<5%N3Q><8kB4_!p(c#eE~C)uzSph9U3g z-m&I)Ll_k$JO!g<`?{YN^7SBxl48*;Rlr2hAE!1k4%#g=(?9v_Q0`?DK4n58XLU6-&pn3<4lVSR_hUsN)!1rBQH{zQ$5poKng)y)ln+x=sf zrd`|0UoViPzNL673SQaOm)tmM1h$O#OOVZyTI6rKkb!(Ew_K09`mCP%L@UySp5~Gi zk=Zf`*FA09d-Z9MUAp*XUu?cn;<}53?zdUdn;plQ!ExzUX8UtRC+wPL{w2tSc^2Kj z>e>b4;;$T4%j+M}-n^S8J7jeds{(<%P%eL7-V1UiUh7vNI0k;j!D_b^RU_lZ9L|Mr z#tOE)_ieChDDjNa`L*7D@YSAIj30Xd!-XO8^F+16=mpD6a0VkZjF{Bj`sVG}HYX-g zS?fc5sAwLAl}O)aLl1J1xI}61fN?cS^Ob!s68@>Ov10Z7KV81p@9SQ@crQJwxcZZl zA{xWJ;gw+abq{0HRq7htv^@40<6U?2MzyS9B!75#Xez2KH2>szSdSXd=}($6B)8Mt zpo{ggrG=Y(#a!;pwVw=SopnbF>z9KDqtOl_HVpIHELkLUYXCw*{1LM3i_|JTsGgTJ zihv$C;F(|b_D{@ydz0bfsjupqkl)#6Dfw(qC^hN~;F^E;3m?LFUC)I4vT|t0uDPBv zwQ!L0W+vsddNEI6f9-}^-TqGexDM;2kvd7n_dIyIwSJ41QcQO_dKRe0d-`!7^kJT@QMAZ)o?DI2ywqf9cDui$w6K&1Vk0E# zx4;hA@8*)-WrrhYTmsenbc?5E42D*Z#*=PS_Fj>`B=;9t_IM2!{wMBpL+c5>tNDC4 zuNA^~n{~Q<5fp)THozH}ku>2XcuP&S`R|E@{FLW&l2uUT$LTJ~R$A?z2ap_GIVuw) z<`Jd@(Vqa;lkP3|{>0F6#sQO&U${eiy+9Y{a)Z$Rd!aL=H$NX{y}+vd7>7B07w)|# z2;@=W#-E&q^=z{&(y%?5B|pM?!+;}Yog+|3qDSRZsrUpxK7(>oJ!tQUUEmqO=Js;k zz2KU@QK3C`%cQ#f@iV|?%wm&{-xeuracS@Q^w-8i*CW+|w=~q+Jnq7Hqk&9TT*`6PZjKEGfY97L*GH_=f@z)*Hqg@e`5dP zmx@POQLhsZvONYiX-~pFTf@x(r>PE=T^9sT)r_AyY27~$L_ zq9~G@z0$y^Ok>O-O6ZiwDmGtS13D*y;F}W@G{es<^9^0scCeG!<<;oMJ1hlYoUvl28$i-m@rPiSy0MR37;QSlb5 z2ieqouK=WcpLzej^p=(KxgmPNobqDkfbW$ofn~007YIIW)AT}g37IPmm% z^~n@9JwJ&XjriYBQDLJm&M8Y7_87YBF;5lD)JfX}*#f1>%4EaS@bB?D0Pz{ziqG(q$AN!#L0(p5Ry*qY=@KFJkvG77qw2N>9Phh=x=-7^DmZvm!GKRc~Co#>~{}Y>lHWl5o1KX#%dGYii$q> zx_2$bqjWsliCo}hPkT{DpiOTzRl}{|*^liG$=M+I!~a?<8V^eOfCg69G=)G9W04gE z!l;#8T~BADA@g;H!#>xI8_+k@n3mSqX`;|8qKDZq$0D5W&6avqxd|npTK=Ua=dKy9 zi%ER#G?q-c?U1!*CI3;TNxEH4X~+}F`n}+^Owlp^bT_u;vlitbU+hE9=%N+FqF+fs z6wa#Tde3W5P1Rr{Xo#&ZFbaI{oA4}ygH>9^SNh*>`?-rdTPUKZ!R1Me$8TIGljMU0 z!O{1;th%8=r*8dc08b!pZ&4!d4B!O6=~5kR>hWrYx%%&;G$vh5I(rtSOw#KTU)SW> z2QSG11{S~!+6_7LbfgoHdEC_R&(|`IT2=pCpwFQ{Uug$DRbqXb14ivIQ|w++gg83n z2hwp9h>)VedkKwi%hr;8v;@5|JYI^P^Y_9!)$S7K+mP|~5}!~=R%BdcVKTbX9`m`s zD$;2o`{L{UrFfGyY&hB-d71i@@@!$&!jzJ=2)^P*|2lFm39m?V0;+{N2`roqwusxBeR? zjFn9}hL-sr#_ zGkw&!*KK(Qi1a&@bcx9yFtbhgg1^PH?a0<=VODya(k5hBulI9sc4MMGYlp5KoZIic z@*Ht>HXS5-dY^6|LslM@_}^xMmwJZ|Sf_e7bUW>A>H2U z;z|uH*LB+cfM-_K)H5LJ)i>$|1d_ea-$^KV%pA36B@Iofs!feQ9DtqrIs2Y)1PqQP zQ6AK^f>_qi0OdCCsUApYem){P=~-)>VYwZ1_8tc_I?K%x-E;R}2qGefn4ybr>q@tnkki-AX0?P)i;~ z?)?MET69j(t5@lmdaj&^VFqmHrhQbk3^okA%WnKSdgV?&15At37<_?L!9P?LO33ea zw}k|j%^v$f_UV`mUQboYo&^{L%X}UUXbh_O1gAxop9`T+6-@M+>*U>^+=;gNVwafT zq?EZQ3cKJkCz{D#w-@n(X8tK!pNgFaRv@Xj<`*-%mf)7w(`8CUnn)^ajI2NnN8#04pH7nqt+dZOx6zN$^D{DbBp=P z8GyOuo!zk{bsH^b5K(tcP2${*pZM=Y&M`E*sHpy!e=dG-4MPpF$lZd*Q#-)nWcuknV%zkExP(6(ze@~TmFx!^Nebu`@(&EQBe^P zlwP8OAc7#h6Dvi8h)6F{k=~`ZL_vCqfPfT11*8+{9mD_ukzN9Xn$RJT011H^=K=erwL2@whLTF!76=94ri@iiN&yrmz$G_JlsBO<<)!`{;biAtCuBfP%7 zvB>UtCSz?1iYFneozsg4A|-QMO~FwbCf-X{Uv}LOl~xx&?B%_I-T7N6SFg#0>&evm zu=K4kY2crnCfQ#i4Wts*7Q){3)>-Kk;utcRW_aB>qiU?pQ-8F!K7(XapqbQdf24ObO2ghNu zH2;jsj+qLa049}|cCEDd#;13&N3lndN-_~@wT`QB&C|2~oO;xqgRQ!(SC>ivw*|A} zQWE3za+j9ogk3w%l#i6TKWuUfZEGI!`3})5o|`VM4Zj_G=e+r47-^Gq*!@*{Xi07T zo<&{TzYjty*I6kdf^gJ9CHOHVZpLKiMiBR&&djnfpKj;bfOXKF!LQu^RwQc@@7 zACVA082qQnX8~0Ty-QK|TNGmN@+apCG{@=k%l!I1+EpD!NHX>s1ViO}?n$ne9XdPu zgXDGfIYUxhOOt>phgUry90!PP7SCczI=YKv;{?F&yTCpBxU_#w4qm+s{NiyOY*%PN zHF5@B@%0pPuA=lCR1I(MTo01+-FkN68((KH30E0ZiC|nHIeUiSWUk%q`CjVWPxfxx z?tFvHy&!muesBUfC)8qvh{+OaYfGvTN~~pThZYK)&l4}*A@`zwO6LAdlX873K9CgG zo#BP)e6Hzob^otPKqwOK`KR1w#fl;eA479l_XzG8zO)l7b(?u)_ct1X+ycMfxw|l& zTX$8p53=-{!tp|EZYxC|BP74^{Km9njD3<%Qi$1i*M-X!z6R`gc-S@By5@lkQp$f( zK$*4fpl#7wOuV~L3~qJ6*~RvH6S^?5GH);>@FPbqRoe^n^>Jl?Lb+e`QVz$u*Zd=I z(cHIh%+9|4dE`Q}poq3Bb%N_eJk- z*1ziPkQ0E3ZPR$G4p-xt<>ZC8tp@oVfc@)-2Xt3WgHIEbMUY@A!>sDLf$VncClMR zY6fB|cJ$d>CeuEmPGS7-<)lOJ+MNI{t<;%I-wK&3y3&lhehAWJJ$;PFe zJ9B~M>nw5h#V-sztwCZ)^PI+i%=4b_&Ot=vR_w~JzMfjxIY4y4Ua635tjKQMGK2^N zN=aeOpxuMwARaH}XUXB-=;4DN$wghDd~!qbpbz8+grL7Ljra`&wx4r}#fBt?AP;BU z|Gjrf_xbxNO}6GeHPHH;N8?KH%KP#a;*FOLH31+6sMLCJB)rT0-9-&WHh6&0LH0J& z2>_MPEYiQ0nv`=K=BlL0ZnJmYehkOTw|{jRBtBN>52}T{KiG{r0n|pv*4`Dv?mw>^ zAqBa=$@2GCHJxe^WLCf?eI(?gPxMKObfD ziKgRis+)CK($a>8;8A%O@iZeM=ODT(tCk;x$fTI$fE5V&G5YtW_}Yx#A|9XHo@186817*8H~}o>hiWZcqe(Jadc zF)3T0DIe(*gO}@zre|F0Xfb74O~~72Q#nxFkKS&h+EGs3%Xpnc=*>yu*GJ2r{uK@~ z{dZvv!Am;#?d=D% z%j&D|?DyME1b|=Eu*zTh=`%fPM$FI-oc^|S| zPG~ce(|!T|zB=-6gfnEEV9f^sj<#{jOgFrI(~{0*x~AUDZaF^E;n4I1y<7R+q*G*; z{C(hh!rOOwY_&b@M6Oc*`8IW`8A*mJ%jh~h6%Ej04!^ZpWEV@Ra`dfayOp%dRos9> zoMwk5!;L0G$fU`ZKX~`!;jnIb!LJ#L;_(Cf)A}_{nJy1xLp{1mfo%u-y&rq*?i8T* zak{Pjjq(*$5hl&Dq(B|h>XIX%L&S zLiC%=(4Gd@=zW$Vqe0l623J?IlmBJBNsr!c5^0N92u!;=2xJurvZY$uAdkGcC+K2Vk@c~9FbVfKMIZ$7K?bo7=U;2k51j|Y~X>f;OMisUqAYN z_&;L;p3!wr0O7jO0WA*t&vw8-;eg#zn9NH;M{M_ep=Q@bg_+12zlhb9=Xf`NP-HOh zH|Tul(y5!=O`ypW=5a_R7~8>As?o%Er<>?yPZ!!!BzP5&sxw_2^M&2!8Bglx2FJ(@ z%BeW9GEBEmiq7L;~q=EmW_0=M<@&{ z))>Xv?tL^x-t8-6b^k$e3VOH7*vd7jFTRO#{3s1Z?VZ3KH0kQv?jGaYNW`Ztf7P` z{)d&BoIpUw`~Y%ElMKL}^#kPi;y1aPNn6A9Y%r;Vjc(tLdIa8wfa-x&BVt3PtrN z34o;%_EyuU>pA7cJlfnw9Ph0WstZqu>fIQyi~gJ+S7+dn6!#hZtJM}2$LKuXjq#J2 zqSsCk66Yopl`7xBjYkWvEIi!~vW9 z*G!s~c}%Y_?wFEq1d5#6ws!B+g&N|AeT3QDSar=rcWvceoSAWXz(4#!R5AyEVHXz- z*WJiD=HG>i(oDx-F2KkWz?FkGk)GyJ3ny=s#>~fmC9Wko;YJ}G7@?YO|Ci0h%SmDU zdPl-KguLI3TNKrTK%YO=fz|2=_TK(toi}%fzN~zfMf(2Ug1?3oKrWDuvXPV3l6h)# zoKIM3=F1GfedUBu`Pa-y*7J0C9FL?u&*$aKKZn(i{RTpKe#7HT8TSYa7%8!E#{6GV zopffK@6E4rNQ1#<>7R=vbK^e07685ubc95Asc9(R)2&Roy(}EvNRxcz)g6kiplt3g z`4_HPxICZM^Ewlv%5V+hJrqs|OZ0R))gGPrXk8mn1$H6bxtoIgtbxDig^DAtYp_4JTVT!2InPk*fYSPoI>WkBgG)0M6A$i{OcBYF z$8tJGBrb&9rlZen4ZK32<9K38Ee~%|zTOaU#U}9Oqg#z^IO7H;=4vl0g|^L<2f>i;+_2iH zreeEZ0=_k|=HEKaHP5{^eam%DGibs!LLHyuZ7uUp&!#V~bQw_McQY=o<7L>n+}q-ci+iCS#2Wp}&&?_R zL1KK^bp(lFQMwlzLhLddwX7B9Ou}-_jwo(OF)s$voXGM2?yk1)uU}q~STj(;xxikHgi9P$|Gz1v+pD7lu6 zNMfjrkuJFJUzv&5T?d;XMw!QY+|g?APP3t+LJE8_M0qMny$bj0WE<>Y11;@3i+tQ|7TWKoB_ z+S-#Q#R6WH=8L9|wl=(+u$v?a#22Dc{yh{PWag`scK3WaLBfP++F7O?>qp&i&zBSw zXVPrK8@mcC2?Jr(wITyU>2c;aBQV1At4*#iKhvl3e`JXIxuIJ*=6divEP0T@c6WMB zJFiWs8O5U1sXl|n&IkJQc7cP4s~>()9f+E2JA655tT&d}y_`sucKJJ`5*a+)vEHsi&~Zu z)$V=-=B;joKUlwjXl)l_40c?my_Rk(b_%Y!J3(&rJU9W=^hskv-aT-F8XvNFF8Yfk zPqvHD+k8XV|6^dxIG?5H{nT||Yl)LhK~kbMdxx+F&_)_Rg-R&;13O9iHV!0C{qn780=c2n;nSF&wvG4b9L2r{#UQi zFEx0V*W5p$(P)$`hSGSeYGL2vSF1lAoKmlyZ#33SC>=F>pACQA(AR%-tI!pi!;sJ~(Yab+BX!~c2bKJfS= z)}BYySB_Jd1DX@h&p9wQ2bE1n>~E^PV+mdK(p9xSWK!9H$TMb}#bfI7rm{x&yR~jM zjMN!$lioruTi(%g_q_<<)cJSsBA<#N4gv9`=lWR>AK3Y2Y%Ei2ZJ>i-R3T#7IIh8tQ*ZOp%Nlyp7{wAMrCk!jUncn< znE1A&$A@MUEqtnV=YohTj8zK&Jh%+_EMn-*6JvTSO@ciJ z-es7+Di^vVTD6|QrNaQHz-Z_oE6Ad)U%_Kf$I=$-k zEs{PZc>MMRAa8cN>1E{c&$y3G&Mm$vjx#5KU*H4`s^h}JoJ9p5k9qk)`kxp3oEU+P zXQmC=1!W%7u&qke9u+{y?Cc6jE(0l|0f}rSRC$WqMJ`hTh}80$x*_NR!F~B^m~*%d@eE+wz6mC;MibBwu*dDH|^7V^PCo5IA9y;UT*z zf$H*if#Fuqkh}m%K(@c1HBR7ne%L2r#g6YOPUx^0X1A$KtyRR87+Dr%le9SLaSAfq z@ED-5hTy=>8pvE?15F0AiNv5F2n35c0NgHl*Z};3w_30yQZ zVSQo!d3o!hM@vHDxtm***@PV%kQsP@Pav)bJzm0ZK*i)`}WI} zM>dT9;Z{E^=<0MA^Rb)h{7ZM#b&=#@T*o8pp>5|S;91HVId9l^A%-W`aVctczovhs zpgdnvK#6VQ%{}ldJ;cZWWC?~`hzDI#bgBhLFPv``uUJ3)XeC`z-lLuG7Jrx)QFdjZ z$10rJItOm6w*%KI)YmuOmmx(F=}ySB`9|e z;Z6XtmWJ{CeJ#%$U(UB4x#pTv+3F64@cC46ipUZ$p;l81WnGuGiX9MZF<)@WWWfP^ zl2lbSyvGW?`OUVGL7+FDTFRHxWR3FP*U5}s%m=Nj z;|lICU3qeE{?eb$(M=J3-FE3cGuSwR8h0eVgh)a!9me8GGPfL*s$;oy#r@U2o`g6Q zQ3XT&3Gm-V?L^azk|za6ven2yp`u7tmc6{D+-a22)?iU|$6^YETf>GB4Cb|P_7@uz z0OENXT-TorO%u%j+RZgy{_lavCpP)V5{1ls>fb{iA8IgT^SaMdvT-eQ-sSjm+dZ&s z{)bE7H2g(zMHRM_T5^?Ti@XPlW98#LON@yc&PD$L@8HTz?*iKa&wChAHlv;(Q|7ZK zZg?O<5mA$vg0FHojMT6IMv=^S-bQ+GD-ELV|D8uEo-f0K@a``9L$`GV;Z1h`RSkP2 zc07PQgPztz10YwZ7sWJJZ9?%bb0?G~cX0;eGBbyrc@%J61tYv;mG6sN(MaI0;4b*9 z=Q6}K-WnwQed+Poi#e#N%&Hs?aRMl922bbz;StuN0HFM1v%2LVaO)KjPn#WB;yL%z)m}9F_v`AB&__ty8i9o z8^f^UqmCJ4#>EOEa!Dx-7^9(Ij^nsk$5YPk)`-Rz2%82sZ8xIw0&DuYJx<7&VVkDM$gSdiXDf z`8*%!v*{9?z{3o(pN#*kZ8S}C4Ula<=IAVyE~rjY-L?I4=4_74Ku=(aMysGh8*)+S zw*ZK9-DqL6e(YT1i(%pLCmVT4;9A^9`3d0dT~Jr>=L(i*Rh7Dz-aS8);++Jen`q2T z<=TCqCo@gNn&+ge3{_Y=Dcj=%^+`h+gHmMA) zL0U3E=QKnV)ODg2Qp_Vx0K&Z>;jbM}M{6k|KQ^i!3Gzd;O5+}u{$V+@u#b3}!D z;-iuq2CTWdkLp?YHT1`X60`(Uw`{H-*Xn1aZ(`+F?cQs%X?;uzZ-ih3$hMRa0%S=k z87srI>FqKkrPB7%`Y1|VrBlOuI5*6dbm;`JxDf4^4Lhh{*UysADf`{(SotJy2!C3e z&K?ucT{7og(u2<>)+ZgmU%2_>Yqi{RVm<{7dWx+;s>IpS#8y0_4WxEH)2FrP9kDir zsMLU_kxY{&mYJVK<=CF~;iB{r)P)(Au+>Gj5Pw9ah9i{~@yGSZeaC$UJNLzYrPE#& zB@iskE<6FpvQI;hj9Y}2TBUm!%)-F!2Dz3r-MJ*Dt5ZI<)&*lVI^~6azM&HZfeZr? zoyNMPTd6}rR?MEG-w4w2epuL5iw*KfpJMm;-?(Jfe<;mppM%O10J)T&pkYD15g2Vy zOXNg~s!jZWSXg6zIeEPHZ2o<)2DB`p-lB;T8@f*b32N@}_Xkai2GD=mQ}3VKMH;8< zfY0a%1!}5~6xOoYyXL(KY#?h;#9@mk0Jgs3z^Zb;s9H$FqqUoTf?ovhVUUiRFx#{Y z>cdbrir-?#^y-!ofwfDmd$~RY(UExf2q3r?(YZUM!M`^&gJ4{w6K~3#+ssvg@CGW| z+Gs|&)E^txUCZDPk!51%)hb}m&{!>J^Z=`dP+(rhKVdbZcKkIZ+l%pr>8}0p(-W+- zUL^q>OzCf~aiIEhFP?9uEQziBTg6Yo%;D0pK(W~eQLofF@6`7&eK_hOe{{SDv-B-i{~O&uYCR0xx8vhb+pQ2MRZw;E94iSzWTSB^B-X37@9^#z5Q zXlz4BsvK_5U!pciRchon@r}gQkIla2$1X=)Y%;4m|MAH_kYXhBuasvi%iHAkY07Pl z_Mad8TKu0XGZXq~lnd2AJf3p>4oK=nT_Z>F!MF3h7lF2og_m@Qb`94OnIvqV=oVv| zgxG@tB+xXP?2m3&81fd&_G8O)bukfb%KYy7nIo{!dDm=;1ktYR1aP@h6vp0+e}@o#@wi&#Uf+vH|FOxrmJdV4 zZ9?tog&LreP;LD-mq9B^B)zTmPKusKVE~H1a+q!S{)V-;d0x2^ej8sDlBGXQy(=?7 zvFiUv2UZhzw|QXStx%qeZ7wPnwBp(FrK0Pva$5bqR^=5q_#SOy+-SqaS?X znBs$FRt6YSP}H-t5Tqv%=^lXRyWQH4&O7#;Y+<76Gm!TlH2I!$B7Z#RCSCs_$-4#K zo&OhVx$#BXy`hgFDtQn`s;~ZVV^vA=b1+6JzY%@+XUsXa(XThhEgVz z31H8=t-At`ZgTko=#xTK8;?CFgsyQ;qL0#AAAEyYT9l)&1`V&BiLifSLYU9+3lWW) z_mr^PoJK*`Ok4F~B{o(l))|F+h&wR_5~cIJ9UV2v>Hp5pAtji&93QkTAtG$WD9N}A zdE~KHUQng0caZq4q4r+QvQ9FJ4>1W#%Dpz?%MPHJBC#kui_mhG;a3*{ zo#DB{FvFW2*L!GBi#`dx|GgQerFKfWEum*epk?+$vCIX@bAr31e^bwv?Z}IQ<%|(tEF0`vKwsfd?;ugNGmU z#3-~0(`&cbuT8-mT)45a)qy@a@6-kNRF}zOnY9Ra_UWPNJjR7N#g0xe+vaXi(VRi$ z#<0z6sL7K+qz_7b_1K}^=5#LOuuf1BJyq+fbNelu7xU(R@l{Ul&vP%>E>w5{tMh0) z**M2P@aQbZNQb5ozX}j?l8CVoXz^K-x(#?aTk!Twk0E#uAxQ6lEq*_(Jsxz+Npv^- zKW87Kt{ zA*znp(BueQqZ948iz%2-!vB{nGVBbv;r4?57cqd?651$S1C>q#G>Y5#n%D&{= z(cB_EdPIp>RF`4FXrC%RUhLx^5r^4??d=I(Znt1!{{y$ur^GZiX0UcU7vAkY70rfo>QvVx)dcBe2%X>H18CKW$0OoL(>uDsG8BA z#O^h?_=G~^Zhl+yi-z0q7LMNXe(QciQ>`HwUpOcSXiz0!ktF9 z4{?sswIT7la=IS;6L!>5PYeZG2a0_=&OgFU2=YQ5UIFkZ8b4CDb(OkT{&zObuXn)c z*X|Xk3^kL{3Zz2f_1SX6fJ-$$DE@n^bC!~bn(~3V^YoSh6XH2Mse5M&k9}f&C%N_v z-ZT_c;_?e~0?03IE}1Pvt3yAZd1N;BbFA*-jW0WCL3TNlJ=seFTVFyyHnWJ$&FgyT zYAqzb-VEU3QQp(+bI8n=vYKo-=<~z;Xo!?VCN^ zb@7QT$~%r0#{m*}eKs@rRp$ z@O;lV`J$<*5J_4vr6r6whK*c{B{3%>WYQkD+oen0C#{yQ!`N4eLiGoY4T;%lIvR~b zF352y0dP}_((e@csN>;^u=78XGjQ%qmXmIGXLv`x_n4jaEgt|qCxW9j z&lWovZ@Z4WiGJQ7d&h8EnLfPrss56g0Tl!tJTAg363xJb+$5qEIIyeFM>@3eik}0j zXzOv-(>+O_9;o1hun^H-3)*}ctJX5Mu8nGP1^Rn?+QDY6&@l+XFwu^zu9T5gM`|zR z`nSqk7=63&y-*8@E^qr{lG&f?-{CT-;D0AR;ElJJ{Y59qnE>-5cu3Bsu9U9H*%M!qgQzY|jBdPop zeJs3F)2GW;VnWef*(h9sE$>_{Ol*bE)Cb-iY&V-bOG6f8bXdD$g!t^_13h~wPNu!a>UfD5ohU&!T!2X42%xbV`CBYLe#hk%F#GQ#jwL}LRT zd$`rwBf_w|eAATD4J3+ls3>4cCKa3r+UqqR2s+> zk+4R%hO1Q<%D;4miR-2&uZ!g~?kvshO>L_X9y#@bx6I^HxxnJUd@MVr(h~x%>5S80 z&+rIj9#iyrLOAQ~)a*8bssDlg+f`bx(dvJwIP3)dZ`h3{BQ#mTkI9Y|)P0+3cUuSm zoX68$h2JI>&weka?EMRj2E)P4Pa48!JLU75r!^*jRuJWNYto<8rFmqjgKo>HTTm~f zZxyU(Y2`23_-|fV&f0orEb4(=@tym?2$Qr!YMmSNi)R()yE`p9Uh#GQ6}T67&{^2e zA*j_-3C2pUHa8y?UY8!eSIYe01b{B@i?aI^IoIQp>+|B@s(R*UB@_MI*S%3sBQbBJ zCu}oC6vr<75H)$JDxe+UTay2fuRb*)*{Gq{{8g05&)^rL1H#@dDPD6O$E5s}$LSR} zS><3?dV3Kg5Q-=?k@yhw(N=6yLx9NqfUpA>LRto~om`$JB~u0qVF~LAzUwxYB@Ox!bPf;h(CFR7r<+QkSDcu@k@w5O<9v%kq#LTz;e$nb7IU{Q6<*{DkuDt zk+OsU;bwGT%SVHm&*?<*jAQ492_DP32WQV zLD*uj1&(oLg%sM;r;O4Ua|jp2|EmKzv17)tJa|Pch`kTnZ=htOe*cf9 zbA9rW(g@<*dq9dZ;JnY2+0+7ymSm`EEB%w-0-kPq>M?`A;&T|bId^|L8QQ7e7pV-> z6AJd_N^?mKf2y8k6u(jnAMhuT>qN?7?njyRUy)4+H_GlQnf;+e6YLhl^16gVtO;#9 z(Xz2wGcyEzH6DS_f|r92#0wu$IiQ1T8TbZb($=45cT#2Qvi3epY=m6eS=_flL&>oY zSHu*LH9bp1zU0Z&x`&re91bHGaw zg{RQ&IdvY4kz;+RZsV??Dz(F{l!pFiEqDT8=i3;&88eZnT6EKqdosGOY{}gVNIB93 ztrbcT7;QjWn;u2WbzDn56x2!)BC2-_b2~3h$Y`jC-Gyi6-7y@gvia@5k@J=wf>w4{ zNSWywy;J@#|6Rl2V-BB_43D?G%JupIJOM1mn;ZGRiA?8`LJV#Fa&!y+&^_Z zHF;8s)-+)7$rkn*CdMV>?--geQ8{9b;9oCOc~|(i{;yir_hz@6&n@S+Z7sBFQq4lo zbyQFI)9#Pbw#t<6aVVR0E{0I~n-(Pw@?tyADhjadvQ4#EZ(Idmi@Nn{{UyGy=UwpH zeAA7K#$7${Ch3EScP|C)s$G5r*$vNb8Q|$f1 z&_TfLqX1ssvx{c=7J3t&Reb|o=dOMwYW)O~LBk|@FNU?6G$?5NwR+y4j=N9}=&-FE zK|HcfU_iXvYq+y2=8qM^R%_qShF|pw*B!gq$hWrQ=M~+z=U}ZRFbjz-t zLhC)0tAxt>#f@=nJAf#&eFi%;o%*77*l$4glvSFX^V5YzLieLi03>uul~JL(^>(hX ziHPsJ3}8KTqF?`Abgp!Jv+}cQPm`G(Zbz6FtCjv3aC-rR%Py2!FKO3nve*&+h#N^J!;FwE9m=n+s7pf64t@;JKuEl7lBPG^y0OL(#o84)CDmc8E4Ddz@cqog> ze8#2jd+8X`OkhqAS|m7srPgh$8`G;pgOn<~1+(VA*_&QKG_LdnC)3OiOS4dTIL`gy zz;cFVBjm2$GwuHHGbpfa`^0`83Ye%yj>nS6Xv#lo(Uu_`ibGO0YlySn@aHi8JsBWl zQdo?`V8|?Ve&LGPcoq+O7je_?0)F-03pKn)W@Sbv ztPU05Y6HZq5~U^sOqbuxv4wUfF^ZC+Cp(ntU>M`><^mqQ`W{d{Ztyjr|HE+bD}P*E z9uib<7K`_I-Q8A@Dskp%7n72jI7jM-of(c!z`acC4~fP+3u z?0Ki-jrv~c*tJj(>FURu{c9&mf0uvj!O0Op0zM0&OD=arfok*OSBaWA!9`J_b6Ust z@?SnhyXDGaI=oyr>?vl&6ohqMF6T8 z$9jpYG1azte}_xo%>d(rVLCb<&sxBPaL!WhXa*-s48Qok(Z>(J4AmS(9TOHKNabId z7agk3jZYrN3;nx)mSrXVEgw$2UGf`Ie7oYELh(vt0@tUDOcDKdw1aLtdO-#BO?!!W zVFHUM28>cV^hVN~8{$IGZEcn**c`FnfI&#pTquhwZ%hG!9(FRRA39) zyEVh8ma5iL{?5ZhNE-oA|Jvk@OKnnCNVb{ObX-W3hQ!zZD7e#<2bzLAD3!KAZ$ zs+E5i7Vpe$ywENebN*DKyVuW$Vpc`46HfpiNirWtT^?#`Z5|IfOT~Ot_4pbsbhKgf z(ud1vMox9})e3v8&|6qNEGat1L!@EyRx?#Y^y&p!GD$r5J=L+!4tWAN$3&^()H^rX zr0}WdlI~l3u^a1PBN8GND#jRTzefn2-2WLVoN33BdeOK4?Qv>fr7(_+ocJj?h1qeC zHfJk9=kpm<4CO0+MKA$v0P5`!bNAwc_D;)b){bp2;N~ZwKi{&x2MjpS~zQ}wM+!kt_`6EfM8kCX6i z;f7l_Wa;ILz1T?C7EJnI+rb)J198{3m1r?mF*7$W@ul}jKyXd;7;4g%51p7-h%&X( zl%CuaFufzt&&<5F_4Gy7TpI6!-NB7h`TP#NS{L?k|Ao~Thv;RKzg$ke06@_0hOslS zVWI1;16_ecJhxIFV0SpuvmmxKRn)rEih&N?2x z7hJUKfK-HJ{E-P)TUl*9Je8SN@4YuUuRmyn>v*i?SuP=xRv;V`m!&XMB;5{I8K84I z*+;2LY30l6W8*Jhd{LS{&rWjy--1&bvulQ1wq|C2a1Q6P7scf^iO*z%IyEg8r#+X; z<%H(niug!twfdFop8($Tr*6!@^m)3+)Rs9e{m&OC$Vf}@VV7Hp%&>c;N3YTF#uhJI zDE66L=gllgV9N*L=1)z{$BtUV5-ef{@>}URy~w@Ta(eEb=WVX5tS#C;vsaJe_T>pM z6T(~JXP27OCYIx%PkMTU)JXUvGYA1f)}egBo&aW8eg~7Yf6U%-3NW}uy@O8(H*3Td z*-bW8SrjU2+mh?my;S&f=kHcrUZ6<0f0ScPK<&|)mli~|b!@A2R$t-PFK%VgIq1o! z<`EL1d;+*!+vYL`hIhyNamv}+a$!iqsIYPfM6)PG~*Ucd2nPt(<>r zy~5<3hlUdoZKt8k;(r1^RmHapmn}A$yW6YSr@NAfT1!`z%qzocj`=ayR_-ViO8*Re znSUpJCnV!zE6)<}zaTYe#_Jy&qskIzb>r67)zD9{n)a=dOGh5xtD498IlAjgBSd^? zB5_9x`t$@+1of42*H5Bo-gIl)Sd!O8UJ~jAfY?6-$HBN1IwEra8>bnR>xl;2rt)N~ zU++J63{^~2^IlsisC0e-&d72*LgOHKB9Y~fa{yZ;!Ld74j@|^<7zA&io>E&nL4=p!53nmYjF{oR zx|RLhe(q{Nd7o0v-u z5HF<5Z#ZlB2?Coxx1s$5%_5~0G-aL;52Jly(NI}*tATexFYnggw$k5Xl$W!L$_qmP zC}6%d|2H|8mtFv~LtI`L$10+uXhBOYC8Du1x12^XQf6=7?(ap~s`;(9Q|Ps?Cfb3a z7l}MEwL&h(hcB9c1;%5_ZQtE^*iy}W!zU;B14IDUsSfFE*P!Q-Sa1EPPVK$|*-f9c zx;x4x)wSo7<8eLjm1Lkn54^U)Sp3?i3I|P=Vm-tB+mj~{)HQ!E-qN%xWshsr@va6& zZn-x|3UD^J^NDXB|Bg(n&#CKsUe{=0sa<2v)S~q0&R>zvW92;>ot?q4zo_Zmm8G^$ zT(BB&CV%nuc-WiJ`bj<^Ifo-TIoTThp;g`;3!~g}?2@@$ItQkQAIf4MW5oL<()1t@ zPdlSa8J};h9i?N(9a@w3JGMutua$qpr-8_-fuJDgYv>H_J&w@AUur?oILI3pai z_-#g%+f}|FVW5P4*jscqOdfJR^zMWhy7i1};Zg2eQ#2#+(YR0}D3hzEd~+r(<=-!) z&$ZC^?G}P${IMz5n|$SKuKc6bjthq{f)Oj*F;^n2{&5arWYG>?@lIHj-YWHKe5tW6 zqbpsXuV0_<$cg|OH|t|uA$Z2uNxsZ<+bM{8ydbdr8s!Ccne)6viO?JS+1OZ<`#6?` z7w2Wjj5yjbry9nl4T+a&HPhpuT1X;0v;tjyu;=q}GO|BJ~>a|Ip7+s(I))2^8f z3*LBg?fIGicQ7jxO|{{jhgLy$e7_MZ4U9`?PA}*IojL(<6bT7fHr{8i;h;+%hg0yu zlUhtI$rmnPO+fDzQD3+$U_iCXNzxr_^;N#GJxQ}f-UWqJ{5eVoh52zuct++|>OD$O zs}=Q0APfv)Z-~^(EP*j!6IJ^tuvl z;p6c+eFddKfI9yZdr_w3z8+?g3aAZq=uQpIz8*BCb(5&{`(L`HR0Y@Ar@|;cquw4l zsPS)+r2O6Zg>XymWa`~@hQ?{4z=%#RSp|DhRT)NX_1-1Fli?|BlaQ8AP1pDTtWAdq zyL%=A^G*PDPZjgJC3{y0bVQVmF1wvucZybf0eT9`LN9@GLq~wW%s#YVbJe;BiRQ88 zXidRlEqsrpzqbwUv571TjmoMre+s;AjeO0nx4C$Ket-g2WN$~ z#gwBz_4m|-<-EYW`&OPaA!Hamufsm<-O$odSA{q9#+K=SGh5FatNc^!C8H8~b{?yR z{!URMZ9vlW<+&IyMf#Kh2(8vjLU|9lh3E8x>Dc+r49=qp*&yCsQ1_5AsT}_v#SkhT zSSd)iO4mO7iCvIr5_1%$St4|^dgrtQ9X0~XJOMWtZuCv7L|1v>sv?B zFK|^e%r3-~d-@d59%b;PMEr}?`J1`;`kmJE5OiZ;D&taiejlM`(Ife%Qv6PuBxwqeFo^XJ2tbC`_JdsBnn z5h>^OwjkMdWP9R1Wgf%|`y*4S)FuV>8k-!+dRG|W_=>M*9-3y*&JvjaGVH0kC);M% z`YEJe6{`OS?Z?Q_7kcv4+Vx?}xD{Mfgz!EPY3CL-H+cXl>%Ng0H-CHzpAr?7ML-S&xW<0h-XenEgaNi09} zmQRVlPGg`k`Nsqzl>NsvD!(sGDb-DZ@{t3c{ZsD$P;}klY`$GMt+v`)EwxA5(q-1( zQuV7@QnhEQilX)kA~A~EMNw*0t(vJlirAs{j8#HxQi&N7@%jFE|2yyXKF@j1Irq7* z_r9KU#}m3ev7T{Cccg!orXohMCq?E$W4f|=8VMIs>D}Lpbfv6{*LG>DJ_!p|J?IWZ zQ})a*zR&IUtYEHiD5P)Gx@oyGj-oRAA!| z*+eUuhyppN)qED_8yl&&6_{V^D!(+v{?VX!x+4Dby24{#RDp2uYU7ETZ3S&W8)3LB zOJ#Y)d_k8tzR2|(?*lgx0klW*yccQe-hWIXP_>bUekmg0P#UD#$=v2;iJe@nkE=`RSf@uvm-`SS)kextV{W+_>jDpI z#F{iz7C)7hyy&*dbMm>9BRGFDOuZ>d*hO=FWNRwwYe8xwVNTc?I^}H=OY`9K=dSy@`8TpMzSY5sYzr*`#xK?a<6ydZ?H&v{pQLr- z)E5*#UrFrQW4jbAKr>wK@3Qz&OvEKWJ<*JPmsP%^sl9xO$lEE<>hRB9^#k^lMK@zv zG3fH4!yf+lvf;IP%fQznLP9)QIU)a$OU%OeRC{iGaM&*iNR4}#CYB-*?lmVr=o9b- zMEE>odX~B@hYNRq7L*S(U!!QZT7UnEdA^zQZ1J-PKI7U8|E0MYj(bV(r-iW}RGM-7 zr4DU=1EbX4t7-0!>Zh7OH~yM!D=6uBw@Jsm^TM!RjV)isd#!{2_MtMuvF?eGsPffzYG?Ue)Ut82&M6pgbq zSKIgR?B;nm799nARVFte)w_6BruKwchYl6R=CRxf5t!`H7hWRCAyJ7I!jfTqoI41v zB?^1l^d>=Kc(sQd^-%S*y0|$PB*L{-5T;f++ALl)53%0z5^1SzX|`MNvyHtosB2tu(do1B{nhfs*+G$aQSr{a>UxryDh?^Vx>zGd zxee+-+^VH3cg7BPi`{hYaO8S7ULm@CqAqcpSN59Q%W%GY9~p!_iged4_QAMRx!Urz zf_##Ou3H9`<$fRZr%L+E9A8`ollC!^mO2Wla-%SJs!fU1FRp0C!^=}qwGQr0`TwkBe~K9~r<*&6G47hKOrSs4>@xY)=ki!? zJ*I(6w1mN+ECM(6h8kI(I@p9b8txH`&S0!9)41d)?6S*z{Y_BwXNh;8!+Nm}JjI)q zk9HO>8kC7T!Y=-HsWV(QJ`j1sX^5&DUi(ARG^wqWKJhbq*s!wmCNK(79l5i6VXQZC z4pH)yVFg={FP704?1p~RwgvEE|J1y+W7 zZMNPUgVS$N?-HkS%ks1EOCJC3rgg+wE2>qDhxnspzAlvjuuvrXbM+aLVg{)~+)3!up^ zZ2fZfy_L%mgQ`1N;3XWUb%F0dA$q9LS+b>1V1Lw1uUX;WU=9a=;|+HOOqVr?7#Cl? zEazGi=uoNSqg#gDXNN2gmj__NQP|=fo@P$M7MN~xL8hs0Y?dv|Jwnp+R_vRXCIdWt zPv?E})N93yIUBwHBNtIw-8w)sU>sj#vEw;_=iaE2(T};F5C4tEq+UXc_qL@N8%+50 z$g%Dr@rPtpEn<1iBt|L74W~~Z`!SrMcKl#iO4`XHmTN9?m~Mf z$@hzw91-&!>)&&h!I6Bfwwm1q_QPXLGtM}s5QGEbV>Z|50Wd~?^O)~(&fvt4Xqs~X z^Eya$eg3H&`Xw=YxmD<_pfKVba1=q5?lLbr>W*UR% z7%%i`Af`zvbRL_Su~j?Fy_pf8BK4MI<|{0O_U=CZ;0*o+r=@P$E3Gnn_5)#umtBtR z1V;ElE;lQdK&uw!w9f%iM-{vU{-T-J-e2E{5dZv?mc9l2DC#0OW8wWOOlRrvt1vn0 zFj3MPx@}o6hTJIk;B6nz1fWyopK;a!ynZ_>$HCBqZ%3g-P)FlH0Qi%1mgv+AL88Uq zW{>PFBk=t^QVNkxj5DI4AstyO6gj`olT1ops0&Q*$sC{D@S^e(Y2JGdk_$8Bzg*6( zOC(LSUcBsFezQ!M-sAEemQ=T%AB5~um%`=H&c*~e=>o-3Par@QeK@o-J|5w^#7w3}Ih=vNN1YwHU zvXw|Kb+EGGol&Flqd>~Q4Vs%O*7yV3jommDK?4;IqJ`a9782UMWo_!Lz!r@;I<4(K z0NPLdWA*d*=F?gI%Q38=r0K5W?<}#pnvj_9rRt73SdUdbOy{uZ(9&y}5cE^zmi1 zFQbWBAcNl+B{$nU5}#%&k{-9ZrFdd#GKRGtCi?BbktE2{di#ubsZj&b=fIOAC3@F% zQlhbk$pgYj9i0^m^F9a6c`gj0EgMug12^txlbzBoy0ZwI5oTKX4d)GIp(6(wxNl^M zwU$3}{%h*upAWQt9F_;$4Sb8`utc(2w;RC=XP>*&A7j|mFuJ<;FxfA?kzD+!f@u#4 zqSaE*bCmp1ci-r3vdWi9>h(pE#ZhVmc_|^n2l+|m27#LA<}D`hSK_6~hj6n=-;j1* z1;(sM`HMoCn$r;g#0SjQhu7McSZ$wv@N1fQBGKDqHO^cJ=uAj4(v#=+v+fk?V29kU zT@1#|rY4tLo4+4Z->)$~R(Z~PQ-bpnCzh#~aWe88aAoBz`T#kH!VOg}E#88r;yOpC zHw~P?P!|g2i(tctDl9|WAwK>Dsh&Bm!6YWMmOOn@-$i{I_ToFNg@A@|fCE_j2C+w$c zwM6Z#;_hK>!z<=Gb9igr7)ZX(*KOmLQu%K$giKt%-aD)|Y`)U0AIPxw+nw+vUi=|I zS;$M5sFHI?K2vuVY!7+rHB74vh(*b(^Y%YW?sv~rY&5}M3WY5P%W z)&_8Mrg7?TT>a!hyK`l#@{I65v#8UIPSaMkeR?cWzgclvX+0W%A>_ooBXsvGXsprR zrCNy_Q~Yo<%|1Uxx_))L@&f?D^kj@m>dq+Ep-|<^ZuQc$16=k*qtQQFeJmnc*7|yN z28T_&=Gqm{;HuO8U2}6tkFK_2o@|;kk43$V?eHPh62n;1zun$b zKTGc_?uPj$LuR(=e_QPMCP=IVb==9>%;{*b7~G#%LN?UIYCUR1j)JEbkK75vu@_W7 z`GSDhI4>Qchy@kp4`NO9`K7Y;H6z++A&0T>+@Nk4nk-3@hOrR&EOzg}aQ>|MUwV0M}n)v5YRE+`ks{nRSM~0%xGrj z&IpJq-n#Z2aBXRGmlm&&tVt9SI|>kTsMG3E-d0jO8%G@$7jQl?%gep^(%Dw(sb9ze zhR^(kGyLUyCZUkno0KFJ>Evqd_+w)s${-w#XdhaM=1#ZSsJ!p% z3G)1bx_bEC_BTB6xI#hZ!$Q53*_Hu(q^{%|&Ew%`wF1BzZ3}r3B1G9hvfD+4-tfi)zX{F&W;|e3#7W zv_J?)&iXtyArD;r568-)Y3MS2c6_mRZDl{#>lWyy@U?H^p636eh*Gu&|F(SX1 z?OQqr#LiA;)PJtrVqu#O+`XuQI@If71mnHVBdJL1X0lOBap?1WG`Z36GW75O*@v1t z?#z33mJidag&Vh|zCh=RgL0IG5=4sqQHtMi_a`fYY{(MS@r<-~;B;b{i!=k{)~;!N z!{_#Z*ILgdKD&d7el&H6nv%4ZG=2B?Sov@xesMbJ+g}LKr|}mNbHe4}*ZOs)?(|b93O|zsC4e&B_aD z9%xSAz>U}v+Er2%^b7wsW$G2yB`cASE;SQ^(t2`8Kc(GR9ewR-Y7b&-_UqJH0AYQ| z?;z)ds0_DgC7^BIduw*0PiwM^w_T8%W%LWlhF(Lft_15#xJSfQ5H=-1cPfl*jV|hQ z&YiYabCb~FD=7u02-4%ZPgS63YoYB6y1W~G_ypx}#;r3UjbQqXaH35Bk1cb5z2*5& zvhn=<`T%-Y-@In_FvWMSJObz zzXSd%llL{gy!LZJKhway(yEi0FB|;L`44esI7n`s?%zA433gU7)*5>cyj2UKvncbe zx8Pq17fKmEj?68YMMfVoSkKsGyc*3fvss}fXrI?uu{WQEH|EKS;Y&A(2 zrLtx>B)6sPWzfH3A}KAU{FV%^ZjO-Wyx06Xsff_agd7jEV1wK`j1zkqKea%9C!YKA zmSoLgdxbT3T-Yw3!euBBr&r&)nl@lf%XhgEMSkw&cYK-_d8iY0xjIX9=3c!`Na*cnG)ms5 z*@eyV3sb{g290JJX#Fcoey|F715#T|CsTZsu^J<$!cA)J_&1sNo2(Qi7wypkyduL9 zz(bE2MR0?#B?0SbUFPL+Ljokyo8&6e{rg2x&uB-3C8Gowt3}&T!G6R}C<-kHIi5)X zqwD-k7Pz@7y>B&qGoBT_rR2-d*~+aWwNLGQcEg%5XkK=36-muDmt^xVKj!s>n5gJF z!!@{x(fm`73Eug5rgG0>#p(2+p&kh3)gWfv z35Xj1f7%2n%#eTiDCRcgAiM_@bs8kJj$$4_8-8_F5^pO@=SbZiG_<*`PySkQI+C)M*@E@ zK~A0%>2y&A(@C$O4o4HDs3P3$x*vldmqM$;5|B!mh>eU70WV5AZ-$5Ksq5jaCqW?r zJdd6%XFb%_=mxvF@g#%AFWtVjX1gOa-+KMR)lx7B(OENDe*!7BNI$C{GNr7V?pkq) zlh4w09=bbnFyy>|!lt9D4P`$=6PBlP9j?wdDUCWV03()fOTAu5wX8J2yiIy`c=u@i zkoHw2$%IS`6F3KaL@&SSk`0&~**6l<_weu$@>=aEAM!{4;tOr&*;R?S^mukJkRK)1 zzx8(I#9QZdgpx|YP?(*;$uClBvvhh!2Dv{!svi08Xzx3(iG&b5r31Q6z0u8=P-JcC z2p6n#l27$iC)Zo+_Ige*#Pf3~)tU(bC_`SIz-KyBmSh z4c7TK!biEVJ{L6)j&G$+NLMm#Uqan~6p(JltE(F8dI zLTx~O+agJ1xGjjT+r3jD;B2Ic&!Dniq*@LTn*(=V z2hKr`f~rWn#JAf$);!JC;|G7WvNhjiJkx&BGukdEhqsg{kL)msCBCi-a2gCct;u}P zPfNYgNkny9bC8A+cKI_JJ`T&I2fEMy<}uVT4|K`e0cD^)Dk(>6wPZz0%1uHURhG~i zvJ?a~nh;rFmsRa58@MsVUivOMekTyqc0r+9Ih-LhD)(nep~J67k@>Z>cFoCsTqutA z_95lpm?{|ftQjulM7>SzjK{T^`^Gm*iRWqVhMgU44l$b0@|SxX5B&0R_A>Zc=0L9u z9k2QE&pW3IO<^_Y097A{=hhIf_+iYavV0`w%h+N!B-S5T(&LqIQ%y_>iv&w>L=Lkw z$4WvwSM9-lCXtnSn-A-E_tM+&he{@&sGXRo`*72qYaqjLa3-|fm4yFRW{w&=sRC`DP1 z;VYL;ai^GzN`95Og=9p2PGae-I|ndVbBfo<&lu2r)}; z9i>^aU9;Bd%S?AHESr~sRb_*MnQz_&`x2)o2CiEH9 zYUff+)Wi9w5;EW0x5I|C_;TWWPuVGKwoBTi%jlPrDqOuy1({BJdP%9Wdh#n*1!(3( zLhx2;;pYHHL_`xR*1mG8l>_RfJDznz3;R*>KMmc^BCOCwYR~2^K|;hbw&IK6niA6$7EG%@a+;R~ zhiHc|z@Cmx0qHlb?_q=wHa<)ZaqEAwGXzv;+7fBAYtt`!^7wPW^}}r)GJ*}tqBF9V zB;m4dA@$yphoH&BH5D%?wis)a^R;AY_LwJ~?==88GAAHk13WugCsR|G9hxt7f;o zZJi>f;fI$>gB;u7Ckm=M7YDfQjAdj-!&2?3=>#X#OLU?67ZT7wU>N8hL zVr@OJ4tzC61I6Q^2Bhp>Z-U65&5fpPFj)yc3S@%wIW_SWS3uniGxqx4Ita2(ri+j2 ziH}b^jJ2j=E`YfVb?q>fSvHKK=HQ)QD*ATs&wi+QW)LmXTBvdolB zcko#AW1n=H^#`oa;{taLj}c51b%6kTLh39e1vOtjg(v=e;cdRmTE|9xEs@n88hqml zV^C?fXxLPl(eDhoiP_Bb>S9E@2IcnC#F|~Yt>o?r7EYQCFtWw)f^vpNK?Tg~XQiyn zCn@y(QNtmZPEd#WhQ>nNkLGPBIT z-lnddSXcdc@tpmPt!BxK#C=2viUQ3pa5hZZezpl?rO&IoLAys&?g6T$ZAV-q?H`3V z5#7Qoq(YYFKIJ;TRuZZZr=aw zI@PRi^5T5*78xmS*tw0l&NRXnJ9lD-T8qclb!<=&wf4Xe!KT7E{N0HS{*VwK@_pc~ z?eCqRHd&e*~Y^1xx*3qj&SL+#HRbGMCBqD6vSWOkXmaareCS zjwQ)skrThr;?M=+QDNJJKX4A*4Oh^ui=@wn%uY=z^|oU*UojPd#|q_RA3fac+4N62 zl)dw%pqP{eY{P4h>TR-kD9-`2Jx(x9)S)I&gpwrIq8!vctCuUBY#FKb=7Dw*Ad~Dh z+!7Q>_Mpg;T!_xyt-K8+|A$HCoHnq^pC19wX5IDV&>zkL=BF%2uf|lEXJFSO)h230 z*bRuH-S|p>3~dX=aO9zuKJ58c!ZHn!*@#mq`ntd7s)gy`5EH@GZHe+Cz##^K&Cj{Idob$pV|x3>PhpgUra*n%D|L-UMbiU0 zj-v{4d(Is={o?lcrnMBw?*|FaZ9m{A;&5m5$*{Vj-h#5b& zo1|KS{rW8OgK$`s3{tl!Io4ZQC|ie)qj4e{Qj8Mu?|a;rU7U|-|4->jKHwqYuxnJ) z4=AdZvd#lgmftq7M6_$Ra&_BDYAu~cjFxM(6s&Kq5?o@_=VuFiHvAB9Heo{SW& z7I54Ju{;OVtcQc%r#FlHEuHwtX7v4iVDYoAB!cs8d@a-0*QUG^fWOHV;Nj#%ei z257Qs%S4&z!+mT+jZ!iHzt3Qf^`e9I+OyVXKP+gL?#TBWcm!1CLQy^XG^=Pln>^Qh zeO?Y9tg0*yVeTZ$lVVmWE*|Kmbwm>J< zaoTex)syrP%*Yd~j^o+;?DHAUK#J3EU|qAiEJa zD7M%ZNEhD|^6Q0}x=%?izoS}LzF|^m3YpYSFjh+mbGApmB&}uBT9HRf3ynpK<_#GS z>*MZR;|T@8QIU6-TZ7Jig0MwYg-OJFcH;U+c>7WdXop5Glskz}>$AMefFwr1A+c@K z2+WGN@JgzG;pwD)t11-kPz0fXCZ&;)X|I7F;WE|nI<}mSwRQFC|0EkvwqtFJyZsX= z%*Jc z_w<@%?{L7zdd!c_Kicac=@PF8xu;P$#BAWQY=XCZ&0kqnLci!a;L&kC+3M3>dRwJz zg#b({b?6)bJU{^`@}!w12#?bO_b3ePUT@-V+A{m&x0Haet%v;EE_xoI(;kBfmCpHx zqcwBmC`^kG&np`EnP0X^pqOXsq{qsvY7YI%D}zEJ_2bILdQi8J(s82u#tpTTycuHk zyUULUX&qxR48rpD_Q)3~K=FI$K`)agI zlJ*ox?O<`{<}P>?QLWoNn(6ZTmW?tkZ)?h*_ZOX_YjG~LXJKJ&dF<~yMQi=6f*U>J zyTi1x81xi~;33-`^BBKmMcY{g$Te*iX&kQbicZtG!1F&aYf{$o_3EXd2Pv7iS5@oj za*E{-?l(7g-b=BNn^@JUR(#r6Qq(L4UtNr9y*`e5izGc^$n;ojmr3JYEyw+_y!ug| zyIsJWul7{gkqGH*l|8F#7AhwB8IK?8_}94G2bx{^X4wc7ryb|e9i zSp8-eyV(28l+?2fzMEP8llmUxCM00Zh|GrJX|#{YIB;Nm$<2`UZ3}5DUj2^#i>Egq z{|Ns7qqKOG*~;bDsdJK^Vl3C6q^CfC4$!9RQ^mF(nUGSJ>GEpM^7OO%Xz#A6D?6XY z{$Gu`bq<&TRu6x&n`h}C|Ho6w*>m4^yagfDbg=losUbNbYld1Rjay3Dzd45IKn`pa zQyx>!0cybKq{woZB2mbRi?P^0fAR6Gs7Qf$FRk8ndE^_C5BWW5?6C;uH4ziDK6lT- ze(J&O_tPi6>)X~erND#8M};0a=B_aXedQ1hH@3gyyp3*6Dz)2MR;H^SU@xy_R1`~h zt5|EZMY?G7+PvN8)tq^Z;OIIihjkiSzw`q0QFvDCU3h5tynck_rdca9AqHA_+!t48 zQ`vBE_(Q_7-r|lIaV}MDZ=V`4-rBR`UhtdVWJ8w1458lWC#)Y85NV@bsP~-GjH?{$ zibX!k)ZgxTcLne8_RsuflaPcKhz9J|g>yJ5vSYOn?mk?(xq5AcBW+|}JpOj})z>i0 z3Ebv5;L<|G;(zb9Unm0O3jaI<%ywe#hdJMS`E+v@WsR^GBk^l=Tu?Z%qrm3LWb4MU z!}o_~JKddCcQkPaw4|y4f?UtSAr7-xy}m;(qE4JTbZ`gJc4gEgEfl7Rwx((Sv=?|t zk$w%zQ zUy6B#;>U;{A;nP_hWyuFYuZoYb_U6*m)x~flBuJh>mY~4kD$8y?L|->b0Sk@4S~fp zR54Vfh8#D|uc+noN}k672pvVfIqJ_nNfTzceko#nQP8fj{E_i0w3H_eq;8^H=K_1gd%OTf>_;_=cKd7I zooj2#PbKw4S9^YVtf_=ucv(5l`Q=%KR4M-Eoa*n14=!toZzl6iahZ4S?uekjeoxi^ zto2HA5FSjO$hkd+IkFzm4DPfh-yeD88r)D zj{k-W1XpfSIqMzE%6vp@2TU#e^;<&L0it?{PrlO5R>GcoTCHA_wM=vSZE#u=doINz zo|pYKsrskc!(^`yNlRbWoh5t3<8M9vN2|T>MtY3E2VMYt$6^%>17s2yH|Pej7Dc|o z;PIx(?J;#waHeH??$tOo!s zGXZe($nM2T_VyOqWmMOo!7JjG9Kt8kCEwXiI)9!tO#P+jU*_t=7c>Q)ps!#J`zZoF zy=zJiWM3_!E%gR(G0DX6_vns~kd?KN<_D1ub{jIXQmIb(0($@D?_)dey%KlT4ZWRMU>ffhC>(T+$_F0@F;MU7xH&!w-EEe& zpN-4JNJd1gJOTagnLLSq#xbM^EeDeXFqAvvo#z08Ud%3MMfno{au-obzmsQVL8STf zhhYx8H*M?6s<^$Oe9IqWTk#nZ`UuG#;IzZCapMwrHU^ym{8Ukf=g%hfx>!{WU|CPV z$L^O-Z=Qx7#f?_LYzaL&aY~#>sT2OzU@^sXFn|1ZyAcxL!=OVQB1WXO^&r2b_xf^!4mSo>j+=Ycjen<)_FjYH8AkU6_5vZT_^jZNqB`JW$igjuo{ zS4>b8UxIN04s}gqIgWYDS-Sb7rG^y4YS~f~o23^TX40b~Ml?B6KI`%vrh8eY>gkbj zMk6%%#il<{66f`@v425(J%52ZnJt(0(sa)98!al8=F*v9d=6QS)Vg{O2r3^cL3>s{ z@>*`ro`YC4n1dxcE-)-ZCvmv`98gig#9~2bm!yan(Nq$$ysUAEbg}P0Nyzf|MwWrC z$EY&UWMjvBIhGSLf1v+;vj_3jZsgD`Cy@2HOG^vvMH&W$c6;~B{Y?&WccZu0 zCZ&Q(=w+Ivnh=;vU#34F!jC;I=FXTm7jWJH_WZATS$qI7sR(&4?` z?^xC(t$XN!ylkc`R3CyvSHf(vA@Lj#B@m-EfvEOIG%~bgwsU^*NafECYN%jATT3N$ za*0eH9#lzZ2lo_$_kH%`A(!)Q3QPi>7iaNnRdJBrE@XD)y!$MT6pxozLj49{Dj)t!_ zWgS%m-T@cGm`I(DOWZC7I>aj(KhO_S2IKzp^K6hhd4d*NPS79THW`llvMVS(D6oqG zE^P1WvQ#1a`5*6wMW5Op{a+XD3{5*y8Ka1a7MH!xm_$c?XQ6Yx0Yle4BAMD|Q)1%< zLGd|+mnc>W%~`qah|{#*J#7B))3g3gs3z6R`BFA89>t{5g^XpT=+>MEHwg=Y=_g6N`w&$_qwj4r~?XiP| za0TUs7zcrjs-UJ#GfKWe-2>o)%GqzjKU%J|ndLRdz%J9H`58)a0-d_M$MARL2x`WH zdZTv9jPk^-6xyK)d*&14;o-&*-iD~^@l^GU^{oSi{|ahACZHU_R~@Y{le)_`6*PS+ zYqOH>p1le%mLk5&($G`<(P*x1#W_rpd|ug7YusR*Wb9eQkRa?qRSqgGC-D+n-DVt) zB1e@Rb5)&x{w2A3C^wtj{d$b23ftyZ=sY7NZQUxBS_3NKpDCU>^`sE04T)lL{3A8r zv<|IaW0xO`jPwa)It0s0kJjZ&WmK!Akj?=Yp~XuICtGO=WD63N4`d83cl7i?9{!p3 zg@}PHI}r`@sHwV9bO6_XgZD%{ziUF7bm*v)pTPd@3KOu z;@jq_pvUb$ze2@+yU|8}?b9**_qh9o8L#Ji1=BJ646umt<32OkKswX7l9!PUK4ls#ixC=42kiy zCMQ;an!~k@z?noqlsJ|2^~(PMUC-;-X${MqIl#$i|-heMSEN< z)xMSaC6+hw9^J5QvJpjR39|FRWWTvx7UngUPXL835&w%@TcDFR2nNf4h*y5^V!ryB zG&VH+a-#X0JZs+U4PM`zms649-WJ?*n)ER|t@bYm_V7=stQzQSx(f!+-Syh^+s}Vp z(6bc>!N7IOzIpa_lEtG~7yY~}qfBPNMHZvXd6G;5FAZ%^rPiI6RnDnw+#yVF2<4AU zDU0lQEL?z52BE0WKVu7cyob#IzA`uulf!#=C>XSkK9S4)2Ihr#a3Wb#x`)c1;V z=&yf!6MH(oK<$;lexr^1sagOd;(p|E)(T?c+C1 zlw1lo>m)47W8izw=wmX&f5L>8u3+-h^S||(K6}*q&k<&}WJFl0#HZWuN2u}z>rXJ% zfv`zzh@0NKk*x|u+BhY#a#D3S*X!J|9ekcGU9KERA~BMozPN`8kcr!1;9~$Dm69xo zid`l^#(RX_UjUTMf0LJP%JSS!?4=oRW%&QtITo6uY!Za9fAqMK&{Kfh zMntMer*&Q4TRYz2gVp@_(7u$bt233@|eyqrr$%R2QN5ErqJ{iThhf{8<1*;P7o)xpV^uEWCAGy)09HH zD9j4m_RoFolkb6};$U|&u2!TJ_dVzyi83}=4SzH66uM#(7<86fK@x0tZPxNO?Xitm z91yPjPPZ2<2UzhrIOz5dI?BE~VgC1+ruY5R+H!u4?$DA??r%tvFQ2I7zXu+f zv{LM9N{KsgbMxTWqPv`PSDwF6BVdE`*smQ$dN`H0oHL_CW!^?|TEE}ZC~O&b%r+3z zs`ZLk@xkT1G)X)Mw2L1iu5O@eYxF74TN{26aH<}6)*gKkM)3pURw;8@*s~x>v(_gU zfb$vlhS(ZC6_A=spV$nvcS&_*>aTxK4)&xCI0TXIFOwv7N#i)WVJ=H(AQ+{f6!*hw zyE3vabUWa4w*?>(!^sH<_Ah%s{>8#&{!e{-<-c>lO)5Wp=p4X`cpu|-ndG))yKyQq zpIl3=3@ovXy7@y9DB{)r;j%;^?lMXRF0#>jBL){4Q-1K|AF_r!NE>?4=MYq-b8WwJ zPAFTQN%c(VuyZ-BJ4j5AWDBI+ZIvXk+Tlt|{S8c~3T~A$qJ-~Wmc1R)5GtqSDMSqH zvgVj*R>Qey>qN$DaV=$-jml`;6Il7lOZ%%_cH~b4K0RA_YzJdtT08Q_o(?@!jNV7qfA3d$R_n#j7wAbWZm;BiIxA* zv^)smF;5+LdDG^^;_z+PFP{x*MP258fQQyB@c<^7|MM>g9Bi$#;ws8hyvDVnEgBD)6TzLM!>5m8K+=@gOEFm?`#e1~8dvKQhS*KtaCq?(^LqdI|$lF>i zF@9s=E>_>UZd=mOLJxycQg^+2p1d4x!bq|Iq?R+iATh?56U*fEb1)XxIzK`q&}QTY z^U&jEFRCm|Y`z%)ObNt}(2kq~D$fD-|H|Q@JBmg)eD&yOd2(Hc zdYjx1B3HWmuSR-4Cr>4%TAwp;@b=E~-&y5^Vz`bYSQpByFsq^%KG1CCM0!;%5YYNsPZnCZLdc$t`m|q(*iOt z+XeRa%bL+H2sW%|hV>1L>+f5OaB5dYL@D0@VJlGtV`SuFeZo#+5lKj+wkgako+^Y% zg+@#d_%DI2J-ynHUC1bv+b+U2i8c~?FOr${4w2u(CU7k&sPZ)c$(y&Dx`c{jgHUR~!UTEN8#(phl@&8b9xNll4S2j9g_ z$TN7G7kuax7+Kpxnsi>apMY}t9ld`Z&*=9~A~E|KqsF76fY*7P@7wzmy`11V)Lsa| z5*3z1i+TrUf~mNGOzXpRevy@iSB28wtyE%TSCZgarF+Lme@Lhz$_LVD*>-@FE^pRq zXCH@6d?P<`tu>F35OofCD_i-hNvx|h#${$zq@AC7S>uFtF9EOSi0wy4r;Wjst0zBD zgdTEDDeGKwSLQ(S`r~5#q{Z_%YVB+U$1+>CvrH%~h<2{X1e8+_qhk{yMufuRArJw^ zo8|9K%|HGd?5SeU4{%6&whMU=$EaK;V#1_3K}+-rJ?!8gmDxe>2kPnq!fs8Rsl5F=mfb?jx zwSLJ;YAYjF;Y*^^Wme&h2CK4Z{DkkBv*1XKqX9S^ zG(1*4+zq;Y3$bkHZgPgR4#E9jI?#H1M^C2t();7LW%Tq4g(OB)6{iuFm^^zR*(e|G*M2#yg z<@!Vpp@#C}{tD#ptvt@Z5HEN)@RwUBDrWIlQ4bRzG|}yw2_d#h!%kTEipP?PtLm1H zj3AhX+74kl1d{~BqFP1%nr+c`*D2J`h&U{Mszf<*YzALfK2dgpSIZumS^lc;g7KdN z=z!MhK;qLz4kg&%CyRut!`)_Sp@g&q6vP2$bQVHkUt%IXK!2n@ne7XD6fIq@`X*C? zy80@t?Tj%=8}Y=-P+9#K?+KUREf_JC+k!EK@wr3VdP-N}Ui}_#E&TrgJfv3)vnc!sp!M#x*nh z*U5G7-+YzUuaq4H+0AXMG=0xd;#*OGnEO?kL^c%QdpMlFScUxJlJTxzuhO+_jBH3$S?5}vj~^GI3hQg^7#Kn z6{nE)Ga23I;Oo1eEYmssJD;?qfgowoTPpMyF(<3S4Be*Q#4jg=*XzJw47q4`V-d1| z|Em)0Ew6eHC9>h!Tj!lG#p8(glqGPK`QByr*EwrSaeticBr#ULxL+N7pYg+rvI9=eNe>&Eba-!uo8r*Hyj;_Hmy&b z{0wx9HnUk|wF)a#0wWV17-oNMYd;jw7dD8GyIjCtlMpq&Y~56zgQp8uK2e(JCu(%5 zc8cbC?GdiO71{xZoC65Di;N`9ktivJ$lb*izK~M}HCESE7?k;#8S4O7y$hSh@g#0r zp*s^uj~qJZc1iq9aVio{#>a6uA)#^J*xx9hTgEr)`A&wFw{opt`)Z~e#2U>fgnpok zkb-+rM2QAB;T70CW;TbQ6PkWEiOKQ2JFJji zuBs8i)T{8(YN)enLqkSS&*Lm}yGvhE=sh)fhvo3r z2Fv|m{CnyQT@-)pl?ULLCf>FMvAB{ZmCt7>tq(0ovPUTdL{yoQvdglF>O0e+lt)AF zh74BE0nUkG@%cO+5Nnvu6wIa^x)t;eYO?&&z{)bHn#{VYiG9te9U-Xl%KbZ@hY4n~ z7P&L(P__tjCCr=46hBNZkv@37un%8+P|xTY1S$whA%7r+p}CNFyQM`2X!3G+*VNI` z$n=(ZdA{4#maiiFuK(ldyn~u(zqcPnMU<-2qyz;-rAhC^3L+1n^d1qZ0YdL20t!lt zfPm5>(xiqKdXX+5AT{(Bij+V?34s*eeCIdw{*lQ{HrYLU-`Dw^>+DYMefp}th(Gh1 z|M9OMna1)eTfGa)i1%jzv>*~MOuND@78k0!JWY{vOdi}Exl{L~Xx++cE2R#XG+PYM=eQir7qA_0o4LBs!;MXF%_9C0lyujuy=^Lz7)W42#HPJM6CBF|-~V>+N({1k{<5@Ch*bw$ z-{TWQ$-ob`q^3aD&=k1`>RcWv4FSbklZj<59R!SBsq5>_p%;e#Ty7@CxJvtMvytv@ z^nh6?!PN3*lNIFEIfcpOB6)ZIj4Qkr_9pg`!y*AFroZKmO?C5L43@2)90=uM&J8ES z#+L>&cTPQW6d(m)(&^W@GXSj7u&PRgdYeumo6wNDjE;r7B>Nz^lf5VA<#xJQ_A+e5 zGmq&Oud+n{rIEQfpU>ile8fR&S`EE`-7DOoejmu)8rjUgGm<=1YbJK=%@L(-%chJ2 z55ps*pjKUzcNX?_t&(LgWWdIF#mYn8w1Ht9E?`ay_fq$y0+5d)K3R$rjxQKL9CXR8 zf5@rTCqr%y5C45(cYAYxPP=nJCgzLifI`luLr`;tf;6Nc5FSk@Wju(#8AK4i?%e1$ zS@gx~<8E7kP>)=MtOn!|N@JQPvuy#Z96yw9*$Pbv*H8L&Kk?>_n4K+Vh!dpviBWuh z(}v(R3poVHuezB`IH!a>dURc}T6ER+O#$P=9G?qgCc9ps67B<8e-Yl%Rf(S;?m8xD zW&G?>9|*apm37TS`C?YM+QZevIK13ksDL1#NBwb@ONsRM@S$cdN6(kFXJdr|-PAJm zM-Jo{@OIrp)HRo5t58OKDrd6QWDiRzo8TrulDh6yaW3iMkobNYv552yN{A&!5CUQ( z)7)Ddimh$66NfOLYeAN$A;fh&cNYqb=_L#INTalJ{Pa z5u$xPo)5lXS!r{IlEe&R+8hVe?hyPV;r5UqkA(DyW!&4u@D30DOJ{($2i>sBh+JmL z%Of^yky!>VCKG8!Ycj$jF`ZGkIR=~m1Z8WVV>F!&oBS`HXsgU0l_J>#VS3kJIe!x| z88S{BH+z;t3NdI%;FOX*)QtYZ3kxzc0daCmY(>Lp=!z z`Rp-aZ&p^6X~v6v0JHFn)f)$bW`?F~Grgv4yy_Y!h5?!t1W>Q|&pb7*T?fetBO#@R za_O$Nn(LNNdsdcnVc)IK7lPtLd%Xytt^-fMdu%8Hh_o379Ts|j!CJn*Ied28+G|-= z#^s>e>6`Hmq6XwRuy;Mwie?54_jd{?rehqoei~yuDeqypV2XpoW#PFVnB8lua41Gq`0bUVA=tPAnfb z92naZT;n_wvgIx!vurXh{fAM1QJ*q7#eXx$(06t!^O?3GM-qtP4B!I14i4ocwHG^| zrl5ObMMUmKd978S2lccF6VH*rYk^5;q@_pJ9r4`@~94mdv66|U^W3zTx(J4I0|H9z+_YH(AWe3FV zh+nT(D6!^oJji+>w;%1bgxSS(0Xaw!YGGdXgo_j9!mr!;k`!0Z^@hgKf;H7hfi6h2 zRQ`pGi1LCb9yA(cD!BS9%KxEufopSo)ufK6Yaqob&?wgC&8X6q^nDt_v=R_Ekwr&qrG$jxi) z`}S1Gq>B4h!)nK=eq{4{%oN2Pzux4BrJBeO-iDMtG0ZIWw3x|B+~v~%Y$KsBsLG@# zWRbww?zW3>qp;fb)y-seXS=CaDer!X38H7^plcMh-` ziUL-8^%ag<;_7YE>5Tee+DDxIv_Fm6XhQW$Pq<5=<$`O6I6BDw19SL|0O8t827k>a z;drmCwd1&E@m!m^-=o@2D(tHluO>z!elqN%N5h>Y(V8d%<4zOGI|?Q z2U8)U+Ce0V#i&9&2KUX+&rc%2jGIqPI4hd*>gnC`-f$C_5Vfx%L61X!9|K8u(!$lB z5X@dqqOXSCS#ei-^RzC6DNc_6Gg~c)IV9$kk(fndC<)YE&Mqppa=AXI2ldz`{78B( zps(=`w`p5MH@pgX$|SgQzU)v=TL3*i96*FN|Lo;u`1|%c>B{L<>=7*o%NAvc)vn@g z?I(y|;OePyHxRmBe6Oo_$!$NhTofr>LiRxn5l0Eiq)5fr@?x7sfF&sz7Y*zI5^KI6k zrMkLSAyPb9Xi?{<*jJ>;M`7T7!1R*e2EzeGd>=`>OkSRtXmba#bhd(P9?8vV0s6Cw zABllpotXJML~i8b-q5Zy3k2})KPT69!Yid?VRtAX8$*HnAr=zuxv!J%F@F^>IM(Tf zzc>*l&Z_pdgZMUUgD2Ah^7RCMp0`NgvKzY}EEt?l{TcBpXJOS#^p zO>pXR*EXMUtC=16UGOwP9I^B`aOrTE5%l6Dns&vgaLW>d`&4Et?_HCYX0`UZ-r|A( zD%*G5>;Y;5MG`Si6Xc_&$orua?MxRXUJF69GS{jx1eIQ_QS3neO+sdHEp7C_rvnbw4hE@vKY=K_m+@R9w9kaVH8p+?{A+mmDtVqWuE=%h)o$oj z{Km>|5kanNQdJKzvsdnz#d+%^SJIQjzX6-zycxz{ApUJte*eVYB8eo+4_u?EteL(H zmHgOzm@hp<9$!8rI}KxbWwuIkt#sIjuW^^hL@gX>umNtF0e9n!9+4$pT5cX+dz`O+ za_i1RnaBf%7w_ftOmPb@CSb6w^ZNE+0%T zEoULr8q_x?>jk)psWE-Ztt?{Rb&Mk9Q%nK8J#>Ad*?|0{wXEnzS=Y#YHc8KXMg{`* z=omFD<0K)+bfa}CP(@)j?)UP?G_}M5Z2{$;KA_Vg?Jw93&5W_a&tHi4bE?CM`EXWC zw(O+tw8-2N-XB&ta6t92c=wqY^8Kd;;Qa{PcXc2Ql)h*ZTxgGi$K2}n>5Re(sC1b3 z=~@YnDd9Lh$2`(c*QQzJ>M3pCiZP48G1Ksz)cuvGn^A7zhkd7*#7?a4W)G~pfJ|F2 zZC}ytOQWg#&TWvtmj7G3fh~5tR(hI^$P3lC3P>s2<5HkWw%ro0*v3&>#9cI%JDuD< zHohku)Z;)>VV`Or(0^>6A8Xv-!(K`& zu7t$)3?P`Q zS?DZelshRkz*1W)beipDppRWg_+VaR4yT+B@|vPx(I0xe{%&wClC-g9+0pJ-E$8HA zwSwMy>ic|#Y}^=bZuY9=#uTg{iqvoTEcRzm-Xf@B!@cKwMT!b>d(sEbQ}0mV)JVbf)h~ z?({%4qrU&bF$jL>yI=F0oBWdwpXyh$0+XAEMdG{mKPuN+I%4h?{Qsp*|Fq$abE39+j!$O$Y@HDdRZQW+GWqLWD zy)Js?6|`hUFSPtS`X8#@I0)&qiB_uhL5c2LRmucU9R)q%Y)hP#B% z;$88e$h*W3o#(=n3_P^p)@^R!4~tcMA3;uf!CSMscv?mf^m?})XN1J{0j0Y+CR)!W zWIl_pqex-})k~;oDk#h6~G>RBUw2 zms6}tx=6W1EH!zZnsLa+vZ#%f!DyCb7sPiR-aMyb{5yO zqy??`>fik9t@PeFqLeh-4wEG{u(U;niWdi(PWH^d36wU@eNI`cP4YiwS3ZHE5866_ z;pxXci#M$P&9EXBs7IY2j2~?UCr^br$0fy2mnqJSFOclXdZd!&sPIzr%>ee|?Mexw z-}cm{XF?y$$nE-g^=1Q~)*cPIz#^oU)Nw0XS&q zJZ&or^ae6*Jsx1MB#(Rr-|w9HJ^{N;0xd(M-eN+Z6fD@tR# z|GRL?UzGq)K(N33m!eK`A*5k@cf5Rx7hD>3pZs)9QnR(S-uwZ1r@FJy@1G!-AlKvb zPJHl)jdT~>mBqF~J&utQ9(_Bm@ca)qam?lOSE+EJq>(SPP2mUjniS05?k56t8HD3l zDod}6!f2-+R`rT@-8T|QAPlK3y%S$U&Zf~We_Mw01$yf_bqv@GbT3J>f235=6||lH zb3Ntt86b?WoUY^B4k;a$W5Gn%-qjBnoK*qEmsD_C*S$6&Enn%rYGwJ)QCYaE_wpwW zK2B{F0BhbV|2kVtD~KcmT}~EzcX$Ti**v9qi+741CI)$7LGyr(-OP3_50d8XP<-9+la2SRSknby%r?)>&P}d;!y@T4l$D2&y_h(DlH|Pi@En zK_8ac3gFKR`wzEc_CHmr!BUu#r5>IhSoz3k#c};U9DYZWL$uS>(3rQ>BVv}S^~1PT z4~JXT$j-?oL<|t^w~i$IfZi~tCY-KsAEzl|IGAoF_O&nM*&WQ)`V3p1?EO(Yt<`u` z`0V-%(qnVtUV1##JM+3m$O;Pgp)Ay_f-Ft6jn3)mH+_{qBU&{uv3yfkQeTYOLZ1=)};KH-GGXR&e!cjEkI>S zXiZGPTCI+!>Xv-^&sEbw%KSA=;UB1$vD=^2L`cG#B+XgY+`{=s9!FI6ZrFlCiX{wx zMA^(!i|>vn$Ji<;s%JRxYtoh=bFMtxyXr4_ZmRY>+Y0c&q@MakNgou!Rki4|SfYQWqE0-<^=l z%wGS3y)jh0(UW$p)EY1&IP2q?sCXXn%F@Wy^24~h$Z?t(hwL(QoRvoXutTeoNZewZ@&4MKhrYgp3c;y85;2&{stJea|XC!W;|ZDN(N44KlSWln0nA_ z`AFk8nCssrG7A6Qr!RWftA1Tg#GpETrtLP9Q1U4** zFCj+K`!EH)r!F+URucRN$G5dvsWREPth__fit{KT=6y&79W}u&3+$v}!c}Wb4VdlU zDJ*Aso=4|`4M*Uux%N4{Bru~?C1z@A4g=5 zSEjFk_|1Xk^~w?p$u32+YmYlUJ->10A0EH|+3o6+{QS>s<#9tvE$x1DRrG+x;}WU4 zJphnipTVtrk@P1a*AD`1M;8}#^s%UrM6 zVo|{twJ(1221$$w29k9iwh!R%F;n!kpnHm`ruMd4>7HSBE7BxnawJqbPp1f-m4T~o zx!>PpyoA5%(_7K|^7_5ICDqtkwB7zv`J!c$V4-h?gpSvP|5%lLQKJSQ_hEx=9GWbo zElD5|P9TOC1;XxqubFUL4=D)=;5AQQ{zfcVUwX%?#(%gATFQjupSCemo>9|}K)}!! zwd3VdXo!xKyq@N$U8~53>U#U%y)$sTT>1Z6b^8Q zQgAfo2BN)V<(`s7&3?c6TWp`F&&f(_$_Qv_emKTfu$m(y>ppe>*c3LGBTONHb>Qua z|GUO+D?z3AsW6Lvr92I9i%=jj?BuGt{RX?0h^Uk$O5l>^baxWspxr1jWzs zzdPH_y2}U(pAU+zGdMJ4#m03=LsP}n;;C}L=QyV`z{JUf@Ln}im6Nbv;5 z4w#UVrDJ}fZsky?*t~Gz?Q)fTh5Tnu$6xShk(R~3WXRKM(vxNQ6t-s)#N>#lc4s4h z*yJV6s16D%hgXdXmIhx(zM%O+ePc`7I9-8G)V_oHPwID15W%#Vwzq7gI|XR+J&Fjy zSkBsNJ9zkGY5H_&m;FxB=SSGM4H0&q?ojR(HjCt+ol)m=b z=4i?G;k~WHwq)7d$g=V@kTm5p=&KR>2G@Z0V(n|sOi7r(v8>9zdkIOSngNCNFE zo|b{vK=Ksr+(qZpxDjw(>;sVEZs9_Sl`AGVV1W7Hu}lPKWein;z)j)nBjk3cU9+9j zaoA|<|5brS{yC!g(Zz>%FYGzTx~Hb==2a)caad68CT=-^hp&Q)O>rl{^e*}3Z{K1C zY3Q7MTd=-8+Uiqt-Rq`+*FN2_7z28AbD?h&K=W|N-%~>jSh4MNdHSdrVNFsiAtIBO zfl(?ZNbajmyu90sqex;c7iOITJYk%0Jp92Z5KF&}Xp_~E^pKBnO0!xfHV=mk z^kw2Aao~rvA^Kk1V!>6>J%dKwnn3(ucD`Uyph|hCwy9A<8(E<{e(Oi}YPHL`6f z;|y@_4B&!_tc&+sk>+-3l^Vs(=nicDCo|nGBj(!kp6m4`xg@oN%^Wg4!`pAs_(&PL zgo|f@E)>vuH)i?!2+rN{dF%MOU!q?Hb$HSE&)lwM9xzkMhagvA!3c@B0mLl3+=9_suUSe_<{)jcYtkU7SYz%!*$8_ zOq9h)y2o!VwAdav0bX{f*|UBZcAvm)0wfKWbva z7F$_hae*7O%SHqbmJ%U@JDI87+rF zyDW+EH=y#BHPB;omIF5OS<8Chg#;i4l4+SVJ!wQvU={i5Cv znqq?=0n+RAP58_d`2YAIE?oulvHf?=B@M?M=@vWAkZ4ug$~>_vpP!_XXD)I9C-!p> z?6wGRZ==thX3kGti5dOuMVU7}Yu<~Gs4RXrwJGcw*cw4#(nL*t=uq)&`)oUK9A;dY zzMN7f{RdfMLNkRyrBZE|I=*`h&4pmBLdYOUswR*7OKs*LjRNqnx$AUQ(UiRgGp791gn#3EdF%>fhxD~TkX}TXC2u;D+*+mk z0JwUQ1-`ThWh4dDw$0I#&9ChJ9EU2I+|p!ONhb}Ag)O%DV+x0?bZlyHJ}OpZT*6n4 z3p8E(J9d4rX^%_g=+ysoLiYjs>5m$Uj(QOI zr!;AJdkak^ZH04`^hB?b);_0>L=(hXpNnanaEf(-NkU3pgCUPbaEDEt2_etb8y1$b zN`0~c3`Z(I3f!aOzF1Lsupf#iMnMYApru&UHLV5R$C*cowGlA1fi-@jC)#J#`hIDQ z>ZKvbp%T4LL;xrOqe3Pz1OGK>h0R*@f7X5xZAMQ*c&plW8cv}n&2gxUp?3Mz1xQO*yyRqt3`UK{Hqqfb{|TLj$9!Fvj^5S z9$XsP)pw?=^bDZ1bO!hhHz}bM_JFFLV&u;NS4jO}+&$r_nf(b|Xdn0ejQYM(dHnU6 zz@C|*V{eNAR2fquZy{QZ;;F9$*T}Qeq*gNjGL0 zC56aR{BG_pxh`8(;K_ez!n4GxokC%0!2>(@NOy}jHPuKDeKQ6vcPD%GMhy4Wn)GBX zJg-)O#Eagr)f#Z(kc{+f%{&93LB9ssU0Saayhhz-WJ8;NFV&l$E*q=XjwJQwSc)JZ7jBoL4BYYg*8$?YL*ADKNGs(kQM~02k{Z0dRHTJs9zvDc z5-P9+js)Wkp&XVAB$!LHfV-D_fMRSRE?mShoNoZ|`hufKrcaccfB6CJN)uU<k;Z{h+c%|(e!3PZ=6~<{yqU&UDxWl^m06ra zW7jCAwM35;m1#V(b1gS3|Mry<^etqVv zu!B$>NcMbaDMx)=c5w2^JpL+Clz_pB5?B{ITiHiE6j&ZV1Yg$TU^LV0XfvkWhqvE@ zL)zkk)%{!VOkldWYIkgv9VZ^1Abb*sv7yl&Q3`7A+@?u)>fm=) zRG2^4%Es}&sKDm@3;Hc|Q}o-*I86mowWYG_BpOX?%7&1Yx4@U-Z;`B>ON+oj$DV^O z)4N75Q$rs4T0VZ%qwf`Gj~K0jyO*>@!htjZBq@-gqY;KI+AQI(oSSta%(}U~`&GfK z?%%gPrf{_0LZ4z`=qF9OuXrEbt#os+7vabBUt0Emk&Zgsh(Z|pFKK{wx#$dV8MQOI zAb|HkilncXa3rjRoG5)Ycsb33;!=69fl@&F?*tpR8%!S_g4EiUl4wFC&=M8YoeJbu zm-`7(#H12pb;{glz+x;1PLNByC&9tK>#fPrSkw-tl=6^Z8($j8rdLgZ=Kp)6q55>R z;ART7Kl{V4xxC1pl}p-U=|todBaNwuU_`vtZ}t|nV`bHdnb+1L&xF5($L_@I;?#)G=G0P?re zs+rN_vJ)UbY`RqeUx#xb{}-6noy}Y0F0Rw^CCE#g>*gC}+0U04R8}{}sRsA*X=9rA zsb49epMhqbsZuEe)>9O z1G&Aooq+|Clm^UOCOkwUb;r?n4;sa?UyBHK`Sy-hqy|JAZ9}!(`D;sJOewEUVv9qc z5f;1Xve1JT2R5GShD=Jlh8aG-q;kAUECyeIX@=@kztw;_odr2CPNRn?9!o`J>92fC zwcq-WE^xHB3kzq;2n@n1w-)ixo+7WM9;-{^5`K;!Z#@0Pb$OQDu#JF^HivW}@lffm zvYQ)!qP5*$1wj2F;SEDU0Q;kogrI1$8TqTObZJThTzCl_y;y^ZYvrZfCy2eHfZ#$S z6yyHWvc?1E(l%dY4(-WblMMLGc5f=MS`yRVB=A^AT`~-&z*J@?df{vPMmf`J!Z!es zhx!;vyL|6L+tpi9ER0=~G@(FHaKr`Y(f^$G2%p&ms=Qt@FTD~vxJCZ+2RTg z8#sY@k0iXuCb6p0K$fMN(C8v58{{|62MR(B`PVo0IA9aDY6S4kbUsBi`Q<^gQvSTc zxaSg^&Do+-wiqyYn7t>H{z#fWSowD ziQjryVe`D#ukq>k+YHo+U+0?;(|k*NQJN~SNgBt<(X#^y=*FF8eG`YNyhIXa6pS}P zPQlyZ)zKg1Z9+P@`W%Qw@hx5d1u%-dwcm^ozh@TbT5KvlO>XWTJ_A%kKQ=oMe26rB zD%~$LagGP?ee%2eL(d}5G5JqoM1+CQ0Zf6&77emr14`vy^9P`UDRobDj5= zlBod^(t`D|i%6b}!?g>AXU0+d$ov#XBoRuYF2e<^Nx_{q(U0m6e$><(3QI6DKhT;q ziZYsd7qkh^U#!I7ya*x0?*vSIvxV2vtboz-P-z6;wnY#^_u*yg^!Aw8$$^PcO30|= zHN*9qSNkZ+bzq0){fRSxGm0}X`4K52HxO+3b*@uhiD59!5TvF#F*_D5f@nOaymTH} zIgGoM?of!34-4szb@ze)RA^RYpH|1zmGAVwMUb=}Xfg3h)HCwG3DqDWxOcS4j@vYG zyyiFiVi%h4k1S5A7B?SiKBv#{lMTgAag++%VU5~dfTCpf9 zk1CJKTeGT$V2~esyis#4`V>X5SeZQmyR=7PAEU7&8J$lDk3XWzKwW9p&HnzH&}pBo zX@SfCf=>MpZTM(RK?I04sYxIqgP>+;z&7_wX>s6suKRDp(sSwu*~&ay!I&+D(pFtL zcWb1bzFbfe))hD8ebJ}1qu44-TC!lFaILNfND_HEN(rj1q|HsJKd}!3ehVx6+R3SW zGA{0EwfEXXpnt}(h?qSoF3122spO~8Y;cYtC;O^ zf3LaT+f^m@$p0p60@_u-^m=Awe32#?z<*0;`^4$E9-a$tN zY$UOb4mG9}Ogr(m-mkSZe=KP|e?yjL&{e(l3zj46(llBL8 zXSCU{QDXs7WVMxqvvZehk|+$&m&t}W8B$}LU2?W+{kd%gCnfh304y~IZnK4q1tSY> z`2tSFKs+iICfbX=ieogWC)^OPu&xnKprD={soX&~d*M5ENy!>h19}T>7V1fa0S78)OR#tlGuMqWMh14i-Qx-z?_cr$^+0sj~Yg%An^Qw z&W9iSQ#kVUMmjC0*=|VVDWU0NfMD&E&ixt_Z$pR@~QoRa#> zZs+w*6&O5J;66~}VeEaQu6WPh<`3Ku+%_)0l?wQ4a^i zA`Z_0hFXt6sNh(dKq21UABQ)|RAb|_NPt@+aA_3eC-`(V?JZnG(U!0ET@=Jc*7MN} zWUp=d3Go-6t&={((OrmW*xgZR9>KAhe@gkiQo6;tkEtT;obSYVhrG7Id7t6!ikciK zgDbPeiGNk7_vk!`@SxnPj~#$A&ESTQ6W~1`GSwE73Aclc^IC-u_J}<6Z^Q*k6JJv! z)g6{Y%2*fndXBlF3h%j7Bc4l{OlVmjop|cAF(w2lpOD)Z(Rb1a8N`^;BgCh4D@zjm zW4Tr=;KTR0u=$^g393#g7=(BQM7jfQCoxiDYCU-19O_~B=^YJT7anmeCkKke$!_>O zkhlsQLK3SWDed3R0B`%$iiB5(XQYWOBrqX*S?NRQ)#cRYNtC*zh*|2*>Y1>trFd5L z0+#scj#PDq8o$-CP%HAQz+Nn-bKd?Dp~_|9_9#?HX8JK9@Al9$a#fuD`i0_UdhnX1gQ#tY(^&^b$pG@x>Dag@W-{h@#KkWNa5p6OB$K&j- zeJ`5QoHhr0wF$4dlTTpi7?mtflPbI+y~dPVD=~6C&aMTN3aKQ)>Hhq2YfNA{8mGTC z$(yhY@j$A^9i(pl1rD{@go2i1fy|qP8JASWT7NusYUN?^{e$+Kf_Ao#f{v7*@{5C4l*jq`R~k@qGeCst#kS(=I6HKSkC~KQ9zQgQ~PysU8Sfa zCV*WYdg&X1!EmOgpt5zVsNQt#Kgd0Ql#gWZ+SIVO z=PRdp#6aa&C@gbUdo68elPphpNHPD#aCEV9qY#S1n){~EjdI7^v@k(57sLOWxv`X(NTYz>jdu8 zRwsY{Z`G5cz%4SC&hr`pE3$_B?(N$BRrBZWQ)27C_=A0{7AruwBJAEY{MR+-o8Tz0 z`B?d#Yp8EmL%$vKhm&IV7ZZT&HOTAj5I_5(5^WI?Ax8g^e<2BNQR2G@l29S;o*kBr z*A>iiR3_GWvo!;nulw_n!hCwr%G0+O133CW>uiWz90~zm%3rO~^=UO+)5|>WLXpH% zTMGXXW;S6gQQI$_;bR=fRqeg=0RFhw$=QLYF%&E*D=Y*H{&X|?Ro@wm1q$(6A^oL*a| zzQ4zX>qlF1H0|11iUpp#%YY<29IF6iB(drJg&xj7^6k8<`S#CZ(;dCub?c}exwwsS z%nw?(rT~7p3p`y-zP_T}4rH0#3`mzqo+8CaYO35y75eUxYL}Mqs9nqxBo)}Lr>x+9 z?T(+}1TqeJk#-v#%0bGvUm29PYa887T~YAsuiP!%2Ipk+(@$f~b*B5hk*lTvT8Vk! z`uA^Xfr43KkR?6)Wv%?5fo(4`%a$@ z;Ss@3abozZCA#-4tRw8`O z26cgIKs$so3RnFov{`4_6u&^sd*9WxJP%bLf2-Q{X!@;0WoHUYgt0)cK&ufLNvHND zd`lrtZ~2Ijl0N6+t++JwAyt+&;5AH`KtwGdI7oaQt(tg~)=b}7s|?O~mLKZ;k9v7d z&7@p1joVjpAID3*J#yP@U)$z*VIrz#^%SlSV%Ov(VS15#3T!-*hRWacnF|(GJ*Rn4<9Qfl|=aT1`vHVx4x5kW)@mAYR4s>P~ySRxY$(uqS#>sFeo6RsdOEe&K!G=fap9r|4U?7)m*7uaI%RtDWTb%wl%ybUEYHJNPE3yjZ_{J|yeE+9@NXAG9Z}JhiSuIVjSD}h;6|M6= zmDi4xK*^+*AwhI$X}=3K^COm-brRFj2k*)>CM}`lZPc1&HWw+x2~TU6r=C}-X$r9} z7V)q!J2*9~E^KF$oK?cG%!L;1QRerr(ytjm;p<#yGXMjr9k|hx0__QGJ^VEVBIO7A_v_Cxa z9S`$OD!pU=z-59s^^Nud*!g2OW7cT*Y2A%VJ$!uTN8&{}^|fit&!92HPFpmVQjNbhwpb9B~c-%zmt*)#8>zK~xY-000Y{%TwTpB!%=>ylbQEu45 zBuGkT_|R;Q^hp)|JZ`z+RDOFkub!YSol~<-?kM96{jc|NW) z(U{&K!%24-JK-~Owg|&*l>G5K=}}hM?Z(eud&8WkVaw7aiNX(1-&m`XMV4)jmeJJb z<3Cn?NJod|$DND#r)(c)SSv4%o{XNzGK$}ih>uLn2Axjq-bC%F;d@Q1DkEv^^Ox?G zj^F>U66eG~{^d2Sko)J}kahpfldoYfs;rQ4aJ&(4CR&$TPBC*=NQm?+5RK&w_!2j; z`D^oph)OvFESu-%P-mU~#?azx5F{~F$Dk_jk9xdx^j_*RrE@)pPs3Atvi=OfOE*8F zFg8+M_bbWnq^mXw_&^$#;bw+m$HrRNG2GN<%2Htd6g~&I594knylGu?;&keozD3)B?SL zQiT6@&ymHt2DX#a$H}{PR(lzrH&GA zU3w1O-o%ZfbJLBz(Z*$KKKG~J8betuD08SdCuXH5z*W~HWEYcImT_kdmaj2Fdi6>`ki_w6@eGke`~))P1IQggE`h475$*rw2OR9h51Mslxj{)+6eDMsYUj$ zIoaLtKz;x#WOt8r%L$^9n%5Po}2&VJyE>_EZ^f7nA*c;9V})+{=?5G0W^ zz^5GiG48|Cw_ToM^i;eK?OGsbU%F9j`?%>ecz1juA=z{nZe*#@J5y5<#7GcQaIK^; zc-LjKS0w5`d0co{7PDI@-VVC$kbC9sj~bD?KVks?dyzo2t4$@bz^TrjE5C3Mjm+S0 z?961dgDOnbRFQLDl437&S)AG4B84A>l0uUCAf6`~g8Sw|SBD456Y4M%${ApuqmFRC z*}4GK(xuyc1|UvlDM#mVr=1|nKzM^J-Ol5-YNrqDqp(YXvAu#qsnUln1}1Sjb|T+E zvT9Ke&oRWEXADh7mbYG`JR;OZptUo4)1mJuSC{>wAGBZSPtNu9)ZcGjJ>0Xk$@!N~ zY@??Skz@o}mgaZSWU7wTsSMM8nF^J5d-19H{3ThH3)jwRY`>?LftK=s3>2A?%~oCl zD>8&|p2to`=ch{*(;HKvOIOG}>l*q@r$;E)m$hYrA`XLYDk2GAN=9iwRcNTz07{G*(72^RfV5roW#6#+l66q8tXe(Nsfq?>yeuB@=5Xk!bQMCJ)TXiswq2Wk@5b#lx zd)xNz`0d7exqru8N>YDD*%p|y^Nu#M^~HA(=Qoej*U_vwXEjmwjb_w(QX zWLO7yhP^|1(p^53h2k)ZG{mpoq{y&d%pL5@@b6wBtzVF95 ztHU{OMSl@&as=cHXP`y!*C;nx2=y#nu$&}4q^m*r#wE+Q>{5)Q=VH(QV159%Ra97J zq+OxR6DvKV=rRpstERtwe|^6E9QI174(Y}kvl3NTGsyiX{sskuKWN)h#ldEi$S6|% z2gh*-`F`xJwqU#9BKUn0@$m7F}kY9MD9L;Ul>KdLOhg=-~jKy9p^|AHI%n%Ky| zJ1fGNsZP*#0g01Dh@}J^VOcvlu=b}pQCjeek5o$Ukg5zA)bEM>NJ|J40p8GQl{1ZN z0UPy{=)X)Cp2#p`@ONRDyzuaCpQr68gfc;?LY0^4^eBCsS`@Xeqh{ZWYFaa8B* zdP>nw<;&7{v(w>sqot)Nk>F&sK_U(E970K;6Ocr)LYi~H?HcI@| zoU`7^kE;4@(hbGAe6#eR7=y9ZVWGs)$v45t4qp;)B~G!+uKS3IN4-*1&L&L?`vXCv zX{y@sS@nUXqt2Kc_y62TM79z!o#5G!8lmnrFIeEo#>l_;*6c6IGo?F6NzmGrNg?Lu zK&1IZ3q!HFwN|yooM!Esn})^%Rr%kUX;qTxE^ew_-zTnD-C__Eo7*^VsO35N-F@lt z2MN|wfJHLCGd;~n*06)r+iDVhB|oV%oh4(Jge^GNC%8<%mlMF6vMfqskbjAKK18zNvb|sJKSTOK;R+ zEjhUj?QG+NGSU0sRW{KOOA_brU9h!f`Iox|ODdmNG`BOJKIG%u?&VSm7=&7!!G{^` zEf$$h2n?>IJVw8q*l(3PughKh#-&&1r`W<4Cf0m8E^V4}jmp8ph3qDBdj*WS3)7^dOre}`q>Jd%!YuikC!(E<<_ zeLo$glQl^@5oeDV!L5$h%pzpgWp)$F9W_i+>TMKyd|x-q?Fb%aB@B&~sDUVEOHL7} zN6)IAQFofg9_H7NLFCJ()ZLKJvZWWdQ@%9U0NyY1@f?}auauC0ol2bDKn{vzx4LZ!q zYy<)LFPXY<)w_25HCD!5!L2Bdj@qepZ@t&> zXAtW%^2~wQQYIF45lkEO+x7LMaw5#3EN};Q#H=}ACC#a_}iw1kjZw!k4bp0=Ze=7yX@HaPJYe%G^4h+Y@tXpLq}3Lii1)>+~(S! zSGzW-p=;I6-{LOU+5i5kEdV{3BMpo{|QJb z@x`waU;HA>_E;8#Tx+08objG7_z?w*(@zgA(m&q1bm?1ivuI7xoOL{-z{;hR^oFotx zf^jcj=+1LVvDQtJxG1qUWj3S)>f{IFK=HCe>?g&t)mj8)Zkgr*{^&4+H#V_lG^G%5`qdy8-^kzi0+YLUt7(z!;qk7|4JRc7+#w*!U>@Z8M1IZK^4{H8 z74*fhkMAWBhQm!s}-gI_Tem5ZR)_BOy z@(sP3PnRnpY0JWABsTR&=o2fQE={}E6%k&~!jDIz->pQDM|9!!-wC$C5L3}F*p#-^ zBom@${5weSPl;UH*^1@2?5*D2j*w@RiUNpYQ2HyE>o26QSS>Xee8`a)g)&n-3|Lxw zB?|}s_)LT32SDGADCxQ8^kGh!^1%16XWEy4Y0d)maAYZeXu1xXPgSNp-e;CvWR_HjWytCSMk|^1FdDa7EC84yvZVqIjOSsr@5Ix|9 zebVKVQYYWP=J+%MN6+#C9@e1+6`jXYIwm)aL;p*3PBnM;j|~?h0qA~J8TB=}j9({a zk*9!{or||h8;nQ%)ILY0IdeP*1_v@OVen~@l5wCa$j<(beBX4^Qt2@mt;gr`XuIJ> z@a;s{G(xnAqRf(nH&?r(9Vi4VyoQbo?7e|{MccEm^S!J6bj++7(-+7jaY?U##>Ks5 zdjIQIS{>nz&2{@lGf`Ype3NLL$`ikS?fUuiKHv6BmD17T0-FX6pOin+(9b?z-O&1d z;x+&Q5_38iHM^LVyVzWB%Gexz9uP1{_hqKB7K6U)i%A=Aj3vkgwPN3TQSK^e4{44B zs=db?gu+au4x&}dL0hY!QLZy^< zY4vo^)0NkMWhiF<+e5JqRHKIQl|3}nX338gI8=SDp?|L;!)M7(Uu=GZdP#-Rk8k;8 zJFam{K!y~S6kh8a2Blj)c$S8)&|F0DxzN>qC9fHHN^{M=Q9Jle(;N50CN6Nhv&`Vy zg8GGO-6L-CtU)hs)PVr-E;Zh!1}7^2(jc$mGFmVim@a1^tINFw?XKV3x^@8qs->FE z_BU?YC{vOOXexHd?1O_)x_H7T%Phb z1aTS%K;nhovD9DO={F zYI4pY*w~&FrqV;3H%ZQ_Xp2qBO2M&r1(^m1-X#IYj7KdrUf>nF$ohh8GF_uS`G`Io zuQ7a=&#n!uvyWh>*^M3~F>i2q4bs2(b4N?%Tm$_98R;@)hU)mHnmES9{x1Hj);BNn zgJ{rw!it`$O|yXX3y)N;3PjYkSS~4p7@U(`Ipc-uV|E@ZnSG$~P;^fLOt>X(|1h0X z0O1w*iQq%ce%^!M@+DOnl$oVN z?h*&#TfOy@_42z`n#Br1Ge&*4ZBGI4kQ&k(KkN+00$MY1xwHd1amTd%x5D|4tA@u# z$ojS^wLDZ=J?`TrK2NCs)K8m?+V}aFXdhFGA^II0T@1~KZY;s5G zuY|SPJ$@A?fx8_Z!`q>WvBl~Y>t6Hf1HM1})qY^4mf#6WtRHCVC+YrPWr4r%AFNv) zc6!D&ImRsNN&nT2+N;RD-mv+HR&-?con}cfV(kLo!Up}}ojyMm?8#Gd?V9i`wbpYxF3^V&Cb_2`b&M5(f5Len#g z=e$-TkRL&+L5K%LSSNu)+yaYE@E6im-A@4rwJ zx!zx95(uu8TwIH;fH}h0HcSsWnT2`sZw%fD=s(}`sK8QsrMn~9W^?al_gKk;*R1YeU&#>g)a^JRusdXHGI!72EK2@N($6ZA zo7KD&RW|>)XJ(*_@ahz>QJK}Q1{#BMQ5=WVGd&l~i_-V_k{NVLgQG}>MPfb`@W3C& z?Zw0Kc_e=ujZ;7ZO3oQ|9%DDQlYie^FuF&XE!^5ae?8bSMRfj)I%@&sgd~dln?>5} z3Tzr3KyQ8icxP5*?$J@K-26WnUu`qL$mD#X;c%CbUCzcMSgJm!>>5JJcT~)2E-0Qc z;hqjpebbhUHO+5$i)MEcBOK+~G7;ke`nX>?>i+Au72=#WB8T>hXoEE*nbAZ?7PK2h zb%(R))^R;zBOXxIbvBnV*4hX3e>n!ohXM{m_e+~BJ>}-4xYz~24hWd&R3k1aQHeE9 z#o#2xMPhT{m)LfzTM6lM2}8_&@J^*d^!&BP{qrao#gmBDqj*jeo`d7Lf)q>kkH7Ct#Jg-X)%>LR zlYBKPslMIIyt(48FeihsuS2R4ON~X@01j$HgCYo?Y}uB?mCcLZ!(08{58I z8!m}=mQt!g1wCkC+p+oJX6Vto>{p0%9P6ly&9#x9T zngV%~VwUUlY0q=U)zKizVlAz7`<;jhLo@qrm{RtCc5bz|^0%Riu=ZfO5KWX)vIM?R z->E7kiA)etOw9FnasLRZHqN()v7P73QRwAX#KTWY+7|P%HK%}X;1u)}fNL%4qR3n*2AP-VEj}OOlG6Z(spe`Y1CJY)=x@WPXl_rtL5-) zOmmF!3cGzRjg_MaB$p2%QEysqq{C{{quuvat2X7?WCP0k8yI>*LNRkdBzOx;iX)d| zYGIc*Ux_U|UF~CTt+o?<#PDqnPieBxq-{~oC_L#xPzT1iCZhsTOWt!YWRB#EOjRVy z9S@yldv6M6$zbN%(qs`LD9;LRF7AaH08h}2fjMFl zU6MKy1^Lfe&qV}s3h+PcK!Q?siI7e9aT#2BUeESovo`U^`zwkE$7bWes+e}rj3rr) z5?D+z(@ts+$q6r=%cy*~^E1t}<$S|M_amLe)Wd&sT(kjJXvkQ*lkiczL805O79}CG zA^*se4y1@q^+yo{QFRBWfcH>+n$=kd_JtUeU>-+?#bW zMPFRoG`-;QDq=R|M$T9C$IAlWU39lzB=xu6`w*KNlIjt5W$9ZdJk_N2%8s533$~b# z?ZxYF=;*b%fFeIJ>EJwGsL8*!jADVufxKb&hy2j%wDpm}I+@wYxTxr8Tj)Rc7QVou zThcjdM*m#mL<}x4=j0$|l$s=Ityhcv&#jf^Hvm#CthpJu`pP?W|PW^^Qxo#H? z4;jP%j6Z#~aQZ-T>Tz*cOl@cmaH=z`+G{Kj+73Tjs#US3K7gp66sd8&Mtt()<$o>l z_H9a3*9hC(qa7PxB1SV&_j^d#Gfn%^9Y^y#@!cXTJAsxkMTG0gH}SPvicDeH59zGv zG(S^nZ~2-hF41jEX27YgV=Q*jA;?6dd^ri-M!C;GV_N`+gKp&45n<5>cZny+#y5(- zf`jjMA06A0W>D(GD$mP;gv_X>>A_)z3q4nE&i0NdC4R8?1vkL!(Qyz17)hq1=~8`+ z18Q_TxACfy$SFY0G(Ma|@i_Z{#ta2Rr$99Z2_PrY+DVnCxH4;y0p@PXR#*4P*IiV$ z-2pppkz{iU_!Y(xP5JcraB|>iPm`30%-xW&Hs9c!tT(%prv3JF^k;eI6s)4+@k9b! z2T#$*NGmQU>VrC)r6=hpgRRp!GWrfb3j+hf!r&UsoK)>x z;~e4{i~Q%;TsSYD9q94PX}r=qM~Q02RB4~$q3=76fh|@r=a0V1^^fn>H}FjY(~*jL zPhI)yN71i{pr!PWrvN9<*gE=c;%c6M{zjeaYe{{6t6z7bxvu+M-C(siu|6pUxor+H z(^M$@OX48IVFQ{7hnrgEy34INNP)CPgD6$WcLtw#F*{SNrIUh|8+r7FcXuhUpBp>|337HW4*a{Z zX4=}0mvo|eeOi1pydGWYLokp$W1L7nVKpxsEIW(^d$)D(@yDpDA=7_SZmM2B<}FiP zu5b9To%r8HY5C$(^7v8kt8A}Pv&J1Dl0PO2#R6Rr5aEeVAtP94H!Hkmtc$jnf|zCp z)cMZU;%AdyU`Bv-MOy`n@LA0zaC@sIt^g4O0lMSG9>1UdTQ$|p)vM^o#oOy8Lo??R z6#`uhD(ei1iIo${q`u5_ivcQgv)G@BZh}AT0_q~A9v_%go5V^9Gz^&d`C6dwZiD@m zSGtgjo-s7S%6HH}MPN43c)6Sk3{a=41nz&D3-jc^Sa9map$v&j%I$x>UcdHom@XZbywf8ouD3a=2VybTs(D!-d!Fyv*->w%E3) zELDS|(d@YPBk0b&?Dhrz7W51>WAMRGP1Z}XcHxBOgfyYo@XV}P>scZHYj2i2H#Jh6z$U9w zF+Dcu6@r%jO{95?r`&&ZKBE7b>_HRwG zG7pVs<~Z50iX|#2mX2!ui3+F-b3WJX6J&Dx*tnl#Wxi(uFUMd0IX^VRTsqOEV^6Gp zg^?CdeR+;gs%JLv^1C%rq&~4JS+2Z#DfScqN(c?MLR`*RTD^fZ9$7AhH!0WqPPXQeIY@>Sd2$Rf`o|_y z1lBM~?DmlcKA!HhkKoi;K+Zx~$L*_0^b}bKNUvnBf8TFh%(^wD)YZ?4VM30=R~6s_ z$AH?eAzLYK1-%swve#%){>YWKDss6$JUoOC?TmHf{;de~Gb=GweAoD^7JF#6Yz_-POVG zUK$B$U6Q=~oT!f5iQ)aPes>EZe=#7Xn``#lW%-*7pwtk~&Y{E`l#stO^vjlU!DHTx z!9tZ%ISU7S!8R^T4jbC-nM9977kGL|hYK30NcT zj3GnKwhk6kNMq{mK0O-)F3fil?lKH4^kV=a0*b0nOA{|-*hopIDW^{N65+A%bCooM zQjN(6!moi0f%8dN%%_8$=^?T;_zIeAX+0S17dSV^hDK>3{lQ%O#b>TN%d6bKUg22N z(y)8++jP}OVJBfy`;K+Y2dH8YtP{?fSXkXN#--kLAN?)V_84gKC+E^LtFaNDey%kE zbJxF-T`<;KgG&&_R+qdOzeh6KUW*=fiNT0o)+vleL(^G?$ltI?ZR%r=vj$5maP0vc z{)V-RZ2@O=$qSQmjmyYrYc=QXnB+7L#OfncRj#!((6XuIRxt5?%YFQbQTOpzZGl|a z`Fv9x)biz%USOIYWHtEPt9XL;Ym5G&frCduIyv2?iQ9)~p(PMlhuuo~LC0Vjkg9CP z$WOZ1`!kbaxj7<$lhL4y$4hNlr+}okD?3m|i1DO~d>D5kUbitwOH}0o8uY^KK%t01 z^_VV4@jL}ET!aYK5P<{(mNGYg zuzy_77Q_qP&XGw0fA##pJcbZJ{+u#dUA2>x`BBf*^4)zT!N0Mzy+{ zdGVVDTfbTKOSkb;fHNq(jhPOjW5DNRvtXCk7x;;jZMcuf(Ee-Ecf6yb!u5zJ zE69@Xu~H@BKmTJ;1l-3nB$VE(H7);Ryqp}UhN5H;mC5=OavVw8l+dNPf8zGe7H*2* z{>6h6{7tjs13Y`THSOw2=2ivmfbtyw`b{jCjC!@PM+BC_11>!U)Ueqnd@h zFD32TgYej2_Y*ta z@iFgh?Wj8gz;6)hXink5cX7hq!!&d)2dRtqC&E}l`Az{!$JwgSO|xC^ItarTg6Mx= zeJ!c4sXBg2{m+F{?-X!Jz+F;rL`4M4nx8D?1IaR}OPu=|<4z+iO7%XNUiJ|aBfmO< zBX?p!oDk1)3Jbd9II#1(sIf~|)Aw37E1Qn^E_IFryT)`O?rUSBxro6*SU2<`60?HL z>f)(Qj$GN6_vlK@X;oae=15a9CRw=IPeUX&iGB7rjFwcPxvU zItRrm%rkFRYdEZQNiJG3BdBAs3S^Z8;h_=EL_s?!wHBKQl^I7mCX<&yjINByTDn^N zKgB+W>hxoEz(+(prvFUx4plZ07l@X3~zpb-N&7h$lsth71I}$J)+=u45v`r*BP!{)ZOEADb{ZIyk?^lQqeB;VBOX3&=v5K*%&qKy^eTS~$90I!Rib@2c{ zyjwE;q&@ebWe^#1BjOS8j#)tx&RekC(oqDbc&f1RzIq|8&x70jU~*((sAH4 zAW^Tv)&*1*)8h;Zf*}#I4dEAZU)y_A-WcG))u1c>)3t4p#~yITf%v-X#b3-G>Ua04 zz~DVCbF)1EW~Ao7D?-^#zGl~HrqLWvzCbV1gotUmOU!n-4}qp3kcYdesTp^97QoCEKXX)m+Y?q2|yS`J)O1VphyA@ij*97VBb+g4`zJ7%dNWt&z zwc`WA7>{pgSjPGPJgPV4P-ZF7SNU!rNrchZuKnf!S8+s=vU+l)$7`Fx*KJy}IRcct z8roU@Nx#N$@6OWpcT_-UtmI7mn}>%3HaHfflRcwtBSq?+oF@b`m9uu2-jibD z-S<@m@EvOWG3`oxf(j5t&kLGvBIkHB>bYh5{&gO$&8)N;4ME3;&$=y!wJWwTQ11m< zKE*(JH)e`rWtA~f)~+l!b%U1s7&-ns()XG>*TYbZh{{fbbD`gW4e66-9@2IlI?~2a zi-;kkxJPJ0izgy@f{UGV<)HACkhpME7GI7GcFL@Ox5vf+T~xqP7d?K|7`9|BaKRgz zlkqRi?fB{0#kuKy3+xnsDpwG=+ex>o0n?(*X5H^Yj38Amu|HM8UjPw>z<<>~sC<9U zyZd_`JZeU}-q!8A+4jpRhPIxctZX>^JY~0-;Rnt4h-#LVDZF0kvF6A@A5-6oD{~8a z>pA~CiXq`=3%nc44ys;r3w>>>+Q`kH5aMuh?4GhpXIns7l1|2+R#@RaifHor^|-Bg zvw!6u*&ZzzK&mz`o;m+ci$VFjWR0M4CvVjU1~V75l3o!jbA<$JKlfN`1N{<%D%r?7 zlliDg$vbwb@hqx}2w#$9xFAVC%iCQxKGvUGV|I$?!Pxf@zF*@nzq**VBt;o@4f+cZ z20DKzZnz{>4*X$6$@FM1W*&R6PU&_Abb8K84hiobJjDJQigrkHX&P6=3+lsCA+voX z@+c^FTT{BdsBIAds)I!O+#2AZU*y()EQq z&g7zA;(N2$@P6-9QQ5rG1%d!dj6bqSpM`n^yc)DePMz5CQyyfQN5p&oNlTH@rIvdD zC6qC_u1zP)N=#iZW+!j{nO0D+`t+|H^rr0!mO?)T=w@{VUJf1f?WZdE&m;A{7;NT) zX=3Z{Ze$MP4JZ=`QDe#K|vJIhdr3z+{Pi3{u! zu&VsguBp)^nCID_S%W7siK^Zay$TA91_ed}Us~n1+M3hIN}+QZt#K2&X-$@aiUibfn5i{~2YgO$;uG>i16R z{8O6v=|r9Vn=Rf(_7tGL1ZIS|PPF)vY78tJCDIgX*RAFMf}Pbe2-fw9YGU9ZR(;C` zkGn_TG|uNV?h|ZssWQ+G8{Tm>!G7Q1ipQmsO(7S}xg>t0bA_hNUQ;cgT?@c!ifu*V zpj-iFR?vJU%^+3UJB4CY5Z1PKC9ky>X);CaXs_Gm|!Ln3u=o zo906f#{z7`nkAbeyxfFj+7sMF301>+b#S#L(v?RU$DeXMI`v+J6hT4vrL;8cyuUrISby%i~z)396=WtcMv? z@MXE!ww^rsI`N&7TuZ3LDIk!sa7Q*Gh*q`=20%MzY$`}MmlpI~L0eNubfPk3)zL&4 ze+0c{w@Y)E(CUL&cyOr%F#gP>BVsNELK z*~vEFczlj>412wl!s#KH*#-HN7!^Sk-qOdLIC|WjzO2Ms2Z#$N-$1sTp*vjv4tZ9K z(@g`&qqClCq*{Wy&4!T9FD8$SmP*iqWHv1o>m*DAZeJUmDeH>=b|mZmHwKiOS%|p5C7R zE0<#jGG0z|^&VDQlFd(|_ETW~BFK`u0%229=@n1_r%*Qj6i}fdB;Ir4A?seYH@3s5 zu*KW)r`}WCfRCh!7TbyLXP#*7o`bobjBx>PvIODVawC88gT^F**^u$V97$Gc9aAh*Z%jX zwOCarwtnTyM^EtFJ2?{@!1HakNsLnvg&NDa=7eW1SHG-j&QuzBDc&kxY3N&8(U+PC zjykJ3F7t6un9wrz7Ja;_zO&Ww6!4-xle!|{wac|N*9ny0v;?!XxC90-4obLixAZOT zNt>^wi5~Gm*=Hf{C-D$@H|kSY4sSQ`^y5GtL#<7*Jy8V(Q6jB76!X5#7QwKNx;~b- z=efGO_>xcWeHgkxMF1RMX5+VnOw5XwJd=Hmn>))8v!C>-Ol-^!qE^9E?js%TNBY?= zy8TURLvwhKf-wVr+7|aaNEr%S49<$Fojd9X*?t#jZF?#4vXxkE>;3FV&P#d`w zqjtv?3LK%&hdpF-ePE?EW%$y+mpVm&uUo@Dsfk!S3jkZjIZQRGx>^+1n3z3itS2$G zAa=@{L1;y&kIQlVlCsvgSar#5z5_goCboc*hPLOhrr;7={$NI`r+XJ;wc7!oVLI6? z4BVz4O1qsAVY=P;M}DO}>Hi>|Ai|qch)YA&7=7MbyhXyp>!00?Z0|^#^~nQ7*C`;L zvyD}j8DttA9M%1O%N|F6lbr|}3fUi;mM4o2Lo|I0=WRCO?#aq3wHyPta@U8vtD}M;@*7*nC4{PC#Ma`kTQU^A3pF{TTs|agjKyT;FtRJISnOE`H>3Q;n@?$N4~|92 z0VgpK(Nf;cSUDG@s5AcATd$v>uYC5fgEC2S{mDm~WIp`boO-cdQCiz|l@zs=8O`-m z048_QyUpmh(;{TU*!!Dg1(p3s;0_VLgv!Nh$ua9JxfOibzGyf2wZ>KwhA`-q1ARQp zv(}b4`@@j1iWQ2dc!6<*zWj~Eki}3c&#~Ad!xk&flo&N0SGr(xgwbE{lYYbMq3ZVc z6yS`VGI&u5gt5t>^^nN<0O`!hSh?#q#d!l+Db&p z?a@H%>Zks9>%ZMq)9yS#zkow9^O^EnY`EDl5iDm@^p5a(Q+=fXM5Y=Sy`xDdXwR@3 zcC!a%+ALUp4xJUh3{VZDrxq$-h|B*`z*#wy64_(Bp;$}aeL%@V*QY_RPl&wcwyzJL zuS;qGYQrY>!VId8R77Lj>8!W8HNi&J zH8zqfj})<5OqIg{tIwR-4Jr#m2E{?VW8Yry(pbE;$hPxI>f1wqrC)_hJCf2~4Fk8< z^#f;nS6ZA%P%3UU?xcio&jXneWV*(X`14nbIQ97^n7t*;3u9&$p?vMmFD+P$?--4Y zD1bS)QAAhcfF1m=dC$h*M}~7@ z3o=8L(Td0(G&>KA#8#<7%dKCd75+tER?Y}xy%-{urQ4L~mVmigt7-QphWig0&wzl0 zOu(-}JSNmc^?b{$_58&&t8c8Sfx{PC?apdDLUvyAcT?C(PK|6JN7Dxf3%r2&oY(X| zesdHFa~hfw)omU@EV%n`tMqB`OhmV%VFM!vDy}`DEM}o#FY^}Qgenr_o|KIeq7NU( zbRu}yNg9}0#Jk?}({#J&zRg+qWYZZF>WsG-6iMXDrqp7@({46Ow6Ij%be3JN`wR$zocgzfS=!7d%F#Vd?sA!zdAVL4jzb~-d65@XDE_S+`cQZW|p?0-+ZUH1Ahxz2a-w{N# z=;*i`|Dx_+qSZn_-J9_Y*?>^;(2IlBaw}LnsGx>YQSL%Mo&(t-$L+pD zI#fCvBFAQFV*kGD(ytyAZ1DWoe^L|Jdc&cKLyxIN_M&N(QmUoFWO+UEO&)JI+w_5Gz9+JdNxiP8(Mb)CE!Y`tO^!zpT+>Z zIy18`v$7k0UE^vNtO{xoe$c~QVUS5C4K<{P zm1fe~@a;6YDykIpHwjf<&y&_lj?NjlXX&N(MCv`PZ{21ExW$<#ywX;?6Xx9=;P8#l zK?geWyfrjCBU>~O5NhEI89-NW+s5{A2 zp^}%*C8q24&7MBl(j|e2U>J_0jHrL*1cg$1uHzL2^%lw=6pZs@0TyrK@ zyEU>DKmxS?P{aNSWnQ^_b}kC&wpP(7h!bnvHom4UsBn+hSwHtgL#z+v^4-x5B=FEp z=m=`A?0Z(Ain7>gvS~9VuCO*)`Q7K75Eijg^D^Bphl-QH`Blv^Y05RthEbdDS}M4z z_tEecFISk@?jHTx|F+!35%VBoHKdrRax=Y&n*{gO`XpaXA6|vqzR?V#iOA#Xu}TJ^ z%WW#4#TFpHe^M0o+C#$r9(Tku(Ug$2hZVcwltc0%!slzYeWSceW{HBD-JYo=MHm%H zOlr^Jo}@nv+67%p;&{-S`n@$}?!~RWM&gsF@gWE6?TBXBVj8@9HIAx=s$fZ|=&YOx zF6u|c29*EK`L@Bz7da+~(jdyyZjphX=sY9)u#Yx38%S!oIHDl3sXikpCXt_!hW;@G zERj3rrt(0v#-Mi~%47c5_#cb2d+MgvB%BWxQYB#v-TLsK;;4^bm8@X)l^Psxrb%i0 zy*P|S4`M4!F{ZC&TkEJTg#LsgzAzVD-{z5H?u3M6^w=R|wN_h4C}yuEzw!04{oA9@ z^M<@Jb+LJ0@-n66ALOuNW*V?FOnNY4r*X^xNchq(h6TZTIcEvS7UUOuhdrILVwHP4 znZGG;@5i~9CQ3{>%5HGa9?sHE0ZQ9{T+eX3bAo50fLinqP2KT8Ao;r4xe#Bt#k(8)o6TH9t^ikdv-Q~@a`%&*ARaq9w{3!EWV8jh zz^Tz;4@Q_?i_70Xcr%%ocvbLHAPioiB`lFKht=^@4}lEs7Yec`v`mU&8%pG*#Naqt zoX7NhD!#tr@qHv``wBuQc0%(YkB6e+ujSQ1-rBGZG6GY znCG6WT5N^EgDM}c^#rm|iaCAn&t@MAAnys-tLMPtX5RBhi zt?d?8ImE9ODvHg#7xbLhtY4X*IyYHGbGx8da0EH&P}(1KQ(H@4v89m)Uy^K@of>FG zT&tzZxwltQQ9ba@~u;e>?~)A0WBB7nkW==sX_Uj^}L8 zT4!ed=Zb83FU|Lj$`+{POy3B9HO&O2PtvspW8mo`a!DHoy7u;(Bi&un?rQm`}Z=Lf?YHq zq?SWoP;zlp%TP;8t}Me3-28#k30R#!XX6ZiMuycwo7WyZOyOESdU9dadXDZdTRdj; z71QO5sZg|#v>TF@obK$lkr>|c*X5URdFX%tqL)sdpoVbLDzhb}gnB0ki{pqoDJgT_ z>vT$H`Vnn{t^^GUqOwn-Q8Kir)fDTKFM0n$3_i-bUFG^|J;rpZ}kPXPrP; ztJpY{zr9{PX2sNGL-j!&g7}GFsYlOZW}OCC{xd81ZvOW=rV$ukX{k-YT#jo(Z%J#* zO0(b955y$fx0awf#w%UvI&?*Zo@|nH{p@bxtoz<%W-W zwVLYPZ`{cYBJn8cFzy62xz!o=jxg^+v{ z*i{(PXzw1as%c=Tee&F9&zEBkf=c~f*lV4|cerWsNU6s6_l{MO*8Y+7)~98R837rwuL=Z;eQnbm;kr!|d_Sg!ey>J`yCcj|WM zYWRQ0dru~sUKBk{W`ePb&W+QZBSi400ECuy97UIjZamFyFGQU;SbK6^>8SGZw!*_O zwbX~B%vrDxB%|OPKkYqeO*~P!J5UR`U$>TOW^m0;f|YtA|0sR;L}pLyysQhe5mtPYCwoAY_Ab#@gCV`fDNgP25DTb9AO;S2IR$|2Wf{vStI;nrm1 zwP&J82$B+00g;w&Ci21v0i{cZ(%mp>6Ge~~5Rew>oCu?3^augz?ikHRi~-yD_IwMsmV0$`fBKu;l711 z9Kf&2NAH>4{0S^{a{YVFREA${QKI7Zf1kWgX5$E5CJD)GAhGPC+h2v(-rt#zQ&qD3 zV62`hw5UKMH)j0$ol3~w9}lPZ1Xq;54XPt1hy8$-9exkrkN+~)WZnTKi$x_o+!F&IEXhd}hc>g6cWU)~WW_U1;J0Q~K zbSFWF@LJft&VkemcE`|vt}N&+$UEcIgvIUG(ObT!;(3fjEriJbMtn} zD@w*WX3zXaq<^U3TI4jvC;Jb}8Kq$=&Su z19e0GSRjb?p6K2xTbL=&*=h{@z$uvRhsoC1q+nbKmL?#Ih@J%ATtc2!x_q?u`vGp! zZ1~iynnBKMC{X|%98kFfq*2hPX(+JJqDsirte^XRBd!#RN3@Evu3Hqb7G|-YSKbpU ziqGvoQtJrz$Ifh(37uR5rZ&|0nM@T>d=Yj-D44(+YStJZdg0zFZ&*7~QJMRjuHT)Z z`oYck$*-cLEwm?y3ZyIVvi+XxGD4v9+#Rn|{lvC1H_0glZ3(Ifw!Sd>-%%XjSf{oV z5CvhOUq4;;t~#$*%mc#9r4yhsx+0{IBJQ~_53{uWdg<8-_*2Ys<}3X$siR?H_TQ^+ zcS8{PdB0p~as($3TY(BykY2usr)}($q!uzYvbsiDT+t^iPaiO}y#2omV(~L|ssuW0 z_ThmE;bevOwlg!+q6_(NyjIi(dO)#?|Civ48y~V-tVdcN;^K)9idKuli7zIqwtl}A zXTK}7(U(4aWvL&4S23OQe$RV6Y&Us(R6Kh_;TK}fpz z&tyx97CV^Z>Fw;4VW0Bsp@thHbj?0=v`As{9d?L(hiiE;g3q}m*qD&;zVwGgqha{C zzfAAjGj1}#cm{s+nD#nsfPBjw1lW`cw9L6PG+Xql_bGs_j?*h-XQe*6Q$gt=wa_B` zaPIt7PI#%IlNR<8ARbH5x==JF55gWKp&@j_T;#d>xA;KIgOmSOuSLkZ!^XE3uLlQ! zBKJAB-Bb6<-x~O+Zc{8n6oX&lEOT+QE5g&lPn+vvv3I#E7F2dD$zj2FCNPH z)vg=fVA+HZ3LH*hkT^p9z}_rzsIekNzx`cU)^d?0G?AcW%bX&?IC*h7H z0gbw(zeyUShPG&Iifk(pQ~>J@RwX1A650Q^k}}CSTRuqf>3ktiyx@yL0I}>0NkS?~ zL16#joJ5rstzI+xriQPNFmyk-p8<|rS5R-4h+HMnhK;H)5tXCn!^T(<+j%lLdf>)? zVjbaIZ^GxYNTsIlt>m)*upwW32s>pbIiIMkYp`k-QxwXu>_80uw->D3u8BZ`;%c1P z<$MrQCv#Hpa~wplwdFk#9ln*Lc>yHfRatJosJP5bNnRAPQiAXZ*;A zqU2x?lC$C^sH;#W6kn8^{(3!Dx`A+7Dq-C6h*Tir_Jy=Y^F@4;#1lxOWjsW5G=+$0 zVc(94L#4ExHgH490gZ--GN5^x)6Kv@yOsum_!6tqv*3q>y%pM;_F8Hb@_31)3Wn5wDy+{9PKD%c&h2qgbFfF#M{m2Q3)ftMj)J4B^v$DDSr!tWv)JZi&uFp!Kw)ui?2e;Z z)YH8;8>`3GqmX!0fX}ra%|bEdcgz@pMW{C8fSrFh(K_*e$AsNRWKvoC-GIvzEjgqX zxcyMnC4h=}H}`Guf1}Gap#|@3zLXYt{m3kh6K}=TD<$s_)>!i}kF8ZZ?c~l~b(0X6 z^@T*Ridqa3*ieO zIA(A@jHQ?SX`(rJ^qM}Msh1B}hl24Tzw!2}?Oy`yP}-=aa$pVUgD-sQ zqEmZWNaey=uPIh<1KiLSd3QEObUx`*4-2siW*2OO(=Px2LzWSobde%l^(|wSC#?IP z-%UgBFwo6CTMPQM2}R(9EbfN+hUOx%pMHWGe+{W*&kO znr9nA!2dFI(%?`8RZtlEGfa*qaPlW?97Nf|Z1VJzFLv~`^B0@n|Bb!NSm%5GCh5q# z7sJtLGx>EIY9v6|x7Lbe(t49(#G(g7CHv?{)rN9JnP~>3XOGK=y2GM|mbK|2}Y+Z*JvC#38= zl@#5=(1AtZU9c@FiL5r-N)Nc;$SQAioo;*c+=S%{*pilzDsPT7xfj6VcBg}R;u{JOKM;D?AoTZ$^>+_M|Z!7IeOA>fbP_a{fHwnbfm z&5*z|ktN<3Yph>%iH>(e+&^%IqZ6EMIxEVF^0#m6SNqK%6g@=Gx8$+aHKmU@aN8x| z9u#HyR!eVmuTmt{;eqr5z#cf*_+|f*`nZwmOx}(3GjTF=^N|~5PpG`UM~sYG8+}Sx z_TqWl_;ZiLZy>!p)3L4LC7*Odet|4^{;Zbu<|dh*pgG%l378cq*xD&&4PN#B74Vtl zz4KP0?)6;fa5a|z64A9KR^8THNhnUhw>BCa^Ecvq)R=W^!Mu z!by@FdYH^cuwI7W+0hOua>S?9#b=H1F37Ht13+2sPFvRHCjHL7YXdj84Ts}tijcwC zFgX>5iwr}ybJrs;@N#+_Jf5;cpp?3PlN)_f#4;Kd@FekV)n;tY49HXF;$`e) zvE?4^STuvR6Mr@X&Bv+}&`pB7(Rl3MKyv1!i?Sn2Fq%VP;~H*-i@CSN)ddcXfz^Bs z_ArsiZBn~Hi5(9wz;C*gTQ?q26~6u< zwYn&ISVH>os)UYj|mixQ12WKW0UKc38xJ_YU{MU;ZSZgv3uVDAmXs z-O%F;Jj2KF%w|F@1&kGI{B7-;H-wiL)BPiA_PE+pTwROM?#}l_y&_w=CwskM!*rc7 zY_HF%4y(NGoconJUZ`{)f;XJPwBnnRk_cln?BtO?(s_hLLxAvZi0caKF4Vu9Y&u>c zc+ebk26Gsk!-ew(?NmlWRWr0c=5E!g2k;n+zHB76kO>GwW#Xa zI+MIa3H9!Az%e6suWnEF;of|y)GpSabTCl_nF*XvHbqL=4Lz#$Qat-f7iP20PyuXb*POsXu&sigZpieK~MEUZ*ESi5>xNMQN&vyZm>#mm9=?uFAJ z*<=O*CRy&JgQT;G6H-@pfjv+29z(*bg0~vWq1yt>Q*cKd^8l&1C@%M$jC2CdWRHIf zNYCT!pif9TBY(@&xgQ-vuMt+-r*r6rnS?Q8A)kq~&?84bxsaIO)Rq4p>4BHcV2`Uu zf+6|6*2O}9#`EVC+`K9v%yZ-sBk}n8?F{aB|1`phz2(y&$IszL_bPtH1_Gs%&K|yr zl>tw83HY&>YV>E-!7#Iy53ofML<)EAK<$c(7;mXllX@x#oN$zY{H@b)-VB!#WPH_nr2ncWopG-I+>OH~5<1+_jNcu(X0+t)%H`FZ`y6 zqp(|0)2Y%JwmT!A0M<4al6;J;eW}@<3DA97La1w9V8eBdNk1&e%37OPD%XBQ^_sK( zm?*G1e4(qF?HjIOe_dzMV&oFgq1CMeM?Q6jEWl5;4w)1%0z;LH>g+YH#76yaXUcd@jtRmp@@d&+4}pk--U|J*|fbV%Ua7 z9L-TYrb`95XVLQh641H)%^oNik<*@~=~KkW+9mN((w2FERX)c{#oyhXvYW%uz?B_e zsS2YdsLghvX5Va0cy5QQ@MY3weLs~vOd}PJRjyXZDAuV5jyYebGqHyFX1IgkF=Y0f zkt~PNtZyTJQ$E{$((CSThw8F77WU^?9q;E=j);#Li!bYjwLHLD{_>?3(M8rYw)J<1 z=;#KX@mvBNTdUwb?ztG@KDhpWIml-<-Fs#)i>|=~KImcw9>mJ_YC1~Q9x^y-@^uSM z?}wCBnwdc3HM6^qY$i^h>8bZFkDV~4E)7L200}S~SALeg;5OvPI+iPWkhugnne695 z2${is(8q)D_5x5%zh(idmKAJqTM_<{htey(c*NDE%^)#4DiCNz7;SHq?&M&tA(^p= zxXgu%YV;+_+2vuSKOTc30=-Q)u`2d%2hBg(sV32r5TxDw#3f)RBSTiO+6u9%t2-0Y z948rWoedA9J(LKNgN@D{R=SZ?X0=kMkL3N7YH?Q}!)b$c;^uubOx!=0F-3dR{mK^a za)d%&jy6Be>nPgV{x#FCWH6rz<4q@Q0B3?RpqZFy7Jw%Bq)6jJFJExyX?fq@K-Nn@ zssz8!IM`6tTPe@iX1Qm!&U*WRnfUA~{>MqGA0Spld>^`)((8rM>Imfiidxk99k;;L z=~1kD69X{rhG55bJ-8;=#uA>b6oQZnk@WlHY4N(Ki7$FZcV)Zzq?`8njJ_pC2Xbw> zS}%bI(hi(eE#KfZ9KtG|m}%NoN*Zi77` zg|e|c2|EMoMfl(49gOFF0GzKrLXq#( zl9@-yyo9C;xGr++X;inkOHy}brnC$NYIFpp)uZCr zfu3W=Ywo*uSH5BGyMngz6O8wm^vc}bJY;*$Js}Q6S;8<=JXQ)<)70~BLeM7R>s^ZP zrSrO&bK_6l$D~?%&+YR4Aa-7!hrRyVz}#!Kby%_wI?Z};U;c3X%u{+Vch!OG5|9wJ z>O_|mHx_;23SBEyLrGWNBZEkRL^%`FqM{Q5Fqi+$_R!epZ**Dxdx(eaz*E}L^Mg)ZPRE&+ii$Z46{eW4b3f^-(0$f6mi<&<=zP;YDvWQ$YeT7!03Hha$2q8e32=VexZ{0zQYpW* zdVpny7k+X+`Odw*x9J`-mE8|9UwjFm24;;-xHP#;v4wys7`Cn_5yKsY+IakF zvQ%}1PIEV>$i77{DL4IU7r^Y^T5KO?{nk!5awM#-9j<1MindyxHeOIB#J@wH+8R%d z*+yg>{(6EWf^69&>gf4vJgI^^WCwH$^5wcC70W$J=N@4G0~_JX-Zb*2ci#hVa4Oc9 zaIpg8mGuhhGM=_d_1wM5`CL`gr-Ux5=9j=pmrSS5f3j0DXVnvV2?hz>vL!j1^+@-H z0Ecq%uYrcq@w5X>DRtEAy=$Z46jJ5crmaz+a-*@652q8)c3dqVor9toS|<2lp5B0ISrGOLpk`HTbP@*QsPg& zygV4sBuuN4F>tY`yW>>g00n&SNg1uR7zBw*2|hW~O!~;L^@ne_aGLvTdCvThldSne zTk-E3x#KqHejE7>HHlNjU#+T^;&MJ~2jmS{amnY|ek0aPDwO*R+{PS8SCw$FScUKh z91BF7G;hSdQk1@tpl7zFKR}Vj5R_*rW^yfE*6e*F*Q%R_Qd;3)nk;9Q(|T=$udjgW zL+A9|C#^(-bKRo$6^97IR-2!?lQn{cmM!zRql_Q1;3Br%S*s0=7@Oi-QLDx+u-9 zXUU(d=;%61lJ_46+h1GE*2JGauSR2qhr>1TcBF8dntx;osL|oBTishd9xI*U4jY@5 zKh9)Ijv|prnDoN7(Q|RrM<#1utzyp8uwx3wO;jEh;!d;r$njEEn0p?X ze2qi#oVFX~-}0Q?2cbR@`8c#ZJ0PNwhV17~k$o5W>Wc>r{$0t2p^Z;u26}CkyM~BxJ#7_L7p$(sv{l!_tAB z5K5=f&GVFM*J8(i$PUS+kl(@@Toee-tN(s$88M|DeAiyGFtXHS#&ix|saMcT)P7Is z$3OTVhdDno>Zu5IX7@aE+ETDBAoNT0;nxG+82fy=;XaTvQo4+EHy!mD> zOxTxyg@jOt46i^4T=dXXaAKE&sx_5cGo9<===DOv|F#_4RuSF=kP3LeJWevI^~Bpp zs>i0*TLlK)*A5`;OZFA%PPaosH?8VLBntGiH9|HKSCGo#P`fj5YY_%BsD6jG^~%oK zS5x(KAJH?Y$3Ru;M)zXt z@7ft`_5D%xLCz6`Dy<<)2O~%#Pl!7c!p%&mx0znC+LSrn+3c-?OQ%>OE#p)$H6d{E zzJjl9QQ4lDI)x%R`DFY!e^Cp_t7crBa4~ryL3AS}@{qEdDbMS|T&>2+k4$s9bN2C~)_%$Q1Ffp4aHqV$S8iN6F>H>ct27wG$G6=f^8*5w)w@y?uH}8%~ zmd|sM(nU}d1_Aq;GpRMbe~vxwcl$H=H`tys`xpUly|{s|#fgLxZLiNcoC`Wv%zlAQ z79)r?R4?9iEAI_)ctY}lRcb$GB3iS!iBlJH{3YAZ^APK2?@@|Yq@?CI&KHuo}Y(`Zq$u5Z+}NxB1e#E`)}GW z1m%odB6HLndsDj&>}#D(>D~sOl5W{d)3N6~??GeCChjNtQzKFOnegPgI^~^-gjG8Z zB@6osa}7~+Uywc8o+rXFAO`C!7x6}pv?&^n+{yf z{n=`qY=|`o?%x8ZwkQRjPo#XdwV4?h(P;81H4@W#iPVSB(<4s5?eUJ3w(<-2yER|< z7wd1p@#zIug3wdNG$S(v@6OZUW}SE2p6&vucR0mk3lnX9F99}wMIFvUV{YA2bm$Jw zANqU8z1*K`iL+{fSqRlz9)s9qvbicJw81TYKxDe9EU30 zE=}J9qW50hXM2})6x@;Btaq!IMd)mNz^rZ8o%N+`OlB_HUGt+lF@dN#AHZO8CtdMZ zV$p_K7!!18G99U)eG{VKifq|Zu>1bWwRS)B5EZNY?Eale2aG=lwL0rJS4eWuXm)RI zB=@sf^W338Bz5NKe*6hkAD<_jtOaJ*WNX%LaMh{k)Pw7iocUrS?AXVSrZNPebz;33;oZ2gYp*&R zW(QQcZ)vzx${o!ViU+tS?Zkw>wwN#f+vIPp^u0^#7o)o{>}`Gb>PJ zr{DeL9*iQjan__?52#|Eeam3Af_ zqwam&&A;*GLh>pk&1{r3*%_@S>I9TMG!JVuI)ic@1o|U>DtMn?$l1*^Z2et1~+ zY^<rF*DI%%xJv4H^JYdUnPUjE zN~WQofX!a$Z2B!HH)rr^S$W+};($e4=*<00z(pmI@8y<~>hQyf^t0(RZ3Z8~{YO>kvlE2I6^(Homlhi5qO}^7{x9EyC%{p zLeTL&*iC7=pf4HYKGNXwe}!SeaO2B!B2fSsH}nGUHWD1N0%X`WL(jNV=RXWtpB<18 zXq!KJ5IPv-!^>`m(j|Ixz1P;$ith@p z4!M#5AR)PEO2zsTK$+BW`YtxG^;3+pr?L#IA~BkzOA zfdy&&5}+`N2L1+j4TUcPQ4V_)um2J0{Fi~OW?QV%aok zsTlH5xaBsiS9<0%a;^61;h}&UU1mUT_2HWL;BC(-V>Ctq^r3qwhf(`2-hRxMWmo%F zzoxEoD(JR?bp8Uet0>NA7MOF*OjY6Bx8y*H!{K4kz8xX7NbtAF-(IoXpajHF{M0NM z7qN$2(bm$%&R3M8i`uK-S}dry-|5|~=kWd%b$WpyJQeBsB0Qm5kNsN}w_uYIv1K8) zq!5*vwC;cCa-7%2nm^gu;-}c|KEo$xhyyjoJ|(;Z{u8$^v|Evu;3{B_G8e^Ll803$gf`iG{hEz)EcCUtLP@jR z_*9nD-dV3VZ5RzF{q;1R;BQ1~u!GU=p=P>!YAr$&d}4AQj6P|8wwtL1Mc*-2ZC-Cvd5AKdTk>GM4tZ58HL6~ zUnRv57Z}@Bto;wZl-a^YkjIT&XkcR(r;jfILOgMIGrXUIA0@(pMHq;D?*;dESgm_a ziwvNJ8io!2j}+Sc0H?pYN_>H%T-eqpW$f-0DWEnR$Y++A8!Q#Pq(~*Ek0_k#=1yo0 zJg<1?m~rzBdOVE5tO0E=C@qEt{z5uj>qL_`5@Zl=cB zla%X}?(zlP)6-=Uddx42M>J&MSqQJJY~i=Ig3>fo?ihxHUk3pLBk(&5fNb1bS7%I;j; zzurlqou}Aj@bF+aq#&L`JKto7Q@~l(Xxhd%jXac;Nla_&hedbyyh*wH7R4lE^J?PBYF za>T#&rc+Z|S65$dq@&x&bMoK0w<_tAgfneu;Lt~xRdUCt&cXO%1#pm5yJj4G0TeHb zpu$lQ*^aK*#H7je2ac)gW+oH$!(Y6pWnvlsD4B+Xpo@1%t2o(Qw__V?k73>l-)KoB zMZlNxU^hwiYSk1GJgA7*BYtT@`&QF`*z!JQdO?fKX(OXB?)x^Q=heX_Kz^dlmBs`& zOLNAgDlt!|O{H-Ul#&N5AB_t?O70zQ@$0ve zX8g=WE*(kQnlvkt-L ztP|2lC*e!!uH_wT1Mc>Uh?|J?R$L6=N>X+vuX2BzsuGA0jSnJ-7cLUsx(pVTI(eGj zkP$+fb1&WKU1i5X1VDS20Nj&qNwx8EqgSg>7C$Qzp4R2P z!v|zO3-Btn=C=GrS*}bi-I+tml#(SFM}Mc6qF5<;yMFI)z}-H*VHOZpOP4iRA6L{4 zVQ^4l#)c;$ps@Bsfis(Wl=%Z|59Qa}opHGyArVe_7cYbLet$wwCP2%UksEd88cJ@J z?{F%ObFvDnfHllmX11#1)qAc%5Z)?@He*2_gSC9~w&ZGDg$u2znD52-v&GAxb)0u9 zAmlqo*52<2+*cwih2I+`Xw5zoe8F1@RXT~|Wu+8)8ka7^I^G0E!|%iGv%J*^*3w^| z668bNb2CKh`foPwyz0Jn7X3B<`HeZB-Yp1-Je*T|yWm1OSOg3C=mV#5SfIb^xsM|T zzvE^%8qzX}e-C}%dx(z;C3<%&&5`nyB%uCyFM>d+!@~1PVWhyt0Mm|E&4}wL#?-`x zo_SDo&~wNelI#~)__HB#WJdbG_iv(XlN4nui)$vuroX?;&~wr<2$J5_x)6eX!ha(a zw{W;>?tq6`&gxDpcYn1utR4EL9DK4spdr)U=nhDYQq}UFNT;z}c(i*lPp0weEerY| zb?-iCu&#zqG}2BTw4>kfH2+;xq_2SGc>acN6H=MLd+xFBrwYh#7L$ibhN@b zkU$D> z6!P#}=b1gC{g!!19iX|{7*_iL%rVmYkgDg$5n-|rHoka0*!4n$@LPm>NBZ9!_=!+^ zuUlU~*YlegRt#_MMsw#-nX2{E$LbS0HeYGeT9AK0VV+a|ANSn^6;#{>A80UaFLGDa zPN;O>0mUC7w(IcxRpcR3k`kvH*;<42$>C7EcEiu%TNUqEqV6iBFXE$NPN!5^huGhI zw!OXnfT ziJT>EBiX#fyEnpFSGj=X#=|V9<-bK#v#DI65G|tizhwxeB~9q0;P{ap>V|3AuMV}q zgsJ07IZr2z01n3TrRl-#z+)USH0OFNv4Eqn$%J@^Zxp!dfz_V_7u+XG~bICTa5}_d;TSq z2eb7(fKx;k+;LtQOi2B)SU$k9mLx%G+HhmbQg;PTx4pne81O74?^PTVeucmGqX$Lb zSST~Rj`TPU0Huf)T_zmaQnk*?hnzzDM@oO!1>p?U=tSvW6#@9x*$U-oXhSoMOvBw*Fp zIlN=BW-xk1dYUtrvaj>W0R>G+#MxEyt-$FiO3i5O3n#xbIP%{=dvTDXd4^bt3;nT~ z&Gh|uxv>#$-&o~W$zDv*N&_$wNVkt@xj9{%r?9B-p2sAP^>@(uMx~_w%M_0N_@5Db z0Y94;aU?diff~`IqUE^klPMFTPWY*gR?j|{gZYPT<(~8N$yT#q&c{ib>hC_b`BgGz z(+|{P5B8mBE&;YfOcj@a&`Ke@gxKyJQ4K@#O4V_}--XV4bMHAx&`i?HQTOIFk;ilO zy+TObi}ww@ZXqE% z#aQ4T?YmWGlU>YFVY0>>R&J4on^dr$E#d@w=MoE|GLGTbbcaWopS3j~g*ylBrt`LY zgb{A*JXjEquRV>tufO)=ETk7WQ7Ps+m8L2bZ&8a=NP0exQ7iZSC>I1zP{y&n?L9o} zpA`(u(Zu{{aW2p+?{MhRgOa+zhP)&@8@H!mtnsEOJhIH*VcP+rMN7o zJxa(Ajpbj|HslSgo#OKT8ANp658E#YU|k#TYsdU2$)qZ8_ddjXP;slQtgMpF+dA{O z(gPY9y?U>Pv;;OYMTQ^_&m4)|@mpJZR9g_^ufXK24A$A0&^Jm&+~v9E>z3x!Lw~&O z%{n216?KZ&cFsoa#`53gi2Hw+iZ?4x>oenEgGO3iV_^zDb;A_$=cnfv$8%TIla?qX zqb5avm-he70{9673O0_N}oliB3bg zu6(giJx!Ebx}w{XU8fyF;j@Z+{0H)PsY%XJ@5@J|q{=*+L&l4`q*FVj`;)nSi5FzX zpM@D*GvXzw7Ku>9z4asq3J;^D9C!F=lu582e!uuA(^}AkMo}QCwoyu&zc09cYAJM* zf_)Xs=;z!I5o!)IN+7IRGr|Ta#HHPup$S^G&!$s>;&tpnMyi--Mq%hYFunO2(ekW( z7COS@$a3I9oL1Bp!*SIon}@&qcz08=fBXwDm>|+3GQ}ZS(c4rHRiZx2W7ZsB?yT8^aXID{rh~31B-Uj#QK5;6R z42#QcqCi?uB#-;DExP~ATRX+nR#m8b|32pHvo#fb%+6!n*gppPSM$&V!ts_d7p{DE zN(c@6PBv_x(-7zVj(9{V)*wqAe{?bQd1qGWc?!9jU;5-%I6yzvEOJ@I$d9fu*VucCbh1|DpZSX+ zDm_9}C7?$`^^1QdZ(=AyE#5EaFdAnQ21N(VYr?hahZ{(vUdDxd7xEM}F8e~w)?B>( z;#lz`QOro01yQ9@ZMNmVxodr&Mp3erFAvGi@;M2$XVIAniv>D$Uf=0X-GyJK*lx-X z?;g|m`5dhF7be-KDQ)bsosademgOg);1WUd50WefnhW)0Rv*!z;{y{{-p(J@eE>^% z{n)VArs#D3n17ZiHRnOCxgb%GiWlH=+h@s!7kGZn3n+bqPn^EF>TrHx6h`;^TCH|| z{PNzG{&zEpkRzK>2 zxQBn7m-eF-GZ$>CYFsGbfe}l8660^1o+a$Jhu@5M+85O9c)A}GIC=eNWqzRLXzs`h z=*4^)Mwh_PKsQhB3p`Zszv!7)=4F*<~ zRYr)A)g47myjFn6&sjem=3Mk-X4DqQ3KD6C>D1PGP0;5kcWW&7a(cSk@Ru^|wjp~q zlxtB5xxDybm$u_zCdpuw+oflcoOwk{Av;4WX7ptdB}{%clF9tP5*6Y4 zlL~w;7`JLDI`k62d68TiilYs;=5;Fwd9?kaPL^!AQBoQZo&3Hu@WG^{+r65E;NQcw z%kkgVt075fT8?!4dD6SO5ZY$=QVN`kD1_rho3%9fx}ASByXm|J7JK(*R^clg zB~RC00+=rWj*u@ow8G6GS7*m%HqV>howx1g<3wkH5hKmc+w_3x}($A3YrB zUum!vqCW%L1~Y(gx{c>bv~?_%hXc?3F3ydwVU@jq_I^5g)=S($efiZbn(1vhAmo@g zP=-rq@{DBmIQO2(51@>bJ7t(v4r}ehWg7Hy-r*fRtdL_pd7SWY3&1+Rcs-BqL!UgJ z0n>--^BiL2B-Xk8(dK>EIYSHwQVjlFyB2FJ;k&w~ueed)4K;;D)%10-)QHmdZZ z5uR_m+&jb)(_A5?GkYRm59)usrkl?|Fv19(aTa=RLRaOyICSAp}<3U^VF3o zK8S7LL!T7-V8_htS+vQpZMCC9$v0Lm%(Zw6qla?2XC7b=M-{7D8V1~e_a+fii+fI4 zNdh=bJET@5u7#cWV!Rogw|!^|asGl^$cGCW-|3(#&x;8%{u5fn+K~?a6pO*fi7Gac z@19+Npw*p=9PV5rKC}I0+7Gvu>z^n;bdu(7dij0;xS8P+w;Hx0e~5k3UF1N>T0#<}*=g+eZJiW`>Vy6>uU@?UD-Uz0`IsHC3lIZOo-VgtyP(;TM zE%lDxju+vGE0cRrB;b?|`ZjdmvC>y#`fC}pECoS3Fn$-r5gW0`w(MP^UNwb0b{5ZB z*6VnhOUT0R?2;wN8JG-@=E7$CVzQA;30QxNTCJddDEQ!x=!$alIXjK>`Jkrcv%^2a z@$LGa{@@dR?7>x8b({>lu2wfDYRT@k=kIu*dZF6kK-i~|mUkoYrEEAA3`jJ=)x}9> zn4IhYYa}LqzUICY6;`E0geBt^i4XK!QS@XWQS>)Xq?1~|D;@N~z0gE;?(laT3)i}p z4pav4KX(_hhsEz`;fz~z7)%}fN4KSf@Lzs5B%f-?I1JuZB>nje)r;k{Rg;IT1sd4O z@)`ww2i;N#T3U=-tged{CUTay0C9ft&p(c*e$N)_nX>ddUJANlio)v3$5%o5T>c9R z{&ETkA+(*Y9!oBRu;6J7_MpA2LdwpEJcJr^@gUNLwh}$l@$OUR`j>#ntbs~OQkJPQ zhdIU#iFwb%$o;dzZg@{Gy4wA>QgIzm{=uhz6J233#jsPIJLO**Qr+t-oXumSDEiSH zffH!H5T3)yjhW}-QO^AvJx#g|=)ibuH!^-7DK=YbypMuqjHMhw0p$X z)UyX)>XP%+IP+Ly;%gYo){gcEoaGD^!>vw#1dMnLj z(qC}7aSw_gm!-$-`aWArsAGIx-fHc~|7?YiIcY-_?K)N1as8Xi>e0~12d0e;=jdA3 zT|*tfkWr;5Lbbl}rCA_V|jWcXcnpW}3EsCM}5&$VKl?&;N zFA@aVy9+fKzxy{{Ty$6{SUKCs@n>7*=`u23P|gZpy7>eQ5!ap_&fC+-U(~ktE8BqW zzY3@Baf+Sw&Xii6NY2Uu@t+KOj)bO4+%~mySkM*t%cBx#^tRJjsUxKY&tF_3t2%2Ch5CNb&r25Ia6OL>(Q{>TiiJ* z?0P6{#vW{9HS(4@LU!?}d;~pFndY6~T23iH} z9?%nhcB{EoaLbFytVwyE(GH^A|LrRuBQX7B>Q&r$ODb;X^~joQ5=1TO2WDdyJ^Epu zBydhy?TW9;F=Sj@;+_zoqagMoGT#jAEewiG9&!JS5}0^S`RwNh$^o43%rq3XZG2I} z`n0AjhmgUWx->h~)JK=}&sd4yqQ-`pRv;OW50?gF&9wC|^zoaM+!n4(zgBPDAjCQM z{_ktCSrNBsE`h7dSdKHJeEZHw+ry`v;F*Hz*p798M^ND8|CSmXj)Q98u0yQi zqP}tJs}_FOC^#2Mft{Ctk2VBQ2k1V?^%6iaMJQE$%fqRaltlh*pf?;B5!-4LXxHGC z<9$PmC~!!nr&l6y3UY1%26I$TDA4`XSV^ z(lHejB}Ezr!y*NwOBqUoFggcQkd6rmC^eOm95qG{q;qtR9Ni-ajPc|5-~H=8=bX8oyTOE`P z(!8k-Q9S5u{wF*~Ji9^B+K9{9Ag+`AhA1@bL=Jz>LFmDh>K3?s^l9nTD^*KeHCrKs zB$89k5OyZ*V>qLsU%T%)j#uIR!1W+4_>h_za>N6k#O~^8Ptu&Z14T5ugyl0V)^|9gI=YO0$s&+^Zv?If!D|R>? zz!Q~zWYES9Ctr-Q+^{0Wr}kRd(!D27*JuDaocvjlZxwsTq)Yb~%2d3qaFzn9eTv2r)2cw(%1tjWTby_O;nG zy;nR=7nLSxb%a_CR;gwkecJI9)IulTv}k)e>JupzsTbNa#c0w+jI)+XK5-xBL4(5J z+6x<+O!N~%)CBe3^4O|ky`q~-C$35O*?EKUrM_*~euId2g(mG|(F@hs@Y%Z{`CWLU zX>KIUEKeny1Xuam?JDnSIiZrr_vH(IAv=1gE-@=2vL-)QWYa7E%5c2n9Fio!NM-^4 zn=J=_MQh(A@#}`YC!&W%p$~ibJsVQ%Rr$S@6EXmO@~1{PI2uA`ftsKH0zn@|&0ijv zuZ~SmpR_1zCbJS`=y?$}jK|MU$5v*y5*NZqUkG+P_c1|Wk!gdFYW!1qB%D~><)b|4 zCbRyr+N_koBSGvPi>BI*kOSk{dOu0i!!MmS|kjNs^=}A~mW#uY^%=*ZQ*gWd% zX+|BW6=OFKS+I;Y+8iTuy3YB6#OAR;(2q+lx%!S_?zYN)p)2FdKcOpY*cQhNz~)Y< z`GYFxiEU2bG<;lg4^CzRbYM$OJMK^vC2QLi3B0)kh&C*sfzn61LNE&+Rp3~v$Bv+3 zhZlgWABO@v&lv5TYAK4MJM2nqjknA8PmH28&jt@5d7HzKT6658J7m|iJH}>X9@w1D zucVxyKLXRCuhT)zBs?ZF=J6h)zE2&!CRYAlsI8aVf4h4gvy8mm>k{v9U!6hjKR86& z^wgF@n{GE578J;4Qe0T`AAVyKqGuy`#H@b-FiDHP#mIGt3WheY!C3vb95fvXtkGzC z?Rx=5cRMh)!~028vxh|`KFQbkqFs#xJy`-YFURdSSf@6Ro8n(kOenz7B~1pV6i3iS z2wDBSD|nr!apeLq0&)2NmL`9I&Oye9+Bve@ySa-JZf92G{%g1-ydY}Q#~XnU$#1IB zBO;RiY%RCU@OW66YDnzO4IEFs;5wWn6hJV6H-YLrGZIv|)bF}YrBR*ej}}hq+Whcy zOigNEGWtq+O0qFTk6ZvM3pXWSySjX?2@N?Xt_^XY92OUtlaTX}aKEoLq16TUa;=+7 zFYz;FwW><(vi!L#5Z%BY$gYxhh`9(!aDLjdl_NJ?1RZ1EC0HAZPPdGFw#w;{r|a@e z7Nra&N$1W%zFC^#Se^QwJEB1p8o}H%gHLPNdaeRtqnZ@RBOeU;cFs!k@dW@Kj@~8M zN71Z3>wY$6dDYn*4!R6egF@7ymjF zSMwD)k6YoV!hbn28tmpz%$&~aJRfpnM7wO#+XC z$2gnigqP7aV|%U8t3dH9b!lJL;^6|Mvju1n==r6JO*%2Qawr@n6xkCjP5Y$$_Ed7g zx#++_*p;%HYEoyuxln?T*I0sdmk&Mm0#GQpA4Z|I&yTS@>K)E8>^zfjP?o*wcb0Lu zYW*WZMwzj6$@0nG@b^009g^*tl~3+GI8=1ggBd;K>>N7p3z%|gmf*I!i{Bx|W{Vf5-6@iXx#T;kN9Mbz)}60lraGMkdPRj78_iOsoUf~@ z%=|63+jmNj%w@SKsh5TI-n5+uhCr^us2A7{NC)rzTa$&hob071w?^?!%{N)c?#d9Y7Jqu9-Pj+Qa$L1nihd3IyQ=Nb5s`-CS#nZ;+bLgvf%IX(zKqp{o#g$Y2c(vCej6tmqquh+J{~$uvEFer`1zs#6O3TsyFh!g|>f-H&W{lhS#8V=OJ=SlXT` zwVyCAEvGY01(UYD?=+&iVuSaK{mqB?9w=+i^Q1eXlDY@;W+oN`X5rbeb9K#(R=FgQ z?ZQ!nXE9lJOlS+%S{FYZ{~&Xj?)hS%C!q$udA7g?7*s!;Huc&rE z&dr>+mTHW7v1as(Ld=xVI`PCZ4g=-ISVD5;j6$T8qR96wR=z0|09%0NkWd&T;HY5w z!OVgy*{6}5r$HsTD}Va4@HMz1&=IxiSO~MIM34R+G+mb2E3M_C%J6>NzJHY8aR0JP zeB79MoZN>Q6uDOy4I9k7D!c*7_Y?ghvBO}j;%M*4b*uH*K;^$8_{SDj%#gxkO4ssn zs(m7tTWkanks*G019wLt?E&e~$!#RvGSR>~Lvu3>!wu#^clu!GxUrE7`acaGA+A}y z3FeXaAKOGA8W`8$w-1y{hJV`^A>%XCfTnv<7XT7J>MK9=#4jrLsb3&E=1oHucV=FN z>$mvYesV5kB5-EzN`R}kH%Hoogl{TUIQ7W}67Pq?)s0-dNxA74w9nZuZ|;3aPW)v@ z1l2vzb5xVvl-)Y$l>(CZ;a|t%ghzWU=5gA6x$BL9wf3ztbGoN1Zzf6_(p@+g3fIC};Pn+X&54iM?;Ja^}6uv-7YUq%y zXvFRx8NZ0l3jiST^+RWC5|XvqW3;O)yW_*LdzxiQ!COsU^?cLU^v5o_$mXJe@C(4M zM*TAr1MEEC$aT34My>R!A_Z2;&D5;5-*wY|lsRe5F6qZd3Ksy5p(NBExN&7E@=T>I zMkojbC2YrEzcekyic-^FiS<%JmbkC}k$Y;Jf?MU6<6P?Zz5sM6uO$OLF2jfJvaDc` z!hEmkBoT#r$OL*n)h~#&=oX)*t&jA-eg}$Yq*V0FB>Hut}HQUHjemf?D9|QRkklV&4%t& z1gLCc49m@Wf%4Yx#GvZK{ffZ#8R7H~LltLH-Jvoq_VJmsgV~G*1FKS4&q@$^Grrig&<*=EKm7g^YXIG!BW6O}yK?qVJ z-d6VB(`jRK3DSKONnpxz8|mtV>%y^HHy)#g%IBkeitBo#uxT8b1T5|N28FFUXm5~x z_;=e9HIx}jt1E|36mVM&)WAO%(yctt@6uA*7Mm=y`PwedqJxpIcT;%nPrb#o+Zo8? zGrA|QQ*%9`=QY^#%BEuCqI(O)(dk;UZ{w!y1%Sr2VRP|s;igVqtVFyTF9rC?c^i%! zEMHW`K-qQT+r3Ffuj%WYsGMbOuDM(f#HQQK*st+*l!V|jWq5P^k-HmauN^+{f*79! z?&#h;HSn*rdvWr?waQjOYzCb*_{d1#`fR#sl@U%sKedbD9_xAO-N_xcF;f}w^PA27 z3koRmDgwK-?T#=VMrs(#mlyj8OiT*g9h!Jf6O}>sl>Eg$=GNhq@p9iu*Uz;-B|+=^ zyFc60HTqXGeso-N(3p{PMYf%luFp3op?X%yhZ*U&l?%o!3~1W_p7vjV*z<-i#45R) zDWQ9Xe`w95BYH4kbUOA5FzmmY7iOTVL6L+PP~cM;x-!YRk^A45{wfDh5k@ zZmshnMEL#pSO0TBe%nvSWn(G4)OMrA9dfCuQ3H?mjKGg+K2EOE&bR)t(*iTdocveB zOz~}kz*Obga=HJF_LMPqAvftAHaK-IL7S!dO<7!`x0CK1Q~ZeV=IyoQPgucFDj|X^ z6?SMcE2YhLs3oowh}$dMdWbla#hDsXF+-PX-)!kLuFFv>R=$-b+U?zFyX%fHugJ4} zpfynFli=0()fJgrZ`Tm<>|ep&HlF!2JFX+j54ZDj?|wsf1hjkU z{ulP8-Qi!7wsiOVZlvX~elJTloiSxVua*}efXY^ZAFbYhH~nadTj{DLTK^**`dWf{ zM`TB)H{jA@qlc4gK2CHlZ3WhGZOi_xC~*9%=Qg9l7quVatk$lTfnC&3`96kp{2rtk%H;=EZB>z{Z;vLU!JDYgrXp9WE*wid$ z<^A=7+)nzz{6Cl;jsNPgjH5YbQCT{DRXgQ{rbl-^+31PvBxx|GtS| zDksfYgk_R+>}#e_pa^4EfUl(a6}H<`TWY+kzpMDk$Q6}u?C}sycU%613gurrLg2(l z84N8acf6oZWZF$3`XP2{UjnF%q>Zy^1u z=UZC4@0!2?1sYqqtE;}iu(2&Yd+4Pel%`RH-2c` zW*n{Ax#Q#Kh@j7(P-yX{2WeDuaB4WR_<- zbF=U`f8ho7yF=jOSh{)U2=8EXv%LbsgQQ`9q?dKjK`nI zJcA8Vq^Khp>F0UkUX$0i%piEC+ydoI^qx~VBcK|&Db_rPISCro<>Yz&^8(TfZ(NNy>chEEH!@Fd1y}x02kBRaDZdIVH zv%d0pZ75q&sqv6dq)bR6EKAa5$tfAbX43OozboO+`;7-~Z&8HDf0KZs-EF>E;*a2W z%qH=Z#S`VQ7UdUdR6GCwp+#;t;l@_dY!9ZUw`E3Yigj8scWS1h-=zTUKI}S}?keH6 zR-^pNy!OZ3+hPv(%+|_c(eFiV9*5H+tHiji4MPcGLt*zfvD@5TWptmLsrL#mfkwT7 zuVh#vM(%L)@X_Zuf%f>HYr*}4WZ3}`koY{U8RuHc!m?OcVk6y(f+ns1wTf!AxUZ16 zl@qtp-`2gtAJL`UE&}$y_JMBXb~fJ8KT5p!J}}oBoZeYCtRhOrWW7BZYNtyUU25Tz znVAVHRIARSG@vz1gSG3QN)Eep@@f7sv#`A5^RAc0j#o^6q^-FIU{lp%cH+<==nXt-5lT4L`vOs)FCy zHbcU6Np}`hB6dXGc&ieL8H!Y3rH)>aBOH!a;uJ zE!URn#uN@Pxm+>StM=1-0sFNQ=`M;KBKhQ~#Q!#1T9G--7w5S#6&<{j@*t`=0pzst zWliZtJ3s_)gLJ5R_!H3;;1_v|)-6NjtkD(ehjL@z%z7cd7ti3(Qe4*2vKSqxKRq7N z@OJ8ZKlO4LnYCs>1a5Pj;OP6UCl}8}0G>m$0|m!P|LvPr?tlN2$(?T!*5eMT!|s~& zig3R?@*24x|1cr&##N7dEBt$?mNN~`38$mUmNJz)X;v-_jAK5bulz0^2+=rIQwIhP#S?R8Kw-|guHdrKj{G0<>EBI|fU~=kBo9ul~ zMQeWE-NFvZ#2S2Qr&sk=X4)#lkhI$-fJ6JDP|f+dZo?5CX`d{b6dT}Y=RKentw!TrKoZu{0;TQ!Hf zkZmVxpO&d-X@i*xt>AKSAPDH04bvxbS+qZ!auB~h?q0G3@*jbOesh=+BF3g>zYIy) z)(?_)(VA{yK+c;XnTu03Nu3L|Hg?ga>&e&tapm>IAez})^@c#tMUdXiEy7FMHyL6X zXqY;9R~=9H8LCTm4I+dLKNZiHOzyAwKMyhSYk<6RAf<=G3Jsma#BLgbg^k*z zzfegjs_D6109Fm~f$gW7D_<4)&FzoB+$Ok-1E!T^Hdf);nhV`_Fa;u2tD=UAxOM>4 z?Jqc{v59IU+NKTjv)xwS|-Xluxf2x{} z-d;3pjX|YoSb0*j6*_t~L5_S|oz_sLr{~+#1$6|`w!7_>@v6)nCy041=*<1g7V$Yd z#{1d@Kqmi+l(TkH)|reajauWu?;GawLvb#4SN<@c%M`+y*EljVa|PD?g2uIC*=p}u zbmJ{&FjCMjIz~ zaPIi44y*B)FWy&IrvJ8v7jx%&!^2U@B0o)WjiIT{y+%`oHzjtK@a?!UNi#>6Skx=` zBj6o$jA*-;oaS=%{Kn5ei63gpAk))QJ`B}hEwNs|*5Pg_r?|+H&bSec;&pq!w)&in zl&o8t3xf36wYVHwr!`zI|9eK6F>0J>V1wq zc~~eswAOE-hBH&ht8n0N+<=+^m$O1apA9K@p+#z* z%=A~;S)_;l0iIXLeo~oz?evT$*JZr{hB(= z-0W;l?;EX1(?G)`?x8$T<%so^zr*AG+vw4Cj=(>>m5Ww9A8wkE%vW=5&WEFB`#t!}q8bTCx{s?OCG`VF3;-cH$U_~g$s(nE&q>XMG9+luJ*fsRrh#d<-R&Q9}D0aqO_twnEVJ+O$1yFNM1o$}f|5!MNw+1Ps9 z>&)a=?jDCT<@@>27wiT8ml1~$da9SSvZ4CdDw)f&_{q}GV>qL;y#5#F$(2xNf1}vI zu^CPX6ZtAJr1qB4nUskVRa$-$u*jdUpj5+l$M2|EegXRx7Y<|2H!D5wU8<|Ef3QNp?WEqZ-e1uqrx0HSzUZniTs5tTpU|6p~@NQHv`j-J36&@8AGW2%)r*%Vs zIeZbge-0XTG{neQ3q}X2t{`?%*}0~7NZdH;#CGL?-pl4EQWXbwC@|r5suhlaG5AF@ z<{q}fRViH6XXas!{Ko|91JqJ8<)%2H7IiIfoWi*GK8bT}vTyE6dY6iJ4`UbhuV@$s zXulg0Wecu>ESXz#wm-{98n;sHR+B33?8ASfU*9z0JsCE{8Wj|?FrDFsZRe-Ihq-tHjedAgEN%Y1-mZ*juSnz6=5+` z`Inb{tXR%i@Eard%QZMyV2JAsUgEg(@GD#Q;x-KaFCVXm3w|)Dw__$%3wVKcsPX7bcZS}3p)dyR5 zVTorqU`#}nV5|cwX6DhDgnx`8&V1zl*;T~g{98p;a{J2GyJRv;^BgWlQH*5N#N?x` z)G&5E6*Tyc76$uTJkSnr9&K3iPkMrRSVd6CixR}_7H_U7T(f=L`%g^UI7K;2e@Pyu z(muPZg8icSh$MC%Ej=AqSr(Uglny(yk$Le)^H@oXOQ_t>++`Q@vJfxotREe&Obpr|_fGe?Df8g_WCC z;6y7Q)R8PPtVKhEGl2EwFxrH@DspBb?X#Z;^LoI?NW?Qg9@`OteUnTa{DZ>djmzy2 zRAl73?-^wwPdJXEFrUBi@sQx~tYL0z(Lub7BwzYM&o*K< zV+#<|?o+gxYPWE_ld~`_tNP<{xAgN3Na_V(7Xk^d*@+@^{~|xxEp+k>aJc|XrhI3@ z>{#hgivBx3DbpUrDx-yU=^46~PYJG}|5&OlGKI#kMl+fV?xK#uiNH3-NH`i2uE=ZR z18qyf7_lynml=14|I$v9Y?Ea>^(>|{fAG{nczmOI&`nDXNKM+GUx}%s%Ijn(%3V+K z59KTDud_V73lk+hC*Wc;9%K6J#Bgs8e_J^kDE8?9?I@QV)gmyJD4tXo^rcd{LV6{{#YVCN^ z>9F8aJZE_Hr(7cCXL0fzuzA9B+Hhm*+sQH?9aZ$!O34L)A@Ph6dS;?YbblE-OOW2& z$#WcY_~AdLpkQ2jNc*{2Vb}2ssi}~}*p6i6+gos;d0O2}T3p*E5BYGs=d;wtJ zQYtvlW}`nR^Mkt&QHVqBiS{q5=LxnTGNTys}f1r8~4@fh^s&b4;sXgMx z9F;kw*8fo9#=hzFjX*In^)8~lmt$6&=oOK>QCV4R6)XRvc@wIWk=WFJ_8*x&Ov_P{ zQKV6qn`0_ zis74;KpILf<=T0M@XozmXz0NOfUzC6pnRbg^@dvGQ5B(!f&UfRPqrxD!^f5L^&`{SEVAWw#y$+88u|(zwhqSXihZN5x9{dL zHxKnrJV{!Lk=8&DI9Z_4A(oYu&$-m8Z~U^LsVUlX`sm0r)~YUQ$XVc9WU6(m<0%LF zAIn1%ADpF`@@RiAp1Dc4O5T4?$79Ak#+T9}Bu>)Hiut&bfXNX+ggYzZ=BJe&PyH~7 z038)>$UjfibU>tB0Bm=n1F!EwLk?>LEZ+`!)J7C%$7|H){TDL1l?HD#0*2KGN?-Ou zZHlnn1%Tx;T)?*>K7reuy+Z1|kv^d;ZytB@O!Rs{D$e_UFYJUj+WOy3T`?FukwEVHowsFpXFrn9``4SYV4?$x^U$WT-V@&LS&wnhC)&CB|X`QD% zBtc_@p7E-mPP1-qh^)zw>GM4f=vGYur#x;J z!LNXyE)qK$QGN8LHp#kGUMD|)EG9I`N>p2AO<4~(O!Cfx=YC)^xXaIr>mKq)-nW;y z0HBLoFG1NXt|IMd4Ob7><)I(gszB14y>uuo{O_s0=<_&82ezp`piY6%E3)AcZdnx* zTwsCt;URf`lLS1f8zs}uao=nAu`Tz1oN|TN881b3TxxD;|M+#T_(0RXtOTNJr3O>d zcEs+`JDQE?h*zERT9R#AYlYcLlkc|ez9}3%a+7+he|b2@QX)l3Pc%msB+NDc+9Q&r zqPK9DQ0GJLPfWx;SJqh#(Aj+qZwXZS|h7!CdN2#4|`6#t&a#tD~!&X;l0#zu1Dv&MQ=l`=!*I{ z;}slCL_b;%K?ChxC7|<5`wlx5zjsIR(qn(r8r!mQzm|9tjrHHl*2n@rv3B+!u~WO& zkTbfJs1IwdS6f!hk$zUp%l%qj=P9UwkC)3L5;p>S&G6Ia?xI8(7fteS)%f*?(buPH zHw^zwv7|5uEo-?NdwZXRQscWhrEazwVMmq|-o=^GI>?c}2D=E3x zPK%{IkGBjCxz%5cBX;07@}9g-d2WC+w{H>1C74uhuKw3C;l&l#Z{RCQouXNA&!VUT zvE46j@df}kb;Dc0ZyX&Kvdz~~`lqqSY>hmWinFOs>x6CuO*cN4UiCz?68;pF>1-l7A@DEwjl0`pI z*EZ%(H!r`zihC~qBHn(dlGVAmg>N1#`D;%#hn&nObP|^uPpqc*tciQa3k|+R#+ZAh z)h%(8sNRx<&vy^D*3KO#u%B+AsfdO$PPTg~su?N|y)EM?{D-Ix@D%naf|%P3M5MGO z*ycN-G0Ddkj{(;KM~6Epg~C9)O}CHPUATd1amd-H>w=!;iP>FkU9}|v+Mq87g)P-J z6{B_N*v?e>cg%RPrZ%y5^E9JgY^ih%$et)TPvyYs?I^A-_(vwpd1R`SFTg!REb;`t zFt*i66l}t>NNPUg)>WwVesqgf-i_gzJjHWNn_w*P2StWLb0<~|i!rK5W{XW;aA!8+4a_%g<>D?il68Yu1s zTuJFDCH`5z?PP_v;a}?Fy0h;4sLq`LjU>OHhmW7WcT@O?pApV~|M-?br5Pal{QtlF z*%d#^C(g!F1lQ#J9bS6&c4dlb_D1iI?d5Vv$87UI3QT+NIBR`VD5)}Xpz@`QK`BlP zyHaF;Xn8tq{*#4MNBmAuK|dVCxCD`bH$4ZbEX;mE-jpa($LSixuX|x!$NJu;?fGtG z{8*>=vE8I54z*!f8stpYyyfD|y!3cK%YD6uZQmF~jtspUyPYt8etp!lnMqK{YsMMu zHP0x!)|tDStjpFcBvxDL@?s84I5Fyk?CQ)$%}9`#i|oqn{Ys2??%m$BV>WYXH&?g- z5Qnx5!E@=z3Kc|yj6+J(@F8Ccr%aG?(d}<+=hUuxo4N?e_MRQf_1>2)7+Tk*RJ*vb zP`(W6eR95&Jfv>F>pam4!Bwp}ae8Meg#z1ahYWMEl#6I^eGErUswpvhv?LY!4XZn7e^Y8MQ2!W7W z(6uJEowN}_`2{EP(&cuZ4dLhI!D|1*$~MRaP5^H;u)|D84j@~Pog13mh%8iYw+rEl ziAU0#6GbFcJGfky_Xh&x)=5) z+H&m+B0Hdo$g4|K{&FVRjcP73J;##&uo+3P6z!2R6-g zqJ1%??aBBqw?;Q{T(SH@!zG#orIWnu0_mq5`W;wb>V~eW@D?!Ry3>f1Q8?IH_upS! zV({Nd1#Jx?PqKUdOFHlV4x3LZ1DHGO?x&-;$Q_S!;ooLaf9D`|oV#G81i5J1%N_>ogdw`iI`9AeMBKzRjI*dMLtS@ zsKSA@yLXEkP|PCw+Tx1ec6Y)he2b&MtxFC5Yf-7?WWyW>);oZKKF#X=JCjeKMMk_X zhCjHm$)K@z_^w7eFNMV@_Au(b&FSfaB%0xOHXqm1%bnRL{tiXH>n020CjQ$SQg5io zVDzKeMt1KA$XS*i{E_jPeO&$XlxbJx9eRYUX*Dow)=Sf!uz$T7?j0QKXG<0wu7fQ6 zE!u&h&A12Tow=+i4M=qolyXyL{sKT!h20PMi#Jz49zD+E`m|~6CLc>WD5gHjImf^} zcX0$obk@|gStoN*ch)nBm!BEr;IV#&K!fE}wd5@hmDONJ*C>NHr=k@b3#nq6bI1R7 z+DqC4mZBaTVCLiPlx{HUwaf4%E+fk@G3cF$3qbh=;AlD9*BNun($}R!LvZ+3eGFX5 zhH)-j0H#>mlYqBvDx?S0`0i|~N$ow=VqC#V5JKt?sdbQfM#)5xjFzd1fAw9jq?z!M zofSmSjJ&_ibT@5lWbf9BT%VKsg3N_x`v#&HMDLmfb^xc`)=N77YGl*?QFmb@xEwd~ zqew>0Sei>dMR8A)HHSPd09%janT@5ep!n>v9n4JqVCt<$SL5-{T!R^eTG%H+FHAkUc< zm(u+)jSAyvS-p60O7ooPsEJ8lO2K(6HQFN8PxL4>v_z^_`1LyaUo*z*I*pT;e))|4 z*VB7(`>v-{kOynvN|o4nBV*@d@fAM0Ii^VD-@NveC4ZX=FdY1`NO^YQ>T!HK7kt$% z%fImq|DQVqW;esG${}U_wn+(hT;Ch0c!}`TilAAa^10)fLnza`P^4CUSU20@yDPEs zM2M?7yy<0e;SPrw)bgx+FHK67Vz8k6T|c`AXE}Kmr&v5v0jbD(oSpokleZqUDps|# zm$uwsTzPp$Bi?jJd?;CK6F>1Rc>4cmSXuF}4KPC|3er+LU8s2O=E?Fk1(jFbf+Yf7 zjQ~bAl<+w^ki(AhfTZA>=b+xENzdcx#;7bE7nqhJ_WnKI2df{upkjg1 zlls?^Z(ZWk>w{=10E_r6o*22ba}&+Sh|Uo4Ho0bzRz27Iis_m@$1PRtza#2p)*uG- zjJJj6jQ2^SVWAaCW0H1GBb7fn*(KjhiOZhA#SAOVYGZic#xC6M=KJ(isUUGHXE|&Y zL%x&TG`kyv`*Q*K&;!OKn?=e%uXKbw^|tmyLUJ58QOu|akiwaXy&=Z@Ny6JR&D8D{ z*%MwIATX$b^K$iGl3&yk5nHU8%^pQhLSM?ih@w<{`3yHb=Oj{xZb7k*P_#Bj$@?c9 zw^USYWY~_D8?-8H8SFaO{eKv+KbJwi4D3yiNcq&?DgI`lm_uc~J#A%{>^N2=j`k&- z&=7Yf#)V9C^4Q+z7wR(*(EitvRqcD2X_?beiHe93elNRL{=}ea{$hoEL+cNX$7F}c z34Nd#tX3$J?~h1;e`J5$FK23yo*8Y1oNJ`(59SV_l$^fhGPHgwGBoP>0XeV3XM>cY zHngmZrR2kS-7+#}a=x|IP&PB9Z4rL^=`R<|e<3SgBZ9Xp&KNfXUNmhJGE`d1@bGj*91HhRmJU^N5Bit?kw}iJeh3*R`^aTjMye(_}hE8hqU@gUIB+EOt z=s}WQ-xB}W+UuiahFrc+Q(wQOH&Yi$y_A2qg%5qkz#x15vmhR^`8V-5Wbox=-Y85>Hl_6GDfQlEV9RGlKDgY?z@6tV6XIF zKGYh!Gu3$xhOWNSewo*+EPTFw8Do|^kT9&wX*_9DAoc2wqFA*n_kT9LbqNT2Gcwi~ zU99@iz1N0>)UK`{WSivw`HbKoHlJtm+xbzXWliOo?xvvZ^fxyKnS#AyYIenT^vi5B zwd<)gb!xN%OL2bp*Ol^OSG1EkwOt&N{`tpMpNJ<=?k<8w0!me9pIL5W_Onjv>T{!Q ze)7kXJxR%hKB5Gp&rY8z#-W9W{t@@9Y(6~$P(R-kCvBnZletdm2>nL<3lIk3wE1R`r9WeRFm0|pDF72f~s&DjGNXo0YgMDMz6mZPV>t1 zW;=CtjszZ9=i8Yt&V@>v3RzXD`onCEZ$WhhnmX^yIKRtKkk<{aPlSgd+CH)3{(~#T!Rk@dCZl-zx5S2Yq83GmsI>D58y~%>`aMnrF?qwC4ZMy5y zR6~l12bj%_GT_7!e|s9o;ubfj`hkNyHy?%* zuZ2=mKl8`}SJ(zE;>h|e{IP>nkz{;Ty`2qbSaOwR#sxs#(%g2tY^(jP3m8bL6eOxH zNsO+{ocouazJS|duRVd1{uUY}{}tV*fq^TaLCa?iyn}tz_j<0NdK9!yAt07T(cUqT zf&Y6Aae=L=3Tq{P{kY|QSXQtQ;_Vj%yDYR)vPFfqm=%LtmHA$IUeB;{L| zBjlzw`7s&6&dM=p{%K`Xc*Sf9TA^yxLuH$HIyN#}ifQfDJ8~ywGvsEzG0CZPSuJ!G za60*NYSd%cSMsd4R69wFmH~Z`yy-u`s>t_4^tN$Jit|rTp@L{Di*M9~Q!0~XwD8qg z_e|m3Ug=f;u*TUbw~clrnu}?@@&&i#&L8@pZcgKi@$OB_^|eRONeIUU?MZ0M4)jSC z24Rxi0g8U)vvG+RbHJ}sw4MvIx84k@aVlQ`YCS*6Skpbn4O5x_|D}lrV#VkMfW^Sd z-elWW*3Hd*=a9=NEarG_@ho$u=?s0B)h4jhOrt@Dbk-OgIXR@ah^SdKlF!B>b0#{w zLY1ZkGlv>1s+%^cvprwWw7D7DL{A>GA`ddB9}FiYsD)0gr8j>Q>g)bPBfrsCgj%IY> z*^w*F-R7v2Gc!%sv*}yw+}WmF_yPv~BilwA*jG>E1@O-WotzpAzdC_KbfiGIwwlV+ z`4}xVvUnCIyqGuDCfnZeiS1`;qSFD&e78omfvbEUqkKl?WId_R)1og236nrFPHQNn zM@tR${MY&55r>kTv%-d2v61)Lbb-QBU}&;oDespOr`799hp3FPBlxJq1z?h2o9L8* z5j4Y_#|7k8DjGKupbFx+myqYmZK^JQnCm4X(WGI>+jGuz@qFD=k~8mFTz|EvU1EWjC6Ei~rtmhMI^aoe04sI?-Qy6|K% zOgmn6uZtBxHI#vVSX{IML{c3PW^zBN=5Cjv0oL{@h2Aw=EiRSILDv}kf*e)L<;cy> z{*k@?FmB6v{)VJJX+tdhnNp9o;&g~(W9sK-_+h?fU}j>?RmY{@Q%QuBNR=7zWSgH? zUT{c2)iKwwcn53o=JBb)jaa8r#_#TpxFVI?^WDzxY!w7vz*?ve^Y>X42184UX#N8MIEabK0?TB#3|p!5S-ZAje&(OW(!y%?urbY6xI zO{Euui};;;=lq}@7XV-zwqSOAtmQ2UF&CTQ zdh;O%Gw5&)Vk<0uL!%BjH+GV7*YnT0&cq+~EQ+K1;KmV;K^o zk>Q#~WnN^?c$sv7k<7t{YmU#<9{m$q7Q6riPS*7-Orp!VZ9-oBf-*RY z6QZ81)Y4byWX6_`X)%pa)!FB(s{$zYhzy!VEZ}qk0wb-<(ak|G>Q8 zj>{YzqVgK3D1(9Y=YJ@y<35@HCjYHVCEI~WCW%K?hJ`x%2jjN ztI)O$3e(gx?>9z4GMzlXtUP)Hzrvg9y^zi%2!Xbe&N4wqby#|O&WpTJ94km~en)?% zbha}MT{5!T^(

s{c&mDD%8BkTbBuFEFh^bTlhLe|QXL>KT8MpnP-w2SZR@?vdZ+ zHDzdD=Z*&IT)ooy(CMS!vlJJ?0Ou;1=QR zJ~v-j=T;n?k$k4c>v1DRXs>z~FYx@kK+e}0V|8Xr7R91t)` zI;$OL>>o=eyPyAlbp8!%HEr4cZR+9Sa!A(wAX&yPYXN4pL-q$)hQRxm8d#@C^llw9 z9Sg5hTcDllj!5w`&aw{uZ~D~-t-F@djOvqO!KqRHTzf0}!%3TzAT*T5UXjnh>80ur zH1YE{P`}_d&~&~*2IfYxJ_GtlajTd{whbPgzA;&w3@A&j4aSGC5%Avt>#t#Pm$9dL zj)7^Oy`I{bxibPS_SBSaCT1Na;Q#LHOLH0@$^Z@}m*KmH7l4Qb=v1!eZV@{1@Tkbs z(#hKXE)83`I#~dr7ng!#QjVdCJSvxH9?mmm43Gor!elNhQtCt93T7(us5ezmQ5o8? zy4CD2{8Li<AK%}7a-}z+fVdPqR2B*wAy01Q&U{+D0-oVudWL_?o=y?sylPI`gp1XT&I$SKN zNjE7;*6`f#gxMJ-Vks zv%b)QXJPA7uOt0-Zyq#C?jyqBbLF!)4w3A}W<6s`a!#9hcgyO334b#FlC;99v@>;x zO24GR1?b&w))wtBKSwpu1n#V%8)Ion_pAa9_GV+@AOFYERmU~`{QoH`5`v0!Oa#*FEFj zclSC6a6<(tncFb_kVxIkXG1>AAF-^1e|ld!e%?Y;qVq#dJ5A!gcuZNkzzTl;4iw@Z z^3n1?9x^}=su{SthvquiY;bvPh*uvA=R$HBBf^!C=@<_+zkoiJz zeQaHM!(bwykf6e^c-&Nng<4?9EXO8p7xo);W44$mnJ^@|5Fg2?1@j^ceS$;gCI!y{ ztuS6$y&}WFKz~0m+Z|h9;OZ-()b5Ko+SLBQsc)*MC00pqQeq+6H+uxqhdY5u!cuR~ z0g$Kl6*01^*9LeuGA!}fgBskHtk%f@b zyk6Kf=TbXj-DS>bRh;tujhPR#ieHJI*u!|0f8UEcIy31Vyf&0+y*yV1^lxn zL=}vcQy@8Uc8+56eL^D5tA|QcaIyXFnJ=}k>1m84cd9ZP`u*(Yp?}QSS1UF8`-^w~ z$F3Q|GzLOgZqVbxt_afKdi%4;U{Newjgn{-?=9G`kkcx1EMLag)5HAr>(9^5PJ_R_ z7ls06UXOOF@}$?JgWkf+lrjkS`o=9w=l>vSi+ zoJ@7XrIu|{gV;_zT^vmt4>k-cZ-npP+1RaHChr#PX{1vrKek zMtIkhHuJMlM&t4Z`sde)L|%*kKCzX{ecG#Jmn zv6YyXih2NB9Rm@JkP~MHr1VhyjP2sJ#B2G?Q2~+Sbit~RZ}$znZi%{d^2azo7*w6M z)j_!6?xaTP#T#O}LkGL;kc_vecL8TB_3w-Dt1o+hBwV}1F&#D*L+z(o#B7UP$TU{> zY{p9WsSom8ES94mhIp6f)XxO0l&;KKi0~=*R+x&kW#nL*`uu9y=%thGpW39AEZzqRwAdD=OI?$ z;oG<=zSU!nZ0g0n&C2PSbQH5rSuf0btCKD+4JT{>Y*8Ok8PRVe3p$m3eL z{=$irvk1CmAarC@6b#|JE?oM^?i_#^tn75;w-@Lu8V*?QV>#FalX_hn{;SlXFJaPT zR9wi`a)(NhlIznxdYW?oO3$m0H-5t0s}2ISVuW8&evnQk$dDHkh0M6QCkMKDUg()10Jnz z)C@hcPWnbD*eee{a;w^d0VmMA$p+4oO=$`6GVhSTbK9Q$;7mW7!_pGo;UoE~h8*!X z7*=^%l`rcJ8i&TliJlB(yFk{kJFPnx=8-o_j@GGpvg+5Izc+T%?Ea3=y8dqBkHccY zB?#ZpntHL==3_OlW~CDP37(+=8k*gy!FcQ&5C5>FGjV`S`kmX->(<8^FE=hd%Z%xS zJ>z*<-_s!fB?+ZJ0^D-;{{WQA=Su61%Y<-vmVIhI(Y89iGrrT?z~}?pZncl?B(=y_iOaT{)gekr<0PS*zSV@ZPSOCHiQS) zvL3zwCd?3#YSJx9i!ucEE8F>*KznX!EU!Keo~XhAJ;}3jL5(F^y%H*Kks|)URnCiG*d#vQ|Ut& zAZsvCcOiIPF+(k*3hZVj`MLB*KsW6=$#NUJO+!2fT!hl%NN3rf{+HcZDM@c1tILw8 z<|h|Wb2Xk)v_dI82e{b_S!AB6_EuEcK27*X-F_s1fI(^`3&i%zP)Zdkv1y{yrseAa=O#|MjR}SxN8%7uv4EyP^zn zwC^Fd7hjy8sMN)K4$v1KD7tg<>2)0XPB@-8x9}^!l-i^6D^~Fx*~IC{_C{i`9Jiwx z2hQ#_lPviAT!rgfDK)(_ZTE-kr{SadYAl@3EGp6;{8x}%tdayqg19mBb!awH=9zLx ztd{MJgtvUWD8$0z?as-+BEEFx&GDpB%tO$8=3Lbg;!KJ<76y+KN}l9a6@&@d<(P&6 zjR}1!0Up{+l4IOoY>&+}F7#hS{(1&79^?82_g>9De`=lm{=({TK;;#`h;L^T>c;Ca zCk<3Ot@){R4MhjYO?Q>@BCq@jguEPyaWKc}ZBW82dIDK<;eap%D`Pt92;$F9(So}C z!H0}vr`kBS*FCtuy6a=-0OZsPkaU0dLZ9YSTYUN5<5MG8gvOr?Wl0~>9X%Y2a3e-;5J{|>I|ZsU|`$uEk`kL>Cl@TMPj zU7c2eBr#-LypASm08$KIx5-XoD&r$9V%}pF{{q%Y^ru2px|*Mc^N5KC{fx6Vs&IPX zdU}~_#n9}c;9dO6-2k;<)@FE%56G)e^{AT|9pzI7>nzJ}_8L{PWGqR3Z46!g2m5*` zM7|wOrC%i!9EDR70;K3jzxKGp&9uHwhYoNuE6x9RyNT8&PiWB%5 zj4YP9aJ>DXtnES8O!2JV(YNGfh3@FpBvQ86ZsLSf8(|LCH7OaBsv($sUs=ChREI~hT(Kwhv@;@^qSN)CaZg@AuTLCV&*(I}&HFF_aRC{z6{^bnk z5B84)Xwon5~#vyG*1@R7hJ+yVhrC}&r7;m2+>Ye3xl5s+NWK1cP zpaNhMr@+MIS%wCCesjf_BG>6eS^g2{lCozY2ewC@7Yl1P1cXO!^(-Q9Xu3jt{L5`m zbSny{BU9p5lbY9!%0v@>e(`dgvFRmmT@;3pF2h-1{~&K}WGyd+88-A1ZOhkzg@8BN z2s4Mxizrnj@Kr1V->U>wok}(pXy(@?=rq*`7X&|Jq4IWw?vih-9t{kh11=ofqz1lS zrKwSNeey$zZSMp7p2!Q}{NI~PSN$&R~-@A^7%fLK|u9;<^eqlb;+`w3;-pQNZf)Qj(lf# zVY!?5A@LKa;;>9|?74}zQLg7dRsAe&4w@mJHGjEcATeXdSR@QeFwSN3x$F!NvgeF>{v6^76KywE#alW0& zY0&()`glYeE;7;24-zho8Br{5@!a<@2W~~;j5JUSAcE;R;F28)fQDoa+6UlU7J+LpEXL5KF$TNu|$UkeX0E3cb*$I(Ai+t_f5FoQzeZE;bIJhrd88 zhl^0Y8cO+n0H5MN`dCF2Ok1L4%#KKmuqu22Fg*mZ=x3?Kl%$MX#wXh%9>e}xOcuNY zxhCG2=w86xoC~k-*Oq{|;W)KTD)wk|aEoI5=YT~_o7j}pr0BlRnc8}&{F-^JtO?eEAlL#glZ7d%jrd870V)8UzX4!i}{$WQ=PPBDzt z930*761Hh-)2GpG6?ciE6VgDP$P>))UlZG;rVO4D>+>5&t5yD?FKf+k$4|5|DX9zR z>X*J8E?eRm@Og@>#&~W^`othEK{Y+l97NuN@dbm-H<>*O32ZN(Gr01&maAj)p<3sF zD+dEduz}PXgM!%&@Wg@As?f@Phq(qb#s9 zUJRULo;N0~DwOol^5%V98bIl<6Xb#^S43=Ey z_uP9PzOW81KoHE%0VGlF4`)_T#*{W+cfQ*-zMG#B6|Aalk#B_5eLV z!oS0K4skFZv+z!OY`}fWi+D=wE`DBWw z&16T$?0dK*t@vwaPwH7w9>ijg7L8{Om&r4iI9#?PZP?K2`wGY%b8gZnAjOl)N+@Ur zvXU)Gn|RsWknjMC&4QB*dOY^(bGiebz@>oIjGaIXJ=BfR(Pq72k>T=nSPw0{^jSP# zCqT2C$FF7SW$u}R1k2$k!SGNQqTnp&_wX_k%Vigd?bXoW|`XWmA95BX0I_MCd$Ls6o#T*S~Ea~v(k$Hxw_a*BV<29{NLsdadF7b2A z?okGSONYSKawS~MIRH?KAFdh?n9(#G5f7w$l1mryEddn!n{!7A8+PWSO-Yxaa#6dv z`fwk)u(tmscD{E1q1iUUFAD_Wlvk(Z=VxgNK?q_=XR^Bn`{35npNi_>=WUdSU$3OT z{IRD@-fWoCDtGbE8uEjd?t$Zh6<3k1bM$WYUu?dX{|FShA|o!KlK0;E-E`cNe-~DM z&Ex_@W$spx3VZ5YRRh`rnqb#l-r!`c-Z z!L+E$bG$y(6vozc2Dc&Mwf>FvcaG@{m*%jIB|enVlza2Y=LC%IF|w0u_?anIfZdd}rVao>V!*!)3SLf zxdA>C$45VgpnCZ`USf{7zY49)v`Lw@bd$wqs-&j$gNFPs^3%nN)MtOV9~8hum{bGRaIB>C4BByxDass67-@tJKdPc{je1fNfz zyP3Jj9(4|=N^iuWSnheZr=;MJN@TIkGG%P`Uraj$7v~kY5;pL4@YVZ!(DKcxO(Wya zyx0%C!ZRr8hU$mze>A_Xm3KbGn2 z^y1rLsJi?5n=kX4E*Y}7OTC^+WWu+CYT!{`liGWS*HQEGEc#hJ|}t5YmeAf={_>QR2y*kYdO~Lw|(=>6*$2mi=c7{$oSGV5sfj z8_NYW>)@~F0K#jZk1i^fZG9SSE|cD_zDhhFfOz{_QIA0JfxeF^adH~%ln?OvTn8Yf zsyxtuTkK7|qSX+4U-G2ROuhOzBS#=FNagfD&`ynFuePt@|6l*8zF9TL-U#uXLi7x@ z-k7Ppk5~tn%}SHv^T;ZMrO97);gDbJ1m7V$U4E_86l-(45xbZ58OYak-3KZhE?uf2 zc9+A84bd-Y_7cQ;%0Uq1hiVuf`vCbVA)x3k<4c1>$xDa4I(Ta|E2Wmo8PaB*Vu&I} zMIL=jdBa`{U?Ou(ZLn^`Ec{Dd*sBs9>3i#-Va#FBK{>jOx|aKmW2Tf64ZgL%umODH zjbAHM=K!D+Jsb!7s@Mjf)M*8=$#Z8KGlxVPj+9Fz?&j8f(d}7-sC={eZTZF1-T0P~ z_du{1Y-FwqopL5f2BL{kb-eA9;kl)c{{u9r`sOCnI;=FN9sMtDdm731sEwGN^TRzT zcrvKS)zf>B;d5Q;!zsNJz3wY_Ikv$*ic6r0%e`eH@U54pyD7C(NZ zP4xD)Ajc@IgRxBsgC5flLRWEdJ03HLydEJ1v#ndW4_*aQ|l#`5OV*U z_NV|Q^v(o7V+rcbYK%?dlhzqg4W>|PU@J6~k|PJ2I0rPVM1MTo%!}%u_R_-j$>QIe zOlNG3({`<@odXU__Q$A9yd!ykC}~hB9}X9H)W5#pc+vYX<`t0sW=o4vexBpUG;#05 zpCD&ul88?P9D-w+bqmw?;Icry$_}Zn71=VC_rZjm76 z;1HB!qK&)cm&aFRl9p?Z>je08z{pX|bIg2BkeFg~pIPtwXBEQXb!W2|Bccx3OT$lF zteu7qsBwqiD4P^{s9XA)(o{FUpU^l~lD63!a)Rh!Sw+O71!BR(?arUE0!|htviv;X zDyL2@>tLPmI{{6g1=fy)pEVsn8+^0%)*i|to)N(yGNih0u+gGSAxkh*@k>GXf4+B| zX}VWyXcBIO1#fjM6y=lPg>#)~mp?PN`w}8)$dI*^LiYR7oumd(2?KP2CPEdVt2PqC%$~fWw)L)ybkk)35zcEJ76wB0}U!%nZ?I zDG9yO^bNi#78=ukD8He!g}j674@(}dy;9Z~Npm{0BVB`Y2oKA3O9a$DPkZ{sCkgZZ za+oU`f*;>L6!v<-pr@FsDWdl1Ui{G)6Kx`;wll%%S>BSz*!9AAXP5RfV9tEukWEc>O-@ggl06b zYL;z$*SLNqE^;_0D;U1r@osGzCZV>;H>Z-?>~6fpU-^ygA-RHV7W!qNvPIX;3Vbw6 zB(dfuUkaoek7hLOh_u*)K_q73uC0PKFS+&+^Bwqh7=d=xE_z!w&rqoKgcBuI-NM`T zMDpd7Y|Sf+a@TnjI+i&Kxr3DV(lo}z`XwvAXP~FDc%qv^Ow@)H3hDP!4qq~;V2!a;yeKl2?WJZM8 z57UUQamjryNolPtQo6srYie9=K7kr{e-b~|-4s>E2Tzy4*vq%raZ`0Nm{g|+V3g_~+ zE^wZWq#zm&%a9~N%*O--F``HOuMOTE=U^OWJdwBvdaof!(&-#kY5#i;a2eVSSfh$B<&sDVpkKPhoTJ7HBG*v*^CuDk5f z1u|}_1wqECvhTL-1+x^BZp(^n=^m8pG)tF+h_?BN7Ul}o9+v<7t1X5)dFBi>J_ndT z)40=Lj9}4ToE9rrWbQ1PwGX|NNc=B5OSp1!tu3i$D#c{ulDX5_RAqK39&>V3mXtYu z0$!{kvqmrAT5)mg4$Ms{rkSP{-ya7Mp9a|~tJ8t9!h!Q(E^E?UTXn{-%!lBcvv?HeaW?K)K&=k(3vQP!2_tWYErr7W=myD4{WL zXFbiDOqF1Dz@T1VxbDMX)jQ%Y%r*W-W(Bg!N>aW3K)%jd+)%~-xLXXO$ zBTH*yl}AO>w1bMxWlCmq8q%CWB0Ws93DGFuN#r*3{PrC&P@I~SO!wVS8n~hkN#laQ zaEkfB4I_1n7QyNa<(!wiF7c6K0a$)QQ5I(#-a=A7SAIu!g*jo4UkOO1t^-yAvaSZ4;`YS{(R)EUclw$0O$n;^vwRe0N?t)EQ^?i{9sFs-2JgH?nC>BY=69cEAWUT$jNUChHU*N z^b8Vmf*w%S;cN2e+Ijtme%V*OmUZq!F1wMrAkrxrrT0d6$liEue_^+sS86djB7g$d zuD30deeu!oO0iO)d=>xXM*H`G_5baKTxqdLIbtVy@9xX4yR|2rtf1e?UI7|OJ7}qV zC$6Y-4O6~PU$awt-PvNxDBZGcU7zPtmgyfZy4)Lk4?kMGVL<(84fB>YAI9a7C>JZC zbl6+%!I`#B$h}YSD!D_)&qn%e4lp11Aew2kF)*}Dw6r0WRqd*p(-;sB&IJ=3a7@Ld z=+@Kf<+&q0ujZXl+HA3Xb&gc;Fu2XBzMP|rst2@B&mg_ySW$!LM@mO3q$jje`>`6F zU7n(MAx{+KW#I&%q0@&MuUq4w_gj}SUlW<9W7YK)p8WkQi>pAc8&I#m!ygebTXhR3 z*;>hZ;!$MaBI9Gq<8nq|M@c1HO;sbd)&UynJYy+Ym?J&OBk&uQhZx{2 zT#ou6t#4S8yL{d5@K6xlf1xk|8(i<m1i%!}g@6GLJM+ zlq%R&`w;zA6E6jPAIoGv;GO_qZf&Oy-T~u$-8e}7gMFf(aptnm6S(M!&9J%EUgf&` zi~s$?T-}WZSKb&wkXc}7^Zh6nFQ0O3Zgrxo98m3b^20wB_#J|gk)graRajfS&z3qN z2*f-ER>+6@OV^|8#83`qaUb|1X~y#3;EQmx4BIhUjI!UJm`XRK`0m2X@BvBN3&&L>xe+VYhY~WoX-tGFN4&s)H*JH}uld=p zZX?dvCa6<$TxeiOq-lCpmRL(l6Pb9I&ui&@&I_E&Rpp)Vk~u|k!<&GjTh@D*)Md0G zpsg^YQjh9g_P{0ZSh3vLz8DC!f$hZ*ESRruz(go-q3-!>)&8?~a=x&g2h&q*PsJbc z`u;>;IQa-8c#9mAmS}c#g{T;dT63%?3jRK>&UvM3YZSweGLm^{AmVx0cIl9!?YJU1 z!D`Q4oYVr;ZyV6K9Rg`H43O*N8#A`uvssWB>#^43c<>gVWVKQk4t?fAZ@S!sYRagn zX6B@qlz~`LMnS6Qfce?ocPeA=sxTil?llg1iwDeT@2EmJg}~zdPLg0Z{vUti4*J4b z&mO~?gZX4B)s3{owzf2d*BjaF4SG@moAWlRc~6D&Ll&YIVL5(-=HFfrI8k-eYJ?w_tC;1>k1E%G5Wz%hywisy98^i5 zs_R3-X$=T7OEnoen(0C_HP^rMX_(=ff`BMsn@A2NR?U3@$u!k1SMtNa)s;T{*Y69p`$X&lX8xB|-JYyY zDS)!z%lsFwBBtcyWzD$4vy-Gl?AibGmtJxe@@?){_Tf{5inHa~NLrg0vjOpHXPMKlsqqaoraFZ$_=+(s0VoE!#G*S+M=0gQ&+;+CNg?K{g$ojhM(YT-OS9s5O{0$qAVsX7O| zDuGAu*-WjO=^w4D_x>mIm?s36s_rX2*#zm0F~a((W&DOuoLK%SX?Kw;G1T{3+eypX z(NYW4wV7c>>u?iF=F3wE!3#{8^G)i`DF#EHu;y~?O5jvgayX@A6*fx?Vi;l>3`78jo#Lv0QM*1%ie zsB?J4=X+$RmC5I|zfy1iFAA>~cd&b6Iq*xO`P4bty+Z6d4irLsH&~gQHdGL86|z+= zX;s&cM5V5NARAD!4~=8szn_6>dg=1K~e0lfPGoe-S;l_MIv#Qp)lBU7*v$e;ZukO@k~l zx#9*5t7|_ipkhTfkhDsn38y%z)1NwXe6{7>K298yV=CMRx?2*9QJ_P=a$5Bg+V(R< zM~0evZQ(1mpv7vGSl0nXLvPO4ia0cea-|?&G@56q+PX}qKkwUrS!@w@#nvYC^V3e| zK($eDf+LU+Gy8|!Yeo-P@;4%sV<;#Wey_cy_+HPt{!!rSVHq8NuLN0Bc?l+O=r2KM zqxyv`%NhB&lGAJUIj+osj!R>^XvK-UqR$u2K%y+bKWd1MRe7;n)S!peRPRPng%K;& z{@K^JAccu0)=nojcCH$Y=C9>YLX%>te`R&8Gk2L-A=#ugC^AB2imzf)FY#(FWz0-wF zQmNxqemPC^*)|8jMIO(fjTLR{fd+Jnyv(qgcdXa4;3;(K^T}a~pTUi&A|?$M3Yx*= z{)?c9T@7I?(xUOrr@7h*ll{((G7GXRl}wlC8C|b9A9f*ow0%%uZ=Xd+661(vZ4#EK zFtlkQ*DBCp4hl>U3Rf$+Uq^MINcy_cPm4kGV>1?BMR7 zT%@C31wmslqklq!A8Wxy*9%3uUL42lgQ-iw~j1hTv8H&O_cU|I(^#l}A(U0t;4*!VU@(a%Dy8m{ItCg;I-nZy%0_rW1fQbu3Y5EW+6Wvu;`MLgBZR)<@AB zl(!%!pHJW$WP=3+PhVaOBxi%=X_t4 z#)YsOHOcyPw@GtbUD5dDr*}`DRWY$*82W0>UM>xrKz(pzV%g zo-l$)wiuDAo94Bq0>I&iRVrx592876LbFHF% zHILC>D?7VW-1xS1^Tm1aL{^?BsojXz7zwOgX#ShA2w2x#H3hltB$+p=a^oo7=jFAD z{FB@-*)7q$(pd0d(@;Ncb|Vbc^T5@)|Km)V!DFi3?>ug&lj7o;`E94}EfE`gJT1xN zNyppZ{qGdzA6ZzwLoW2lNyyA(-mA&{k7rdos%-omRh~i01=b2Zc^x|5Cx6uI)=jMt z2g3(u>yeVbEf+TEY5+nC?bvdJM!M>8;Yv|yY zFrX?B;4%5CG8lr8gmA{ODC~aut(F*O4>xdA({$zeLB}CUklyDR%bz5H%t<+C7Txnr zO19Hr2-ieaqy&mFQE+?%4HG1l5fyABG?W{v{KjVXTzSExx9kEif z$n0mPWG^3jQb8w?1ToG4SK6vsbh;nX$$l{3s#{(0R$;si$)#k2=D(r2NtI`AWL*-x zC?sN$7uZ}BEK+Bs(9{)W0({aevc!_w-11B0Ma%$#HnWJu_XML7@A`5TXg4;7s9`6w z#Qg7^Hyc#y2T9R1rGsv|K8abw{`QB?xf>v!2;&}Gc18su{G&?iqSvq4NMc1ZEscj_siNxH7wX` z+_-G;VTLiO`i?B~_pmXcg>9v|4QZQ_tK#D`>-Ju&ZO8RPBRLJJ3-2S;Ue8?z{{-p8{Xum7g}97(egS@TY9cv(MB_#I#0YuZ z&GBCa?)h07w%z>i_E__rxnCp~M8NIdt-vp=`8;9_$Om_O1E*Qn5c=ncYE0{iebMl_ z?Mh^_bW(%33ZrZGSG6vLJ6m}OxSg3zXHj)Id0LnC8iVxN>|x}ct+N{Evla9&Qrg)i zw>ba^l4Z64PiXY|weDUJ>P{)R^4d<5UpHp+13fSo5Ylg~X|J=5zZkr>0l2fFPD?eH zaiZKgfYpQV;nP$x-G5m5dWC=Go5R<-J3~(lRbwZ$*Ml{z2}X&KB3nHHVz(IWB&+eJ zIT@aByQcWgbLsEzei^2rb+9dL5=_wZf*f&^j2)2>KGDG)6vHz3fI((Y_kEE->g2Uc z9H(cN9g4xGM(qvktI2PMc%1Xf zB0#Yk(AUt7Zd8rr@+v=VzJW%Od@o!sSsHg-|J+0}m)lxZ>KhZ2s1H-4VUgylv@}b< zu}xow7x8l+!UO94a{va;RCl8pQiJ5L-E#AKkb&iiU7Nsd&Nkvhvqpl=p7xq+@22Gk z0+~w1cXB^ZYYU{n0Mxa^{6937TEB-L{MlPFfLDe-I{9!82yMt%%0<;s2f6cJRqw~_ z2o;}F%}a>a`f<SF6|?7!TtAtvK

VNymn0Jn4_FJZd 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

YY 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
0JBcQpBzR3;F~UU)KKXZO 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

t_XqFX|nlQSNwLaK!$rB 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≤6|w

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[n+vdclFHLz?RFRVx9|a3-lh>&Pg1XmKMF? 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%0D4xaWjC0y1KSH~t$S8}G?XvTfpE%m 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

J32-eUz7aV4jO1K-^r*H2_WGYc&B6=DPna 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Ȳr&E{-v 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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

{Py}=@yTm)RZNU5_W(D!&4JOLKa>R6J%pl7lzWU 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 z
ca-@c;TWuuQn0{cWfhy!4Y^`mTNgW_s#pE%Zvup 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

#=>*RHi}{k{LFyZPTIr+$z?AJ8F?d&KXc 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�o1dgB|q2o1so@a!z0om+Ct#Y=&N}?DjQ_yE~zvIamJ~Xe(>cNrucccG#guZ?L zNdM*jaDA;0XukE!JkZ&mHB-37ZNBu`%FP{l@R|anYpLLCzAgUWlgee-2lUL}h+i(3 zX9q84u@^WPmz=KOXkKWjoh>~=tiodH4=)3p4oLT#9v>81ZTlQ+M(f6Hf#16L9Wh4`p4`ULGrUrH~xvh?5(loPNSh0g>3(ih|r~rBRuK5(oH|g)Gep z`VQ9&Lxa@K3>q1o+Q(AKR*5~w6#Ww2*DMqK-CMYFUhMdPx8KrV#8dRUkku%yKP8Y^ zmf9tDw7nj0>wV?C6(d6&x4OjD=mRc2VHm3jAyS5_;k?0avMsG3lRpVrrXUfIOQ7EE zKv61Y=)}PG{2ur^nX9|ow`d=z8T^hAk|1|xbz)>i-C1PaxbD3=WzYoLUCV%P@@nmz zcfMt!41TjWv@>V`x7)j5=koJ!+D^KpP~CiywwH)3HQnv#aURR~VnZnFx&aq~)wGBT zJy!-RGd9cd?ZpCG`!_I4gOKRTJ;6`6BXa5r3L0{?zg4YhY~`-sR&}f6z(a5)bX6zV zS*pgDzD%X>x)zXTFK~hVp+J$}e!(_nzk~RpAd{D|JQ_^A0Krj_+YJp1VcDvqKM#d8 zZTVWO!wW95h213yUD_&)DpUvft%X>Gq?BE)K3gx+u54Bgh_ZJk6?BhZ4hBEBF2T(> z2_03{Pbt#9N|)p$(wby83M*|9IC{BpC~~q!c+O^edJj4gkn8z6SnJr;6Gc!Z%#LP@Fvtwpv_IS(`Gcz+gW@ct) zW@e0;*Lm;T_wUwUTU|4yIjxpjSGsqmq@L5O)B$eD$WzmOhFQYR3N|+*QSZ;who+FG z6s&F`Nj+i`oSPlLb%ya8XISpCyC@l02BDeU`_hC{H#X$W%;CD7g5)pwe2{4#JWEi6 zp}Y6iSYI>`jI$e3?OIffS>0r%1`GB>On&6^pqnGURg()}oR({8jEI-q@>z#>yNh$Y z|3MvX3_$9b;*iopYwGRmj)&lrZ-3vK$@tFTaG#S36^YJos)#>qD zlOZYkcFQLO)zkUO(@lG;!|3`C^an_pe_yt$_`_+*vo4{!{y^q5c6!EQ8MPYsnLVQ)xU#( zT029g=N0^fyS^r~Jv0txrN>6#-Ha1u6)wv8_n)ntA2^q@6%fd0d^Uk+?k&#HEvql= zcaHdtj--mYa`ZrBg#&iNeao}(_|h^*twu+W4J{k5lTd}EHDF9xg`GGya+DxvxGe<#p7JCfAnv39>F&?@^^vUI;7(6Tb~BzE1v zKQlhVG~ICDm#dZklFxuz^hYJcpE^~|f0|nxJ`R%*2!nJ(mnsrn4XI`%m(KojA3M@c z!u?#YIZg1;saikNfihf4L6>79xK1|ZlqHPvw$eR{-wwEy-9`}a(~u=6zOq(%Mm(eA zhgp=}4)TuPs@~l5*WWO0&)wSRDCc-4aRoS4p;v4jah#`uhh82-oIU3m$YV%cr^;1l zQQ$pL_(5c!eSx_K9ZN&E!aRF-X%z-t8{%<0s+!bV^6##1|2+RhsTGx)9v&+FnYdN1 zxDyK=Vc@Yge|A}P&$li4@FhU5l{=VH|LH5(Kg~t=boWhRKNE{>ZmbnG ztapyPKb&+r3;DK)TQ_q3U`FW6&w83s*it*tlC8~JALW1ag7e48N}4XI+{vD6>8fI~ zBEKNud3knZNnARUWvB7BhG!P4ZHFsA>`K!^nXIMN_T-chzI72PQR33tmFGf8m^9O~ zL(fDFz}67h@{`JpO5b#W_EIs%H>cE?rsRHh#Zh_2{yoV3-!qefJ`PJo45ic=ePzoEld_}|kabVgWjM3s(oso& zm|HBsb60LuEB2VoUGvf>JjG1}?;@_YM)(3QJmn6rS983xF`@JMp?O5RF-MHYod+)mxds2?_T;5b%0_P#9=M zoyA~3-Av@k=8q?q-khD#5$0LHV?-EmPBccG?|+%f?-@ z!~6fVG`o2GI~W$f{U6b%?&0PsOU8cxKg?hk-DBL{1Xd;g{zn{fNAkbem)z03{v#LC zcN_2LmUm^eX#r-md6KS0iRSh#i{XQEUZv*e^JbK31xpznK5O`v{YJ!?D!fl63Jyr$ zYG5HB+rz;4t^&y1i>&_c#D0^(6d$K{?EQlR9cLpGq-MwVEDps)#I)RIH z0gF0;>^}n7wFBAd0@!r|8-D~eS_j$^WmQijq`GwA|Cm$VA374v8Xi;JlH9)q*6Hz| ztEJzcJKSDZA&kVV8Mu02Mh?2nfg%w^OPmrwCA#BPVSoEN66*`xbZi$nn;5CN)7dnxh zP3)7+H{tSn0Brn>_I8epr%ZqG@WGJ%%zZa$|B5V#4QT;JBd@LOy4|owe{7XJeAI67 zS1qJ9T%E+vU5wd&Mo+lo^6^f(v@HxR^bx3f{tF&|DciW+dwZNQZHs>4(9xv8lf87{ zciDNr*x!0bH8#%r0MBCaG=z%C#@wbJd-rbmsLvPpw0Cji!p+$LIi1SZ6YT<4T|o<= zp$bq`xMD7JDs4tx<*W536KiyNLN|1zUVX56H0fL<3m7YB2z&pFzRtnukN&)W*Za)= z+}rb~hE|S^UMb+YNE>we;;xbD8Zml*tJZ`Q*{CM4WX0*2y1jRQ#+i8+8x$1rn&zCc zUv+U+|B7mF3@YS7lV0XT9OA#M222^kYRUK2MDzUESWxd}pS3?Xg67foS*3SrD+zyK zzTP?kc5d>;ZCwnt@??^R5uXjVd9s}kWvPg;d>oV+2wK}S$!L8jgbRZtt` zJj(g0m0+HuYW|m{grzf5YM}fFWi!A^F&-Vrr-Ul8p%%PM0Oq!lTBKhKmYk(g&Jx~% z)lLCh4i;XaVkefI6u4#X4DLUOY69rg7-nDREK6`Aw8Hfzv0Oq5fddZrj!i7uGD)t@JWD+$))6nSK^b=#z6HE z^YjZ!fqBc-%oe31tPU zfHO&iR#}H#;_3JQj;BrT>NRrQ^T6-EHd?bH`K{Ssv1u>4UUtTg7WU$X-$6K3QRC{= zFZ3;c9Q#e5>aUPMOB>d=Q9w&S3|#1kzLGmv8apb%sAPS=qQ-6%A4=YUc64mF*3Hp1 zFa1?mEQe`WjbR3*y+Xt1N8}$Wlob@b5N&FicC9p?9bTOOF465D%*rxjJ2>5mb_t8O ztMapt*C^tCQTr!re|U&kA-d^oQwoE=_EjhGCVyjO>%~#r$Y=(TG2rnkNR-m^=(&r`&m~;&-?`)~=f4BektoLUB+p zI;FTOi{{zR&247ekW#(p7Iz5P`OM3|$DT%udHc9-Vdf$W4EGkh>AEbnu~VtCblTZDh3F8Nw@X zOlmGAzPUEAe{(fYIvEUq+4~y@8YTXCP;Tbj<4$E8u^sL}Fu|tw@RNi(P~iY&bnlMl z!hK`*Y0q--L<*0(!Woyy5r^6}Bj*EJ0p3-+2_o9+%#T@(?@92WW$%mNe87?8UzA9M zdGd(&!z+MGFWGeHD&Q-{!eUkyZj+bh!xGp=^LAg&FU z0a9dTm6-(8Y5N&orkE^&@wgZ!pMnS^KYi2KJ$MA|LVi^)aej8*;>6mgVD{kg)=|~k zofe^2xYeCBc&CDc^Gg%eTZK?p{r1?i)q@tkS4CYf;nQq^-sCp?pniPQ!#%;rVlFaZ zCV6nh>fsIYWz{&&T|p~oW(d<*U`8+x=JO`v;|8sB!R3_?47@+JVfGdd6f%$253N<*nS@${Zjn{>1t^+)v(}+e*A(8i1A3 z*$;?{w&z|NIPs(c=;|!F6`!12a4*H5l;4&W5zjxgqtdWuPUSFpLcz^FkDG8WIThWm zfEGE4WK8nq-r}`R^2nOW&$YzLm}UC&zZVqO0e`~D9uctyO?BtZwKzI&`7Z5{UzQTE*dSh~T ze}2J}(_q9ld?I!n>LJ?Vt0Y2MJT&=~8R$5FzGXXcQ{;{dm(Cqxi6XWpk4k@Qq+oNAamC=mCmO;wqA*|DmqYe*m0i!MIabYV%xFqvts>upy~BQYo|F) zYqZccNEnC(&aDV8bu-{A&Xrng=Ip>^tZo$%sSw>NQB+M;+At@9&ciNi-3gCP4LoPB zxq+z8Ue3FF3(YKTc~TLm`NaZmXV@{0V1Vv1SV?$-ot_$N8(?Z$4KGf`vOZptZVGjT z?_fIrJrnoKC^h!Kj98RttBP!58%Fy|Gs3=?{*71&uKL^H&suW>Tpa7iYOFJBgvE@A zoR&HFJ;5jl-C+Fcz5$aO*k@zNu};QspGZeS{YS)s)1Fjb2uF zO0@EmahK<&=;wL+pZ6x)cEIe;*~L5JsXqqQ$9yMyIfy{{LmP~rW;Ag<#mQDe;8%D} zV2)idcL)tR=`i0o$zWaj9SN0IXaxVenYM?MDNC4oJ98KWhK~X=t2N5aH?Yz%Mz{ct zvygyP)Ty);6la`RZP0?%l*M{l6*G-I`LRmTOn?c7NV%xFWN1T)%~#98n&C?KvsMlY z?sTX9-}7;d>4deU%0+EN<_&n~HTxT#=QPWcb;7w%M!yv;8jitDyU__tBUsg#)L=DS zC_pncURi6(6hUqy4 zyTp9pjPZRoI8l`{x)){~GGvqnN{%D8l&B~GA6`kh9fA(v%(3`+pXqrJ#* zW=GBmtfC34z!(k1GaK@bT^pzSC6>}x!2S?$;7r)NT5_cPfJ3!VrZ(Oc^E`-Xl^@{NtlXExf>-ah8l^868sRiOc3iJ{zfvdi8k$vrsa zQF5c|ww27XLZGrl3}1V*hn9PD`c5}qo1rY^#MU-GN(*`_p3oYRVT9a$@ybgD`4)iOneMt%zN`|-~(jU z07vXg-w4Ykf@A-s*ZtDJe(6z+1#f=!{Fh$%pC0mm>)m~(A8G^`bIm^j+By%NeDooZ z>jZ{_ksAbjbANm(*nehD1g{boAlQRlzz&YizJj9%9m+S~TIn&+{TVm;FOLexOh44| z@N=U~q*(mU`yx$h1&-bSW35mrHB| zB)@|*+ytKx8^`;Ue1N7nMt=CI#T0M|sD5@YW8@_AolH#Jze4llMTwWZy`B*Jl4O-9 z6#Hyrl39!mof31ZE5G|665b(eLs+}N9Pz(ElLQY%xV=Ejp)$)n`M!fgdzAW2w}*fD zh5wdS_*@tH1lhk%VU+*urV$E)C9d|_)}J~jX1&Vu+0Nf}4Jc*UF!}73elvK1UfCxu z^#Li;&j0F*;$$LvL7>|Rr8?MK{^iO*@`8}-g`IHxr~q|>!OUN)RLTKk=yV#EVrQl* z6Av?mztW|Hp-2iZV$P4`ne-{v9&qpd$oX~3eV8+xLFQj6hFUd{j)cWA%5_9R6mI}A zL~Ux!NHp7}xVi2PMmra$xY-28Re)N+YQHxI{xU#q9O~Fu{6*4Ex!}CV9-k$&9ahmZ zY($Tk&X}~Od@ad2jO5dlEOzlbeoA`&8Xemr@>ueyugZP{%#9c^MI6Rb700*@%G{c7 zX*y7XDr(3Ph1b`JDoSjpKR3o0lJS+|Ezf>;`Wt^>KPatM9}lZVmeg)ZGrG7}L%)Hc zbhz%rR}ZwIePk~Zq2R2ISysH6{XNLFivsm$0&Malif!^Gsw-`mJHR6+rpYPp1x=n$ zjL|k!i+#$!P z%lyGA!VQymd-Cm8@jc4gPKy9BCh~6x$i@)cc8KKWZ~R55jK5cluOx4ms7^9nw0_&= zC)$?Al^{aTDho+Ypx(T!yorg6kF6w*DZ`0K`~g$+X2)6O=GP=jF!R^2u#JMc74?*) zPf}BBSK1v$h@#RWFviCyP;h7PbX1QYWj{6|#6^lLTBS3k4cw7Tg)30+Q%+NsA5eBI zDUxwkA6JI!i)Y4^s0sSR`X?*wkMWUuYN_J?g%Zsv+pJ0#^}p7a+*flvbuRJ`Y?8F` zrhiftFzKT^N0Gtrvn3U7D{Lfy8gHv+yGlg9r+zSnSJDr`C%0fyJ=v*O5e8ojII=URgO ze64_eo!lvR-YM>g5jP>s?Y?mSx%2`MNrP z7;q*vs+eV);{W-kxHWo`^d0$by3Dm=K=N5Cjlb9vn({)yhiQtNQZ@=SOG;9NW0p=e zi4Tp)%Eg#bY#3el!MnbpZ)^#i21|DYb!{(b>86JLz|}R!P#R&`^n6mDAWLTxVQ>lc znK=a87 zNB@;|H4F%^T&s&kAU3-G7edCj-T7s7 zc(k_z`t2l3O%QybRQ|C5-tWdgDzFu4-Des|@3CU%# zie~vej`MrBP8dd|!-CEZ#=(0IeGPmF`ENn6yviY)t$$I)k7&|}?VX@%qa)J1;?ly_ zg}mT!qqP%7kzyN}CgMu=jY`Jc3L-!&q59&y8lY9jh|eHdJk54!f!(RK!@*_l0P@=gNUCd0F+?rSbK&N=Oh5HFd@8;BC3c`@r+4VJmnxeIRL z?=xJ~@JrdY(6(OeBTNehj2W@VME0!;M$!}5>~Qi;XXe_6)x`)`9=#|O({YM3up%NE z1vNxglL{t!d?Bh?woB8g4MVs>rU(_R8%XVy_`>qmtvWYf)75hVL=5di0iN^zyenth zsQmvXi9(6`6Yj>4(+nckYeKnyl(EaJi;OZ$2(=9@8PQ?Kc>}ABZzCkqzI! zIQltJwNRAKPVyZyfsaC;x!lfc#^kQ(=dlN#PU+f6W~6Tfy;G!bGMlldF4+6u-(!}Z zs4=zIJxtWK$qAL1U6HU-kS)wxqp&P?LOGDHH;D(oJ@D>epqdQtax`K4E~nK*@OwsG z&ksm8`^^OVG+!rBL$jS-@<%wc&C2(-l04uoE)2NQE)JORkF^FP8|g&e#aGjZbObp& zJ7k49*OaO++VKA0m1WKzR?UtIinH&H`IM9dcrIL~qMG>cTC+D5!~zAO0C|=!9`Dr- zZ)LP=!E7rxmOt}*IG9s(r-_z$HK#wAQ|0r=o@k?jjP1+rqv9x2_Ykcz$tC-4XQ<6^ za!Jvk`o8b#HJYu#GiUBOyKvmDEUgDY$0oSJ$uHyVQVgX>vsw9DFUVOne_)+kzSG|u z8V_~Iy$byPz%Y;Qb&o8Wz76-7N7`k2M;;B5|Fag!#my~d*xpA4@2Jr^Zs%GGXOdpp z*_W4Q#J`{_H2a|9l@FQYiLq9OS)5Za@%yN@!%1UAxN5C)jt8E!XZo#I88N%J@l&ub zdCd*p2>0@3wfBaR!j;?h@K_Km>ief5llji%_@(BU&yPBz#~HchwlivL!mD2r%OtaS zuxlvP79B%U%fm_J23MQ1y^YhKbm;6QhLOV!Dlzr%`C^s-gKwa*|7+k*p%N8qpzc(W5*d(wYnHVP}KF8vcEY*}$K6F+^JnQgThea-aKua5@8j ztjqCpc^ZQ~is;O0{Qs9b9G6rETF0MBu=vU~V*9JK600AI<(bP#8WXg z<1i|(mkEZCo*q`5aKZrEIAx!}K^oN0c$)?Y8FGust%)tIB++bvK{7S@{5o2r6%pPWF)wL|T z+B86d%CI2zJOTuB^WEkn!rlK<@T^~a3+|N~*Bc+%c5jRVy=4NCnWhY*vrMbTPV1Gl z>QoNEflzm`>AymeD9(&OTpzT8@hU%Ht!{`=NBI9kQ!Wwf*e-jl<3`C-5sfwbti#@i zSn>CuTt19&6STWh#On-Lk@sd`kdbVa8>O_aKWSeDOin+V(E?jF1mdgK(K2umw;o3v zF6t!*h95Trf$tRMO`BtMX`tWKT}3k=!(hhQWA}PE$tamKWwGMNU4U#pOzP3gE+}#8(cN1FZc-8sn(6s^hGM zgjUS0V&o-rtaW!~nfGvYga$S`y~_*I-f4j&?SvDrFR5sPfasZwJ3#7hp>|fiZ&g?D z8s56}m++toP1>CblCc#^>WyJ^>3?s#PmU53jmt0+=mw^oy2^+Md-jeJ&(&C^4u8E9 zplsx4FA1=o3G{dzY!@be5lA!I)bHByAmMIG;aSUzK279WR<%<->Kj%f*X*s8C^y9E|UqiQF){?6>aGP~_bDht>5QAu5 zRcClbnbx`D+{8!49qwD2)S7hx@NHKEkD*)yIV7fKOR>~W;Np~&o}fp3g?IQm9Fc;XCL+uMQgjayA(IXyvkCsc=8`gK#f-PE{zzC& zUxsv_;-Q-B1D;3Tf93?2lcQa-gWb;Q@PP3ZXd5WV)RifCJ;6W}YmEn35g&b-DLW)fCi8QwcW+72KTINr=HwpUb2T7!)y(hxwG~za`uDuKW$FL zlWpi$J!6ph1Mhhd9z^yU>jSQ6hki#wbDyl6LUJYU!s~(RhsUs<8|grRARRGV--9Ap z&3I$<{m!t$S;X3LK!gvMwf7f%M7Q|x)a9}L{A^B&<)``E=|)E7qqKG-2Pj^n(9hIt z3$FL(;<@ZQEZY=^JAtU*klp8)SUGj(dURw?(HS!0baiKI)|PqdNPHU#c$Lt;-mL-l(J4!*q$U^Nu=WB%E$q@0Hsd%v`pDCuwnBKDMZsRGYdfq2 z=zrlAqd&;x>BQQIVj-dj^jrdDlIklTVo6@#H*idN(Y9YnjLs zwihWGnU5nH;nVeN=XIZOi8$ApPCxEB#idt^Y3SIF0^W~?2-Ch#agQ@;wM{6skToqR z7#H-rjQVFjU!twJV5o{Em%2nBbb3ayLf9^g7;in(c*V&rq-)c4BA7b5RL)3J&S%1k z%FyfgO#u0!_rN5Pb3T&hdbD?8H1TR*@94H=(hw2D{T8`im(PW}DwcRBSZ@{pIC2I= zycv^+dypKr2H=~PB=ehH23{V*pMI$}wJ9-U=_AHOvEk-7lwpGrjJtjg_q=&2`csP6 z8-WfEu>AvAOMuJ$-%#ffUS?ADM^ z`wotgCtOcoQridH_SfcZYoyuJ*W+|qt$sSylOxg@3_d&ZN9vEg9V2I(Cw}zo=A`^x|YtneCkJ-H)8U555NwOG|I=uUUtP;Y&$3SK)1*qa`ZW z81Sc789=_Q4Fj)*W?{s8m@IX@B`R}`DG${+@qVX`0(+kIQpI$!e@iHHy{#$bT$%${ zb--9KTTD21u6@-j41@lzdXuA%dGtpB`>vAA zM>5hJjAfx7XrW4+;Y4Ay|EcbiCe+^InF;0vam)?1wc+% zbzxa1mRIw^BK>^{a_*)Gfjn4gms$jArb2cbque}7; zLat{JRz&SUYr|LcdAlO9yLm-ZS;Sf-(!9sG=*(EMCH4-6YBfL6YX@EsBkQ7z)9&XB zq2C$M8{fDJ?elv$SE-2Y%vHp^a z;I%WoQT?b9=&^5(LdLQEAt8n0x*+YOyW%+{8h=JzD<0US^6xHhL$}B)+$IK??@mQ` zx>r5JZP~(Z_5hXgzCphI?4s&v|IR)q9~Z&X>iEc01OJv9Z+E3N)G+vo7J=VoMRcFl zNcZc|;EI}CsZP7p$^t~n(XH+0%h-x5WBLyZ>I&p!FcGt20sPr64pJ3H@!zQ?n=p1r zMIWGtzPcphk3*j6cTe{;2th@0C&n^7Q81tju7VZH)ULV?QM%9*-2P(%CCH7d6)cQw z;zPC15!L|Bds%aLOgefym~pMTODbP>6!ZM0lSMi9CW|f1;RvyKhH09>T9U^*5Dp*u zJ=_Z9=HB7T2oQpLaQrQLi$`arq1(t)&V&81^TgqiU?1E3N(D%Q%u3kR1Ipxi6GKmN zWmYW(MD4#WB!1KryP(ftsI3{`TAZXlu;~cjNW`IosYn-Xld#LHCsG-0vuH$1_hzo? zBKuEWINIzqz^1u3a!lNaA?A7 zhTtHpNpN5fL=i2G%c9syMoKEPXc$m(n=qL+7G#P85v1?e1*|!+CP2a)l^q*LZjGOI zD<}tH`64AadYx!}Oj$D=*AoVJTt#vEjp$ObUs>6oPDDBgEpI@lUN?gF5J}#Cy|{n7 zWtcA;3rVvYv_)|rdyMcUu1@#r7lc*jNtx=QEMZY_`3;>TH%%qJ#E$Y{uZ82+fPX53 zuYZNyAjf!_fU+>w%09#Nxh-5N)Y?~{7m@@{he*nj zGoN!%J#G5x2!H{rWMS(KTifvrYX}LV0QV9cfd`SkPMg_8YB3Q=+yUzH!L9)Zuy!K( z>wvEJbKXU9L2bsDyOxT~rE(1RfyeI84)qwMI>cG|x4`(aGP-U#+vMhv6U6ei0p(U7 zFj!j{&tx`DEDV9dKZc~b>W-*7NXH=BIJ-gU1af3p{I@-3!1c7E705TTSZ3Eth%}0| zTA4Hdw|lUoU+>AbqZ?{3u9;Wmn)J4ND9{-@IL|}S`6T-+kas6yPM%Dskww($DUi_i zk!VvTQsgmC%@~ZLJ+Cla)nz2YS9`}~VqRjZt zFLgy(uH`S^XOr!+RyR7#3>(TM?L|h*L|4 zVoQSi8zBB171K~t$wLozD01>$BABe1P&>&1Xai0s`njqRRrCa1G;Ot-G?-qZr>5|M z(^Ud_?Bk!Uy%(xDc+aTzja@!E%43L74|YyO5%A8hu-19vXFF3eKg=m#M;No{$hzBg zmjlh>ND1Um1);4moJWvrTuCj(@;pIYRhrJv59<-IaVP`N!5*#oHxpt2sjG$=5$gk&e0uK#^ zed02Ike)Ts+~J#|SmuyRu>`4^O_HsmXEBIBh1DRgwt#VK8FQx~+Wrw4KimqXC+&`+ z1|xhnV@OJk7s?H79KN#vLQb5l(`r z@H3{O=P(LMOA-S(Cdt}QK#1Xa>H>7JBW-1B_0jL`GIrvhB}tJf?rqAkVu`&KVMBC9 zXi4Q-02>A+B*zqiM9CyZO|teZm}UNEA?QRL83&^Vg~%pZG=3u_7(kOCC!=0b#X-ek zPXcb;C>lV4XE`5-K+)Yy>^NZh4GmX#GXIff^ z0=gUQntU(kqbtyfBg&818iz@Ht~j@CMBhwLSFi`c?Fvzs>y^rMzSCIlY^KvJbcj;; zg$u(0!2ERUjJac5Hgqt*OCUTS9VcY`wLw+Bt5%P1(RZNz_z>!T;ux_>R4)n-cn7y0!yPx0yn@ zYDj2PJ-Fv~$rpG9Mg)BS3j%!nRD+ zF3zQ(wq>Fb#wYYBHZ`Wl+b%{+AFURWcwJ1v?xZ_C|0_8?SID_6ovmp+C1JO^w#45S zPhplnb@{p3&vW-8?8i&&6C^gdmIzRTn(oxH0rbRcdBQ965R07G_=j(^M!w90*cHmq zcHMqY1;plo`E|S}AoIM*NEqieSI6+w^}jm?fVICD&Ap+J_E$llW>LOl*fX1Tgy5$n z`Sjr^^k>QJ<3c!%hZkdccRouN&*~8s{gVoYV0>J69=a;!KOeG-e<-1+J zYg_%IvPN{p(VHPwy$ij$T{GO!DpU7!H%=(uQ51@Mj*dv+&bIWzC0L?zq4hbWDZ`f?r&>E(lp+DV6EIMr zAT$ur5`xWMzvc3_4N+vw;;py=i|fJK2qbzkch2Z?cX0D;rW*u7@@^Fr{a!Fw28Gmp zIahRaX#_e-zhXqEwi{Ds@$vlewt2EVxoj6LqnqMv$?%PK4{d6w)3c+_Ayqo=A{GyR z)}8vzMC9*PxTrXxdRX8V`2aVombBRtz3N@ujfkwnG{*FzCOry3r6J0PM17tP47u#a z`TO!Hji*|gEqwSjdRq)nd72AImRH{)BamGif0C4iQYexNNd%;QMO^4Jv4Nl`bAY1) zmg-G^*cBTa;piZmEA<*rjh3QA)6F_UCEc{hvfs%uAvL$Y8?hbjUGynTBmx{2&SS^FURrJ(J$9C%7U?|CYjUq3n9yJ z_MF2GpeeH5IFze9W^AkNAa~^3uB@uhwgN*-uhR3Q# z77>szeT7o~XWX&w0B7o^wm?=E0Ldq+%Uc+#K^eO6u;5p+CWuK2${@yMGZxZW^%(7w zpK!v^p(lUVW!1NM_4}$5x~TdpG=?BE6a-K^p^Oepr&}g~5xOf;4>?N6Z%qEsIKwR~ax`t8t8)Kwy_ z`4O|LV{I8`v~B(s*i0#m$9H3l^V_m2f8{WJ|B8T+b!|OB06{|G070xi&5f?0o9b<} z6AmCOQZ6t-N}2+C!WMx{((_{|CfD`ITmrha30&PcyQW;EtwdNoC^8xjP~PmqZgeQSF&)F=bjiNRyIByxKOG8-+CZ)d>yCqGwxOyzjKZ;r{N zdt{SGDX{G*<<|O_%fWF1bxpOmc!5TlAF~15@@9Va#Dv-#LkV}GRO-WE^&EhXt`ecl$gV_h6LZw{Z@W<|I==yit76?Mg!Pa229mG(} zQNtbtkwJ;we8gB+HX8#fUena-BIaCGxqEA|%qu4Z@Qsm#L@_2`;{k;WUlVl5W*DR? z2L(senHg6ZEyHZ^2cw<5DTuihG33#zZr}ipk%uhFm`(jr{8;*mF>h`nHWaX4a}Eh< zt)d}Rhxc2Q(K0NV*lZpLK$JZ453}xclq`N5xC}yyxVWS*qK#PQsn5?dVRf2~%{P{U z-MOCV;k6ma7=v`fYTNJ`%*yQQR67+yL3Uc^;T#7j=YV|wcEqb|gI{B;#iJ%pb$Qb_ zhBA=dcw!#zBFZd3st2uUgr1-)!A3F(@Z5A;59g7(aZDJ6q$CC$4vv+lEyu$6=Ren9 z6A3@c>^u*eiLCMSYh+`g_`5_f_Tj400c%sF$_RkKEaNk9&bpi>w zEE5q_5Be!~Fn@NVaeN=}%$_nHjV$(;)1RI&f^8%jJwOkVo!qv!w!VkF@YLNsBgHov z{eHLZa2|Pv@6^(O#er!(%BS)5+#22HVIwt>ZlhE;)1E5qCo_)u)nnM6L!xF3?t$XB zEfGS;iRMW8mrxVtN{h=P2r%s+{EFXv3;n?-VAC}JL2PpeqSbz}Mzn68zM+>Ed96Su z=}q8|7N&iPkaU@F8>Vz=HoNh7$N8J#c{c=B--ZPGD{4bzFcwSfRKCGtcck!kD-ke%Hgrz4CHOkz5#sf1ux#=em7yGh zJz*_}EH6Sv1afeWxq$M;+l}j5dih((Az;7(XuVf~Lr$EWzRi?ag(ZU%Z_O z@esi4!CF(}!`oq8pX0?-{OYv_rP^lgPchb)JHvj%Uv<7Z@@dOQC8H7euZC_o#mUth zbneXqPP*hz%mYqkczxo6e^N>`pq%=r(?6mA4kIF%BEqo-{h; za#BI<@)4uQizJHkQx&z15fY(G=XgCC8IDh>@==+>U8fB7Px3_Kb;6W<#TEljFQ`t~ zx0*cW#rS5;8!eB9yr?|w!sp!!KK*F5tp4UcNXI`woSO9-Zjoz&kW%dXa(5D>@jvAl?%l}kri70XuY zbotDv=L;HC>78Xins1h{3F~s;EzIf`(qu*={lx-+1gF#QQ^3xq46g<~u;W`0Xt0YwY;}3s^W3-vV(=u!k4y6` zEY`$>-w>|AE^7|R(MM&4WYVSrODR&5ftHm<)X=*;wdmCiVVT+leD#^`4c?LS=2L!e zv%EG6-xW_4+5+ zoS8(qsA&QI8clkh75006+I6fiZ0R8CwG%=obE-~*wBH=?^C0;gxv1e+Iz=;>HXQE{ zy(MVZ7j>mzc9!quf!KMv!C=!}8>%ji!F+mjkx5~1Q&9DYW6)O(79l!^ z96t|Va;MiofX8FdKODYX{H;NFbHbYu)$7WSyHoUim8saxg;DA({&5o!1$&6*xS8v` zb9BplYS^q7awj@aSEvO1P9&VTP3vRd)r>Ekn?f^h4mo1`lNpSWt z%f*GfMVw8z5G9fhMMy0q@+fZeJVimNOXY{~#d`(RIot%)4#+mbE`wvdM#ldVxTA zmBE#Q+!^?;@>;Qm-n5cf)lLt7#y8)Nkj9OfZ36tuy+Ls2H)hzdi|sLpClmAg3NuU5&h> z>5=st{P@q7i9uXxrVK%kp<6zUL?e65VC%lhHo1At3s3)`^2whSn2mB$Bensyztjo~ z5kT}UmwG7B%B2G6-Vex?bQ2|7Kw?Krf6_vRD63H_(Fq#6sF1Zihpbzf)nL@$?Fa#ao&oWuePHHxSs`_rv^z*nlkpCAFzyj$xrAbP1vLtFb3J+ z)I!%Gs!%L6aSQ#e**Nw=8ONt%`!3wunRbiOhTV;&^~cINQ=+iFPHh8r^t^<^HvSb2 z8JpuxfgIo(@Zmwu`CXH&a8?VhNQX<@GJBP~WL-{7sz<9|y0-Iokic|abF&`!vJ z6zw7s2jxe{o_lhO8iTbbf=5T(QF+w^jTasK^B+qX6-0f>=5#N9(8ULfC9=-`z?bI< zV=la12VhHq4-alF%d+QQ6z@{voP3Kz0f!1eKvsvSNyR`G8-(onpfh=pZA!!iu`SZQ zYpf}Zofd~l_|w_pXPWHO&Z+jhDI?Kbz&f7xcuB1TPGE8E41VJdUMq?3e!mVFkv%{t z6eb#D+unk({%~>#m`o-Eiw8foH|6{&d^mPaOfRxrO6a_HkJ1;lLiaqgJ{B{yc^p4S zozh#6@N0xCaDP{TDN@-j!Ga=Lj{pqX2fwR?w^J{tSM?q~{FC||n{9jBZV!85=n-Cd zxzyX>=Cj~!*J!Df+;4ru;29FGKFr7-fbDXHLx##i8pa(&GhLeX_0V5n`2m_$ZAS3X z!7Ea*J9LMjyi%HF0DB$4m;dni7a=x+c#cKEq|7~tvK!n(Z1E?R7FZt_5r1xK>kDMv zk~LU9w6tEav-jcxo-51uo1`PYWr-PHi`$Kp4%cRtSVu=akgzG*Y(#YeD5IvpQX%GuVODO&46VWvAIVYufjx;ho0`?W?o>Uwv53Q z&;O$8oue#kVt(Oi+wN)Gwr$(CJ#E{zZQHhO+n#pcp67kn~Pz%*gN6EdjTd(O2YWS749DffIuw)`6|o&Rt|`uC-CHUOt>2*R3gXOwwS- z6GU7*)tBq#17G$O``=gB;-hdVzL81glL9&!1X5?LZ?Zpy;d8QriwdbRbY4PQ){NVw zUdi@Az+miu<8#7i)EWV7$hQSv?J5qsXdx#N5XFzst*RqAm90tAD0^Ii;1%smbLc-H z$4IhG2B`@y5p8I|I^O-1O*53X+%tHfSl*B4f-$TMU12z`4yQ@VM_k?w^A|jMbFJE& z_5-ovchgxy)rtmV8HQ?(4Evj54g9AI6ym;ES;?mHYwi8-$Thoo57*<~iD`^mr_Rpz#5hi_8i(c)#Aq8Y?5Qc}}7X06l5=)~?8pY-V5 zh#6XRyKiX9ut&-O?^pk<%I#ITSl;+~lGhR5(P5v`S2U*q#f^?Eq=fS=Qk|S|4l6B18Y!JF4njB;ei59FIv%F*NxSx zv8Ui`;VifH)P#tIrfEXVq(h$ug&#_omklGeI$Y zB8Tz9fhy6qb6M!yTUY)T&;}vEBMM8!5D`Opk(e@m_{z-ntim(_y#%%bT2yfvLY!fy7c#q}Qz$0^egksLQsUg)LOV1Gxw}g%wO6 ze}6ufF`~GI9^KXE?Nk~`Mj5j4SEW)W#N0tH$S6<8wxeQ*qIvZnr8N(iu9M=w3yXV7 z=@(0XarCoGPzYTbjW!c>y#4NFgO zI^_GE22(k_VXo~jld*cv=d|W)y2+BB;|0|71MXikmF29NB>^;Q9lepm!zg3g;OyGP zSWq1qv`n$Ullm_kc7U@kJKxxTR-yukQhsNK+=8~-(f^hc4@s~G2B-4GIFu*mtXXxo zt`+XsutNA!3E0bdxWAQUJHtNk8nhKF(7j1+?x@-h5&6c>mo*dYak``{J<$Hb;5t<5 z9 z6(wSSOH79CC!17IFNLLTCMu zGjK|QBbv|es&v6@86}c3^XAi!MCQvrS3d!l+&D9Rw-oaGel)DNPFyF#xrjjuuqY4Q zA-A-+fb4|NKGq*F8q(OXl#@>CNsp9wVNasP57+0G0MQd8Ooze3K#%5RLIwoyOt1C zW@q0znyB~eE?z0U8TMHP(W;l)u(wvx>wZPbM&gKrIR=-1)$CgV)&qC_=kXTx(zprv zecPWYvx;zCg@Ak1iahqZ1fTn@N%7)|Xj#H#L94SqgBy5R!9)_qy!lh(Msae*J;$0m zebj5RWxGN17IUOW;(4Nj9n;i8lc_p~VhEVW>msViM#8*Q6ITPWN_Hs<=q8Im;^8JF*10Rg~Dd#R9VSUbTq{eIk;}LhVB;)rm!!3zkU^EahI#PElCC3`{ z5N|B%b1??_rShPvQ2=14VFUy2e+N9-*fQojwJqRO(kLTgCbXt-}YMuYoV8?6ipMW zicWpUV9l9tD2vp)@}PgKdIR#aEFB)^)nEN00i8}?Z~mlbZ@BWXVZV~Q>fzDGg1fv5dWI{rP2b_LWzdCp(1mg} z&a`FBn|93KQkGG0+EFmYO~Wu|nPyQ^tb*tA93vq~?)k(HRxO*(O+qeL$syIrqZM2A z0Mtm*adXcz5Hi>%f-*?bf3&6JmV_1rRTU4J=NbW|k*p={xUpS1K-Qp?E)>d=prd*h zTF))Co|$;;n5$heSMu!hnJv&YZqB+pQW`POS1ejDEJD|tFmc*3^KGhvVa!s^%Gv;a zR!PE{zUL-EL&G48`ag^Mle`+{CKe_X19NkU0XWYq<%WpIDAt{kQ1VTPPf*ISszaog z7l*@u;sR(${QMzRR{FN&q&ILIvsfEK@zbZ~1ByvUFMW7IMO-W(Nn8?F@>k)8CM-=T z1$?5H!tSrqJCYWci(F4|skwdzhi&(;OJ#~qmdnZ}lmj0{xhH)Sr_y{?keTt+Mf;!nr>?*IVj_l9 zM|G}Zu1r4U;)tEf>{YuzETx{wEOxuU%tbmIxBNeAK+f|?xjg0S{C`d%IUvpp%l;X4 zkF===Ttsk!T$EPvFD@T5R|hx;=MY}{FU-SdJ?R0Q^0fanU>485e0UqrDJ48*k|WiII4?*?ae`5u6_+EG2Kh0{{Nj*+ z@-Mtxn|eehWoelSNIB72@^Tq5;iVdq7BEZ9XSu2W>@dldd`rs3q%#Cm??G~aoD-Gv zc|n_kXafb06++dnyt?W?YtdaQi|eGO zLj`v=k3cN|rvk$xg-*?cd^Cwb7|XS#i+>O9!5O(g;w0;!>mf3fE+yO@y6UF@A@3+8 z15fcgtq3pPJ(GixbvsZ(qz9blMU);WOTf++N0d@!nhX8rV*=2Cj9EtpPkBV=-UCij zD6_!d&ru?x`eGuw<~kLg=jMfp$$0!;l^9TLf$tp&DO|e>zFPQ3ahcv7w~v<4gPe3a z9^l6S-~py^=?W7tI2{ft*kZG(H?{#*nWZUuiOpPW=Vk7I2m+=Fa*e|yeS&Ku%64Gj zP7Op@MBJHc+2tEC#T}S_wU-(7JQm{Yck~3syD>jO@HLg(%{|eK&eqe9DH63 zS0#byANK{_M-%g<``MLUZ=6?#j>eY+h}8uGyZBm$o1LAbCWNI8yxqOTUDu@m=oSP( zz|@LVt@t!ffY-Vq7OGu?2X9J)*`Xs3EaV@o8jX5IARiLk6+tqZjeA(BX&X$++n0?7 zN~Dj~un7RVHD)v6TPm+TKk4W0xa{o3#JfXu_M6YPlIN#_G?K{;R#V z=r1;VJH9vePlSSx>qj$9dIEYhPCDk^R1rJutU&a&fn0Qdx>%I`r;U%7j$vphGZ@T} zj;XIFAKCj~{{CdKs9QtXbQoaX`_|<;dn9Nbk;xi zB4{1=Qk=9kJmY`DFa{BDj)wz<}r#F*hgME=vJNuv;MTdj}( zL>|JK(d=NN82yuM&Hwef`Nu7y%*kTvpCt2rS*`y=N=la2{7K60kCmhGVwTXWvgn`W zrv7j5NB4hn{crG}(?8wu4UY!%i6m)ef-$L;9}`ghlTQCE!e9Sq5sH9+fHH(M;|EO1 z*R}qizQ#DJsBm+R^Q9XXUI=uK9rzo#}v9bDPki~_a$efB$h($(Y<|dum za4&q6d3z=C?*pp#g1hPp`e|=YOx$+NgUY4?`+=p_!Rx?-^#g(W=cIVUAi~?0oj*;q z?;E&n>#84Dn$^$5b{MN$lE%qxM@UR1Ifbo$EpAIootM_$yB0ckEH#3TmO;?T#Jjy} zHR45js`qQ?*wRir!OZ%&<9v;>edHUbY!%*_M_6pezp+pJa7~H9WY$DR)LZPDFG%f7 zhD#(aOt%^U*DlkVRj_0h-k>V)OhmI7S4i)gA*oqQM6(cE4b|0IO=Wt==;`TiG z>%mfi`lr>RgC7t4ES7;{!{f}#(}Vq>Ba`AsPb|iR4p)R8wjQUjt1S83j97p6UjcBO&;$ z9LkSNP-AdTPRBD;*!O~*0D7Pp=|6V_?ebZ=`DW2}2k!N`@yHkl_lg2?ewm|SY;fR9 zFno80Rl%>`f~$;vJ40Sib3s!0{}>2G4;g(l4;>AotgV+?HJo;4Ucu z8D94vF$RdS0<(uS1hjK7JeqD|OV*aE4^gI7_11XM4P0Y%nx!+!VDbe1v? zcYyZuNs;e8M4Qw9NQ6zFAywq_lt}~Je;7xG?`c!;{dkrDxc^NBGHOc?VU!xVG0B#2 zg$}DVNQcuq;-prqHh6H+hJ_gzFd_WGzD`u>NTa~!1HDy%xcwO2!_jv9PPN+jnCueO z+yKxq8nOj~+sKjzZ0@=w1Yb&sr-X1VOG04nE+&`+xQy2DdlKHb+E&(*n8@mHSciTry>e##&`rD35XxTt6gLnysea1dKB9JqCMr6fsA&92Afn%+ zsghtVR40)~D2(a!z_an@v2jwbEKt1W1%3%mnA=YYWrnz+!4x2sVhl?`TEuA%F9u^u z8zK!l49bfu62(~3bw=ZU;lzqr3fD#!3ga14>`Hq^<9jM%#enr@3{89YB#OUjZ2vD| z%5bDN6i*IDktoGJ$$o24CpUosk#y5|o4|_6HdeBy&6~&3>~B`8&>K#qq&=#P zND)GtEZ3C9bU~~n>{S&wK8Gw>idCv6uta_&Q%X|Q36Ug-B2$WG6BI~+7eS)*11Ing z_kRfo5+zs_syv5W0f?l5%7nRjL5 zfuq|Y#Pa4eldiz>(wZbW_H+Y?Bp?*YpZBAi5KD!Lta%Ql{Xe#@SDaXY!L0!VJJOzdt#TV(+2I1F#webK3?NAt2tuNrFxWH6=k8NV2LstcsF5 z6qTg=XxnSyN^rAqVN375#7tkfgsq>kxb7Hr*D@US|4;HQ-Y}tPDUE{vdlTq-y}Amz9Mn=syYFJnnQ~x2`gz|YZ3Npb zs};$E3v+MlZtsyHy8prqi>nEH{gU&j5{sbZ67ai=LS3juu~f2>>TctSHl-oW{YCTX z&zC1h1drxS8dSr$aK-DTLw%vUUkY+4`e9F$2tWG=7rJ~Y^~Z2eDw#;a*dsQj1!Q9W z5i*>2%j~vD0DZia9w1Li!0YB`Mc{9?!&#rf{Hu`xrb#ZgSIOPaqRY=B0v|VgpM^5H zErV6F4q18|6q2lZvnp$9=SI}c(B<`Rc~Q&0ydMT+lg5DNBx|eqTqAF1MJ=yR&vBo~ zVkD6#lcr$9&RoJrPfs<8270pdz8F1i^U9~J<&}s@P+&t;K=2xH0=xGlyh4myHL^@? zT04-`vnR9I9{gEs`yFthU9^)JGfV+qP(h)f3e)JGkXsO>Q?NWS?W%_qRMKr1z;7i^1a5{$5J23>vwJq?eor2-)KB$zLVj{9k!_W7wH%O_WsMDG~ZCw zm_seY1Z-ravC!GDTBvanmsIiuWy59fsG3NkO=OUo3dW>STmAnhk{V%5$~*y+;6;*Y zVfc5}#@yyce_P-LBZp9?cNA>(*1YeRb_^gK$OJ?J^Z{4WlwB-RR*3#!+H`G-|B=6V zuzmc9No(f+!}I;&`45`3#{XZQFuyW~h@|9sWc>5HuFNzR`RZgZKg0aI;fmj!#5rst zdZ#f$XAuL`cCU0_T)-6aC0^`w15iQI5;hss-KAK+39Jje*vZDihr2-w`m+LA z>?(8c4gSwa3DI*3t%?J`{l2O0922U|3+JlpeR6**6nZn=H6Y7qh-TS#fs3U87*qy( zwM)gK|G@r!V8fzupT7T}e)aO&UAi$$yJv22=#ca$gPpZVw1bHc>B(|>^{JgfE6jzQ z*WW!Scp>1=(Z9T0FP2hZ3S)}9hU@$u`#M&TtneCc(;EDm@3|34eJjDf9jbiNEXD-x z2H@<#X~x2ehN+ljWTdoB^KR`8)<~eD5|9>r)yX_F)j($i4h{z&!-b~mW~R|BVBVTn zleE;gYb-Oa($RhGStE`Ny^M|W_QCjqL6*y;YKI( zDq*16puS=fwc_@FsL9kCk4d7JRW3oL3t-DSbJxovdOVMZY7(nN64QyRp<2JZNY}m& zmo=^Q9m_Bvz%#C{jsQqk;y{V_<~3C^W1GW(4dd?EGrC{B)cBY`MJ#W2jhpEIm84-f zQb{7Njxb~3L2^;lcw_BW_da;C9P5Sifd8)N@3vdof^xR`Bi%X<5bd>9m}bnNGk8$c zOi>PS!A%8)?vxH&`3IR=54_V!udBxrAfSp_4~j!yC6E<5*=!#idr0XXPNcMVJv9|S zHkxFagi1!?c=!;D4+pDFg0~Dg2hf9kduH0 zshuE?TH5s;CizJ%rz`bo6}nLHNqF)^INp+hu`H~727FCo^U3eHZf9HLd4txB*LshK z84`xl9n>PsUa?!53yx)`Fy6A7)eu1zo{VlOqdxeg?^u6@c_E`NkQ5v_^;BBD??LaO z_9FdcO05?O7*gt?xN^s>)@{{!>b{tI$E|B?T;sysV|+dsEJKtprNy+;%JqYB%%(aB z295=;gT{77ZRPgGG=58K0u#py$3=TPyRLliZic9%4V9T|mFu#-liOMvsCv`A&cDZ4 zdhI|SJgCjr5_wRoHynf>P0p2PQsE3jc9s-Q`+c2ipw&?hu%e4_{juWl_-J!#31hbt z{uyAm(=P0x+YO+pAdwya@NT>F*W287C*ASbcBkC(&qdGcUC-8r&$+sVPRyHjUgiN6 zvLR=~Eq^}J?F z4=1-!g}isj<#4G&KbXQ7!2lFWc}`hV)S|XtS&MjxTFQ<`PspG2i9M?&g~Ow8E6ZqJ z-*wN@8)2(V$#rbA<+@tj{N8f62;@q6$Rt315cP7p)LB{5eBOS!$3w>BPUT!2iQS{ieM^+BZLLqZt$hkV|`&?P=GrnWyH_AS{WYX*j_TTd+QBdDJ@ zdt^ilZqE(SePC-$0w!t^x2I|Q$Cj43G~|3!Dt`~Gj6F(njMrMyzoyNIYFd^r_=LJ5T{>@MzlyMb)&^_^ zScK8?k1(nx8uOTJ6xshALyYKP;lxwYhSfU=rkaOY70k6Kk_JW@ITo5>E6*@8v7|+R zXID0dWLI9|$#kA2JB8R0JVbh~B}?Xx;FO2tva2+0PRUb_@Gl-D?AS;M3sGF`g|0AT zQ|fzSfP8<_)spm)oU@#4+2kijP zS*cE{OO3ZD!(U9ACX z@`YuZ`f6dVJE{uu%5=ZQ-?MY|)RP@9_0@wFb%Z0qNH^vR^4D}K1ImlPVc@EM{8I**ICD^K!|c7WxXe&Y@N zE&FTV)(oo3sI_n-{i{o%^7%$NitL~XN)!FI@T9aLX~+swePR16s!Eonn)sloj|@^M zj}H#Y{11_y0xGLknJ+4<-%NX^XSG2Mwc$XjsLMae_==>eWEae)s!Ttb?8gjftFPsz z4B-7Lf=b?J9HY{*=g@`hvGILssJ&f`Wc$OnDUG^JlJpN>OznU1DgWWCB>q46lTIpJ zP@MO+*;JQz|4q!+Sy}e%ts%WOsSj#1O!{qu(`vuE+K?Y5)P?*$i;oEEawfhks>+n3 ziGEbyB2^@%_TXOiItDo`UWQF=kMBva9!H;__b}v!p`dm7Iy?4fjL+>zZ8dnzE=^!c zK8~w_lFW*keYB{|P)dE|920aYwr2;nXkN%Gz7@_9pleDn+h40ACfdIasSON&EjATH zJv?3p+Dt76+}cvM0+QNPKZ67|H?}~hxivqhC%T|3epvR&Q{103(=sL7(V?v+I5~|q zcGREJVS|o?CS^6K-Ra&Gdw`Q2b>!ItNf?4Ca zg|Bh4P@c0shbe!VMRFdw-IV5Y7Hv>w+Rp2bp-r?j6R9Hui2M{DuVm`aBB1np5Kw>9 zSlby47`P5|Ck3>&nZf7N0pW_;I_vNISQ36=Uazybu>LKd-q|&5HXs;8rV#fI%LKZX0F|q2~CI? z72>#lt!&AFDcwCQB!KQMaHcy0+R}0>rc}VLz6p(L#FxxOJFf93DED?HW$ZHM=OyUR zQH+urR=T3ivixWqftSDU`MM8@C*@7Nej&nk?=<3j! zBaR+#AWuz8uE6%0c_Qe@fHt@xPlGLbmX=1%B)E=lgS0)Av*Tz*5(tP|6-L9H@h-ZS zGqY!FjiexdLmiPVlKxg+N8=d$!`5IU{mUlVtRba9np!lYxL^uufRMSYX1`|fx8SV+ z`32Mq_M0VlIgy3TCiBaD(^Smu#ivg9s++Ji3@7{nemfK6?UI#)Bs=+y-y(tY4nm`|Ig5)`O zWra)8-X^Ffy44OWY6|P#qYHy*nh&MwuC~P=VG3m^=ide2Pedhh=rC}wmg}a&cZM=Y zzl+2x{5v|PbZ@aQUQ z6q-)bxizs0n^kbL$5T6QegFjxXfHqx7v0JI3(Ix+RAKiUCA(0X-Qs;U95LJ!1!O4tDpy0B(G2*Ay01Q9PR=~QTD2{lU1XOSZPOT*tUvfB_* zBXca!$Ycf;WhuD zQN)v0kK1|JmRIKkYF+$|yxVtV%%rWy>kP_mkQmlJ2FeQ3!R-{I8#oa@7zMrgDSRaea=@~m>t}kg@#PedqAES^dRaC6ueojHjvN#y zX6MqHyQ_OtLDY9seu$dQ5x!wh(-W_PL|?sT!CB;QLf7)w#z)Qou@|`Q4qM*HyobL6 z#$Z_Zoh0;JpR5ZdR|p*HPfD@UJSj@f$iBKyw^I4B)mFx*!gBP+$O2=D?iObP-~0|m z2YlM4*TmSQWYtXdB0p!CEGb4*egzO!9Prhb-@Gj;fjZX--5_rh%$|7>k#-R}h=46N zs2SB7E!=O+-_YjTW8Z$OcxirNr;}i|*Xwwx&dd{!rra{}|H4f^WIScY*|mfdx_(F4 z4uO@lWs^S8<6`@;{=UkdcI7*=8yCyCt`9CN&z&0Y>0z5HU|vTq)i=y*3YWBG0~WKW zDqjlUI9yO62Y0HT9b862*`Sf8$CroB= z076QD{nnQBz}4%IAizOB_$T;DN?`#f`gYNP!BF)KdPmPyor-CcN$}0}{NXL&yWpC4 z_e5h*)xr}t#Xi6t*kWT$js{u&nGBkVh6QhwHsd)8Fc&iM?82!X8Z1$d?f0fcT_KNzLp3&@$O3*fNnH`b5j2if`kyq{ z;DIzWxR2*2mv$<0r1Kb{zX$d2_Cueo=Rfs(aW1T&s!3B?bgK7Q`SynK

(;JqjO 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%0D*(qXNssA$?0xyvQD# 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

t-paijAD}gS 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

L`YY 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

ac>j`RiCtCQ+N8q{)ri z$9-(f56ZC(F#`@UbB#N>OUBqaSMNe~1uBC*D7M4-1W*oVk9}&{em(iOo>Ijjdee}~ z1`}BnYmZa6=(OW<)3ekPYF+~?x9?iJd&PU40C1?^T$5?!_Y^JaIf|k=^zz$=6hf&@ z@wvMd_e3kqIE~+{+w5275EYP8bU zD&!9$*nSH#zjmqGRc!Ch^Gv^_hj4aErXA5#dDI88r8*$ymnf$#un}EfPFd}kyYmqX zFL$;0g1LP=I~q~6W}6bVxr~~h{(KAVWM>rU@t5DRdy~2-@Rsug@H#us#M8{{cw*k} z`~E7}A5k?yR;#r=XJPN>?6>h;I;y~&`gbrOyRdcmlATDU%OU8l#H7tDADW73RIBmj zhI6)3TWRR+1O>27E?R{;VuPw!He8tGtA~a>ed}TvTp*$YmAen({GJ0D5u;pK)U}uJ z&K$T{7uNzt@z{oNK$3p$Y*IUqyWs5+(cj4#)Zd;h-D3#i;~tzj9la22^18NLyD{VR z8}=WDxvD3C%B}8lb@3JGl(cO_17(kJt>$ZRN=;^-@cX}Dg^EF&ks#JZ1iJ{>a%w$Q z_U_%$uGqLR7v4WB0GRO4S*UIxl_T4sD{~pD2u}Q{K+bfS8)Kx6D(X=a0`o?*s&pVPTzUJANpkTefK-{Tu7PiCJ$4fEhd_*Zb6BJuD3fsR)Nwyg+Jc7$l$Y% ze{V>ciC@sM2HI+o#@fh39jF8xrAWWrulRM zvIN$N7Q5z#BnD|E?T+5JDn*rKo7AFBg)Y142D7n}eDaQd1%HahtI2OK-;F(N#nRbLzk#C$(o9=_-6()lOe{bI* z4Q1p!%WV0b-m}(IZZ#TL9{2iMPT{@>{ycnvkN(+>{G&P!zqsTrnrZI=4x3=`xp^|y z36N_^{sJsHemRkt5O)cUPAXpmx_=2~(I-|6Y+yOgprtg>Q=pP5cDKK2-AaG{<+5UO zV~)zM@|swyqjU3*Die07U+IXd6!scieku={?;Wx#?~hBc>RiAM9T8i^c?H`L>(QXYoYdz0Gz+qc3QX!=qGO23gJzWCCeLovl) z{7R}l8!M^Uo}yD`C6VLwS$aUG4n33W@csla)Ut0E46UQpivoqQ6AyKP>*9D5gOOtj=q?gU;y=G#hPpQEjFKZ}N0Jks_Gv*64(*+KZy zQ=XZA_V|ZW7az6~go=*otUroc_MiQ#s?DYfuEw>fQZVgvswDQeX=5<=sojI+q^`E9 zyZyeeQ6l6xq>k?K3OPk=N-A#FyheeJUHMqi7I;6v|>nXY}>E+OhzpP*K zdiU`krp9xGa?1y%4#*yVezEsYd1<^~C^Dw{XUkr$Nia8AiFPSzTUnl|9rQ$Z*?8># z%O&kD(f;m)Z`jE(3$H$L`46Tu*knC0vMw;@w}|uY=q|24*V`QC3LO=SY52m z?dMcJuK?lHYkg{!ziDVn0lvSqXTK(1PBbYlRLA%PVC&25ALDcZ{J*^^kxyT=NtD2b zU8#jOOqel-9CxU|$sq-KTj3BszFsGhv5kLTb_-N>MmIkW%i%9s<2;6PoAkdFujR{v z`w3TBO}*u2#Wp{ZU6E&~+MBnBdC6=h7?N{K;`h{1+^@PBMc+dPrXZ-1luWi8R|5um z2uxR2t2VV-@UCF|7~)`;5S9!9EvJdY%UwpDkJnp0{tEi+bOxDGAJfFpq==3rEGO

vCR`&q00Bz0AbnVbjoXdfYcZJ#me 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≤KuHEHZx>e`Xben{2=g<`BGd=e! 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

?$LlZ2A<#%FGv> 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%0AHZ1|=49J2Fiw40&4A7P>rorz%$Kl~oY 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

xj{uIouVZW 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%0ALNwhr*mPD8LT2XPOz`#Ns^(()7XK;1{>b`B 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%0Dq{o1_1og&FZ^v?%bqADYd|F>FAV!UiFPh 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%0DrlOu$3l=@-BiR*2AAyr(^ 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

fuSq-=8TxqMVV@To(56-kr#Fvh&Csh; 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 Y#hFDzQr^@~fq~IpT1bh_-iGi015X1CK>z>% literal 0 HcmV?d00001 diff --git a/hls/lab2/hw/exercise_4.xsa b/hls/lab2/hw/exercise_4.xsa new file mode 100644 index 0000000000000000000000000000000000000000..19d718087118578c39d4102011bb4fa6f54382e8 GIT binary patch literal 1356701 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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≫X}PrdDCw)x=dfa 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

)C^V^%~ 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

39Lpx4WyLFq8+wd+7;*UuOZEilwuRPO2_^ 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ⅆ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 z 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�ke2}9| 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
**joU5iYND=n#=#%kl+C9PaVpGh$b44 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 z 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Μ8(260Kml_~f*KBJ{)1Fe-Eo_whs)mt!wSmni> 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

MS>QGSQJ!%cH8p7@F5#Em+#>QiB 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

{Py}=@yTm)RZNU5_W(D!&4JOLKa>R6J%pl7lzWU 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 z

-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


ca-@c;TWuuQn0{cWfhy!4Y^`mTNgW_s#pE%Zvup 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

K^^S` zR%V5>n{j~_dMw^RCI&B8+tS3+UbNVGB3`4k&|?$0(UxXJb{}#9?kQR7zYHsuo?q~l zr(|8>{~7e0rE<~BWbGQ%_DsZt$u<`hJ0ceXs~-mMhUdf22!xK6lXkCg+>_04zcI7W>v0$Icut2i(GviEZFn5n zKexxS!s!Ft+e@9W(A{H}FxwyUNTs{byMPD0?y?Zrx5nbcAeZe~XXMUtMsVJkpPe={ z^n%!Dj_#hN1;ISii);zXlL6;L&$E&ZW9Gvx7^bg`ODnR? zC9)T)(KWCnJypC?%gus9^dI}nAK^aqUakf-9K%r@q!Ve4?ZT$?2n@wC8j!;nZ@J|9 z<+u~ZV>Mz5iTV&GXcFTZgC|sG17-u0h-Z^w6Ez9_9AarcF<@znWnK$a%nEI!NGL81~fIP6n*AMWH@t5YSDPV}~p^ z@OR$B8Ycq@SODgtDEzYR^!=I{T4gCXdh4^?`abTPjO(-Qi>$b%84AC|!@6+lB#Zsh zMYmBL`02aeO!R|KM>>`shF1&vbj>2mtcQnT%X4Aut&<_L*!Nlb_y{?!lwcOd>~frS zx2~^nIv!TVK=$3}$9`ag;%u1VPR5`6CVFec8SdOa^4OnU!x!E)6Kwb;8%*I)pVNUZ z#JF#mOVPj6lIOT9ck}pW$rg*tU`aOpvLdZ_=&DIF53?>zg-7~=DfX54`p3zE^<`F? zY1VF!ie0hZ#;|ryG#9LH5EN?3vqfAktS{|an2q*qDwkR2=QvvTS3>3hU_hV0(=2nk z32MI(ZsI{)c-ZPxmpekne)|``_5`B0yc_x0rS9Zp7@EFu=7zH!c6w5OW`owwA)HgX zal5tC3;Kf7O0a!Top?^)cvE_4^$K_B-gF5AeYX88-t_&gWjqJdIX@BTmTAkg*NJ$o z33rB@I6^TgjgHM+u|QK@&V9POK%(7iw=@4-6!vvJ^UqZ#GvAKw^I)I*uB8iN!93hv zvZXmmF!@2)2zm+IF!$Jd;{*#G{L`h)AZ@A^T>=)yH_-{WqM`u#~xtT%qi3KaM+ z$Ug$>>O921EKCV6OD~Ju^`Qgr>_gWZ!)2H&!&Vf}8fLW}cCWz1muwhYLDF&EyB?=r z(z8DK8ul(M7rvODfF=id_=c$l&-!1(BlGEUd4ocqxm$<^ioN)2#R0|89`| zARhEV2Tu-o=Gx6n^)^Q68oNSM>o|9jjow;W$N(+UEDttpTr_UfqvXpJ`^FaB$YWgW zTQjq~xM6&G?uTiL+k{yqG>>J%E02HowR;{*^yWF_<9cg>?ZgbHfQ8e2JTZuzL$O)< z5({kHYxbg>^i(X}%uQ=lj@9=_hlSi5D;CPWnWZsq|MYMUoZxyX{8YsH;xJ0vHwDJO z|3CbH4Mc@2cN1z~?P|lWalP~r38zPz+ zJe5gDnRKqW@XP&yxSwXyD(+uD{os8(O#ar}IG^8re!=OCYC2zTr!#%wr~9W4rjvO1 zvhdJ|Tk~+L^6=?F9v(FQ2W9nO!BgjnR>Sv#Po(W}1Sb3Uzf z&RiTw=Z2zAM|h~xVbU{m+!xk7+#qq!Y{y*$54-T+h^zTZ+@tb;=Af(|OfbELnBC%F zMD}Zl>1BT+ts3Fc;+iAtN0Mpzy3+Y(#XYIuR(3@shua=<9Eh9Uy)v1luP>c%R$Rld zwT0`eUUmNb)|R^G_qq?jwSO;sO=zal#P8iI?{E5tB<9d7ah*SG%)x`_FWN z9+@Izj~v;5@CdigE!ukov|srOu3KB@&(9NQfs(Mymv~yYe{T|R1*nw_P5goR^8Tiu zG#xqXbN(&=0IMBzU0j(6Z*haVjd z(0-9`1|u4G6xSQ4yxy9*UIM*p3yMOAvKW|WUluV zrGnk{ye)H;;QTh3Z*5gFS1Awb`S7^NT=g6>p9iSSPg9xS@`>;L4AGnZQqz7gWUhHP zp_VyP|N3RFdd`k5*g#|MuPiYnsjm60`FUgB_r4qgP>a`uX6O-8E4Urd8r3dB<|>=5 z{Ra-v))(I~D0Ach>w1`*oXC@|z8bZ4-g&^Dciw;Ce&WbK9CI+feh2`<7U|BS*kn9YbB(2f=P_(dCz4ef8y+tF6wAGZkhMYLmGFLwDzdwh3z6)_UFqsQ81U=SW5EVngN=`^X7yr_1=vX32Tk35N9Q_TWimjE-fC{bUvUrGy#EsW2}fPRZ!^r9n2n1)>#r5!vN@fA6O zg?;jTq`y1op6?-gZJyU{9XSH2BlT=WH6Zice^&LpDRc2a&()=RF77SVDeTk-=AZXTqJ4Q$I_voZfvo4-AoW2E zS|G$O+DYkvbk^19iP18lY8#ibLhU8((;q( zj{9DE2V>=(`X&JXQoaoFh3W#T}=7U~QU5SGT@rFe=GwM-Lpd#COQKjhv-i z26+Is9cyP`KAD~cDKh-J*dkYUU6(Ip9K>2f+jlHz_9Ja5gS^+md6<&(Nco8ySdh5x zGcF-)DLjdAEFQjIC?e5CE`GHC(PE>B7rBD^tA{>1eh6RF8>HR1o@w~Px9iJ`+#%Qh zu)E0hFVe30IoJbQ!6M}sTN=*;Bl5b54y|&oc5M5D!s{`p!KYn1nMyAT* zzUTFSmFPWx)s83-2N5R%t`FY&va7e5Z_9n0P;g>>>@VXKcZ!CB7yFPVo|_i?aKKQK z(>9rSTX?)$i1!QqSmF2GYKyUbw~hhNeQt}MgK3uUW!DzDeH7l6z5#tSaNN+2OGqDbs0+RW5BYLTPRbG9Nh}&mN=In5~D@XQB%+j@8uEq{mXlIJTs+(P7iM5Gm=@ujqIU#4) zODf}nr5NxEiKIVP^57M_*lI<<-YXlx(r7X2ZLpKm5gf|VKcy!(Rrr5>({Dd{gPyiP z*sHTnHzM|$mlkybGB0KOuCgpHa;ydpyQkp}e2Js<7(5XgVM{tYiBCMTVRoII!m%JE zA>xf(?^%^-lVYc3Rz3Zq8d}4gUo5A=7Yj`S0UKB$XGcqYB@=b7iFgrX&5zbrto%i* zg%$F-#PrH)3pf>X6Os%KdXcB32!UL`ddkZ={DXu|<~BVsYJYU&_`ob9(J^_CW&rdk zJUD!ft6UEVAoM~EIaRWF5}JETILKD@ZJh8pZEX@SqHdbbct?&y5E`!0LlRt-J2_O+ zf5@(NyzgS+lN_c4*I5kbMrNZ}HS3#VTqCmg9vU9w+M zM2Isyk$czLMx#rRD`B(j&sFLHGNgumuMIHSU`wQO6;kmrdhwyHczT9XstFP(@lIOS z`xU{UC%5R4rAv?DFHV2T^+bOIi=~DkGNUD4`8iQ2@V)UJv^)v_j0hLrS|104@X_iS zHPJC3l}eH-=;m^6HMT}}&@9S^qU5eA?9kv90!cq#Xw4*!<$`x-6Qqn{_Cp{GA{8qN zAkGEULi%K=9`@F+|MuCQV2vusWPcw$F0 zl6hDBawI_F1~q8V{rFig+um7yRDq5cuy+oLREUnY{h&Ticpv^|vJPqkUvKo>3D#qr zA(j!_g99)(Rw9db($IrS8ZVe=;IHBJwsqPNQ3i+yt_eUxflwK$^*_J?xa z6*KJcb}q#iEnu~9`=oPw-qj0#M)b~e5m{fQ#@|xN#K!|DKAMdxiEery z78^v@U?i7xN`$v7NNBc1p^dY z0EeYQ$*Yhsfh;xyAy%yM+<;B=DIV*8!9#ho9&cx#T_L=q5#IOCfBtozQ~zFy5#}%? z;+`TWaYEq7eZ#~8qOb{>qmb)Cc)&=MRSKj>SMnX9kXo~1Qg!f#M5Z|}htYX}a>inO zoA^jx5O;1(+|za)7p_De^#zYKTD(MqR$rk|iTLf4x(rAvpma`51~)9~dm)@fm7}|0 zjpliAwpHj^<0@Ry+s{mY{05@OUn3zFL)QvUNFEMF6@gc(C5?~jbmYDXjyEkv*fHUc z3M>x9AgR7IF6Z(Fi}X`#lpIIVfvtlQE~q4EHdNwR4cxzQ;4B;YIl7KT#`Ce!8OmyUe1JrKa{C3;ogkq|-Job|AhM*L zi=MOLq51$^$W`WGkV_sfql8HyzCnZG3S!4BgTQ{g<|jlQ$QLtptq_gDA+w@$CKemz z+!-wDS(&tQ-v|{eLi*MZX02a*@sodt=qZ0}Hj+(}D-*+uIO08S@q4+(%C805z$Fk} z$GjOFr#QRGUP!$`TEh;xMHC3@brC*CK2UmusQ^3^1PLzUG?G})=2<-ok;}fw*6tCp zuPQ2IW(X@0Q~=h|sYV*K^IlC^DK6`A5xd2HDHGu>+lo13@OHO&y%;0^$oqcww^=C9 zH0WzdPL!Z@RmZLP*9XrtG)bJXSyjB(uSy+LiOw7VM54mqcZH!%C zlt!OxmSZw2Yi1|Y9Tv0Vq9QTv+Pv{+zlG@OzonRQl&FFhu|mt!g0=wLP*x(aGf74k z>JELVrM3-nwc{p4$(@Fya8RwmR8FKZGGHQBEH&j2akSLLC~!;>yGRMgge5(P-C!XU zGC(Tuz#{@JYm{285rZ9>-{O}(h1G-sZ#@AJZDIcB>}P)E#tot;%bchVM(8$B*?9G& z8$j@npnUG9W*TteL2H2n%Y;=RL_XqbL0dZr=lnKN0x>=E;Q+Q!gTd^_h!n7vam+{@ zkN{ycYm!x}!+6{*=Pr>Blm$GBfI+y=7@g(`*wk^)X_0Y)g!TKX;6|hl|3=V%jL?;K z!ixXAPyODbcX&Mh03o*ZT}Qz!A?IGrXwz%JuIiqkrbhFK;!?4RJ5=EYW7D8`*G?A} zZ=GYW2{F>)l&0$$zp6@#QKqlFX6pdJdFKfv5*C2;KWC$~0USa-Wc5X}(g0@pnIHJ_ zDMUZEDhO`_!u2^-%}5L4AVNTwY8t9DAkZdw7&&x3UcAigMv{MHeS=a?UeFb&SF`a- zqH&>w+_lO&Lj!gw1XgB^FFG8VZG`2io3{T&{@H7i@VwZ=P(=bD8y;OlKqR%ph||z} z+m=)cd~1P&ri*npWZKNv(I51&_PWBF{@EW`IY9L6*QE$rnii+N=}9HRt%XUsqi$L;V@BELM@5h*T&$A8(ee|0?d~_? ziZwHm>dh%?s&@>8tgcO!<57|^uu2RwC5@oF*ko;v29+QJv1tpE4{}Ruk_#F-!|e8F zbu2!2-v5|;57869tYiW7g;cqwrO?(Lg@*D~5M>cULe?Yvg|3bIN^He4GY;1K7}xm} zdR!2>1=)9NqdcT3=oVyY_IU-DnGzhGKNjmO+#?{jD5O*eitJOJwq=qN4NWBJQ?FWl+)IR{=5kT`!UgHA@W_n4J)Sp_ zgR2c49w~+x?LN#{G(U5;jr%SW*2Y3j*({-NxJmZZIsNuV5I=h&RoswBT|*iTQPK-@ zLzYhe&=+6Ab0U3aQ8iOJwGMT)A|ujDtMwMQU9!?+L=aHc5P7t|EMf|hTXZf!D%^A( z7j{ZGNY686k)#5_$puq}=()t0%118v6e_CG<0X*OcfzcpQ#QyhOBsBLviKwg-;wra zt2%~|a1NHtyaPyM&!a!24lWGKas{~!aLI-Jt{jbq7P>YBdgqe$;nqdT@LmZo<-lO% zD#Kab{VvZesC+$KhDAf4z2W{fwgh)c=qNG?+`d)yM#@sV5g+f929QW<7zjgiOkq8Nudm$-X~C3+@_KY=vKi+8Y23R z9>_;BQUD?lV&a-AB@L?KMi->Mb8wLS$gGtwMRU=HN@MT379pHkud7Qz5?y3ItiG_X zJV*2GvbJercfV)#Cy8FslVk}aI4^4JxQ{^;!^#phP*Y4QJt!l|ECCjoNxP3=X^4j? zC?j)fXKSLixI%KvD7l76v&kGWTS2Q2i$+nLbsG*U7hoh^Bkl_7ysDf$E_32^lGi`7Hg@2-yy{TSWb6`eGU;T zxp#-VZJ>I`GUq)KsOyt=gxOYRke}i@E_7_L!`_xS$dS-)HqaSyU z0x$S7)9Mut-;BKj#MDwHBY}dIZLrQokd(|sMvCy1A=FL@9fqaxEspA*cS!Pd%3C-S-PEi1^>wGFroF>AFTE-O=VinMMTQ!Sox$G+W>(G3L&i01?X-G-<1hDJQt*jkGuRl>Gu>$ zQ_3T*0AeYgK&}K%IJs0z>a+Na-V(}|rCntt?tmK(5NwEW5CY{uY;p;#Ad=@W@B+}7 zVa(%_o6;A3P&=5PmhzNMX@ew{8APB2<6|RGMowScl(Mv^JnnBE;U9PN87;BGwhTfX z@DH{|k~%|X)#_erwKmAd1+b|tz$-T^GYj}*O;~|QO<^E2XFSx)$#46CdO+;3?-Tea)8?I2f0Zkv=&EIwidW*aCFvoyO1ji3^xaeFQ5Or?r z)t7GIs#2!}xv~N^vIP+*^^UjAKAq^N9+}b2V5&>5-`q)nux&CP%oGqR*Y?o%qq(Jq zdz-umyb>|v(tW6t{3zeDewP>SRNMh!hZaBSD~1gSVr7$sHKG9`_cF)F6$akmMPMLs!(W-B zvPHyDg!@ehS4aVub+vcVr^~`tDV@C<&;(C?$rnCM^nWc^2!I?PtYDD7xU~8N;EKtO zQRzSt^PWWoY>;Y~(cxcE!j`fFt*Sb4g;d}SOUYMtnjvKr#D`E>MoSR3w=I&4RedEm zB!H$s_mgrX=GD@>5$iI5rvwY3iul?38w z&_LK%}!X5WL|6N4CcV`>h zhV6+QCp7tL*7pu|e^l5xZURe_y50?O!*J9A)na4=gbFK51^1g+NEdfn1GX*ku)8^? zkui4UANGRqqycfGue8wPQpzX)s9yQc{2+!MQ{M}I?%RKk=$6-OcuR@5mG0OO2Avj{ zy8T93tkj@wtvbqemt5l@qT0x^h!wjaPUKbz4e9Tc7-nX8w)!AIDnTi${wDi-G4oMG zD{g`0Vw#KWs{{MLJ%=dvn*swZP$8zfr`Ul~v2-zI?O;I-VAP?)oy3<_MgF!vltLj( zpXDQU<@6!4;+ySg8|XR-fToVgy zC`<{1!LlHH>sa?3Fkr}8F=A<-!ER}iXLi`*0P!I#n+^fpHs%nc$lDkL_E>{zO}_93 z_lndW3W~=X3PmzP9`1%9;TF!H_lZZ`N%WZ?hPx+orK<6_VFwL3ekd`;FgmA@iS$H} z^kmz`(ZN>o!t+Rd4v<4uaf_a^ii~kNb9j@o0nO;U1GXs$40dG!mx^bf9g2(DQ#%^% zqF#%8-5Xx{YefH4>AB)lYe}y{K5z(n+fA^|Hq)eOwI!*XroK>{z~iN}2myEqvH-ET z@!%{r2nlI<#YC>EnB0`&HlR|lN&##33Rz0_ghVQ)e0I+WNkQYxmk04Q4onexd^S*c z`@>Hc-%9lG^u&qM;Q<19kJ>R|H<4D*OlQzG4f=ON2|}MAD8x#b9#4v}fhNF>g-oWyEh?dsn(z{U?x)0>Ly2B!NfsY+N)oG_pt|w3s<85S zY@HTZ&O5PyO`%Ogk)A_J*fs;gwSuY-)F%~lmi zZOh-H5A_OmJ00=G5WMc4!IBC003nBLjx*Y-$ynkF85ziH=3zha4x*R-QH6cruv7VV zgn*x{yJ57o)Y9wSV9JHf#U9r3den6x^a8sBtK*B&euEOlv^y{I|DxmTx)^{qNOpbz zISAW%ih46Vw$FhD4`5a!heQ-TR$HWkk8~ZrX9yk&3~afenMc0;{-6C5TceM^IgwX# z+n#BH^o)0R2+oS0C^rx2OE?lNgIaJN|Hfsuh8Y9s)B z{||rd`-nb!Df}~>mb4G7Z|`(g(Js~?XEzvO&=1UN!p||!0tNn6(2P;uqDWi=3345e zDAyuS!v(({T;Ujnxt}1SL~D*e^uVIQ0ZDog)hb68vld&!P@+)b0qOC{R6;{iJX##B za>%c`8X1v!LFLD`+y|h=NyLE)5j3kILU#iu!PvJH2Oi1of3YSK$k7_b53O4T zP>EgOC_zZ3$SOLAY_?TYhAI^--b8%6)=UL;%jQZziiTHXMIkZU<9;sK?K=djnL#dE zPQ&W3-^0xYgawJH65SNlwlLe5$MLol^JT5RZ^s5?oxrLt<8sGIX*wjiL060h13vtU zRURk4{nc>Sxliiq)HW@*txDV(Vs){`OOi+{NSNBiA?3siN}%Cv0AhQ-V@4^HP31ly zF_$W%%}%bebdQZ|?ea*pUf~9dA-O9EQSYhQNQyxMJobkN%!0&^u|R-H5dE1^5qkW* zChc$waCzhp9XRddFXy=bTIsn$=DmibZ9z8%#pG>58zoFHB%Igc+Nz*nC|eEf$q=qg zstcg=c#?v4wTvl2k#tks%Te$B6i}>()>gIwkadCMfCBZCX+>rkpvak-pzP=k!jn}W zFQt*HKp~2{miImLcb`S{i`BYkf;iwmVQ3es=}YojLC+bBwR*$6;@kcj*7n3j?rx?E zU-~$`GHoUnshA_FiWr5&p%vt;sy4b!ybh+pSKiw70Kr#RtJ(@#V}c66GjE@0gp+<4 zdjIF%dK%Fus{Q9DAJXvy4Rh-8hNhRD+}i{c=5J}*q-_xJ8?o2lqkoH z(oe)xWW`W=1Dk2gI?5lT

GZ)L!G>20q;-C?=20;S29QryGTXI<7RLC?$(AC|=^> zRnavt`?|OPInfpJY)%3YhD%+FbdSk901Yl13x65fn5ypKHd5xMn#u4K|FOp9H+rO= z5EyWe(ltal*x+)(^jm*@%!{OtiT78NGPW~vXMDm@)(jP)#wxZ z>!2dK<(K~GQS5jhaIp?f(9o6#0NctI(_I2Wh29Z-y2yLP3*4FM&>^y_4nN#O&x};u z1t6QLI89xDnr|n;BuF%KJb`Hk>;#^W8KUei1Ql|em9uG9v8cz@@3S7+S#d}bbsDTf zw|v|0-$wLP;QaVucP@?vIcDVFY*>~KeYFw3BcNyo|6LY!wNjo?A2G?QjZmn4}^6?DGt2=CS{QjZ-w7t7-vpsy1GUQuOTz>0o%GRP5hF{Z$@d1LaTB&J*ZaC_{F!qiRf*Ao3Mi|;iN#6tH%X8 zDvqN8n3^4rfdxFqlfQB~okJ<5d=iq=)obkVWSm{^%i=CxhrFpyMZrk!U$>f*k3@H4 zO9fj#w}xIOMA&OTg^axcf7+)vHn&MtjMDAT`P`?89wFa@{zigK+PeHZ_V7X~#hcd@ zVV_wxA&eICI5NJ11KgEL5^#}aRi$S`d(Y1LBhPG(cevDSL<7xnGu<~REEem~0i8a3 zT$*L#ct$tY8ILCgb9CvaUj4mHn9s{Su6F+5K-uGoGfrmNSvC!ba@8#nJV9Z3kI||7 zN;&l1;jn`W`Y78BOTTda-i|4clxAfR_kba!AKlu^a=vac=JZjqGO8lGnovw-WBJiX zyzs45KIL(#VBcs6$JNZi_#C-YF(7uKw0_8quNY%xOfK)@QO=NCZka%s0i>5nJJ zq^~=;w*gfAl#qP}9~zO0h>Cy{eJZI!Gqbe*|FZWjfO%9^{%0nWFexdS^g%0+auWgs z&@~V!pwZrhR9Y2Hg@9&d6A&w50d-d?u7Bxms1Oh}ydnV~p=*>DR;sRDv8x7xENB&Q z6+y%WT~}Zg>axm;kMDoZy?18r+;6^TzJz?WzvR1f=G@2JIrrRiA2W0BIlG<)_}7hd zsNfPl&HB@9mR!&`KPYbwZ)g={JQg)@$6F!=_gQ+LEn0wXN`^x&6HegNc8eZC8;{h6 z<|c-a+MlC9N`x;Z?p@9Wo#`~0bTDIK82!DPE(NTp?_BVM-2k6hrnqwiPu{wav^$aT zN(0AC)4pNMZ9}WMM7^OU);O><2tSIJ4^##H7QtrzVYUEov<+|g^{RLYh&KLvdkqvmkQN38*HfIao_CTree9>@f}dyq+ewI1WOD zDjmw1gy7f0&nJKW3`ToZ$eSx*ulz{e#Vg9JO~I5}dNd&MZwJ~)(kDHmRjxyz3|dg* zd)i8cpstb`12%O^Xp5`Wid_o;%J}4ehiye8zET zujeGbo;e8|r>Tiv53v36Ar7sm4!mkd2b~>wU|-*XNM&R`zL$A^APh;^EkmzrRA*GR z9p{GY?l}kbd<)%|8Me}}Q}68T*tKidwrzde8h0ms(y?l6)mUbIrgOvC08w~cHAX*@ zc~~wab2%wZGVh~Z=d<=UhgF$-Go|f8pAOoBR_%X#;DNLcEne%l(j)VHuNm%1d8Jiq z*IbS3e!Kgf0JS%mytx3$yrVy{T%#;?y;HHqjh|b& z0^qOb+_We?@9Qg8=A`E&^9^IQBx#hr(sNtpunV-F*Xk}!5>tQNRbf4E)OxPFPz!1j zdY&fp@tUDq01i3L_Q8kL5qs!e3j$u z+!^~RC>sYw*|S3E(5=O;zEwzVi`ov9aY#D*{vl~s|D4G@`};30`VDqxNIO(+X4R^P zpsS(GchN5B8GXh4SI%^1I#+cLj4d0ZG^X?&p}SYKLbcY@F;EUp4mBGP)O2tUW#C zs!C2WKjH|((?IrEsT^dU52>1{f3A>H)*5u>&%AirXRsX_wEgA)p`I5Bk~#Lr$B8DH z*9<+CcQ!PKo=a3l=Fx*G1=F7AxUQD@@wfjD;PyLgzd1l@dJfW(Qy-ns59@1&mOVvl z{#>{N;IRvdxe^xcSh&4rkRC*u`~(hiE(f(QLJ`oPwrM(XhBb_?0E2ap?ZE5eXlo(T zPpNN_B6EAoNzi==*c<@3R7QSHG%p$>U zMuov`Mix9d+aE|fIG+(XUf=~?UYAD;8^-kLcN(?>oGN8MI_yvQ;CsUW!`mhQJK6dy z*T4`qHwQ$5PM%?9*-rDFqu-gp>jHe+_v!U8N?!=f#ps$*8FDS4_h=%zx!?K%%`tWq@$3 z=J~!Cv*z7xJbnw+;qdhm8k!+pJV$~8Ute+#xniO#%PX^ zW(8?pZ~%MUGr4lITq*&QdEtJIk~vW-tfJLSqejlYOZ!a&58&uEG5#adgCZ{|^BR(`{2HJ|8V)s)JD_GAB-HGB8XDgDcI?@=(`Mka zj)AeJA(Xk+a~i#qp3gg(KZi2UTI1734fS>P7Z?O3^Ik)DbIbhaAABRW?GMSla%LN~ zC}rpm^_*l*dairiWx}>Kl>w#u+;cWJiH?p;M|`%kU<(kVzvhe=sXonK{$s4_TsF20 zH5={v`VH&pY}MG<*g(G>t`yj1P$77Q$EvGVMHA?VodrUhc(P_Ij*%a;W_f1^HPa;X z+99+t<4xmqMl!FRw8PC06q0#IM`EV9$Dj+Kzu|4WK|i&dZLFGJHna>Sj&14qhH*Np z85$ZIn1?c_?rR~Lx3`xo^CufVCjeeOH+tSlGOxwIru9wh>5ODv+i!;}4W^Z;3@zXf z9v(9`Kb%)qVfy;WB8T(j>e;Bs8Q$a{ckJKeaH;>5#LW(0S(^C+lQi?4>1Xw<9;tqs z1E+VM(!&>`iJAp?Kp z7Pe7ZlfKEm$wKq7FBSe!L>t=IXTHo)D71;Xj++j_9^*=zKRXzhOv+q7cbJDDJyL5!j4Uku!mHJ+;`& zSz1C*r+lQ%fycc3_+!HN5g>*-Z;7L6EZ=VJ@ zY)$lL{GSSk9$wST?dt~^EE^IG8 zWb@|=iG?=i0hFO5ape~|=iSnHv;iDR71gJ&5k&eL12)e2?-#!|0hfOm$yu%A4723- zqFM)x9Y!BVycH?RG?Odb2`l(Z2SK}WlhEVM64D^lA>I%GLp#iP^e=$NCrNB=?fwYB zf1U@kEOP=M4!VM#02ayY1RUPD2rkQA1z$1@(+7Bk;0pRaCqPTy#i>#VR3De~WT13> z?4CQngkz#^n_qDV{B=+DOmO%x)B<<;R5w;nY(uAbGT=)Gt#rNsTH36@152eU0;mcT zl#S$upQ2OHb=4Q|1~_^ytt!Jz)ziufX#8B%sQiZWCBP`4*~?Sw=~W_!tYTOjJk<`+ zHVbhm9+MXCeAD}}JXfmOf>}n5@b$V*SBOm`LVf86jdv$Q%>x9mU$G{yUVyYLoH{Ne zgUs;CsmK5NF9+c0d*|QU{Mo_fOT6tsdzo;-!CNA{5va-9)M!4y4^2iMT+f|4kegvp z`NYdCcS$!-ncdcW^)JD_T=nH=5oAET&Cu+&E~kAYsVWj{t^a!6J(~~EIcZrf-*wBI zFZTzsD~5kQt=JNlkw^r}fnRKB5fH3>+U8dpTQECrK+~R%{#Qq*I&N{VBZ|?3|AH$=!;a4-9%pF)I)t8cbLf2 zTD?@D2m0|+{ppb2=+rXRMiE3&QWsyFJ_N_1XWRVQ0IeeK!lDyLJs;NGN(;m-csVSe zcik3P5KPgb)nZ3bf@R!+pqUo$$=zC}W6Q>!D**oKew$x$IArwvtA$_Vcn)l$Z5~es z&sngkI2$;35cIAJ?OHKm`|Hj0Hc&e(x7rdd z!gFhBc?y^aywS=$W0N;%yyG(iIIy5At#{2xuCY`d-~lZaN^@b1BB8_u7^0TpK~3Vd zgiOM-Cw>O~zPZli%@)`-oN-puQ17=dV%Gp$!`!#JuWxU+!)C^JvoBC+~VAz^k&yM9gNC2cduAiQ_Z5Dw|?5 zhtWajkLA58(?_Xmw6CRP2od^+$YLl6eKg79}>f_Y;6WY_<87#srs}koK~LnsPcML zDZ_P|^ug9=+J`k{U;kaB+!gmirT!+r|U zQ*<7V^C;uFA(Bq15HZQ}RCfsxQTc8r6sFL@>S#e+Ie#7`p64x&NfQ`*XX8I$8+zSM zNe`AhogtXcChgOLwM;A=rme3PEkLA}w++%QeY?dOku)%U6b8>gDMK4qNu0HSipPoP zh8B(+8DkL@;z#WxZvZ%DZr*S4bPfVIodzDQm^s!2t<(i^X~Fzt=y?rq1U7qu7GYC5 z?rs)T2yLOiPg_Un8f;hO2Y&hEPXN68MT?yub|S?>(6e$ueMLd^a&)j4%<|S`kUFHV zh?FKh*&c@>6!d8i50%GF;5*uB=~ z&m#1WjU*vQ>Ah_8oj61u1iAMeY$c(!QsNBd$1PuiAO}P6R?Tp^%d;m|)CC+pvB;(S zGL=2@^6M$DP0;SsOs-ny+=C_x7w(`#paLLXHa5O@5_R0u<4~6yUI}oUQ4Rv9dsDZ( zqa|>h!#By@5>XPLr5ujmQdtGaiY4E5m=*rX~Y~}25Gef zy%2Pp0zBW{G$N!QwNN^ox`h$xMp4Ot%I!C$FLg-4+~XjDTzr+XGnE>GIK7ghy#=Od zQw7Xx16>A!272^pzM~kZnE*#V*HDCviTL-Q{`e?>2d8zwoE5i76o^h@422}JwM)g8 zC6a`htjwcktjk%NpPD%U^XKGLw_9#>oA(>k{-#s*X>Pq)A0WK=YJ3IJ-r{a z#>}*v+l&w{{Zm~RE_Bl~0iv7Jtb&<=oS6yCyYb@cFToU-?wgx@i6G}2dyE{H_7;{@ z7ADBSoC^kYP1@{;6N_2$b{);ZbXYu2k{f9Rotd$3;Ar$yibVk=!W7c8mR)qYLQ2Ts zBs#9;XYP;_UNNTg))n3AGL@jDL9V+?RVWsFMDvgnLRjai`BrAj0)>nOWYi!}vYbFr z#%aSCxruKWUR^-ZoJbCnFMRn@>|Ukz&za502bZVjUV=$i4;VzqjdrXxkevogItaP6 zfiCy#@YxVHqW~N(4@tY!q7E!#Q16>|%+TNzTt|tRDQ5`3>3cu=6CB<18{5NzzGQBs zslJWCaRMixo>tIAw4QLzmV6$>+dV3%N6Bh=FfTZGzO)jI;X+YnRNoYcDQM4kE+PXk8t7=nd_2VIWw4yno;wNL7dhaSWT=wA)f zBAjy=+XvvZGZIWf{wx&@%8<&G8jyvfL{OBx3fEy%FUi#*G|lQBlimJb1&wJy_){Wm}R38iMTgRCLy* z7dtWTD#~6;|4|DxqScwa=OVTkE)VIqVS|%n22JiM#U3c+;{1|}e-(~Z2Ll!2tm_;C4@8=hc{3%kzj3iiS@aUT~ zVo>;AP~DXx@a@HyUkLEYH`@Fxq=}5%j0kC=W5}tem@XRmQ!NiEm-l5eobO^dLOivYJ722$=s=E%%vM5iEXnV7-Mho+PUl}jfz zE9FBaM;)S+hE{c5WK%__(#giI>+f2Jp60rMvk#GjE)y&ywA91i%>>xVr-&&PjM*Fs zM_)@&PfSz#a*U{gPz83(SKs?)fLD!Kp81ibQ8r|sH7~M<%0&BS-Q0M7Vh7$D?>4&&s? zUk;QIxFo6TDxJ7MS^_3d)A>wmsR#{K@>RVU2`)EJG$?_^gWXF2-m_k_{>rl1w1TGF}R+uE{1>*RQ>|0|7WzsPiWhSs=l7OFl0JA_$zx~JG zhhw5Ige-N4!tszO3W?1)XdicA&Y(tm#|x?4Y=U>2b)xhKgBKncprvS6`aL6GI- z(HSQ)+!ZwmN;{2T0Hg?*BNw9wdXw8^2IDkc89K~&_`0H=+X&g=QHj-qryu_M6u{S$ z-{cl2&a9H*X~k-V;_8s{DnlXgtbCb?)bW^(&}uV^1C}YOuA95GI63m--J$%08l;LG z&AaQC)d0L@(B{u7iqz*K!F9Q=vG~e5c%o$cMHwU`NO}&cXrt2BS-%fPK!iL(g9@Uq zrRQ^H*sOc?VA;oS?gr@ijAq!CoQFg);EDGd;)|JVNyYl=B&Xu?f!mA-oE$?dxeiML z81X~PS^^lw6sdZyO?KenU^8x1uHRYOV%%>!_o z5f)z}v(d{bSlZU}f^MET%@2Eq+p=xZYkUk`dZMd%MowIgj*$N*wjK80ZwI*kPLtlwIkPA*z(MyP`fB?J2Os%6L| zP)1~CVxh=WbRK%*v3`I9-=x_pnpI9&Q2xc0jBbcD!Yt}8N6KTNG=vH02X8V?bWhm` z?^1gYhWt`0At98naTyU&%yqK#C3*)qjw@X&pHFXPKg9%|)~E8V2Q@QBptBN?Lk2Sh z4~ejx6jE%1!Ezn$a^lE^DoVw2j1(n?t%H7L-UL?%>`~T9f+eN{M0C|ev8ZXNSD*BO z*8;S(M{J77h>%V?vNDhd!htqj!}K8E=Do9|c#u&~Qw7mJ()n+FLCmrQ^q&Ps+(*-zYNE|Dj)k%W-03Seds$5(7Z zQY|nlB%#V5X(5s?#A^sM1?^vR?1E;1%bFv81Yt8`q@L3z_8J8ktr9cv79OPU7ELvMb-$wy!7viDs;W)JZeKxzI5H=(0PG$_3TMST*g;TU3 zVz84{_M{U|77F|YO2n=j+Hl``E8U4^6r;G|X#&seJp2I$-}+~pUl^sRC{qXOziKi^ zcJe^j3=N@7ZnD zqgp|VF6GYXOgc#j{B6DIk2oH>h;$(p%w`m!la)hp*OE0lr6w>cDPPN_6tJ#!xyC0_ zu{{Cmdo<%SVi8p)TlceY{zX6h3c$IC+x%(*eN64;8soc#*6Yv4RGNt};K*xnn@xo* zY*rfX>E8ZrfHS^r^Q#F=9kLe}Vn83k(fTSC1r?$iS;yd1N}{+cIpa^i25rmbHouy{ zK#mPXf+D4%{pP9@QrS{uu6bP+w;*&s3wO;B2w-9_Uhk5^{%3&E9d@aKp(7*SmRVsPs`7tVR= zojFWbb)h-E&rmDpNLUU5rekzDBf;nFW3B;yH?7{zMtXu!>?1(^RmbP)*+}5Sm-UYW zoO->@uO^5^G+fWN=p-~gxGAUXasf+8*t`&2x1a-i`iXRN}gbNg*e1wnfh_r1??1_nAh!rhBQ^z}JTBf{nv z!tTahsE3o2>P%fDr0lQ;7xB}OwA&3o z`5E>pZ~3m7|7t=g`_xK}%uL@YCHD_@?V_0Jdj7%-5!qv~!Hf9?Q8WEVtPq)Ln_q3X zBc-Km#~vAMD_!Ot9aMtpGLPpkcP5It6qz@C@^ha9_}2Y4zuItz%^*mrlrHmKyNZ$d z4D|fEt)l=p-D~r!2g=60N)Fdei=%qWcifT9FGLI2y*uREVU#_m$pNzG#8Lcj%5d?u z(&C1+c<`))03N?9UzqtxlS{P1f|MC_>ao<;X7dZe+r8Unh0ylg1JAN8i9>$yC%$kT zz@_`y{A$DC0X9eV6-)0a5^~Etmu>l`c~S_Y$=?U>>w={RNIe=i$bwC4jzxbW_%^kT+Gv zoiX)QWok@f`fb#o3@MYJv#1gn*>V*I+?LV;RR_WzIKmTp&R8Ky1oHQ{A@cVzX`FoKK(({mR)HCK# z#_qhR=PLnLN0w`Zqiemj=*anVLG$Or3{n)HefJL+1JwM~=I@1qeu-btrTfq}?E5}CG=J{X{JCG$ zYyJteEEu^8U`y!{=MUyA?<8JVaJLpX2(Q5f*H8N_wICjT_hCPtfY-GmIoG}2>VwN; zI@~f!#H?a*@wX$_Y(Q)iU*l#)P9X5Y2vLV-- z3&G@4E&{?&=}N%(4S!e$u-^x4ezky?V^GV61EcE8El<$f9W3cvEXHp>?Jd}E*=qBv z1}X1Y%o;d3F6lU}v%CPHZL}PNzW&0?YXLG<{XNla!fNC^?68FN3e%$$j9+==+i?8) zdz-%(*%)-|P~h%}I!XGKf}Wo4Hh`aPeDG+1+ox=H z6(RL~tJ#DcggGq1D+&IWF^M~u+w8qa!RVBF9S>F8lWRHz6IO_#@c6?^u`PJ^H8y`Q zG?Ft5)ITI+B2eB!t$-vF0g6H2CABvLyzE;xzltz>wuL26YoNw;SlB%!(WeYU({kf7 z7Lr69^R)%9256qc{<#}%2Pt2HGWLKd6Y?&Z#jG5n0e~@4kW}{5Mtj) z1_3Ur==zGnq|(a0qHyUNVdufPnk#2nMc!FQxiWut2xcD4)%$(X647fSDnFRbfQeU~ z_n!ch$^GVDDwJ71_L@PJhOw%s$K`UZ*iWyGwkOFdvn+;%mVZ37y0t!#!o?ff&kx+kSV=LjVouE8jf;blco!&J+Ta`EZ%PiOvJzKsOP+ zNo*`dn^E$M{e;L`PUU!9TTNTaU2 zHFB(Gnne8*?*0Jpe$?hCkR2@>SuJ+~SglhD2&kZBmgF;dp7aG%&X}o`#U@j;Y6jym zNg|BI$d!jzgOZ+-TjvGwyo<3DylKY?i7h(==KPEH>Sb&B=$pb?ch|PB_ly7lo3pWXgq`$`f%*fhxx^1KGN) zK-(%Xo0(q4m_dt}46FFy7IY@S_khuhxID~1t?i($&d6~oPiTJ}=ITBr`N)DIr(It9 zr;on}$NpDcq5zOLk|JW7%)K{FM}4QC{&9KNyjxIY1$Q-L+mxXnldC&!qRdV)@)vlufh z<+z;F5-%5=^5rSH(t+o>X>KzN?0`Raz|rRo+x#q;nU^#(7$NT^0nhznQ7(R72y!B| z5R`tR7omna4z;LiZ*DIsVv|nAm8;+SL-2P+A19RtZZq;CR^A+H++{P;k=o#g241zw zu?8d!f2k13( z6U#mChXCuATAs5552E%y&X}zx!a9$@^-&nS+=%rmWt-+KMo9=a zwN5}V-ET5oSBwZaS)_Tpvv&_3F{4wd-ibYJ7E5v6olyZVZ$+LMCAz4nW#|7i287c6p$LP>YdmDG9Z zjY|S<_qjOAYO&cxprqWsBw#t{nZV^dKH)wuW-iJ?OUtty$3(@*kL95Mk`RPOz6?=A zXnmY<=SqP3Vogzmk|R_G$vvmbyYUjilXP@VPIGK!VdT;8qH+4k8k?U)qE#~JIRuZK z5>bq3tZJS!LK7?so9UqZZAq7%xtO7CImYI{l*rXW<>JpO;<_X$A<3MDVj(@pS9{`7 z>?^+2=I_}^mqi+AV`D~y6f?t`7UGxg7s%CI~JpEkSB5RnH4fw zs5F+GIp(T4NaVeQi~1Ci6BQus>rz@o?TN>s%Oi6{ZA%GB#@O~>zghxt-q8jt%qJa- ztwfbVS@$p-h;RJb@Uty*q3G0cYq2=|M|XY|;O^2I1TNjI3aSLglT0qFhMM%WkY1qa z+?j(iP;8Nkh@x1Wh=8mN2O*PS;d@-1=)y?e(>b@^xD?>*tnZ*xL{vGLiL2LaDu%4o z$|}PBL&AZe7X>RHA_okdzzKJ*=jst%I?RiPIf`?3thdkE087rv@~AG9obN(K5vUF% z1#?ivyXlM!ii{__mQf1vwYlMjTsq@P4SwdvvqrI(PP-?~dvKdETTpvzCpi+`o=RJaJ(>d)2lnfc>g=->cJmCu3e3*<(bKtOCdz*8E zPFyNkt3LYuH~c-o=~pM1Fo*WM1aO-%i-^p2f~z=j_M>U(97r$YclEG$0lcpC#na{s z)aKX4f!hp1ipp|IHk9mWLPfaOg=3f1I;khplPrMSuNwb2z);+8iL+4lcLe2t+l*Wg z$x}Ovj2uo}k>FdEi>0=qA|!as1IdmU@nDgz!Kh)4l)1&sOgLQSMjn|wcQZqazXb5t zhf1F7sw#ziNmmHWW|RS8GeW3bW>w-i^I2XJsWOj{^2Ad{;2`gYQ>yZz95D>YYgs(v zBnR)ez2ms&QRW94tT}{J@%}kM>Q%*(U85!fbTRt22IVijB)D|Ff9*Kpa)7hmF3)-} zSuQ<#B&`CekVPO@#o#tWgWHTU;6^j*B4!HJmljefqnd4?kf20FQAkRGbxSrq#H96d z9PCcAtb$da=_)Qu&h86?_`$(fJqoZZ+$&RsQvuSS2o%yw%bQMvoHv;!kGx2`xLgf8 z?Gk~pz)e|T>Od*eLw`0A(7G+O85C%Z$-XEdlAO?@WRec?+69lGU3poV?{SrblI5Hm z%w{Msn^7us7U|%+BsV6{=*#MsD3G9;#o{2-W6|lzQAce9xT@IL6#%mt6$P^y6@;=^ zT-f|94C|x$yu*<2ukQKwn*hF$(ooNTkowrlBBX0`vmk5+!K{J8pmjm&*U7nN%4;ZD zhQA!Jz3zG4Q}?3G|H@)l9xQQYXTyN78FLD0pq(y*v&ryKU@@7vlRP(-z)!9^2Ky`< zUt#m}LF)rcFy{#p_g!|=5nJsr4PO~_X54j=sfRg=bH)~s^|`7oVpK2EWgu)uv5<-# z35q&QLQ=|2zgUqt@vcA?KbDeY)>D(nk}XT`y7 z^RNwVea7Zj6f;r^3(RKBEnRodFNYh$s)|J;4CZNV>LgViL zIK}3bgQh0H%br2Oy2UhKtQR1T(sTulE$UTI-%`FoxExvDkO?wc?F z^BHy-M0k#zrlw5B_9y}jI&4-YaVRWq1bDt8bCmN5Qsj`y3=CKvMWE);V~@3Yl?2NC zlK`jfaWdCJhjL_&dOoW%KNc3>0nok2*>eT5EH^9abGb#%>1TvKx$Dx>?)^!F5@n2 zwAq!yg^hzK^RF+o`FjTX;b-N@e3nsDv+Fp3llQ#-xkNuaI}c^v*a-g%@a9>oN3)Ie z1@nkYuk1`&{9>_iJGnJ9XD;zbL-I;>pk~kyywG44jnDjH#dWCXTW$WHff;|wIV-?+ zs0pAcUu#sA;DTH~@XFbsXqcvPJ@CCzJ#twK$uW%3^Xm0w_4l56>wa$p82h%(uNLS| zbn-cuPh80=^ZA#KMswzh@WK2f6lvw-x5doj;kRAoMoaMQ3DDvq1;n4@m-A`i5@nO( zt(#y%6wRyiI7F_%#fc=-j zo+k4U^`)Da1!^Z>DUSlN%W9-=^gpr*VC!<5U;R)+4qxqRTN;$Hp0zos|Mh>4{lx3b zsDSewo-2Spzd>abwz27K5D82E65OUqE98&d1 zbNLj;X|EQy18lp_=2t(;Fe(w$h$@ONNUO_FEem1|*yF4{0<5HFGlAhn-HB#`n@MZsXB)~VTcK$pk+)&zONu7~n zwgRq_JBxbf6R}?wSlS`RHEl=l1o+6TJts13Vm4I?2%DiK6)+(rk)s~u0mVq{`m_lW zmm%@bXyLi9?(4q_Q$5t?|0RQmyM}-iFf+VDFq=^d9*4SL0K9U~SOZNYPb0yxh((l$ z&Iqx>ikPXRax_fomfV5B$)oDbptBSBrMLO>0EZu9^XEB4L}lNSLRn@!LL8eEUG;$$ zkfScgL=nl0FtlAb?OVjP0AIezV$TXp+fKBId@2H#JmvZ)JKMRDR%WJf+tRGea?bV2mcE%ZvgnKH3`4@ z4Q4awW=I;LMB+Lmzr4zgq>xgIN05`kpBZl1_vR*m#k1B|oEwP58B+(R(Dqe%F@+7O zEEAQ82sif&G{^Or3Rnm-T4KWIy)|#S5G~B?uJsq0y_pChADGQZK`HZGssgZ>Oh81G zYFtajq3tK$3~=Non_pc}yV}xEBYYx9GSLMsLcbXKtVY~JXUaY)hRYR~_HuXi=6uB> zETD@AE;||E=~EM))e0tEkH;MK5=ksuq9iMZ2niPRjH;=ciV$)GOXDVahZq9u}f30$E|?dtr{pz2!J!T9S}@*nULi6`@xjmCr5C zzI6a!zajRY1DIyLfQc{QopOH>w0<&^XDenHU0sGp{20t;MBtG7^4w;ac=@_(-v_Yu zESo>SVT&$t@1`yAQl!Fdh6ayGk4Hv`x%#mY3}T2u7!Z}y-wY34OG-+7T#{iLlnB$uy&G+gxVtyfb_eNCdSq(J0l>o99fwvH+-BrNQ4%N)f(n7sBe64C=(&oMCv`#?w8Ce9ecCAi?|#DO zCm{+lih_vhpU|d-?nE+5M0~%jf`To+kg$I)4>rFjy!V_d76D8zPB2AQ-I^K7%bG;C zH54I1S>!1JW&|ElfxZ%lo(7L<`)hq|%FE13r_ClyLC1gMQ2027!g?RVp9=Z+Sq7RrMiUYG5 z^8(sBxX~=4@j|Z$T9YdMl_zi*CTopATyiXCX{(wyBB1YzDl}X}<(u!Tk5xcFl>zxohJUDI#+qre?z zcoq#Mp=85(O+-pcd1_H63p884Hazg0ea`wo9l%@E`z<`_UwMRiqMmMu8LMG-r$u3n z-Ipi^)Z@k+(OjH@=lReO(3gwLfrie}avAiAbwPO4WesG-`qbfYORd^C&y>Oeg|UY~NMid+{zIjj8O>rY49 zGS(b1W(&ELq#^}uJoe<0^k~vUK*Iv{Hf_n^(yfy^N=okP?qhAQK}X?A#D`z=uQvi5 zewfXlBUDP~l@#o=#McsKK*dJ223Nmr9>^>&vO?sBG)*>M`@svayk29pq16Se&}vW$ zO65^V%Td!A1PtuHO)gjxWcYK~;x3?-1Ata@3TguCp{rK`^63kguA{1V6i`>jv%dM6 zae%g?LUy$wMVNvdk8!xmQ*U|ZLV8@&*o75EfDqcGFq&6SjzM!F*TvuP%QH^}_=gY0 zoLq)?zQU56Rw_rm=7zuU^_1e!Lk>3>GCgHd6sW`PsY;L{)U1b`Q4vxV1es3H4;t^q z@zwotpg91y88d+?Qd37sFyaM;}S0tBA2cw;=EGQthQC1u)LFkIu|@~ zkYMt6-I62!9WBgU?IDt)88ZcS+YDLjev5P+x*&`FN(RS2nPutR?H_wUd76K4!54HSja0URj+paqre6sNq<>+M zY=Nwpb(TAR@j3_f9?iqt5~SJbv!aW8cbQ*2_+R zX>QqWAr;fOxGaPuxXmD-xt>s^&_id$V)9!Sxx9$$OUcvsK#3a@`slU_$_ir`lS@ug z*KhpWb6x>3c~^p2VZ^V?MJ$n3{4)bHPd4eJysnTpoZXP-g)7?Vz<{J0sE%|C@pZO! zhdmuWqpJxlDHW4p_-?bf#k=nR3ii)8#GE;Xuo*LfNSrk#)eEem$paP^l20Z=$aI{E z)sjUgQoReT)u$>$8oW*Kz`pr^e$M7s61w3rlx-&K*(AY?J5v-XltUM#K@43c#h@rK zn-K+N`jol4^P_!yB9y0yoP6j8>-v=6{XhRIl=r9SXuaH6`lkFVjaa>NwIj0f+sp)b zOonraH~>ZYZw|}{E>`YEMA4OfBb1DnA zR)0_yNvgFqLsQ{v)* z3L=#7KQH_EjR0e<3EygmATiZ$an` zBTd@5kxJyz5 zj=26m?%W0N+E3X0sz*y8$0XjUd~(Ar-{R5Aq;>LP5M9PWPP|YD#vB=?Lxv`ZWRdfy zfAuWDchkQQt!fDAdNb^f`Fcp>Vt>(>jdH5$7J@KO8eX~op#cB7+2rjB*o^Ywf+(*f z>uZCa?h$++?sH%&Y#p-N#oVA6$#Qz~|6ccDfcLy~^NO#;=avx<9~*m)rd6hEGo;MJtz5pOK#H_E(u^MvkYSOqGwu`X21|Kd|SmQ7i|J zbS%sM+7OhCGANA3@x|E|DlK{~-r6GVH_aDeJKVc7!Q4~OMt5CQw=M_BmJ9XHdEoe* zgXjA2G8Vr(mmfJwroDCHAWFVqzo(kOd{^GCgVvnQRLxmLHN%KbOcdJ}QsH@$2?NKR zb0omWtJt=L`xM9f70db8jQT@5V}}Tl9yfVD(BU{6CyClPxp8{qxZ)G1Fvd4f>}(8V zetaeN@qd_>`)Yty05P=8B{c&q!x7`+Nuo~ZKeKb6am78MsC^N}H&EGUD%6<3u)A*^pom-%VO@AyxEPk+VcS3N2u^V$xq|5D~oztibx znJZ2qtZ$;&*|;O~mE{1(e9h)p3v62xB9!^gow>sli_nTIJHD#V^vjQQyMJ8geQN-E z{yty+=QHdwh@fSjnUR(&gce0vnPuBdzx+tI`zNlv=xTslzijiX9$My2Y9f6`2wP5N z$4ilUy4}C)-gjXSzw0M9zv>a&^BE(w;>wQK^qGG7k#6_zo<8PK9Hjor=2s7FD-%(T zO6EeI$6?IyNm`wod>Z_Od^HeKHd;|;+fHx$NdU0>=xypo?TP|MaPL_39j-NLMw6>0fB7YzX?=f0QUXNCK&~ zo}!9{T`4~Hh7&#oaOvwUcGZK?Cno63XzeeI+X6lonk&=MDfxceOv(|UWgFW9uwZ71 z?8ROr!NQJA(R7R?ZJx~lu1htB+3Y`&0S?-(D8}SLwChjuw2m<))o>lBSg#Li z*Goh(P$n5oi3z`l30grk>Wle3^3@(eWXiWLu6!GU5jjDs9e7Ne z5&GQOkwpR%+8n6W1H#W2%ftI#|HgAC;4OE;d>pS80}k;5XcNryVN-*nq!WZ2!qbgO zJ3(LZ2aNWmBp*SdCM)5JT4G>2!wpm_{$<3LaXBqEkIF5CLvee37SLLjGwJjL?6~!m zzXN#tzd*IhTqDf9{KQS2h9v={%C4>p@+W;_Z}s&)r+=r#b!!uzpsN6(mT?g`5M|?c zja^p&JXE#vCY?pFXo)%BbzG0ukQ6k0^r2ZBXGawT1F72{b=N4ah(t;ihJq}oV1WuT zLLr8aYw#WFQu}hHM93b@mxv8rFIxq0aktH{E;uj}_A*FKg_1u*9*IZzB+*5jY;gmY z!1a*qd21UDdNBpWC^tf2{TM-CLCMLGV5ojMSoh$sKLPOQ+^&CKK?JDC9Hk|oKG+O{ zoHtO{Le59Ihf0}~Vs?4$0rrYFZ3Z&Y!d0tu1#q^qNt*(=8mM0)bgHB7*^$gSu#*M) zY*qy_BTKIEpMSpcy#P0m4Xa`Za{MKtZ;*}v^a(VBN zmIyS~wCEAzYt(WWv7#^JL@)6;mlF5YS}x^d#TP#Hw*cqP&_ccRphbfmv%r`;m^{MVkoB03+hJ zXW}9Cy}D|Ev<-4cAlY!jutWVgA2oZq?1~^bXEG#q(;e)?yHU@hONUT0C$n*@3yWO2 zc)c%u9G^?^Ho>hP4%h?N5!6_V2BwoJ3#)&5`lqn={H@KeE}$*x2DkSxs0{+8gn=uc z$w{;A2_hK^mmlWE+d4I?L#x#J-ow0FG)1!9!T?wW^ct0(tE+)Tpi87&{Cec_4*=Zs zBb#3>5L_KeS4Dj@>R=<(bFoG!Hj0pXgj0f{_6M7%9RFp8U05UCZfb#r!;oy010LNz zP%V&q1u#s#5t{%i4+m3Mp5a?m{g$jHN2>>cwh%q|8zgBlWlKb$wupl|n&^6u zs12xpg7E0kaI>pEx2JxhC#S*&WlDUInn`b1d8)ExwC4PvjO%ch6OT#%GEsZ#0Y3nE zO_kf02*!hUAtl2|XbEt|k;P$BEMi36L9Px=@l-ijh{8q?IweNKs1{%tjZyzq1tq8V z@%@$pj4g8};#gG$Mvk$1g^jP-TFgq_5cbW})ejv4os} zp;Z}#O2ubDjjW<6fUZG0^WBQFuIxzhN4o+EGBwgWFbhM02LYB= z@w_6JF3C~LSAQ0uPEBRk7FE#vI_NP9k5Ym9eN{hz3$?0c8}24g5%!6NJ8w&=*NHt;SLiY#2NX2G<7D(rfo-4#+!t2 zdb-EGp70{devtwvTH^?uVsfbqM0+XM50-jpy=uA5uN0zO#kSV6y0ZXU|4hnA-mbdm z9&&oa5L`L(kl+x)JoA97IWr}@$RD!zSk1a8u8+ziJX2T#y?vOWbqQuwK?s4ayIH;J zM%JTSvRyJIp1XieLD-m6KmylC$Z3q3K5inKF#*D3&@$+{Xt-Qn*K-a~o6PX435e(@ zC}oFHLQHua1zwxF+Naz0`2xV*^wMH=Lfu9@P(ebzBP4rh{&Kg55m%|HR5~4!XbQ*G zDVR1@Q8J)QXGCG^d7fvMmP{;=1#O`Pe{v?5T4g%83&3SH+`ooOiiw2>-@O3f#RKhl z6+vvtVygNfY(}YQ6I)K&e)P6Bn?Dy2HltWrox?ONiOV_5)`EP1L~Wzd$VdxKju*ZG z%H41{L<@U0g@FSa;pj(D+D!pvkyg|61QPsu%8VCgD$2s1k*DRFdsH^=%DJ0N?$n&7VyO^P~cc!WV&3 zgq;qamyt(B4MpSXaEkl!I|1tN(_BN>MMN3Q6l5!JROkV%@XIBYv?n4uAtcXAMe=re zNYJQ8dBwH|^4&|S*f=J`M3ei( zg|cKYH)vG{Zm_tehw(Q=v5nJrqoCp2qfu=s^Sv= zv#0<3V*r1DiVm(o-UQkjkVW+(j#6a>)LlOB$P=ddm3JKtK&5SryWRE~|D~&mE@Daw)u{UgBT@k#$%|oS4j^;!^6- z`tyrc0Q}2aj7U`lx{E<|D-5XH?9n7Sy>lxC71e?GwR7W~9C^_HMi@aa`isC1oc1P9 zeG1b|J0i&9?G3un7XrBj8pV-gdd_vPT{sR+&o}|bn+k-=1fw(p`q&iC7=GwS0MqXz z_VP#v%^^$<6bvvoz}ss8dd*+Jk=Qd|?#La3J;$TlA!QXZm}yCpRwc_PkS~PFhpd6L z=)OS7b57h%%STB_DAWKptI%O#(l=sMaOiOQl7kZ&)MGj*{w5q51@twD{1EJbdmU^) z4|!6?YvAO{FK(&|%x07XVKeCdy=e z)vQV&eDx+WuBr-F1WY}NYtwILs$~6%Zl*pckLo}u=v+$bC5j@DgMAXgAlYE*qSrEy zgtW-zXu{f&a%(*Gl$Cx8p}6El82&Ai-^PH`hPm^w)1!iRyz&(&+jsWr&~o#QO37o6 zKzFJqhy=YhyPvzCRBE3CJrpZ`4T{8llTOyjLxbZtxv)TflkQ`CQ3nfv2VGu(<$@(Z z*GlMSAe(UY?F{AT0LKM2)u(dF<b+?En|;rvg_eM(I{UHKjI`Xc7ZY$k9|}lg{na zOB>8_Dzt88a|3UU$6AyTCZua8SB@`tU87HexqjzD>9d#F`3oF}-gi+lR`o!P=;53L zZ&d_i&S4;2#(cD3teNGqCi$T?SF0h(7A>ShW`+?1o!tA_(ayy}zB52O1Im$t-nf;K zhtqk)j@8&peob z(L=tM=yr4Bb%$>z`rWioZfh%W*JXGem*Jn=!kGGAh*2tNd*oYo4VdT~p}R$310Z}qgU;64dvET9to#^hPa^(0bPd4Wb7|858?P5xE@b2H?)+mGElDs7Jp)@cf znxd$;5|D)uiko=Ph#=)>LQWTu0tk8P!(ksfYZTzYFyO3M^V#g51FX3cs86U;jJx zdjFhm*i<&Q38)KB<+0h{B&1Sv;fp4hVF9+q+Rs8uAaqRPxg2Ooo?-YL_sA@HYg84P zB3~K&|NYA;w*Y+qW*J^cxB5U|G|RhD&s0$UJ&c2t33{^V#)wD#Z7L|~fDFSFrTv+j zZ|ZSnibxB;%flvEc2 z`_AJi^Iyr+Q5}(do27rqn7{BE1keHrScB=F>ZnVH1>g_MhxBzQfz7Iim=4p&4n3`@ZM(^vJz)yn}sMfMZHAf`4+IkP))!=y(Ewmpf(@YJ*yo@S5Icj3GOU zSbk1$B*00p7@r1s(`!`XOkN?pR5d`*AUl{qg`|!g-ketlx1hRto6#nC0h68fG9mE4 z8MaY`NJ>sN0Az|Qw(M>tDAe2kPQ!=~}GQ0os;4P12hd8=_8 zwUvTKcBh&k_Q#GwPoT_)Cu#zzG)};ni)zS$jnZw2WTfITAwPILuHJ?3yV&x%cfsbj zoYTYkCU2Aehld$HiXzy^H^ExL5S*LlO_d&-83OG$K>oe2AH za+lXHfF6zY)wtFf&etqi?PVePizG=Q;t){Ru(}K_5xpy^+TuiWVY}uaOap9oG`2v;Uxa-Ky_(!^&vbE$!hKErGUwiD_ z*J6NYb&TwSo9Dm`FWAz(CSXCp_oF(!2yeCpi58d3bt+*U11X8pKnh7%LY7vDUco=x z+}iwl&slVMtGC8y-2#TKsj&!bgi3#+-9NE`KiC7WM}y}rVlD?kbM6dI`rLOP#B9IG zj#oV(3qtcBEqK&J^#(Nsi#^BX@DN*I1TGnaPK$Hn0%$uRfbMIScmjmuE(K>v&?^mE zcH76vc;MAr0p8*@*Ez5NjtLy*$-MQ}*B=!OFWGh0EdZxw*O4lLyGDehpf`$u`Y%`p zM^c}`>0Tgau*x_a<}k%C3)ZTIL{&o_Kr8An4tvzK%O5lg%*jpRRLO^vXx8>r`-EcvmK~v(-+K)_!U=$jobS%jyuDb$M_Wem#C6;FW^a)PpS{lYYP|<3z(I!%{t(~`Pb6Yh z5i-!RVfXG#CIkKb4r0GUY983Iq4AEsBMxr-gEuhHmsv+UQ2_aotEd!C zC;P|xmpygGC0ATB*?+_NM2)Xs)wgld4og_o=Qx`#b(||MneH6xyzYV<&cE)0>n<4U zT!C>nj<2|6pkw27{rJEAU-+$}9lsioff|%KY$Tb}J?wW#V`C=Mcm&BD+o=VR=}Q(; ziP(C^rJIJvh9;j{_T-97t{56S|AwcQ(Q(dZt^w|9?&%fdR zl^0w$H2oyT*=PL8E0*nAI$ihX)6t&4jGa?(CSACNV`E}lUu@gv#I|i46WjdaiET}6 zV`5HhJ176mIk)GotGah}cXjo%(hw$RZBfpd71XXHBkT-DLTxMlxyZlUDFd@Ga zT~3~yIk&a_jv@$T&2QOPN45r`=wwdg&J#AFAHyG|0%ujZXKi8dsR(EYuw4B~o2PqY z`bC~w>*@UADW9KAbBEit)=&nb&bP|F$=!7O$=XuW74YvPSCp3FB;R$pwyn5j;3O1$ zdZ>$F+iawokV|3T9@R!-ZMfY{cW54EPjZvMIRfaJ=ywhR!n*Rg(;d#v3Kf5ff_ ztA75A{V}|(XuK}`=*zNHiY&*46ke2&Yx41YHrV)iGOgxkVp929%4^foeGYHw$DrO` zE1=Ya=P_X+hU5I|&DzUU zclWS*?FMTc7gteL=1{;T|Ro!;9|lEEn1<#=Sov27*6@$7T2j!Eg6mH65bu3XXoZc@`T zr{)9?x8me1$3C=3Advn7&ArPyDBZZ(#`e8;ywVYdMBFT$LlYB~Lm_oP+h5w?g;xgOv_f&4gZD$7 zjO~1a&UOj&q^?n~Ad6@zTc)5x-?59t{VeIZrBNA)@n z0r~s!x8Fw!EZYvfchI2zuI{8N7`uB}$QPPz9|?aX4Jl@2sY1%-<7cU;2p1uJD?o9~ z6rK4Sl=_e~+rC-io>H@J`m?D#)xYTO)8Ys?cj{*0+cdTpZV3XnyP|`C=8^cX*IMt) z6&J2GEQvhcyZ?s4XB4{e)+4MQL0xd?Lc1qSCdjkgOA44B@tJ-69ZOL8Bk20L+SGxb zzXkYxMaxiypeNLU;eDFE4W?C)-q;X}UZ7dooK{|=kirTqUB&EqABJ}kAU!18xkWEq z);@f#Lw4(X3#Yd|-k)au$ZXlID$uG5p*n2Z<95wy{Z#2dq z$`gDcECHWhWO8GgEk3KW0{cm8?jm0T`?6+4rmIRUs;KDZ9{UYIwAXY6#ys69mTimo z&`-~vkFJl)XPCZ=qim-N^o!V7KfmImQ`aRLPy16Ze#D;~Qil;$>5JbLGNMX@_WoZw zcNj?~V;*1QUFat(Z*ECMl>r~lOl!W!`pt^r1liAOXIDU`>{2a?%Hhn6=AnEn(}C2< zY)pIOmU1QOVJdf+)kf^iYp%kJPSnlo{>$TZWA8mi;MKPE@NY`M8%u^(;NlH|Jnvi~ zkyOst%vL9ex{9jTei?7B9F?gQl_@b_iVTdsCrnUZ0oS>zhy+-Jt*4lydJaM*S=)1D zG~C;7-c;F8roeENmp(Uk;$v*(SvB7s>mRzpl8J80u2_FYUX2A~zzVshKk{8FUe#K! zXyc_Xza|_gm&z3Q?H_*sEF;|16Q^ZTyzu7{WO0a=PV=0=%+`T3ZLeLESu~?xg#Np{ z{dK;50q!`+YV=}*sD0}&{_`uq*T8_tnkPSEK7w^2w{u!yQt>Ft&wl&pF?+R81Fm5s zy_VFvSF1s?g`$GD=Bo%~AFH^%Ib1o7JE|*Qg5f(OA|tmmZ#tjIK7`34r|u>+c4;h! z?kOIb@_W>&hh1i^_rC}xLFN5N-81g*Jv>gB3NvG<4!>mtOxq1c>Fb)qUP0DhIX7=H zo1UL86ksZd5h;V@(Wxw(bkjcgeVd<4Qs-tde*E)VX{M=s7rVg0u z_L6>Rl=gfUP%(jyMRAdbJhX&%2$v)QKG?7oab4`xyEg8w@8XLnDhOK4b zVJ?*}Jg1pnyXJ7@&+8OJIP_N~sAScFqtJc0$)2%S@ZOFQF| zMnkLF!w=nT`uXM$xeLF%3Cgb~O9_=F-SE7cG4b~Ufbrp#f6z-U>DX8hE zNLf#9k7E2BJI&nPvgKw^4`XR;UVz_|cHkwes6BmfI3>aH24ZEe+}TomjXJ9h@`f*G z*7V$$v#N4s;@~DW(M})dn(uY+XUHp2ujkTX=amDK1#ro(r_(g=-n_+QOk2_06`Qj9 zD7ZCEP_-J5|2o!V;HX1#JMuLkGPUZFc)!{HUOdg8yPtdE1e&YNw3|M_lg(V2yRq&= zBLOc<_d@>lFPJ_GeR|q3x!_Mrx&-iAhsvM)+u1Q&u97@)N)Q6RRJ+N$JnbvLtQ>r| z1p{DX4G(>Ao58ewm)8kTAFQ>X4&B^^tj31kdcAchoG{`@(LiEuW0NQou;S|>lsfg2$0*LmuMD(oG zgp6B>f?9$|gWB#iRiXHc+YW_F5?fDg&;q$eoUjXkaFRX{fNRfow}xyT0k$#@fB5IB z^b2~Hk<5JtrZ$-ep3>hhJLGM^2!~AGe8V=bQKdI3Qm9Q5$b_d7NZi98>XZX~Xd>k# zWczauY99m;dj_K`A`Z8VCMDM~DGXCvFU0~S1MJHx`8_KdMbEal5a!-^EYXLhe*GMB zWkEEsMwE9P{f*o%AE%@oQQgm__2d1>`xZ6DRX27K%|#iB`@F;sr1s4jUByPplQB+A zOAhdt^5o2aL?hd30rM4%|C%>gaaCG|xcV5dQ=bl=yXcrhJa?C^fjxA=LxV8`MS!~p zZF>4VU>m_=@Wm&nZzCqX=s@A0^ysHEWU1uzDZGbY=THDGhu@@*@^!OI%Fk5MuH=OSeX z#pYhh-tc-5t~>152r_RMf@p5&Z17B9ST6a1`6>Hje1@4^Dg-&>vsl z3c3+0->TCTV#nw3VOBeo9C&@-C@j)F%3dJli_etQ27Lm9Q5=KA07l>MA6>b7z~ulf zk$NDPO(~lMG%hkqE6Av4cyg%51jSCj<@u<44)1cDxArf#MyQBom~sv%TS3F?^xLVFCPH+R~*fa_nU0V zrbGAFTX-!}?uM)n>fGbdV8Uhq4=?g{VGxslHR#b^@XU|7C+cg)Ys*=CuJW_g z>TTsH2#8LGmK6O0qi9JgF)c7o3weyd(=lN6U#6jgf@d%v_dOYct?RRGaNm>UNb+c8 zGuA^S4Ac-dFn7m63tX;>^nD}`TzPrX)tDdLz*;z|(=|RDEl4g9pfxiJ_DzAopqvzq zfQHY`jeRs}#nJ-Rrz=EXk#9|*O-VIun}m<=X)AeLi3?Ux#PZ4o+lPTD14b{5Sc9`= zFAp#?!;cX+l{!6~J}U1WJJP(83zzE8Nn9B7N|1dDt6drbxSI;R#_qP0BvAlfpI|px zVpZu*D5CqgsJs}E&5EAz@mNY4MZiQVFfg{tqD;u3CN}VK*IAdhQhp#pOOi z$*s27P{YByG==l0#GYzGW}WtL%Z@mFns|}DgChrF9sfnzBr8nh6CG_Og!#a!Fi?lZ z2YxR1&cZo@tvUdG{*Q_XRqc}^w6@3ohH?7}A#eO~Nra;DR`sM3uYY~J1jkw{Wp$Cy z{T}aR<~Mv)co(RTzD07P1vPi^(stC%4`uV3P+;0p@nl@EEZiL&4dK<@4l{wEP*DId1*gB zl`e=gq`k%@TV>8_;W{NaDfXRzgrz!$4WQw2Zk%_fyX(=?7rVK2q*uEDYc&?@%YT<$ zb5jMbyz_7o?8Fl-*PEr(xEo$>vpvj4an%t##HO<1CFKe+%yY+b;-!*q8PGF=0UJcSzYJ2|Yg$RaTaQ2!A1maBW(-qiN>Z-hD9ZEGJkeTZbE=- zG&>GEBriIQ4i(?#O(pcHf$5{5#98bT8NP%_OIvgTo2?9D#EPA=G-Tj8 zFvbPb-H&8q`o5f0C`5x`#EOZn&R@~g>byu>eSO)B^l{1*h(_4de*|U5iqK%jj{Ga* z;B7}u$G;tLC|$^ z$*2jxM*=6Si?>tX6cfq7V@e0pd7cQxt5 zTy?C_=+<|HVtXSGez#?==h>X()k)&l;VL~++j|{Tb>cup)Q1BqMLtZ!1G3-O;t>rv zONHfy)PBqzT4A`V8~9P5uAwmo7=wr}1HF7-`5+2qxr|SA76l0j`y5+!zR0rC4#vM2kLg`OQx-C|2OStdH)~55824F0Kl_p5nCUTdgX4usE+{N{RK7T^H z8N#aSKU0L3B)|vNQL2s?%nUI&2BCk%F8HLbn0u_T2Pw6z`JU=0SgJ6LHAzS>(H&#J z8Q&2isTGJ-SH0|IzJa|bZt(+9Y_vq9B|#zuy+`e5&wuoiI@(2!(yqGwVtm=>v`}h< z(VeO1jCGVL)<_E?!yTGUkM+6mf$KAYW+o$?UPS5&6gWS6i*a4J`sGs%7Df+e#VWPO zLlzMqnLY~_H1GzK!mgLXR_;Mg>6kM}cs^*bpYuedSvTo|V+}51(4;)4%Ap6#V$#Xh zT+T5Q%r)r<{0{vf$oIw(I^uVa84~+fp#j?;CSILf%1ssgvu6*0$(R$$^Ii;??u^L; zrw^YKEsXgUg14-cSu#~iFO^*n0)u4*Z)T1#ox|*@5Wv4q3sc#l8OCTaDt1IwxET(Y z>x?0J$YHWB zdj-|2WJXLfR#KwwMj$a^@qaGzaG7@x^e35(X>bIfh>J%I(?_aKhc7StGvQHJ8!Dr) zvsHmt1uvh6Yk(`Azit$qyd_e8CQV=z2*%w`T0H(c@(IovB_FaKF9>0E0?MBFO*N&$ zlAUy27$`+?A4-Se(F14$J6CMK9rb5|C=K&2P*U2}22VG&zL}ywaw!5=Bx< zb^+D}=1O8R8Yd91-CO=9rRYnw{ZY5V%HqFGStOtx8i;?-KTlvbR)_WRRCXRsF+x7? z5KICRO6@wif~Rza(9sL%#O8}g)gN%Q3J`q9qhS`cs$`QoVCU!KJ~9Q%QVOFDS#Wj~ zsPZCqnz2MC{`?IWO40#g zU@Vbh361a1)z?B;NIPnUBl0(fTuf?G_ECw?k8TWR{Lx9<9iq`$5A2_x=VAMB*!R_Z zS6Z@f5Hki@TI7sQ5A)*2JwQQJRS}?pf3E?BvJHcXE?(&8sNQ<{H@pi!-%P9XyD}pI zO2@>Nz1*UjIH~OI=7~^h4IybY|G=r&1!GkGKR44L6lUR&2*UK+ES~>&ARw+Y=j4Q% z>zYAx(cy-UY@qcGY4e7bXdQEl&_Re`^qW;z#0@C$qFSO7-1l@J4rnn^29m>b|00M&8fj}D@q~9X0|IS_jftHqqXQ(> zipKJPxU!^7)nXtt%D!<-kn{Q;{?q!5N|fq@PDkrv>J4TUZ6qe6k+ERH&hbL(%lag* zHBand4R6Ak0L{CHlhsZpUP_i2wN+A5+f;5D1OA>HUyntw;wk~&iA$42mHAnCQ^Uf@?%hUva@#*zYRZdwCB+`goh~M+LGov+;#D$MY8e4i zH7vs5n|i%PR^P>*p9Y+VvkwOTZcqL*Wc*S!S$Hr0z`4=P=<1F$<^CaIktZ#lh&MEO0rpxWqIr$s5g!o=O10v^yxSZqtV1( zzX2Q2&)r|M1}=^zS@mx;7|Hhk%=xCt6o3ev0+XxX9otdmB5@Oh>yC=K{;#{u{^mAA zISwTIWz zff|YBx$Wp2BDy9Ibs$fU`>gq&c!3(17IzaQ9e-r9{n?c`inwAxz!b3}Kf%g5S#h{+ zHJ5^JV<6V^RsSkIJLQp-)sYszME{_G(|>z~2YKX;<5z3yi_+0#P8k>a8{=Hyr3YhH zg}BXhVus<78sA=UzCs>Ug9K5c7-eY1Zj22BCc+8gZfd5!LYDZk)S2{+I96} zCdc)bp}+X38j)J*7}Xz%MTal{J-rmY9n!z2Y=alSlu@;QKNC6W1m}Uu zCPv{-6-k=5=Un*_xdkdJHeUuj(+=AbL+iYG&esEV9K`wWiP|qSdBofuSmZq5QUoVk zds~uA1MJuW4;q8CMw<+$T$O)8$j=j)MonWeh+)zPt}oL3;mk4o!-v_0}H+ z?qdd}o73fy6-WZohu8SFzPRIsx$o3N8AhCdMY7cb>)=E%^3 z*dhHixNtoPK0*~NZ{&(y2mf&>A)3lnWawrP?jAIA>LNPMTYr~sVk4ST@;YwA=H&q> zlm;)Dy%MoZ(98mApMGvhP~Sb(DL@d-gQ;S0MD!LQ zplhd(c$(7^qd+fkPyIVB+9VR@|Av++S;xRojf9$v=Bx!;m=d=#|4Ok?xfja z6jY;2Seep%53ZZUoJmiVvzBlZvqPogIr#Y>Au$c8urG}5;DMch9;BtCAK>%#a=+#0eCyLm7 zV@^VeK`yFW>G}{!dm(RGXHt~zZDAx)KRi7sxkGd}1{t-UxPm%!#UJ(=pLLM$Y{bJA z1axFI*MNg0yPK|B66)Yg4i;W#CX7z)@}|&8OxOSpt}vl9$|{f$0!Hoih-!tu@7h7j z$Cf-r@0lR#K6yn_y%amg6e*ef|1vqF)^t)&Fi=FhUaK^~@t-b#DdYW0Rg{|jsl4c9 zFh7#tKg2B2hwAXCw>X-l--{`0trc9Xmq9 zu!c!;k))7#_mtE>x|qh2iY`k6x*&D}F6{1XAY~8|#+`UE2xdVD;e2_H`syNH17h|c z+KNy0wCUSb((o&5^`5)}&;Ao1gK!}+D<$XEtEL5bYP^XZUC_l7+MTd~Xt}hHrvVVz zTeOc2FYMrVhkQu07?Hez3v+h)FdcZ1g7l|9G*qUJ?Gb#I%>oa*2~@+8Bl16%@lO|- z0jowsgpoYehVz|U4%ex~60a{Ss^hJu*H5|M?j9@lP79>RFO$m(H9a|~Pp;TC$5|0t zT{JdJD|Sk=6bV}zh2|7X-___Xxa&%ZYy;XK@+??!?Q<6Cf9`*EXM3cP6-j>eAuF8-Jj!Z@ho zfHJ)WKlx`gt5G|>33nZ4RtV|>BI^{vSZona5!^GF+aG1=+HJ4uOfgU%5uKo|y{O0e z>KAD7bB4|u{-taG;O^k@A*kRC)?myb?7h+NTglEw+S581|3 zVUT58hM{kN4`NaHYOUJw`p?YcAAzH{g$0GS_}zv?uaDjURZ!i$`a^x%zqlvdB7Ak( z3^YU#4}PN&XlN{7H!O+mE+;2ncsswd^d=~D6awnaCI@QtvN^b?b4OqHiOenXiI7Bh zHok9*4c~bg6l8m!JCQ&go~eaGkR4-LglKUI+*IrBYzuZK{m1*Y4x5g(8k*11D`M;$JSeA#$#qS_5Qtm zyV(}u1#owgp)XVAy^?PLcC9pb6`971t}{rUyFH~C&t`Dw5#F>fx2;fbT-l_0uP^vA z>wlxk%sbssI%T^>C9}ZB$%36Wvq>}$vOpAlQWE;M8^8m(YsX5ADzk&$p^FV@zUo6HLdSoa1(9+UYUe1Ss09PW?3Vp{SQwRX^hzhPW~Ve zfuq#zSnQ1et6pW1zY-;Dpe(CaAMO}hkJPu9wCxyrwu|!TP~^9jH^<2Z`*a9@EVMFY zV+kIDIbYr{a&=vUY4t0=u44y?t9cOMFDpf?do}gC}w$A>s~uSv(DFOPImMJIqRD`AOgyb zSG0$%{XWMykSE-4T8EV%5ehdSxx6Rq?GC>Cd(Dc%n>9Y#`Ok>O%VueCl}qPjAnVrd zRexLE9{HPsd)T*c*F~ zy5I4}@C%C`%c4ECSBWF`4zL>DT8DZ@IVGWYeQ$)2TovZ|Xx~{7vafT|d7C zz{PZj(%}^Sna{qdY-IR0{uf5zV^%YLzz7&YnMekdYLt#<(H|>XxT+<-un-Bem~=%*cKPs-NSg=C3{VA2BQXm*DRaQe}bSr zHd`8#agAM8A^;ae!IpD6msq7k*?1}qqA!%dRspYU0;QjSvyxt3P}n=~UK~R2*P1Ef zGX54h`d_C9fV7pHujsIi=8g2+p{4OJ-}N-pXN!1S)vu%q2Jpw3*?fcd)LzvrMCP1? zMCTH0H>NIw9Gd>ZhdUTt$9aIg8@*JuR~NV&F6J^6FPHitb_r3cPnlGpyQ-@ZN~%J> zo=I}da`k=BFq4A~ro7eU3aH-Q-M>eS8L`pj?icT0fI-3d{Be#cAa~`#J>E!Q-f!D3 zmPL@Eu4f-ONRx-QWY*Y?y3rCb=`4!KYw2T;!oyta8nPBpGgPP|d z#xHhZFf^^I$b-GQTCY8)IxZxG8;zKsUUgJsLNsbO3{OqoNfI$r6c+oFAc=I{A7W=Oyc$Y`8$8QKS=^}< zXb)TGo5|TA!H+u|&>pSMt9;sqEmx+L0KpfC8?b`T))&q1*R&Ew)*IA|e7LS3bxYb0Xd0z9#J%Tzc57E@P z=Fk;a64PZYA&2fvT>#`VSj%MkO;Hb*KF*H>5FGoel|88e*@@r4R39i;qN<4=po{A= z*fV&~Q9_1vl5Z{C=B3I)j^?2eFLi8t<;0wU_m#tcf`E4#jUj2B{wbXf zULFSWX`jN8IAUNVrQg(F5aaGSCT&YhDJZmYULz*kJ@-y6@GfO40g5d04L>V7=OQ%K$P5}&PB0>IX<*@83xqO8WI z0*|R2D{vd=!dfQ=jEj*Bfq&@fJqvH3Yr!nNfCSp2Fktu_1UyJ|4YQNQ+2Pj2TEg5)hRR{SHu!J3`b^5!d`DX>#+?7I)wBIL z=a_{WB2P!GafRf!LeOjpWUFNJn-aG%7*;`>@l~k!BO`C5rLK?th7yJ@QBTZTVsZT* zVb6=blM2q!Yc4dO9ocPi?jF9S|89eMudS>t$MP>53-wX=3CGOobv0rdgij`We}z&P zJ9P)9CFMRKCqo;_T1W@$@p!gje)*<77?3LmslKXbE|lalUsl^oup@4UH_`R|cidmF z@{o*(Qyq3|SqE)G_pYfxxN#UHPz8fF+pH9s6lojH&@XQGSOezswCj#(&QHP}1GJe#x^FBo=U{JVjvOk9?T<`(lH^Q#5tqP)wGKG}yDa#7 z%qR$y22xT93L09w;rDOJUjy%jaKm#L2$Js?G{qQH=R#@AnnYbgnSOFPsa1e489{MLY>=FKg4%Bujy|3<)Kp@Z)GabU3$1Z@9gtBfWk z9=t(M_z?l@BpPUc!c=fm+#_dC&yz}H z@_m0+=b(s8U8C#W81)0ikcr1&O-|JsPl@e@<#oEyK=cC|rVQu?Q+0$FDjdaa!kc2NHX)O{lnP;NUDQwwp~Uws6Z6_ z)P(=;39TW3>wP+p&L4ud9KN5V>2DdIT%&eRJf?>&DOl~B368Lf;f6VjJASe-hb5w< ziZQQ_yaB}9b}~dE`*ix1ywUT6$el)#!D0@r{1ORq(8AY7hcEW&+wOoL9sSVMMIyrAS$;!5l7Jo4y3<_sDxPjE3%9yvr*IFQL;LvOnMV_-un+udu&W8w++z z?KVtPqu0bA2;5uuF2tOZJjW=-?zk4-pqTCr80CAdli7I|Vv(K(sBFMMa+fL7aUJL|nq&hdDOH4JyzjS20S5POhm4?a z3@QH@VP^xBqCd+)l^8^0J>~=14j@%4*mpdlFkMOJJ?)Y$yH-Y0CPgRTgf^t zLGo34TSG0UqcGOTlWy>xaQ0!H=jaK1f!>8}iV_EJ`On!O7onp4xI;9F!`8o8D#WJb zB?L+c{-6TOETgz4&7ONm4JPY=00lWT+*r@6-iinR@9*6#{y`ab{yQn+y%Ik)u!Y}M zO%m~djGCb}Pmb9PmsbY4Edmz5UD#LZxt%$mBl7Qw$^ft4`c~t0v}(4D7CBQPB{sjU zOlnZX-UES7Trm@#Je0I?6>{v@+x|F zjn?sIzPPCbI9N@ZeBYErr+uf*seJe)}9vf5JKVK zi(5|id72J*DYE_CBmSu@D?-jsbHc0?MEl!B?5IszI*k5b?< zpUFmAdLeiABmN4PB;MHIRE;bDk%1OnMfk|0qDotnpv|xpxrF2^D>Vxu9%=cgq1wI^ntY~p3jDPaGMe{`(z3j) zIh|FD9d8(@EOwKQ`!nE8Akb#qgJuG~yf0ZHSG zNuMbD+awrO&L$g|)d-3gGAmdBjG4~%1X*)lyl^YF%INXsZB`t@uzb8u74jz8X!j+` zVhWnIJJDQs=vkcChpAqus0x&%xQ<2~DM`+j(<4k)j!a|Dlnsk)*j?P;D}>Q4+TWBy zr00BO5*VTTeRneJn?a*SSz9Z!lq-jIFi*6N4zk|83rQFa5SD(JI# zXh|WD&Q>k)KPf6AopMsf=cbufMda)b5t#4i6v2Ia%`e)^0twyorX?r~jwZEZT@Gc1 z_@Q|M(?Bf|s9oN@`%w3lUPuFzWqqN$&zX0Sp!uoZW=~cUyO398+k0F|uz40-#C!sW zM;^pyN!*}27Ow;9UqZ74BH$^dXM+OQCz+J$y=JJjy;1V6S{36uMYw8gReFfv{G{z< zXXFEx;I7vwt~3teuDH?~Q$W!4w0lPaTjow2`rBs%k32%ElIQ2Z@ls{W^l`biy`R~e zHzIhDXN8AqM@9X;aSbngPHZhlR@-ar_iNPX1NeF2U!n<%SzRUV-E+#E8gTQhs}wmD zUK^AIhI1S@&uYLuD?d#;q3Yj4HvyT+ccfp7KgnHqJO~YsI?`f0&p7O|a@Ag_h&Eol z0@uF-UR^USm$w+b4riKu6&OyrgYVx{@hr^WE{j~EK$jo*o9Zu-13p&t^hkUE86OMo}^LJz9jYWJKx&;=si(&`RfOU_|cQ;aVPkyta3;_uyRt zbBf4XbP0JyVK2AmbmRD^k|64SdJzdz?U?3T^TkJ!+c>3K)@=c8AIyOkPk--b!z9X& z$QFcHB0>eeKp(oUBERJ-x`bJ$N#`-!6kF-tO?G#VK7RJMoL~BxE;;mA9`d0%@2{|> zI;R8{B9+_;@`BfW+gF9pKtu|EOCVeI2T!`O6K1f!+bNzu#C5^TBnj{IZ7HlyOB=7q zD{bN=C}B4LE<~YZ9le9Kx3>nih1Hzv%iI^-^%8|%K!)Hg7S-{C%v>rVr-Gz6()Dk} zDF(E4uz+nNfd}9UWUW_0s1brtRc)oFa)S^ ztBm31{2KjDzPa2A`ty~d2wl17`G1;t4!CfjrXX`ydN4MPKIH8YMdCk-3uX=>qBegP zhkirMYAvLU4yB{EwlT2xPBd7A9EJm#JEBW3mYEyor=b}?M;3x+dMlNsm>7w903Ixj zpXhM*bxUUwKEJ1G6p4ryP{4oQFQ!-Y9gXzvR4%? zCo!3fSeYU)*(B<=g^O#)J+vuKgCWns>6%Qyc0l2h#0`0*6ufr9AI?9djbn#eCuj?s z@$CC^gLLhD?^h&-e6`pt`aH0Ybb;%J6)AF>Rcy#L54}pmw+3C>iRc1tP+K^K@%Aac zUIK!wLRKN28KHE)T|zdCbJLw6os47CX8-I;X+-uqrFPvA8=;oq`y?eyU{_TNc8%+8 zS%u;U!=bU^GE=H!oz8xeJb@?YWO#yof1pSw9-+JY%vjB!2on3wm}4KI@i zJElyRcVJ(>(3xC_&&!Ylb&4=d2&BFw;M=BST-H*6D-BE74m@G3~|;{nHV3`?eQy@_4Y@Usl}tVo`+G@0j($9ATt5mhbu@NMf{JNhZ_CI z158zMSHjd2JZ|8gd~3;<*LCY>UR#=hr~k%xGx7Ku*Z^A!xnZb(xYjY;eED_C{6eOo z#+Kjd&_54xFnftj3gZ5G&v)P9D+dgNb7{U0aoYJ;_hH+o{o$??hBD3ZA+?c*c95kO zu7cVoDx!}y*KCuY21f8kYCbAiCiPV zS{?F$4k@%8YJ$oD)U|qnwMWn@AP4$;x#*SLUF6VOTqm2khjQ`!ahr2_Kq+0hn&*#2 z<@7TVB%Nu#y2J0qL-6bNZvb!>Xhq|3-(1tWJQ#$E8#WAaUz{@NqFYGWV_8DMR7tf9 z6X~pXM6yk3P)UKGfurj5`gxqsh4ya5KX>vRdjb1EwT_zgjvax^zc*xX4Wa0y~_a8|Gkoc%FWKRkKml3Lw>VG{2L zRW5!E?)+hfB+dy}Jfp9hT8>*uWB6;RJKig=cMnUQ$6SpedWxFG0S@#jVLLi4|1tdT z3vLzD$UQQjO8I1ia)X3@ zV(8P6NoZr2K@)>-Qz%I9OUzU)HNZXWah6yQ4+6FO_=MDkAxFWy?R67AsW;674#|li z^Cpvx0&qwRswVWK6w3dBG_bSQtu$$4D5MSt9t5?HSR@#wgfP55m6-{gwTEjKQ(8Va z s7#l=xiZY`|y$KyP+f>{X=PVNr z)4Y}2p9B2|{jak-@kF#gs^(DW+@-p|_g*5pU5RpFT`9eoNf9ehwY(FCvIWHy&S*pv z`{NcU=aTOAxQpB9(1n3haKL zzm1FSKZ~wDr;q~k5wUA)w)i8x)WfXu0UQNWVq+PyhM6!Kj?O~+m_~b{ouUy5Bu1Q| zCZ}fDAyDbUO`lTr`_lytx6#E%@5xa5V09n5KOeP2qhL{7$aYi-EgtQGrtmm4)I!Bm ze-KbiWd^}$Qrp7zdE(oNcKmj8q$mb3QToj%ajJ&P|MAx^dyc~5fovz4k`m8HWc#{g zsn`2mU~sRIx`7B5Jpn^j?+sMG#cMK{Y!p$=&zTzUrD_m*!REgl6`b7T=IBBg^Q3=h z;8JgKbnt}>d$sCEV<{wjqQr4zc)L4zBN(qnuHZT#j6!#w_F$-A_XRFlf_!mb|XxW0=6_#u}Lg3*Nv!ZK31 zrCt04%4<2mLCwMW0H;N}50sPD{4m!uLq}~!49PBKt0{v>74;59T1L^2my=9Fq=u9+ zCx)~c8OW%e_Fw~YM>s@snPe)w1k&PTAK!X$vC?84274YkKv6vyl!JD(YLIB=A*4hn zd|`-a`XlJ|EkY~^ZW)rcQ8zsOYD+x?K`XMH;pj~aNe)?@kk+v8*7j#Wo>PAg&af8x zn_Ou#77dCvXl1yx2NbXbaR52vP!~BanrS~`e-!y1uZ1%jLZT=n&@dC-Ltz+3>tRw6 zx1VJ?DcNjMlv0r7Xq8YAlc<0E=#g&&sOSDh=`Gq81twobKk5>t@85?BH4(-s4jDOF z@N~~NpnF96DMy(fnDiW~0ZB*QG?RswiF5@Jp>TK&ombpBAIvc@M`j1K4uJD8Ro*~B zB1%--)SA?j4POL!$3Zb?0U>QhHAvQe73JdFZXt^XQL!j)~{+&j|b%(9AwW zKgd9aY8lWfL8~$1Q7!1730r4zZ7-@QckKI)zXLe%Y@1&JqV|%8vKb6#o?2fNbZ4|V zG_U*_$dK@~MA|4QKG>BiQ*yBOQBqwY1iE(6T~JRClo`#L(z1;_W9(AKqdIpNqNjS% z&l!J&Pp<#vO96iNPVEz^Fs%xlG#!xk%?T1J{^mj1j2OaZXvl=Cku+2lLB?c4w6>Y1LLII!06?!95@)$LW6h|*%0A=D64Gk@a;ZTi>D2)B`sLUw!TQ~juM*#nM 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μFPFD{v2| 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

$FJ32V|OmXHZA3nV2-7$ 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�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%0DU^|x-54q~AuJOy^ZEjI%i5m@LRoc6w{nBz?QHC& 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∨aTEXSkIf5%7rho! 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

TQp#ZTSk*lId$ixk%Urh$ST>!A#?I_MMIg5 z%#Px*FXuQ{mimLkwh7U!@;s5KocHw61GG>^D>N!oPC#+!!)w@AAYAsW;MWXCMa;h{ zdVYkX7MM~6PH}U4@ee)+cnmz^HOa(nik=?XSUss~d6xMw``uVBW$VM-Ty1ZHd+Qu* z&%m~Rmp}wcFj+VnR9JCxJo7T^A`nH^P5TNJTwz*_&k$A6S348dReTY!1ngut#&o6@ zC#l5!SXh0SSW8J7GWWM}t=Tbx8cKFkE5xCI0yx&L4H^Nb2 z2LeaSJOd(-qp}LbPOUnQ>Ivk4Ln8a6InDStwW}x4AH@I!fZ)JtH~7Y98#NQ!z+V zXaE63Nr128*P#s; zt6cuD23qQY`b^AwnuqHNZegqmA|?`RV;?6CFI~SBt9X=V*sR)BZJ1n4^yZJQD?eN= z&i>RhiEEP}N>E1&uaf@)RAw4|AvP)RXn%41FE4)*0M5&K z^5v}nsaJqRw`o8-*Y^IKO-^V%Ei>nqi2rPx#onnX$>zhO5iT3@S(Wf)`D@f{p> z!=}^>O6$uC=qqADP)wWeK$&$^R;dC0in7NVynXoewM%vP4oJ-|uy5}}`}S98-!7$v zQuB4}!Y_h%!XPz;^&_Scsfkbk;0hyBb9zD;QjBy`YO2Z%`SVyEl42TB zU?#ZrI3&w-rlx9b46`yuyB7VRf4OQGf-#KaWNr@^G5V1tWdfMib8tF?q|lV$i#>JCfo5=<#%G;cJ* zCX}6swL_T_OnR#~CnR1612uty2Y1f-^T%AVnRjpU8tTSs)09To;`v4GZeO#1EoNtXB6U$jVa%s)>ad|O;hd8am0?_%ZnBHXiGypLY60P32X$CZ=zK7 zhwi^a!l9BjymNdHIaN|}Z1St29Va^XKTj9w0zt%#&;)*+4SXXY!ri*pV6rlXuB8Db zaT&CYf~>HIj7%#lolvCWeE0C%E)_pYyW&=cdgGKTQbWj75 zdKbd^K(9E8rf31JV-BV#Dby<#*jD(H*=bsAB)H8xP3d+PNYiPVCCE%(thk5q;Ro@P z+iy%Q%&qKcYCTqtd8cq%u##_2Mx+HcUvh4>9;gBmnu%lq8T>PvW$jmQqqnIV;eS>@ zl7t{m^(3d)I$YR(-_KJ7(WIit0HHXnNP?;aN*#tU2X=p>s>>h!9*ASnV%y?asr0Gd zupciQiH9XZly@TPXY##Fvq3YdfjlV(Q9$vNY-Pv^Ov21xbV#Q`Eiol0(f^}Ll)1$> zUo&5&73YI>vK#?R`R~F-YAk}=e3_IzVqU)VDlnt9s%h)_2GpS{5Od3E-x2xL3b(um zaGqPG9(dX;zN`5T8vOqmb9Ioz*y?TtF6-5%Z1^qfoz*{1AQDBsNRx#QhToVleuCDG z_EU;+!p!IXpYd1;jkluTf`%09`VLXT9Z6C!hs+(jbK|)Z*&*7skQKbcch0X9smkFI zLt5!4y31*4Z;>ZmNv8Q#juRcuWJi;A4AS3LQSE)mfDQy%i&_x7){O87bRft-qIDqL zuxo=ri&U_7R~*WaASgo+Xf^sdELI^FwUV!!;0`0q*_PTO*hoAAs z2k>tX&RZR5Qf)f@u}q>dj6!EQy>)QQdy3x~)Q;VP*^il)5{U*+VkFrk{I8O&SpfN8 zo&8HQ8O+|tGTHv}b>NS7qxtSYy?Q^E-M7V;iBnsjRY&f*h-GPWD?GYPNU08d`=pX> z@jkhlj3N* z{d}NUe|}|AdqcI*R_pg464+?MR8!xH4_(6q6ajg_9D_ zF-96!uhP^>Ctq6ex@>H^cZe>VTdOV_(PdZp|8&*#0trFlk!;ji z;8nd|RItqR*uR(SQQzzhI+n_~Ego`-!9^9E*77+5{?ew9PxhRhfr4LIKE9X&0TmV> z54HThgxZ+Q0ICNj^ACp&uauhDf1MZ!M8ktbSVG!Y|cZ8hE#r@`az;Rk>K3jmfdoy+#OZ2;XVzQo#6>@tA3T<%6 z-JHnPfM6i{=~8xJYJEBTTIQJ-zi9(tps%1geg>TPcpuRmL+4w?ss8ss~bogiCfoSgiowHKd(Z*5Pf%<-U?vUB5W8IaX1fI1;Eyc9Z8A1A0p z-0OF@0rq1zwyY9#VU<^^olX3;>++HI(e1{rXOc1U4o^y8l&$LqZO??eP2C!iqw7In zJWCTqJU!dr`3OBdo9{_KkP3R3StA(zpGS$SkmEF7@?1&xN(&ga(ki zqlnxc^=ezKaBA4RKe?*t$PoH5oj5Y8UP(6#ap?Jx1UkWr)JEJZ8YMV%nl00#M@f>( zB;$7S%ZVW=xAATJ$9SUtUh=-%wSmoj@g|uyzk#W5!Ui}YQx(dU0}&-r;B=dhtIe$x z(|?sjA&8O)v#8UjhN;Wng%TS?ZWkhQP5(wN;<01AsiqR&(*^1C$03-zhmX~{*#qT|E^@j;rF?EaUm35QHg`62i3U*>MXfKk7O2yKs>nI=?m6j2=A&=| z(Q^rHs@c&;#>Qx7u3S%}Iw`3R9WIl)$o_0>QBgDr_dN~Qriw^R`r5gC{>jHP3P))Bv9eM#8s~$@fsIgiSP8SFI z)hwTMlnb#C9QHF2Tu21a#|X8{6FVF{rsI9CV36WBjeD=7s9W9Yu@3M3<+ELH-)|yO zQO;*(JHl3XaA|IE5z@qTfO~EXoC#D6bq_6A5qD6Av;z}tIE7hrd4CwgvZ%pY=xf_D}B3NaDU$Nr`hAA%>ku5#h;J}Z1V-PpVaS(*E>s2o_E^{ zdlTafFl6H1%HUOTj#7o8r->7U?cB}4!N|a&%^0PUo^0v1mF1uJ*BvkPao4ac;(d>n z!NgNM?kGI&NILQKiYsH3LRzA3V6!`fVI*mh;gLAW2!0B(!EIgxY2IwHS4AEX6Y-99 z=QVk9Ki7+xc9Xr^brp=wfB#AM?$)K5 zU}HYg2ty{`tt@pl(@4!5pQd==Un>m03J#(SDbZ$)QiTH-y8;)#(ESQrY(V1~%zHd6 zESO0o82bU}AV%o;@Q)5NpaUJDL3vaK3%k72h?O~cRLBxGSNS)=^y*}?8eEDR*Z-> zCOo#78zG;m!Yx?w#vSW0Yu_^y-b|4VgFHs0d^Q-oQt^-l4c?3O_($9a;8sC|TU~)$ zXA-a;XZTtpEB}IpcDrfboQWYs=qdk4kJioqpKcL|aRn)${Oxu(NC5)#V2}b%6s363 z620F>xCX1Mwe|^O6$w%Pt|C^Ku=;(-d%=?d8(&??3BivZgdrTvg7(+J;G@DP@kKd$ zsKvhqyH*7M+Kt;?t98>Bv5d*!qif%wE1&+q%y#HJF%c3ZmkBdn*1eBdCoJT@@e*cw zjkoc{;SUV8d)`&^CjTqQePNUD3S6PNh`+{ztf3|h0ZTO#xZ4RWI96BqzpX+?Smn4o zdj*!$q70Ai-QBNP$OpOM5=+G^vcNwmU3U)GwL4r7hk4*L3p3cbYmRAHXaQKR!9i!; zj^il7$xxW{zd?C?-a5cD##R@c+dI!Sjd5|8KgLn`c^aUadW4_NfS)T3b%&sPx~TfN zVc?dphe!tz^LZP{%utLv%5Ma_8?ldx)c2zYQrdKDQfz4im7{*7vJTb8D1@S`hFJ?^ z(5gY?=P)||8LALj(W-bZiXl1m6&KlCL29ccrI%q!rGlzeWgF=>{54&<{QwC%m}UVn zO~XIaGz7b=LDK}|T*;1xm-3DmBc-Ch6dOio$AL^XH`8FjNp`UJ*-XcA+_!P(SAqp| zgef&Y5dW>l-~Mng+!{<2j5CmA&{CLUlcP7*yRSN0RLTX^+`CqT{f`>#WL8Mcu_Lz1 zhNJKfN@j1X_z&Fr+UXmJh?q;>K_O7tSO=lk%`F0}-)6#gB)x^&E{5HwO`L~_P7O9} zY8aGpzJl-21!D)_Zx-EA{)XEP_)!q>BgkyPk4hr2q~aVsjJ`w7(V_z08apJ8;mUakX8 zu`sFtZiwA3&0?1cFdfpR+PYK|Y=4Lq0YOE+J&?3`4Wz+U5daawLNn+^d5i$^PZnXJ z{RQ#?^KXU>{X0WeOS43dhf&BEHG~X6=%@TU^slG6A=p^#-U#x!^8Z4*nb&BM`c5=Q zQwpBcSXJO5{2KO;U!VN->wnQ$BO(uhQ~p01yLO7>$nXD$4u{QaAngApmdIlF!zmsE z9x+(`MhTuH2`d^RMDG6$kuvbR#!vvvXPlR2IRVC4g#7V;_3C`?;JlaS&BlMT?KRBd zE6veHV5!spX6Xq4NkJIm^uK|u2N<2o@G88S9rImZ{^2EGeS{-3$dDP&MM9?G`a+}y z#+e23w^efnN{P(>NhL9Y_n9))gY*2C*VAo?=HEki?4Sa&2|$p|MNl&04)XvcD$@`g z;LyfW5h!^v5Xp-xJO7d(q>dSeG3W_#1P$34aEFFxo(gi+ZM^4cIQkUvb$1xitTf7Q zClCEiZ(xp6Pw=A~&4S{;&G>EI#0RCb@RI)riww?lPouZq^@3ig`QEqaU*(ynvnxzr zIC2C!4IK3NA}&lE{`@kC9Qz6WOuW^r@wxAB_ucPb&$e759Bjtol*eW?#qEQh$R6w9 zm0r=%O0>yJpS7xC;B{e>`c_Dc4O-c4)bYCOk+yt%Q9`mR#qmKPMp!&uq2e(RErY8c zT=Wc*BY2$dcRDPmkOvLTFMYH*$iO8HUEKHW!=EKY?_cKMR^7yR7^`=mf9pQa3tf?z zYCIpK4PUg@3yUWV>3ZkDhEl+l04@c^ml^ks*J-A*rjerzdozAk7&cZKHpW1g`I9N^ z1DboUKUdsVU4Jl>X|qvh0j_m$;S=Orzr5FSv%%Ukh$gjmMuauh2wb$#m4?SB(bg|j z!c&f#+)U@Wsn;S>@9ty0emMMJ`0a;xkmxz&VgUXjKGw81$Fa}t+Bc{?Xsjbs=Va-v z1JE#)#~7Ho$A)?XCtW(=0$)ysPA^lQCB&?Bm~Dm z){owKN~La{axd+hl|{$7iT;nP)S1OU+>GX698TaLvBKf+k?zP_Pfq;zEn3kL4lEm}6Lr50NAK4CQ$l7jm6%JQe)c>+{91aV5(|}*|HU*_O z>!seR6#p}JQ`vOAp>W4@UQRL(ZlD&Ot#aeP)Z#*F>+U~%G&0m{h^MR1ilX2kXF432 zMsI8xI*S&boZjHrAFcu{xpyOFrtJMEeIjDW1NY{?dIsOOvS!cR_x#E0I5S(}I0N3_ z9jB|ulDt#D5UwGZqv*S=!SpHxd-MYnj2rv*|f5#x>aESM}dQPvi$W? z^(|~>o?DJv*3i7Oh;jd=7@)cVP~G6)ogE>l{a>V&RtDG8+S0sotoWa^Hm2+z9nCqW z7!eKeNAn@!+)AVC{>|9c4~3tC;oxP4`iG^9<6x3sd~!rDB`uKoIfBHKt|RI0ae6XW zQ@>SXpi<%unlas=m|N7N>(`ke<-|Zg%$uF z*6>+6J?gqwH|Cm=@)ea4F|9sj3FbrR_<8J*$c87^i{faA^q7GWkwMHm+{|XqsHx`{ z080M@oLe<+$V7I3=j-7k{cl42YoYBw!ef&ECOpJOjI{Yj*Z>JdQxO*Sf4UZ0|0DGL zZ$i~hhPax9#}|A)K_7eZIcu3u9S-l%35sTdp>{+HJY+wOI?us3|0IX;IqSHWPKN}p zL^GF*%`G|(WS~I_G5$YXpinuzGN~|0vNr2D|L5~R*Ps8n{+t7e`Z7c0eZO=SvMv;} zIA5cW9X_!QOCc4SBw-NG_j@8ixl@hmUmK{D5!QkibmVY|L`&8}WD2Qo2;!WnmaFHw zhZ-NKL}_YCJBx})3(EbT3jlO81nE=t0O~8p^^BnFukaH@pbV zJbUAMW(~c2uE)Shy!<~;AOk#+uMN6hnENymSE9yT%zX1L{Hgal11%@6ZL z*6C!RdThqy(P{0`^W)F{&eqY99jffEIUG0Na?eVm)Yh-FDo=q0@{!gia$;tnCn-U z93&%K8rL5OMCnnht6&}-puEV%*XeWUZ)(cl(?E~+8JWRlu@3GRqaW|Pg%>JsNWocz z8Lh8MBEHUNl3S8?g9Z~OPQ@us&En?S7VhuIx+7tQlrZamSzu1of0%&3wRVGzff>l= zGSuDJ;KS8=JejPJB4=M+mYNf(=9Up{(}o{a+6Oc9sQ3?7 zEH#zI#6N+jkIXf(*sO56HI544GiM&q7JCm&r2ey^oB@v7^>(ZIU?WEN<=MJ?M|32AhoMrcGeyKG{w*ZbwX z!L}rYSBR@~>*<36PdpV7GwbTmnvSIuy)$7yeQQ;dDxz(R@S|<}V69=@PUjXC9kO7a z%qA6`(GNx#k1xD{;q`;UH{omSr$6jzU9Eqf`~b7Tsb$5g!ED-k7-pC48y&_@Xrqpw zJB)>Hc~hWm|C~n29%g}4SNv#N`cWS9KE1)jMrC*y()auyeHa|4$PTnz);y=kLkN8) zHGlO5eAu`$bwcZP+`RfaQZL|Q(joF|W$PE!sBy=YUoLt+Swp{^wf{<- zvI(A`myV6nWOFErV>QP~h=u6S`Bc7LaJ_=6%C9*ziV5q=XZYGt_QXNJ#Tp zs6DVpmF?ejxR+8dPFFy*Er~8G&0ceRKHkkns;2~p`hI4$h3+Vdp3o$iCkVy^WF$sH ztQ=W(h+*Il7{!T3-vVr=D~gcDd!tcs>jfnIy7P*t!Cf0LO%9{c2r0 ze^8KP?+k!wIjnlePLtm}~B#DQ&Cb7VR{XVorbSxgDAv3qt03 zEt9b|fMivW%m;0o6(I||mdV=MK(by)7KvuZj*!8wWpcJ2Zqe-i4WiuqB`vx*p5_t@ z(bN4bj&D1gmy9c7-`9*R8UvKoiPSi~z;XjC*o#Ku)Q7L8?+`coJbVRX`>lmv*rywF zWL{p8IL@)=o>VK0(#`LZRGS#qDIfBdq&&gc5vGN|U~9O?qb*}Pw@}?!+`9?%W&fk^ zgf!J4X8I0OW4b}iwZ8d(^m(nhHvxS;{2omQ+NnJ&aeiYal#L|RH0n_qFX(S5xhIC; zOIGTw5lB`N!U}lBpOld0v0GP;%$a4`1izGK9t_5ek5X5qDEb|SFZG5AC(k^ivRrTs zdmpm4hmjunwxmduJ#?xrY2 z?;+XwFXm{t$tNVzqI2QUpKS4OI3bm~`-vetTpQJ8Y*pTJsJ3aFaP-l7@s!p=0L3&| z0jsP#xwE0Jxq}`j&orYJ70jo%keE-N7IcH1x#YIS70S@6ZwhZvh+S{h7m-^fYdY8- zK~IDOdYHlo$;VV-4+DDc5SLR?nh=YHRLCw?8?oxh`~<7z3acD-cAI%JhL$#rtItETw+w9&`x$p$ zMt!tS{|B8E@mB91Cfu@$2WGL~N?yS*8!`6H#rbT$RmF!@^9Dct9;HU9spt8Dd`yj` zoWK$Or6<`46-HEr_8;(RWBl>n@M@Y4kdEDVf^1hS!PS?XWe>_0MZ zAgjNY+5DAF{UfsivP?)e9jGNr&tlSmvYk&@AX36oPUu+txknSDQt(Nv{pM}``?nxj z)<3dPAe*f~$g1WyJ4D}p@0fciu}GR>%kTiRHJ?}$L$?1I zexHYbf<=!yL>1>)9reX)Qaza%XZ1Bw@qB&*mCD2$`8d<6oP6T6WeJ{BTa!9f$aMDg z4Rc_?12t&CdOkEjwl`m26C=K4WX7%BGMGu4Z%P42HP+seqT&9xnWztH6ykaOCa6`Q zK&M1#lZ3Q|XBn{C%X%UOFZf?J%Mhoo`xZ?#05kAAz9aoqw1vdLuYt`T zi;j>mF$!N!pZ1`KaovzF@vZEqq{RSVcS0%r!f!gbo=FODx{k9KS;fjvTAx33_u#*> z*VDW!A5UZ|I;F%>2|HUQaL>`lv_s$PADPFfuu@ZFdn_DstSZp*)_65qrQc_VzEGf< zR=~!fCPhlB3(XF1Mq+vWQ${4`qx;`V)8n;QVwd*rQR}GjJ_fHwf`&O?4`V3wXr>o% zn1qI{pxIF&hAmtV%Z`^`OoziE!Z z`5J+f6w8jsc_6I1rI-PufdpP_>@M3~OQ|mv`;;P;EcW;gQ;QE-Yy%sMJ(DcFmU4$d zM^ECuQvb%4MF5(-^XDrI_UI^5tWS{@5v>DSGpe#G?kyC0RKbavO%!@V`T5}?ybSQy z&h9Y2yPxt6_mpR3^41rsTNoL2)Fd8XBtymxl45P^atN@(Y4O~71XuyYDb@H!D*&;o zF8m2;+EDw@#myInMn4WO8e^U3iza02)(Sc)sv0mjS>?I&kmQay&L*4*IHM*90@O zh)s0fRy?_>ZxgjofWZ`cz)wQfmAsKdY>KLJ*DL=yMcVh^`q8^ajJH+M*LG?7Lzv5j zxZk4}l`KmB5#}n@RZvWDT1ArL+S4|pO{>!-Ky@^Ys#83wM&()WQ&h7;h@4Gn(++)8 zAeDwK_?Pha*yr3DL{%S=qfD1@I;FWbHdr8)&0O>sv%v$64cm%(srVR7A#SHfq+Q86 z1s{>f(pFoOAR`t(7V%ik%aP}y^?qq|K+`aG#D``al82Bw4rPocYtg#};S)c%sk$>P zDN#iZeq7wS1BOZ`nDPuWcE+DIj(TEys()D}OpUq#-J&?t#kU*y=7>*TWh_bcv z{SgVd2WH-qA}a>*O1~Cp_HJTSqpUA(HqLaF+P-f1z@3Ubcv;4AYpb zwGXr4z)4=zKnxW|44n@4k46ktDg{Fi#amFXhoT{d-tQM^07Jo}zMPw*lJ82%%|bPt z*+G*+|? zZ8f3yH;e0@#JgxMX3S8t#N~CB+T#H`b#4wW=K(vFt-`3kWHs_tVrWu64xJ3#5FsS@ z2+LdAX9mvI)V_JRYilsMAhL1iuArw=4#0}_xTRPFm|0qZw@xbo@wfTLW&W`#?%#FGCNDq_{2O4M^ns(qo zgC^}VT-p!(t!NM0UIHuMJ zC`0^g@6pk9-zFf=Yr5{vI{r7I!nLsGzl09|O*q8&f9QG(u&BDWk9P=3K@kB3X%Uf> z25BV}0i{7gLAtv;6iGqpknWalkY-2$De3NxVVJXKc%Jurzw@1QU5tBX{_DQiy~ed+ zuiyU9-l)ie|A?kQJbr&YLfLCE=Rcy!|A=Bqi9)S`SnEqmXm=jS)?;Q*cXvxitQ}c{ z&H8+;nX*cc&@qk@@2p~w5^whrDR`5pByoD* zG;i!zcuMeM8sLZb-oKR=HoTvmCj9_iDlS&l?*^ zRMI%Tam+jV6`vA(6nKeygoZ&H^9^X`p}EzS8K|&D5T>E0i0;wseS;C1@txC?B0eUJ z&&`HgFFu1vM+0@5VEV1gP#9k4nkp9uKZ;8Gj$yi+MJEOz70&rwVum zW_gUkvIB2--{e8qbMmQo2P!QZuRS{%V z!$FJS$7janjvYNF)w0ww*?@xhOXX81JEKE&;O~>lDSv7_GhF7LUcQy#r;2Yckxl}b zg^yvecS+bJ;pEQ9bGsO^h<-ppKt^#?M!Z%*i+9F{j(W(6{4-p(Kf6htC@^g3f;N&htIWIbh#E%}Zu&Twk}4Z+l*FP|Bc#md!QsCQc8 zv$|&rKjqHRR|`H8e=g`;(fq`?AgXG*1rUu?=yVHn_I%N28p;MRa7_bAe}}W^XKocl z{6FKKxq;qDh%!cyz2z5tF6p1O?JVX+|HNz8S)3SHN9St~G4qi({!T(PMx?caIVLqX zI9dENJ8%W$OKSNyA70Ee{|cgeKWm=(U+2?T|0f^eg6(PvFS;ME)9T*JL_!t2ZZh2Z z2!6|mT^G?Xfblk5bLk;BtM#3D($5kj3rfb4`#A*7qLl9vie1#@F^Ix7GotR(P*pSw z8k!40xxBl~8?QbH5WIK>NQj}gBOoEMPq)|Zi+$wP#V<|7qN4;vg-c8j5S6|hdzL5C z7LczK?%=`+F-kh5nIc$@VG8FaiBEzlsN1NKpm}+3-(fSS2wC!#6?JRuYkg%!qH&?!avU37QC@ zY_}!v5{xHZ|A;al8#uVt$y14i?XSp5+HZUD{L&?)J-)5x-UC&- zMSJ6G^3=|V-67eFh$}sw;oi{SFSPcV_@w3h9q&0!8(MIv4)2jkMv&^GG)a`E?azB3 zXxmSbnp6bawI+qqEc{Q9ngth9la7$O)}&FIhkqrx)3jp~gwM+dbDam!jA@xrKr?LZ ze#;nF+4NfcHPmMy@cN2r!iUn5uCV|40EDEfCL!WFAA!a{`J|R?smlb>mwBD24^(41{vjkx zG>U+bWB@|q3kZo6l8{Ihe#eg-#=%V=Oa4I^`7lg0g629@q`R2PJw!EAFn2aQo=*62uQj$aN+i*rn0Wq{Z1-v{Ao{xf> zHD4Zw()h+#eTmKXVTpJN!kWus?{fsAuOX|Jv|3d5Q^*V>)fY&3@(!5;{fW%x?&wZD&BykB5@tnk36 z#npEsB_gm~aGqJ=Y=c052mG750P#6^1sE)q)JG!vkS>Br;^zVNd$@Z+=%nH_ZHkHX4$E z3$#}xGK<&Xgc+rw8MY%eHymVlBr?S)Z4{;1gnqHWufO*eTJ7K+5m>C{^K%tNW7@$O z-`rQr{bSf1Of(wu3~R|mOuI%e7K3Cslvzq8RnHB={)iXvHg?2YXwBQ}Q0{pY<5ywV2mmnh3{c-Ue&+EVh_X(c~+Al66B4xH-^oarCiii zqM85jHidpaMY}B>p|LH(%BnD zBG3%p0W_kA@gkjE<5MV3=Yms$ptrw8qiKC40O^2#@QR57{_zLNKU7yn z(J;-qR9C)p-^R@ibS*_wR17U><6WB8EPYi>Nb^1cY%+WbymCQL&4RHYqeWLug~3=Mpx=M8_nd7ko=5mIQ7F{|!gr`-L{9pUg4S-CnjKqDnzdCK${bSY^% zd5su!K^Q$Mtb!92#?GvIJc?#(Zl`+uo%;utuJ9N>p~>;+b7}j=Ga~JpuHtZxGB;nk zrf4a-+>A6;#kVXk^BEe?Fq85%Bco-Lf2bxd@&>L6_0Hh7C$2roGI7QyfHu-)nI9vI$o7?(40>mO zxYL^o%8(Fu{emjv3#yE~#~BUPl6<@Jl$zuu26q8%Mg=mV0wX0RLy>_q$iP?Pu3@Oa z`0GHX40yF9S>s0X1Ipi?1)Z)#w4q(D#w3Enp;~`upHus!CAfIqVh#ObiZ>hu$j6Y1 zs*;S8txM-E56mx?E0m&O;CW0k;bmapY8rC1Gd;_~Vn;-eYvWEKL&G^aSv0J@t~nIi z20Q`W>@iL^hNOS2O%~T?ORK$=6Bmp{R?=gNw{E~@btf%cY!KS;@^iG5B+m^KV?cb? zp5!xSRMgZPeHK9%SF1AW8mkSnY>-PIGU$}{dZuM|ODFofo)}u>nl26fML7Q*u3z9E zrK5EIW*K_QAFOtT=dfsiKGNPI(MQj76#DoD(1+k%B>HfC1keXVDhhpgq0qT6I=*r=}VnuXp+7ya! zz}o*Fa~jeU>J6V$EEe4B+6ERJ_1-#=))h0KJFjrXBE5;!noT~?dA>2>{Ugk zwDEZba7xs+%Sc?A2m|38%*CAp9$zN*S3zJw+rG?*97JWCoKeq46u%g5NK^PYPFDTW zLu8L+F{nyCd6SsTWEUU|99Qz%^szx#S_0rE>C?f?*fQ2E`*$7`lBrRNr;W7jpDt+5 z|FJ?qk?TZnEi~ln?j{MO26M1&!h@54<&IcQxhfJu#kyc=D7qZWmJN<#`}0777V zb2CCgh&!nD*>`VuikUG%eiF)Zu&`GYt9f=EiiQd$=;G@~g%Tq}vA@A|QK59#OFJL; z{Amzcr-0q5b?32Db6(!Hz;7$1&IFLr3u+^s#FS(1$n*eQePDgFe#!MIW62eMlqGhteoL;50?I zzrn=8I1_vD#2ala%rwbzgnY5G;XN)-Q0QavU-a>8v@+}11&Ka3E`+W*j6(K59HuG@ z6tnbA`psP5On1%JuzICQ0h+mb^F#6#(U(#v@`0|jv-IuG${0IYAGj3);1uL2P7(hv zrx*szK$7Fo!8Vfn_E+HZcn=A>_Ida+J>dq145B{wq{N2=FMgClDDH_Rccbi3@4sxk zeii!;lS`M8@g)Y45fV~F7}}ydPqAs7QFm5&z2i!e$OH$4Ou9HxmJ@(XzW*08iMBwZ zmJ;J@e&fqjG$HdpJSEy3CBFZUIR4+F8A??Dk2ng%&6evCMw_Cl zHsl|><`x@sU4ZW~GE$5CaoM4`4()Z%fZ8>W0(3Mu*EfwEfEv#A000HFzRt9**00n8 zDBu5n|1Q5BvWGqr^y|+D06wjxM0d;^{nJT_P{}4lTYmb;NI6`sSm7d6oM;FbN78_C zB#6ldGm$>ooB0X90i?B1S1Pu=P3g7%`VFi#U>w0_K^aFN%z1(ako$k!lT!4^KUV|e zNHZiC7)Q|bzZB;j0prN~LkIsaCN#dlID&?;1dJot=1Akn1u%~IK*yP$WP$ULNE#90 z4{RPBSvP~f0OJTIuReBeEEe5OU>xBPdjyOl%}C=&-U|Z=(Vvi{Og-{0+ejo#VPONt zk>)?-N;Ve2I0C{tL0H)@U>xyA!9tlUx7vI52tALyST&>71!B)Ms(`vwXLDU>7` z{{f66@9i9OK#j6*krbwc0~klp^f#5-!4;PvxPKCp^7Y8yVCR#rKM%D335+A$3hsD? z(?h^GqPUp~PA5Leo@aNe-lW{|#V&M4!Vl?ozi1&><2nUGsP=)Fpf2z`aBCg|gH_7CVJ8XyO3ZZwpoV5Lu9=#D}r%YF`BNMsU%L?$8;@){_>0c;)snOw988X=KM z9};j-%V1vv4q)>D$OP>JWd-HWnQQ=Id}xv?P#Jwu8A<#dCMyS5wo8y1#UsMrp)yLK zGTvzwv_>M6zeor}E5lfXf-u*}gy2I`4HB8yA|cG}jOQq1LPCUsFrQ1pW=J*9Ub*QR zzv%?V5x+qDJzyLeRA;oR@dL(@=LujV-=<9@F6asd{;Ed<>ZZ_}F0wsRDFNdTs(L=yEVrYNA zu=)!yj&LND7lZChS%7imcf=Slj?4q&NcH!3!N53TEnFq=F8Dk5lP|Park|T0NNms+ zoqbElrjo#;6Rw)cUR`1TOapHRi+PINpy~xB%dmKyZH}F4=;V6<4%olYuy&xdV3byi zW5J2k^pRQ!jrO$`iqa-=wz-g+AyNyY3BA_BQQ8HL1T$)j5Meu|%BSbBlEFOL zWcYcbX4(gdSt@j`6#AhcpKHWF`L-q4_-OO#-&or5(O&1HDElX0XxFmHM+eLviye`r zLblL0>eJ*VA#)|MjEuWHFJ*Y7;160RG?~N?v#`Dg2n=hi!auF*2hsDkB7yvF^#23k7nqMQ(j|WJWkJc`%CYy#yHp zUrRG@2%A7cM?%2&BFVdkWA84{VX}NiY6nhQq~mQFXx#E#CpTBYuig*HlqHZyH%4uG zbe%M`5Rq7e{Lnv)i2#jw0Q@1}>}ig7ith))!A zbw@7Z3q*hyqafrMx6)@%?>S23UwVm?R504bxc4b5%O1pY@t=0XjH34nlT1);%tN2$-09p!C%Y)atDylZt-Wb+Jag#CDKRb=V zxqmfn{1Zo~8!7-(0h-dkS{BeeuQm8jD5d+_ibtuF?d0Y7{NQ-7u{e)?WE{Cbw_ND! zKQ#-)j*>5P2qS)M#z?Q27pn}5eM}|aXvgY$j^qe4{T)0=)M5GV|C^4OHG+U&X~=-j zQpf=^8PaiKsi)^0R&JE0wm=?YFamyuy2<@|5WE^_^^CNk&{*=ISFM6BN=c1 zjRYEQifD$%0h6?qqD9I{B37+^;E(-o;8EU{O4!(b-L)|qfiQ-<8Ku`@*97H@gk}f;A&z8b0KB}75Yb1~nSrYF72Z0( z5g8m#u(y&j%NC7LxOe5n5?{@sN%6C?8h$z0!Si<>yVomH??}LE9TryPbAH}y=?zDASAox zJ)Bcszw&Dbu^z|#NHuq}v&c^liuU#5mZz7ewl_PkDRT@1CNg@=>!Rox06I1L?H5;%1%PJvdr&E1!#i#QC$q%lhP zM*Q^5oY*$=(X{nC#?q>0xpu6u5?t{mWqi>eMw+L@E3Hlbq}kM} z!Bd}Z<=35zL+90kb&HCM{iZdNW?3z*NTKXx>h3l+LpTF>ddb`NIyi2_Ox}ENeo8T$np3w64b|b?nw2zTadtY-4Y1A1^N~ zTvVRR<4})YR`KQQ*3JeFtgbwUBDiPg+tiv@VFRn<(9(XZc-?6)9k{{%j-8!nfdpHA z9jv``;Pe*l*F)X@UDequmyHksfxn^x?zlmR7LStojc}djy4CqqiyY<_LAyIuLhP!;pcUmD#4ZQf&m{9%etp03bYR! zn7uPjF(U@sWCQ7FCxW7Xo4=y}7WXS&?h>Z^lb$jqF}cCn&f0O(y?tf&YhL(h{BD=u zvQC#T2995oIhIu;Vm#ocJ!AUu?C>Tk3Qmk=Q!_9Uf<#K8~Gd>H-y&d`9K&7*~h2tv=j z0|UOP%$wCwLxDFd56Z=_4u3tw6b*)t#|4J!-SJInUtp>^S7CU2vE>qfD`$Al>*L-m zqu(1}t!HkHrzdk;&bvn?4JLy8LWHXqn$frmH#NI58qU9rV^Uwj+Neues?%EnStR^4 z<0b7{QmC3No1!WfW!VfV!bE#IE%(%lZxPC34|wjDI$Qg`7ifw3$hmw|God>&<>vZa zVrl#hC+8x9--HUM)3j4<2$qs23-H()JciFN>C+E$?vQgKN~3p*ZjYo=r+NhhJ4dHio%s^e?1ZLM#sqc z>f(5PA|ai6`7nLWpnU#f`hq@yEuaX`+1dfIesNjVo-kGSslBf9p>xB9i$g>8yP0At zQm@+Dn(8a}np)il^(G?W#xHrzttZ6 z-27n!mdw~|Jo+`BW?r%betF{hGgylWAA)$qW0-$|IN4c2!DT^6c-@66&L=8)IriPb z+2k*r$)8RYdov%0o2>e`FSk-+;kW$cr~J3XUQu(NBm3ra;??ksLEuWqWSt6W?`r$ncQxN8@n2|O5-cOVeDD+oOk z?FT)GltfnFa6nKl+Kbm1={8E`6ZcpPLjob+hUUUK^>A^C{W#O&IGMdZ`i!?54|M~xioEghA82atsf>|o~HQr1J560Dx0u_~RNWAn_3cR-B8 zemJ|abi}Z00kV-89z~Tvn?h!!Rb415?CRir$I`AM4qJ~OjmAF;B4JB6KcKr)Z`{YL zDF4tUkC2>JdU$2H%sL&%DH;aDB76w(7P~}4SCnYgCAfW?(;!+XQczez1Ri{)hjTEh z@Pn0Y{xGE)qddhK!!9Mel^_Ym(%TpLX)jyqwozk>+rjNC8@KfOT9@kDcdVWl?j8+i z_ORX!OB)y1{^iCa3;yL#H&Z<3xo$6rCH3CTv5NDFePPM!H#0+qEr`MNyd|>pH^94? zwOW%SqMXLQWb++XdSz{hfn5~>qLGn)^sH5#ekPckPYsz}rs~-dIMWYVO1WZen(?Y{ zsBtyk!OIeHZG9?#<#Mp$puPmby^UBuXWSVnXE&gSw}Z`6cj4Z8R45I!;d0&1vw^?i zqIv^%ej79Oj9>t|p?}@ySWEm)?Q)j~x}Q+h zkWo|HB+^uqNMrrLlx+4BgLVWuLF^-Oc(%!B++{AvU<9XuY9MV!f1w|^DxBcGDl%%u zM_0#<^L~c*$;o>|POfF;4{b3R6O10KYrHJ`$w2YQtzfxc*ric@Gh0ZA+-peqZ0vFg zJ_>K!*zrV{AZ{9i-)3l`%d#o)HhE+#Kk)+c`j=KNLjny3z060~$K8**(0a-UdpJ`d z&oMC>2)uvb2pACihS_U^46zW~2$Lm+L}WiN#D^x(*7XL#v!10Y;{0W&xyVcNsx|i$2uiwEJ+EiXMG@6$9n`#7`#zAjVK~i5`(ki=1^jyB~ zw~uDxG9mlm;E$faLSax}ATsUQ*mzUHJJ9OFY4wyK>Pp~hMQn9ESiz|(CWXB<`S$9r zT5v^0J74hPXy;VQ)Tg@&Cj+}|WQ^mBhgoL59rJsOb)(D6c`!LH^QkT6G@N z%zgfIYtQk^tMgS@ztR0x360Yoqw|L}1Iqpi5fv+|#R>|D^OZNkw_ZK%$$f+Owm(o& z##4eDQ>XsVErb~blPGP5+?g!>61bNnulXfaf1m;HYSz6Ya~X-ja@v8AJIw=uEVIAI z0toD6>1B+b^Ar0L7`5&2ePH*A8b}cdkZ*^ur9D{l7~jDyqjp5E*}dF>m82)Eu+3*5 zc9{GrTB-Yx1KZg@g<78Z4UxQPpg1|?d~XT2`BnHVj1L+ZM`RVr$Y&z@(Zc_MMahXC zBaGH7$$31)+0E;&)o$2A=ERcHmqi8_+cuG&>@}=lD0#1y6M}S}muAZA^fpDS8C;>& zQDIR5hCml*o!z>EqURlVidXFL=Wr*uJF@(U6so~>duN7mSDe8LZ|cl3)Y}vxCsrYv zi&n932*vzAjcHS2Ou%J8end0n5MY_oV^qAwH*Lc)ZNozT^gT+Uq{xY7s68t6=4Gk2nh|0PG=RB!CH_9cMTg4A z%ZWTAReYH|olzKCL8Po`ZniifdMP0ieXHs3tVGY=ymWcDQK!@^_+He>t#M?Ij)GOF zw%csn!Gh(nmq@WCo2S{R2Yve#bvVqw;`DeZdsbmx}ALiKso+ ztMy*Gb?hZEW_+7a(?>!%q4GrOsK04yR6g_sF^l~ldPc5@)MF9T8Yw5!YAM^(F$%Wa zho7iZmW&VDqi!{?@=xx0aGj`SQk$n*oEOz3ip<)R%r1`dWhZg0c|P|#$s@uKHu&@1 zesQY(rPqD|71f1YCm&*aX0k+gU6^`fs(tbk*qL|Lpd`*CH(~qr+E`cT8}(BX_0-!} zCx_ZO++OOJ(smiJ(e`cVGF(si(oXowj{ee)>&lMn(vI)yFu{tH4{j_sm}1$eaU}qs zIdojBIDUF1DPt~rc~3`wk{@69u=5jC!_)a z&adbgkH`L;l`tYH3%*`cN-c_i#V<^~dUTV3XJv$oKtf@F8%tO?V5v*MCnedXBj{zZ zB6Ao`QVO&t&QmRJs&Ue(H$sH@cha5MgDgAIOZ$9>HQ-YElWa70))_Q$LWvkB|41g~T$jCR@W$ z)p;v2{7oY4s8sfF+G&buF)HN(9E;RqjIe*CzwGWhT6M8aIQuogIlzLKbk_Q8eCwUa zfs&W?2?6zm1aE6fNWbT~lGg&4Xs=K?KWx!cel>-i%xU#j{=CPB;FN)4(c;E;{>fXR zyQFHnR+i6oPYe$SjtdKSJG?QKK50+u4{OpFd&Oxvkjgqg)l}Ft~^3hJIDJdaV6Nxia6b!AxslXF$}m))MCQ4AES*zuWs} z*Ar&%>D6?mv~fW_|2C=Q*YRq*tDl>jnOQnovh&@DPRie><$@mF6(Iu0EEuGO>>8r^ zn{@-JUtj!8TK6u`FxXVYO~J#Mi~2OB5d5j`FaZ{>c59x}dUr>46#;JNIt^Bj7fkh+ zu)+tCig+3vK5!=aOfm#~Ul~wofMx zwr%1Rr?=F0MUSXEVp4XCEdQRSvyM;2;CX6-`!?zP^{V4{Ro6Z1C>3zTba1BI89@sJ{{I!ZxxtOS}Fa3;}Z9OOI3SV61>_4UsyPtnb}yGzo=@@ z-kWhJezIIR5S&g{TxXYkF8$!(s%=zZdt&g`xX7c%v)ekDFw2VCmk0GB*@JuJzpSaW z0}dHpw=F0vnXY{b_WGLw<9kq3VO6o2uSDs9u{;J z7kO!FX%+Xkb-uPE*Rp39+VYDp&k}%JwvEg4zv~I1xNmv#q7};-e z2Uj3Z?_MM~JGA3VoggIe;0!_u_mwXPmxhb71BFOMwF`^b z>+*}>r0NOPY4V7nu6zDEi&)KO^$^EJTAt?dpY1N*Nt>U<(QB6ykkCiT8o zig#o?p*Fo*VJ*FRhY1fyYUI*rrB!Y|k6Ou`P}c!9mj|8N*zg#L(QBzJem^?B75ZYm zI9!Suk%?U{9*IEj-`fTw;s7v$ojOFs|^5GUHpAGtv&NA^2rza_pBj-FcMo9Nd zKF{%Z0!T8%Ouu|BVTJy9zN)>=Dn(-G@fNG(d9f$__hrGk}jI|K>-O&~@ z2J{;U51o@}`NVy{^alT8OVa$q;9L3vM^jS8{__aw2!g4_<)#t%s^)X6D)<0;Ih;DI zT(0*;3TMSwW(cdWVhhClr3k~Ko_tTG@zd|yp9{5XHYiH4KNj|E?3C0l&aiu)mzY8V zm%|jC@~y~)9Xn_5h%AT|SGM{cecHmd{ZLLT0flD$sp34V5O^KAd z`JVrN+BdhKnWo3^kx4}d0h&)rCj&3P!zImaT-OvGTpkipFsM+8{o>6y;9*w@W`{+` z<-CAYn-;pAAmEN#n6Z-R)jG;?v{00jz+pOA` zzv5-zY_f^Mew@gu|HO+$MR#3xbfVr=cC?J%+L8%uX44bjjb)m;K$fO2ic6KDS0WC% znnwu_3s_ZxEhQUi-oq3t_{F|jVG4~X^7P7R=aIr6eKnRHO`FoEDFyXmyq9V8&D>yd zb6I|Ei!m3(Y!s<>pR&)=bvcAhMHXD7RML@)UF8s;vc3R}dC209Tsugp7)QXW5`^(> z;uoyC*ds|tHyCo~s}QV;(E5j2 zaZxY0?VcRI&iabcE%oHEkC|!$Vvzjw`|OCKgCPEeV#S<_2-@#V)0TB2dC0h81qZ|# z{jyX!iC8T^LbED57 zp28bip`1j(0cFiPaMQ_qbeP7XVkAP$=vS|tR3p^iJ*Sb^kHwLAb5XJ4IPPS3_CbSX zSdhqYa`ni0@b{bsm{ydns-#yyy-Ye!2X}O``7`Yj?bvZ_P zoJ%6AiATR4l_+ob0pbyv86MrHn{ZB0Jn!akL>{-oAOw}QkB?d7?$i%9j9a1Qn~2nY zd4%@EB&;G1v1`8zTY;UzVVf#m&jMdNR=#v=Ax<=JKp}xJ=*X z2-@4;JwMgHv9m*ZvG&J1+XW+Og}^?3u~f4B^A#s;Bxq`2+2CBwy%?DI0CL%1n5YVCUY$Ns(VlRqh zn1%gL)lf}%Cn=Qk^tojj1G~jIw%Cg2*7V~6;j`3oi~%^I;OVoqY1Bsn10O|4Wlk%k zYdYNG?ZxzN100)kw{EX~H|?-7xZe%gwF|QA8thSQ$cnIu!?#uV+}s)T7UD$~{Jzlk zz@Uj&pggLb320~G-lp&Y@_sUEJO?bQR+iR|7iP|(O{8Xs#>-QOk5@5g(Dgfw&$L^s zvKQwW%4t3WHg7qub1xN=I>0bdFxi_dQGfeVF>CRHZYc z8MU8Qi^qHshRCU@R;p|A*rA=G7>&PQDhIYvqs7SR8AZ%yyXPVsjo0B7LxSiANY<5;}Gz z$KHyFmU{Bq?B{Y0a{v+E2s!JDV(jeV`Z)pH^0|fZtHUY5Z!3JlQbUhc`MNXB7jMwq zgeX{*sP_w-yJ6Lhb}Wv-t;hzv-d)-{jW(*Ux|fa>$~g$X@WLfTonLBeBTBLK(g^6> zvjoS-8g-VPCMhXr&Ti)dN9dnU%RFj5)MtdWl63h*o9dq-7)07j&(?QN^qbB|$R|B1 z0;vPtt}dN-RgCq?H5GSNS5pi3cTNsrx1N@_FK_3$T`U+nl-4$hHr1Ji*;idKu?z%c zR@)fBi{SJfhTW2f_a`tb2R!{#2$_#9{`NT>+jZ^DZ|Ix5QQ@a zeDMCZH(C6lfzuAf61J$_r^4 zusNGU0y`4&bW5v?#xIqHoYTIS4DKY;m<%>!mrV$D7A2GEVp&ly_{Gr{*lTC_HaDxX zji4z5Oy85@gxD@PeYB32AE)8I?xDB2J9OaS>H-O)(@g0J-lwnd@c&TgW=kvf89mLy zqDJ9v^Y*#+R)CA$fdyI37TxU4-OJ4;E{uh}V3_3_oR6LrBpz==CcdlKtI$q9#v30o zo`XDjA^zyf#^3{e?whOXGAZ4=i_~gks2|e4{cz^|#WTktpOB#{i3MYIefPlmI=Kr{R1s=}+q9xr~<2$tj)^l-}6e?mlD*W|H>f(Ww99{`X_4 zz{jC4@Q>4byA56sk|>)@b{4$)Y+I&j@oNe`Q4M!%U0L=9)IKM*3$p*&f`}#ixW}H* z>*XZ1fGstp)i)A*^vmMRSR-7C&ePSCJ@e^$(A1tlUBy`Nr_!fzI;+>B)!>lL<7x_d z`sT*=TQa4MMxTR6$7Nh9Xa>4ZFnSvE2=6gJos$6@12Gqf3igs@DrdNw+rH0q1rzx; znN94cN1qDpAfF-CgAhnqEOE+L1GPI9ArFZ(Q<|9{4zLX37C-+^wHW&&>hIZWDq%Bv z2wjN1vl80vJ$3t~zrM#dHWc^7(?>jurq(mId84EU;t9NQ=qdlYLNJ9$lW5gUH}%u` zIDDmy#-)wgBp5eqv61m)BB*%F%OA9RM0W+@wU1t`uC2he|5%#r9+bfm+mGIj&+N|c zrZ$X}r&BkPQI(>n-~8P{gHgjG%K47eR%mr7GREGI-r6-uPeylm`w_O6G{MB5#_W#A z*a9P`D$%-v@7Qe5om3CLSXpDnXX99^2*t)!)xI-R<=Ok;GB+VY9@MNyUnM~QzOS*v-Opm zqenbUG!F|)n6&1yv|{<}4-UVtOi{ym-lHl5h8W=iEYQpT>U8suPCC9NA#Jt{EtS;UY z_)yzT(#WT?H4fsA#$zzv$Omyuw|-t$vbtQ}rw{`M;H#|w!x}UE?pUkITAF9vo2(Qs z!}`8qYkGD@i*SU7{&*`(6?>vsK3y8{v5(JOJ0dCm*fI2>v|-P4)~0u|DR~`IgE`w{ zO6Ajq$OdMp2CDxyP?AmQ?vQ$ulR5B_EH@xvXmJ#FBKh8g*m8gE!~8BdHNBOp$I|7^ z)Nzkvf2r$tEJtYwF$S5L@kK7d7n^BtNu>4B?xEt~k-ZGcFF8SHofGTHduPn#hRxqz z+!tGBdQ`5D{@s9*pg!@8nqv}TI$dQ&{ySkcs?dC?IkbsV5vPm}@2RTTOWTjCTizYW z)CDFNxsqZwolSH<+Taapj}zz2&_}TD{rGu>MPnlIyFe`Rb(~Mxhu2B(Fz-~6u%f$o zIyszsR{Uv#pOu~mo#(He?+>+{ZugH?TBURMi?I-Jc@vjCFzUr*8+aD>k=pwpc+TH& z2>xJtDr%L&$V5PG%aHKaD{krSL;+eF-!e4x$0RgjwaE+0A=C=ZGQ-E*ifC97MU1z; z|I~Tr@~1!@|HZxBJx*4z2P*rMZ_~jeFt8pg22tC(A^7pE;_(w6VUr@vw!PS|^!KgI z5S3?^`}(KxX@|ij6uo;124~QOy3ql(@%+;d7y(yRa3$N`rE=w0YGN zytB?|(xPr7?5FNu?9J*fjzN%mdf5YJb6V4Tg0R|smoUX2Y2GwYyjBNm8P@(Hg>hHX zWQ+oBo_3y)nggPFBKQCY2UBt@0z!7HH<{wJX|~7JK~2q2MKvluu0s8(K9Sf;?v{{- z#>A-h%&UgGJioDU8#MH%ExN)j_Rm}0T)pDUC}d4)E!8vECvnQPz?YN3m4?;V10%UH zDfEV;)!z52k*f(vycJ&lRc&ieyokqD3!Hw^5F3?(ge+Qqn^D2@i-lKKYh`WQ&tGZH z_taOnI=I*bY>ovnKVV|eoyXDjXe_fFYAe*y66guCSzde8L1Jj%P%RM#S$L9MZ0%nx zqPxz0Rpb;n`h=&#<*Vf5Ly6!wyrti7Yhp$Q6;47P{VZTAZXD}s&HEldnfrB_j1kvf z&v87MW$9iI^Vc8<_!{zG)3XXmRpJjhS&pV31$uJ7225zPmqqA5p1m85^CqaE-nnyQ zoK%C=KNXeXakdnxp;JSbL|Cf3s2rUbLz%1YyQIwC0jElt9HnNp>niAi-xLvPVBTr! zr-S5`&yTAbkyy6$mzkPoOGSGreiviBPT`|uLDKwZ4(t&gjZ}!YHY#Qseni z|+qT2F!*?-~~=ol0A@JIxUm8GgoU&elZ zgU9-m%+n(^Q(9|2T2LcD4~ow!5l5!!ZyP#D7jXwP{PCRG`5m#)T`otZD0l0XCDDBD z8wT2nzG-YX#NRGjH|-yVCcsrW$S^r{P7;EA7QSPr#PN2Da&wyqE-qI>#jnGc^wzP-4748%NA$_|U)~Vf ziUMskWQ9_eeAD;y!)R90H zxo`vRR;TQ1pP>RCoqB#^QHdraIq>Rr=3FN}x_qas462KInmPM=fB!hB=0ZC@I#pN< z$f;pg?`-ph?w=l*%v@#ucdP#no_7vn;)t*42qtssz-H9!{D^3ju~mXMS)Lt7K@e|! zgGIvD|1`Hp#+S`!3`y&yyL#(fw{Rk&{yFH^W-j&%XsLc@Vv*C0mo~51sOadrp})kj z55)_-bRX8-C%n9(2%IA>L%ztpIt)xnvAs3DIZO7^G7k|WgK&%(fx|$=-tMUt_Pv=V z_Q>g*2v0=hbj!Mle9<&WCU=OK)QyQ;3WS|XMkcIKuj@v-@!oS<(-;Cd;t^5ff6t=k z{C1c316Xr#7L_}5%=Kj4m^-2@i;m*z9Us{YoeEsIk*McANCEzw( z8RQZr6L^3cE_Uh4Q!&G#fw6D&xJb{+Ki~>2_;tn-)ODHXH2amOg3;R}y38N9(3jKF zA&a~MU$K)G+Phc&fh>+d_GozVHt{R-4s{w_J$J0UUhq4 zM}oONzcy9ES^}4q7%p3omkx`DGgt2Z9{E$T1B$1RuP-eGv2J5L zY)aq%I4KMd`UwGL3F7Ef?LRh8smiwUB9}jm`9SYp^UaX1beVykEHOC-7rY4BV`R9$ z@sy1t^;cFWMr#1(sYeLKd~YT<*JBShE$euE3AW7p^zLj+IpH=wxD32W-Z-W+X*{ zlBH~>Lr4Z-l#&u7Fz@(5lLshwGvS>b8}tz}$!;EUh>rAP9#IUV9YXf5R4JQ?csVyg zjzO`kVCg~@jMNVJ=x{T9yN1%Doduq!3}=J*MnE(<+a*-J&}9r>ULJen{JvL%X7#_K z-@`TQPd?CHuZ@^%lTFY5JV^e>``3TNN8gl{eI{_mr)ZXx^pT_DsO2>%=Y zug&!dgZe=zNxS*!M7ZvoqaL-eK5{rP@Xv%3llMBC6>P0W7q zi}si18Xr!g+jG2l$QFJHvY{1X! z1vG0j-Z+xn5Py_g3tY;AU0nXwgjLcW(y~do2pTm8 zf?|LHXJ7T4AXpF|?U>P?VH2n)+)bhuxDizuOWnhQr#oB?cNb(53+)m}pE<;P>zosg zMQLfEnidXKvBYA)`&bE(7AK-AsUK;XY>>EWTn^SVFa%c~uFjn2`1&T`v!@}A0aqn|7`v*R|BCl$S!+d0cEWCHtO zWQF=FWrY~Yw9DTfO8P9z;t9ZuR$G68xOoU*Oy9ACmHh;trbgnNriT6xa9PT`l3B`v zR9U0XLF2Ty@sbnSpZL5ank5gnc8M7t&wfd9ZaCL>5XF4O0+RH%8%fhNk!E&@%*E&})u zr#4}8?KWYI1kM&}1cBtcW);5k#^fd2rQ31dN)34;~S%}Vozb( z6`2qXs!_Ct@y^fIt_uXURfx%Zu~t3P1IJc~tG1wbG{1MuV!7E*;#7Tbl0*ujDZucL7?E0zcFIweNCT&7z2 zu=A<1M+57^C!eg&xq3eR?!&PgjypEAAsr1v>xkr3Nqm2L zeqVFTcE#LyHFKl1*deN(_#CPqf56g1nVO!WJW{32+vhJZPS~E2VC<0O7VM zSwPcd{Wko?Drgx+m&G>BZzC1UEdnl+@tyZAQ6|KbJb(JYDHBP8_bgJSl|rCGD~(d6 zS{NmP5~Wf|gI^$=3M}#<*klY9nX$)TW7fvWbfn&V9%odNKto1c0x1Pq85onvh)ssV zY&M510!m~YhQqX@cj{S1bX05>IUb7&OASXHMVE)fhoK#jH;A486MTHH8X;g1o6BW@ zCB`Qu5U0Q+ZI^aeX6}v?teKZtD+q2*a?GNC#X zlyJ)niwqn!_uvqKz%k4c;*L@lwo({H*eby!0cR`&CRvDt*ccL@i44GOR)MT+99H=d zWAckYB!VQGQZ#-Tqi8hOa9=VJn*sqT({SXuX?j1DlV!{F{pVA)h3a<;gMSWtnLQM$ z*WPUMVD44q9{TjhJlt~w zrP{_Qfl^gGUw{hXxo78dSKp?6Ei&OGW?8=iSLT!7SuBHu@BI+vz*;ltm8%wkyTH%* zJ0u5z*pR#3x`25A72-(B*`4~>=Uu3y1!l;*CB)`uGw+q37XR`mE6U<0YhQ7PJ_S?r zkAY7hf#3fS~Gz5Bo#JbFT3 z2M*I4CBPni{%RFIM|7X#HQV)a-Mq-3i_lp_>ezQfG&}PevL9R+i8`n-gl$BXR!Jk> z#Vu)C2{WOAa~ESAn)~mJeK;nxOgN^50XQar2HZ~pv-?NCmJPEr zvZBA!{0#0KH_1Ler=v#*T`uG-RNX(?EW7?v66Z!w-oxZf6z7ONI*b%qaq26waXdme z>7k9w`hKC76a(zeSjy1k69{}5sLwf=3pYAWo~BM)uyo&t4c*v%zLlRSywhh98V$|o zf_pK4(+P}?TuN#CPO#h)6i?o6q`lbjmbK&iFckm7`3;Y*e_C7aduKS$djyzN+yX2s z>Q1`HoKYnmb5l@JQNf)tT zh*jzibF5;4hLSj?8uoZG!YW2yi)DneCUb%^cIYq}68g@vY|JcU_Fpxxj5b<0&F|mR zTG>i7XNPBW@?3q!Dja<#Djbe#a74Fe!vH}8wI$Mf$A}c-qg6%NO2$~^Wk4kIG$0gt zdZ}NMlnIIy9*H34pNdnlo-?sL-Z4kha=F-(XX~bE*O6|;1Xtpg+b){h0)G4$>D#8ceS0Rym8F_KY(b!x z^Tmn{KeG>Ep~E+%qQf(!rL)0^g{ufhC2QylkS&zYE|aP^&-ju2h;uIHf^rRzPwl^nk~3lT<)o$#6fsV(XR=`8BJ040q=qh%}t z1cHj(FGeGfuSKGwbS94p!k!LS5HA^3BUxQt3>k$AI+>T_0In_$5sN_HK?8B>$_rDk zka!HI0Ro1@01-nm*6CMFXe`MbR!nfg#Z6LOqJ+OM!slDy=8Akd4HY;u>MF5(MMaWV z5qAtoq98ZOkMZq-M6#+Z7WA>pVF>jtPe7T{iaSB7iaT?tW5dxh7CZof)R&VwL{ypR z8oP0eI0|tKICHT;$d<4L3>C8hkP6uLKm*UtQ?wotl0>aSSBX=Fn-iq%v`puONjfZ3 z%R<2&7HPyMcdkJLSyk0k<@Ea0HqZZ`y~Zn(XM(Z@=OB3{=2ptO>`sc5>9qtT$cKL& z0yLH1L`^-lnY}b;c|6rL&naNE!Y*LE!fwABOK^WW3M8Pf`b7g1Ix4~G;(xCr8DjxS z6=P9`AdVBsg=HCVV^HlGC^(GJ^MPL!r2wNKY5`tB%vzNyJ5D$T5rm}F(g;#Q7GPxx z2H>-+@)3W-8F4FNL8YR-V< z(ph}r#`kTlIDl_9dx!bz*t)|nF!fJ8oBD${G{5}D`AOI9VS4m}W4_Tp*?)rc9=oLr z^?pRzy zU&vCEBgqn{0%8>$cqZq`;A{V5@_G4LE2AE991bcp@oIc6Nxnp#du!pNDWe!qS=E#smik8bz^ck1S zc=`pILI%+)5txUgjlL2MCo5A#4#{Sc^`*;aHd;SfARrGz!qktBKr2j)7{oNQ3No9P z_4E2oxV%#Wr`+f&WsA^OPVFVD$WbJT7AaGp?lvfw=^*wogY~0R$2W;Y9rz^dk5ea$ z?w84+>`s=;tg(5shDR6$gRdGJgHxFrGm2~B5M?qi8W0GWc77%ww;j8 zy!M$oJ|8rCcuh%P*)t{HJY*QgFOGl!(^Q#;_{G+%-fg-s?_P~*|2iQdfzTj7P>4@( zSXk1JH1WU|B+DxMg}z_2Y?MxS8#!vq+T(}wG(2FY{gIR1IwPb6H1V5UB?6Ph_1e% zVgMz-yufz{Y+%Qb119-VAS_7%P!Y-s&fsH3lg2p?0`xImgz3Y;vMY`PaiX0&gdm)P zo1chSAd=}1(0!q6XbGf%bYC*q1#zGt<$ZAhJwA!1*WQl%Zt%Y-?;p*YGA7~inl|Kb z%qGumJb&&u5$||pi?1zaS3FNkSY`l?1Y&F9^OgUfts3 z3k$#8<%bi13cfIxq0Nf;la-k)3$6+=qAT@h!dmXigt9JVz!EoPz=C}6WhOP@8bbA} zNJ5y?{11nuF-^#j5e@jwvx&5s;Q&HVWdiJsiX<5DaN>vxbmXuKP@z?kNCj^FveMqT znAvA%@|^u>$EUv|-0$$`qgkB?5pkG-p>gl+-e^(RUk~4e%jW_PW6f}o_m#{#>UyMU ztJ*Q4Whg)Wpl!d7^j6*7BZJU{Vei=8JUH;>3CmBvpC=EYQT@qY01h&@$+G;r7NkS( zTed!4s;I;`i0W?!k#K`8>t8GsU_u87G1{o69?k>HKj%%g7Ah)RXUrv);gFU&cFmai zy=^8bozD&y^296RW;%--!;j03jI_({WBm5pf5&0dy0E_2NIw?4y-Ohkq!h`6kw zXCA{8rvcuc4uG)O&$K0N)~RaRiM7bZU8e1tVW;|MIw6Kp7g{{y=}jCr{Itr}qj;p* zo@M@nN!L@^!aZZFu8oJO+Pn*Q=h8v%;ozqF$7BEeq@_Ewf8Pc}xU%n0Cl97P*7Cup zL%x0q6mV%36wnC+l%T@2GA0@RL>Cz!*UFgKj!cQpuonkV&Hql1cjl--D(f2LowBFyl#YM{FJJW^V1G2|i&ih>`wN zD><8hs-+rGwXC8AYI!QUqR(S83ekEvl##|b6pH&q`rYw(e@(kXVN2{ zRM-7gwAlX?J>yk%$0g&HU6Hpi_`Htzoh5<`nGnAz2PNl$#D(lA8tH$a5MW-%pnM`Y87B;wXojbdaz_h;XxVdPPi{rLt z73UhA>Yzh{F-8&vM#32gl`y_?4{Ifovtk#tl4d7oC7o)HN*YbH3WidI3Wi|BQq$VM zMJMvr$y)RKT!UmUC1WnOoIZbvKetDxB|r01*u6M733Gb0pEh#GhpC1zFoP&!qXnHu z#U!V?nK;!}VgprZOuAZPrb$ac?99RAfeL#(uvLM8BLEuK2!Mt)g6s6>A6$N>Z@g1D z_KldM>h@yXzJ_XvIjmko2@F@yea}=k1Acb^=;sWAQ~`QWn08ZLh5H8m z2{Ax-{RzQJyq%-;(;<}TDy1;I^sp>$46t_pa~|EuqeJ@sKnRb(6`UwxHx%Ts=Wwd< zPXXD_(fdGjlZaL-J-(O!&?^@@mbeseTJIRkcXDrqtGgNwcOHON`p<2mMVYGeaPU53 z@FwSD5hb^~omYj7+>t^NbHaw3n?#9s^JUrf?mzI!1N5mq`)>}s_g=_|>Y`rkAWPYG ze)HDJNke#azpwwrjy2uS7<1?s$1v7=9kJor$*Dg0*!friSW_UDC{ z_A6V{Y7W^0?%A)*3fdMPk-?wq*syjjGYSq9E(cJGB*&DLpLPNecRQ92?%dHL95_q#M24DLJ~Jp47T*T01B1 z?D^9OrGAQFQkRD(_YZrfR@c{0Dr>BiQqe^>km4#69*DLEr85G=BW=El$kWq1w%NQX z{|>XCciD8Wx?pNcC31?fXX~}TUw#Vvu=Re@3T4&s700NOS$5I{v8sFQSR9-ri<+XT zXOxQGcXXyi+In|sY?|L6nf2%oh=C{m6ZnMzSxF!;y1Q(cAF&Nbb% zVo50lfM&>w>z1^PLSP5UjaFos{tks){0s$Me9x2JCU*X#-?D5wyjY3_h`7Hrpvt3% z*q$Y1pFA$rj2V^E3?7!!3>=0rNOVR{HhVpTRZd}Yku!x}(Afh%Jc{K}QWbR!(@>_5 z&y*-ywVHh5WXh@klRTH|z;lS>_ZgU-+LBL~RmrH(f zDHuUx|EP-|Kgj;TeK|Jsr9BS4*do)eMWYVaJa%K+=$p+BeX;K1q?=dLh4km>rzSqq z;g)1dhgFIx1Ign1*l&;~Ly-k*E?OZ0vA`%;^BmZQ;ePE_YYX0rRyuQQ)xt9)v>Osd zI1ql}pG9o!daN_Du<#plue#{e^4E*ZuWb&>T};(0b_6Wsrvn34vIEr2@3-#$inVS{ zy9tZAy*huD-TrzKcH0=+o~YBZ&)TPrg%mJ33X;Qb^*<8&e(k44-iOs73ps2^fF3Vy zF!ZD{`{G2w!KDUR*k~wU{6u0@XG6qYGwIcwX1CtUumP>}^rrC3u&Eu|nKcCbPFO`3 zzSDIGvYhXw17VBw-y$$G{!DN#C53$X^dhekuLLRAZMvx58b54WZe{ipwBgMDRuxtD zpX&|KeZ@hLo3#`B;KP05nH75QYRKL(QE%FkS8B~0~crB#TDa_v3cr>q& zG{>F4j|~H}2EK`IMp&tB7nBkp!DAJ9>26<&U3OlX5I%1#6z{D3U2`Pm@&0ZTIi)=X zg;#$Hsc>(4HS5qGh&Dcso|f}4sMY6U=+U!DYr0^GY5ByM>eP+?p4wx#DXiE7Utx>M z%KnsKGqzps-(`;`2#vR|+m2vzeVCq}eZBobb;3Yt9_-Jf zVpaEpP5%pgh%HOy?di^ilXD94?}~iY8)oCaV8Hd7wD-B-%J+)#ifS56As8YfGd~X% zev-o!EJ~yt14|+fdp^cnS?Az|&mZk>#be69IC54$kD_bSZ&*t9 z$wJ#d_@Q7?tKTg{|KmjovTxlQC_o+*gX4Sw1x47GW#M%Ij21~}TsL0cElR_+nKP1X z16Ncl%Mse#Z6Go;xBh~se5`%K%_Ir2Tj|iWyLxn?B2~ATRok?i|n}G2u(X?sBx@CT!9Um+H1cx9)DFvg* zPcXl{EN)PJ$V$gDsFq_gsF;eSP<)Js*J!`H*{H-*s?pFRJKjpFvQX&bm^?d9p~q9aFGY;`m1v>h5Fqn@?D zzP(gE82d!bFA;2U#!><9r|M1qzp^)9kRPeB96mZM<^37V<02!?dCcw!+_jjvSe@KV zbbcE`58FWyouiu%6?<6t#e8bsiw=6_rJC4yG!jjDgZ63pb|y)I%6E{woeJF2wX|04 zv|x-Hk!u5SKOL!n@sTEyF7+tRm#@ukU>2|ck}L{4bp#*0*(m2pe(a-3-27w(Csx>v z64BMMMPzPzpH@Q5;x6qkw_epN#&a;QLPtU-ytc>e3YCl|6lD)mDRbW(Gx^CD~xY5gR_O#b!e=I_n$ozOH%NldGhNbOf! z=%(}}&Cq9wH8f87dLn81h)((Iab_nkPCoqNZFJ)PE(QIVysC;VH7%in#!XGzF_!^0 zz?{Zb`iPqle9Ig8m0<+QllgEMDM0^jkoWxB-u{unn3Jo0m?lUHnK2daUs-JpO8$7_ zldyQ_seBHlko+AFiv$Kf`r5dLj&K5bZ?mR4cxS*I>i!g2+HBKKo92O_>;mDg31wG+ zr4xI8baD_0ex?Wm97@=vNIHfkr*Xz&>KSSII}-ZDXv@oZUT=o+=O+Q|3_KahP2!0% z9OszrKACe@@7A>Fmj}g+c0qpdgEwKCEXb$Ghd5)kolKh>(GBmg%y0X0(bkHZXo0nLnGtpZ<9 zE_6_*EVsok&mFo^Jd8#+=b%Mq)&QB!u@1#4G)VO&di7t>qUd#vYJ4Hb(B@l;&l}O> zJPA~Jrc@-l2y|d=ntg}F0S0m54FNeIY%--f*u3Nh@KET@SncO^9TS5Xe;0Uh4T-l7L(m%)1lDRl7Da>RN`7rL% z0Hd-iRPItFvvBC4@;X}!V~wE;el6WvXW>;pOcKHPx%G9FTB3w#(XHK#7^*4{FrP`J zX>&a^gctj;1DuwPQR`|DZaS;Td6J*3+YQoTd@b9HepO=#&Cd%DnI%FklLp=2M?QnU zN3hz5SQ>7xI$hpq4XirZJZRrC)B${XSH6|?P&l10 z!CnrY;4`c*ZgEK>hKMq>nT2cahS7ht=HeHKZq(pw7N_siwWgBXQNk8p?a@}Jhl;+( zf>-ATY0?!4cGbET?aS(o(bTaTE}r)QY;yvwB=MroLDb$9{0Kv=tc;G-ELHnVKD8QoIWiBGrLLMv z14PQ$O9%`nniQ6bSb5z6^JNU@LeQ4&6ZJfS8Jp|#X@tLLopy5~gKlF}njoyTQ$!2` z|I8qQT}xwx7>ui-UvkvfA{c2qj#SryVW`WB@vBGs9udk6Meo>#J~FG1DJGfUcE9Z?`ydS0}@ADGE`n}Y+ z@Dj@21$Gz2%%OMj3nZu~U0n>6CD34d0RBvyaNIdSnmNj;ZT(A1(=%55lV$|INxqgK zGuUvVcWA@TT!tnSAOOtaMsB93If5mH;<_K~mGs zKnb@?4zgHHO-X@0w)hHXmmQFt5y!dlVNsSaKI})?qmX=R<^QZWbf#6~KbZ*90Bz2y zo`5F)C)%!{)PXWma<2{GU!zFr=f7%rKUw;+`49g_H`Uz0jvK$avZoERb}KJ)>f0J{7{O zj#_JV^y@)W)u9%<8+oYE!yGjIz08?W9tKIPD>>Aya;TNMYBe{lepbkgb56>;@| zv)Q6Vi3D30p|z11N8BDgCC*I8`v=)HJ?x$jLU}S2%dKYQM`DI_)Xpiklre3k@lVsi zA=t?^naK%fQ9l9r!6D?eeA2Clp*T4_CiwDFeT@B>W}c4r9GCTrs;P*3rMkp_F0)++5m#0&`WN~kOc3-0g$hH>9p6mK zPHB^0P5}AVJmO|SwZ*MbQ_;{5#Z7(z`hDcEb)9D3o{xBZ!AdFZEQ9E#ba7KXzU4_4 zK;m7Xh~r!L8~CRFXS(EHcZI&Ff{zN8S7C;kIEJ^KGb${Zu*@9WWr+M~KXO98@`a8J zp}NBQmBlJwqmnG+v|+Qn%*^>h^-7p_=7`Yhvj<&sr?;jP%@5|U)9(9UmX#;jAK3!I zij6AiSvWHg0mo!`XQSjXUcRgQBy~eia=LW3wN5B9+BmZ9LbLkr>lZdHdVc~Y9o`bA zq6FJfSqdjN=7tLbNO|burZ`4&>KOLosIkf#rPVpo>~=D24Bu0--4DyJ^Y|vS86e(w ztSHKi%(QCj%68Y~qo?mNzpil*hVlf$1@L4Yjv&>3Nk6Cw_RGAe`m#EVh@3r$SPwMA z7v%4{NTVr{_!MZ(nJz9H^>k4U!qay~ zDUNxqfWxcf<+c7X%3m)xyr7w4Y72bw%kIbd(-H9qIny)A2-@Naek^!%DUB77^{nd# z&TyyH?@TqII*6V~=8x=@wo=?(a6=`)i*fmS|6TJPRI*{gCYJkT*|NO~q4z;_7$r3P zuQ)kj8b>aBJ48JRy$s66jvY2TJ9aQx?KioNofYR}XoCNmjbLP@45dvO1u7fbreXzu z2nDJZEo0`Kbl`Z1nsly=Mah|o@TQh9n1Qp@@11K*XBgM;Gmcn$gkA1|EjLH+girQw zSJE#=Z|2>n$$eOQ9VYh4_`eS5jtti_x@Xzkf1mH}8h>|&B{TU(<83C|Gh9-$c5N2U zFQxY5>vZK^8eD;N!FEqw^cNc{GZ#p~jDEBu?=^N-0WgzJl=5zk&d z<_33Ttu|D$*zQjas7h0;?Rv^WP22SzMp(b+%67COr`82~@8nP6>$a|b*q&tlN429a z4e4|EGYXK5f71$dV5dBz%YU$n5S=Ga*}WlKww=22c5GIDvu)}y{Ei=%PVdE$y@FCY zSJieUSjKj395!phz^XqpotZk!Me{b?(a|8Qg7XXyA5$}!G&77E8Yq$3)~=mEJq2mn zY|-qaK9u`ebgGTI1d~H2Pt3B`p^vVP>sfI*qdze@NBbJetH(BZR?L`gD0IZrUMWUa z<_zD~i);3M-c^08v#kR1`Cgl%`nyy6po;UEwT;il#EHWc>u~VBrRN9ON_{DC3ujy- z$Bljq(v@B)g+w3qFlCzoX-)FibzuGw*y4bDt?*5^LC*Q!o8S(aI-oM|P zIBfUi=)`y>&&%`K>l4dUCow4GN^T3fc7ODb<5DH13pkxgV~6gNBbi2z&2QJ#%j3f3 zvty|peUIV7B~q#a_0uuq+<#*k zTb?2_Ub^hGk z&*;+RGogEjgCHu+G5Jl*jzx0N&{-P)b9Pc0NJ8w$t4vN-)eQUw;8nI%&SS^g&;AB} ze$B2KM1X%MY#T`ax@Qi;_;&>M7om>)5NuSuSM`dq0OZC-A>)6g+FOJi6j+56A;UM= zcu8{cSXU_thttZD3LgxockGoDz46cM=f8wOTe5Y~pVq|}o%2FU;8 zy;!;>q#?DnKLPSaBGqanr5rx2^;}>dNXaN2bN9QJmEtIEAHo@A4s%MCCrLwX}ONytC!g()@16)Z8g^U@UH3V@YC(^pkcw=BS^TIIPjUssf?;8r3H0t#*#a>=4<&KjDq}$0X zmZe;+VJaV(xU5ZbTWt=~nW{}Zx{yj(9)%5?T6#zEVy}=Y3ik_J&TjUTp@wCgVAMaF zme>0AajgsMLJ`#bee;?t)WTe!c%Nj;k(A9{`@A@~bL)8Lvo;eT{JcA^=J=2!5dS*1 zG5Mkso2X|wk=;lhx42RJVzKQ}`F0B{UmV}9c6a2;bb~s0+F0Cn@!`VLi=h~>Ohu}S z+#gYsMdCQI3Q`e&I~RA%7M2yoPZfh(8B**&mDtyip?I(9>=@3&LX?+pT72yOSa3!@ z+S>M@A<_Hb#Ft-Bo@{{ra&xch;res(G5p#oY}?rL%c`;Smw97ndSf)l28FRDZ1fp9 zc0aMap2M-A?!)^5LDu}-%1grzpA}x4mjs(gapYY0Z{{W5l8{|Jdl za4ZrcJY1EUMe}*M_>TqQk>g zbEa^K9qpmU`<)D;M8*mX?2i3{jn|2;fut;#fjpR8zG~U8$qK{hbU%|dF6bx zx6&|M(7}iWCn9;s?!2&RB$R}rV3Xs{h~nS-{xen66XvzZ(W+5#0-y=M)hNA`3kA`gb$dqbhcB0qKF`>F@P!@x zuW*Ok-7WB*&l|}Rqcjpz42&ooc^|vyOOc)x8pmj|Bo#<2 zItw~X0E$7jX^~~d34PnM!#BqTpPaQXe%w%tAa62H*0BnMBm)y{G%Q6(5cD4jBjkN8h}KM?cun&oM1pmN_aAkCEi&QI z7T^$I4IzKz;p-hVDzwboGhxt#k=9IsLeVf?u5G@{*I!w}-~9I90Vq+lyjt%#h#oA? zSgc1nzz+?%#h|n?#O|r@dQ7z1Ny!>Sgp@T3V^M`>7rX1bZSAGwl04N zFt;|MFObN4$mXfQkw$)FfY#278rQk0$WL;us=v!x$pS5}7{VSuf;!)<=B&jGt*C$~}iRfuR6dTs_+i!a53&h_!DuSMcxIEYegH148O#mHERl9=S}q zMrJVwEw6R>Tl?HQX2R7#pW7KiIX5wdKQ4cWZQ?J-w|AY{6B6y)P3^pI@$o8xtFitj zt`?7fg}N=J4SbnL7xamELbf6P%=j))HC}0BT*&izIUKymp9=r(><%-|l{f{m@=r z9rvzn17LRhiAMihX%zhC`_Hztd1djd>z{6tkiA#mUioXYdIsmt_v|52jaUD$sBc7t zUtr*90000QK%Q8uB*-nVB?$@utU>|+u)thrPiGTTGkOnOn-*1F=PW@q-`ZXy^Bstm zr^!GQ1vS&6zIu!EMf{N1IZ!2y*zvmSJ7im1X4J(8Tf^Co<4x}l%%iu2A&c2NlJzp0 zD`|Wm-({r>pZDBXyr1!ySkuKW*}q><#XFgZmsFX0to|tLOlI{baW2(Qq4xYebuFP! z`!%$=0K@zzq;ho|qg(b`nV^w`=FGaYh&~hd->R_4FJ~9@Cegbm>Vu?SS;(%8VXx~)f#;1a_CZN!abim)3k0kq61f_Vo(1B#v{2*-fR6Cn)tWqg6 zG0UHnB$nTAQ+j3pn|}q2i6(CB5jBlK_goy*4`qpetL!q9Bm*1Vgw<)BGAV>dI6GEv z$i#6NLtN`Vyaz)h<)YpTE&vnzTF7QhVNhR15 zrkrjnnv;aj^Xk)}4fN4zq)_da!7L=5nW)Z;ca~ity-S5Xu(uk`^baa42vsk)O7D%?iW+ z-QRf177`&-K>!uh@Blbqe{*nl)wi^>bfI@Kwz>FY?T#bW$o}@4tFL%`ftdCz$xNh~ z^k--LTr9xma-{~OZHvVkA#&PtNL9(RTN(Fh7mlEbv8i@b zQ4^Cx|Bqu9e*d@l@0WOi`R|}_XEvPh{;iK5j;t7rjp+W2-mC4He<0tY-H2=3-tzyB+!1ZMb@2*6E$FAqQJy@d z!;+zlUUQ*iaOHo*xlGpk+^;vk@w!x_)VQzYT`Agz;`m%+BYypQvU4qujV7xekUw&y z^q$}-KF{8@!ua~+&w=ZK2>#ObXQT-UN-mC<7`KDvw_~MT?62!LV8z{x$5=Y}1Q#LE zVh~S0C+ExO@Vj7}>6EI6AQ1lA2%hSpR4+dFHrk$dF(M^mrxcC3-5#`H&f%Yu_=Z-8 z`|Wx6t8o?-k@!$r{E-Q72N|Jnd!v8$^VU~VnEglaFl#%UP>24Yp@TnW426(@#sh;C zT%FnCMgffH$!5qNr~&&-d>nVpm6?Oq^+!AQhmOGOlGjgNThX9;sZWBIr+BUDmHBdm zrn~l?b-rrWC#(FEt#6-u%5J}n{O@(|j9839N+G>2BCFDYm(wE6>(-#+LB0EzW1GN> zR(YSuYEcwVuW!j!!th{-13xUKCT*0Lan~CM7Mx9RFp5!CEQI5J(5wi69cl$b3BkWV znjXuzG5+x4yiecIH*#20<d)PE$p zMXx^|CwGzps+M=X=5eQ9Qps|J2;Pyzy)ZA;>K5&= z{+*(`Bc|v+!MG11CoqCZ?0KL0jc3FmL`IBX!Sbb!Zt>xwF**ojPl4eeyrmF>r|$&e zd~WFj#EQr9c1|rat2P}t$zd{Nq(oDpIX+=5Wx5}n4|tVyv-`iD1@v#87vG1sK1tpz z$3HCGS`Npefs|Gyiiq#`^F$V+G))NrHKKsj2|w5G3ME63Y89I0ExtG74uD#>+lQi7 zC4k@yMQ4czUt$eq-~HvXRvtlA@p_MFZZk>pm{2 zYVyN}4R&z&}*z3NqL}m%npM zbDZ&UhRi2I999n{t|Nb^Npm58j^qB_fu)_SmC=DX3}xnD|Ie4Ok$Hb2v93=qm^Qqx zfe76LPkOz*<310uFRB6ByQ*hJ&(N|(D|awvb1kkBW&Wn6NM*BVF1A2djLPK8-FsQd zNz`w+X}-Z9*>UAqJD<077l=asc+zgBDf&1BE9lUZHiq& z#MYzwcB6S#&2L_nm3S2!irzDURc~?geRq(1q?HnJ6|34jjxyf}PxduM3EE&&5rb|s z6Okkw#$0(`pA==9By0so2xXb{O^@?`!$O7rbZs4mcwNi54;VP(zRGE%<+oDfoiSC3 zaV+;Wg={5`#neRteS@=cbecy?+L}<^ldv)~L3RTYnT6v@@rGxHV?J+Dp8)SRw4=DDZU6 zDhDp#-kd)8+Y-zvyNqKv&BvVxUHum0bPeZv3~0ZIAo!>9F~7QFO?SM6?@-mU7;jOUv;JD@ z?B$2S>M`Dhv{>j(52y33AizJU|Cm1;pWPpxd|-EAeDi92PRD8OdkQ&v>~Vh2*_P0s~gXM0`SV?MSpsyagMoGdOJ zG@iZ_J`+@G@~?tp1HKD^cyvEJ-7)MJ8(ySq@c#jsKxV&*@uZdysB!XRy;0s6RwiL| zITfeUt5L04coojV$-o;%0XZgS=M|^Ab3`l0zN|RaO0~9X#i@!>pzZjhv{E@1S;D;3A3A$CPp+<343u4C*GO4bjuSDrb>?u}{f zAbaJpHuTn#?<&Ub&2Q}>yTdtD>RJwSEi=YmsWn$Dh}6()#~-DYO5l~7(uVk!0mVy^r3Z7L6$^_bTmV#8E zT_%|mY4`l+a*_5F)HT9O|B{h*cC>)!vXOQ;TGr0Um5h7jh1vz%8L{@-?>*KY$IN=c z_KF$*YscCXqgX50o;8Xm1lnuqK)Wi46^vR-1lp~YGHU(e6V|`X5M7|)@wwnhNwCWISpmB0?!l4;Q5$;gWI^OsDu7D@bgRVg52q~VlqI=k zZJ+EZ(V-Zx@KZ28=ktoZ>U~sRSr!{w#Vo%;Xedd5wIf5%OMrsmxfB6Phv)vSNbrQf z#0nA=)0fgN`nYa%j$!(N3LqylI48J^+6x-jh|OgM=X4lpmRcR0Tg6s?ECVmJ3_Pm{ z6pYQKL||ELjwjhY@14X#bHZwCB*A)^^MI}qnG2o}nmfu0&7COuUnn%E7%Lx|(}rF< zqgE7}V||ksnPX(f19QRwzu&-|$AwRe%YhUr3>FQ{WsPF3xLoEa)(gxjXOs`jX+y7F zQmK$>(`@Gk=8&A3U{L=Q2AY)$%o)7jG%)8n{VoD?ZZyAnU@q$Uy9&(3hxM-$n3Iz( zYXs)_q|2ItIYCy!By9Yi19J`|-%(&L8q<>kb8b+;!1olGi{|%F4a_yN19Phv#D>>S z7DR5P0=OhFw@Uo}@W?VevWQ#O_sE`$SNJIvm=j)+SG|wQE6buntC;0CiwZ>qSU)QC ztOO_(nDYowIxzQdMS>?sC2~nnOkYa7=;N~m=75}HfjLIwO9keNpH5%JR(~u5FSHCi zs|b_|%w;bFslXghGAA(SF-W<kZ)XEObvA)R*%rUYv0&{*pV9!_cN>0IE#832F*%^<_z9% z8k%#ReixxRH=5r(G#B;!U4`c2!}=Er&GEvqPG}Ab$C{xzK~{Xt_e+}m{z7vOBi~VI zE*jI5LUa2zC}7}w3e83H`)7vcq*_ZlG`GKUNfhHc9-7-P5}I2jet-C689rIWE$jPa z&&4bJlnKo#ugI(3N9C1eaiLYr@|(qlA_A-*7kX9#lnKrG1SlPv`?n&&Q{xi(Bq*jY zrCs##*+O$bPO;D&qw%FebGtg9)uFjnZ1u-7@IuSLvx-2O&|JY7+a$|Fh?Tpx*e+K_|8JmkCX6@MA`jsQIMzL;e zZui~31`M7jJh#iNdQeGJj-+mmma{5XRIqmX5v~68|NY6`_QJB0ao>y7lWd%yb=&8( z_?|S{w038?~c zmMB^I)UHbC;mV`l22tUHm3%bYDpp$c%72G~m1$gcN>{C{L{S-Em8q0!_-eLRg-GIg zURr8?g~%F_VdbS0d%T`#JN_uGG6b%gD{!9e`)mRi@9jkeF45IX3S4$qe+XOwTzzK( z$NN|72poH8g#>P=*Zfq6hn6~ zr4m=jo&A0#E{UtsBKMLKr-=;-i8~_aXobW{Vna;gxK&c(I?dzrN|vgy%IjMKSEVHl&r3?%o=97=f@XMmf3143_~wApR>RFTM2m}U4roKKoqXgc$yA@}?QW*Q zwEz48fml~Bs=^apy`&1y?y9T`S5K(2T!sJ32L$4{`uSh@9IT`EwiiA!d5I4@UJdxaa?_O!bUuwEo`ep0Yw9E7spvE8@>7h!uDIOZ1JvM zTG-NE{UL05!uCC{Y{c_x3fn=!xLf1mQ?LCtDQfRLQS08%kdV!@m|k5;+T#2MXr4Yu zZsK|4bTgPwZ^PiOkL+$GUHyW-22Jl~;aAJqo-BgJtUsAc64*Sro&vfHXdPWNA-ni^ zf>cLpJ(%7Thm6Di5Wmd7(a3Lu8wJiW1^ zPtt%ZJ&XDRvi448jk8#ttRasz|9qh~^xEl1v`WevM_@nWy6Kd>J-Z#5=xZ%GC@2HT zuGW!*MAp#1tqde_wT>LTs0^ramz06Ml`t-8b!;@qEMZQ(#k_6ksc_857hueBth zpbR9tT1OIoFIG?zSL;Z^ORfNQ4O}N>V5JpQm%#N(D+mZU=^%49DFV-K1jV~rO9IM> zfY;SJ5)dT9$^X_O;NfZ=33yo%$T5PBR*FED5pJ$!a6DAv=OB2Z8Q;$5vL z0>2k4D2}W3MBqgwU|lQdu%H!magw>A*m(9O!0%{H{x2#3v98wJ;&@6|B}Faxz3kq{ zaJ8POfstQK)*3l`9IJNksiD_SWG!>|zJ8i@DzsYh7MtbV<^y6XUlb88ccZ&=oawI{!S{ zFk?uib>d5EL%DqoHhMDBvqCcX_BCs#AG1u4=0#5mKF0-vE7ADp2=fF(O7NthtYL(# zv_DpKRa^wAt6g8w%h^1UH<2-sH^?5UY$4@iE4Uq9-!OaM&yf%kJ}zc`V);i%qzX-` z#bJp=D!4L>!!n6fa9M(xhttw>`Fw(zH>A>X`BH+ZvXN<~RCbpLrZ)82iC}W848g2_ z!a=w!!SrmEmC_Q2@}h#7-Bl^UtST4%A(=TyT}Lvl(BE@OW@1R+nPlo7dD4NPrErC0 zX5`wVRfc4Cx{XY^^fm}r3X2b84XG?6mswqvkV?;JEi9I4J2fVBPL4{*UcS&d&!~jx zEtR<#!pckBOUPVoNaZE&g=J1RB$KP*(Mp+<4asDLEG2Vw^LQBjZ64E~j z&?Vy*(dd1wpOn2z#ZmZ)nzGl%?29Y6UH+xZ^vo^aotgs~&)L zb%Tq~deIxV2&NT;D2`{nRit;-L&WkUI9-}MIuEXwGe6HZuVt2#Nnyik; zvHJ_~mY%<=_`HQ@WgJ4zUuir2m=%ZkfI~59SLdK`2*L-jE{`RQuPhyFK1qI{{9i}M z#!$8<<2_BsZtCS=Vy7&ockZ$%hKBl2G{|5BxVfAzZi0)^V>k{jX4649pHFA=*XcU# zu~|J;O=rxCN0k`I%9-k{eii0mn~R8;fUndYbKNifzS^)?ohN zW%)lZ(Ql>kn3?F8WjtQw2|$Tx=F=tM_aOiYOsypW&ny6mA+03=FDd{UTP!aCS%)1m z1fY9<(fQmvtskEyCBRR1T`mC$7;A~Z??VETm|8~!o;kXn9MU=>@RAZ>`KM_KSP@;< z{L`caq@wGBfaIAs0a4h`O9EL(1`;;~_#%+>`HG3c_wDDUP_~9JJX?Bb&XCp+h8L9u z-Q7*f!rLY3q1rG*7T#v0haP_DbvxZtzX$*WI4bN9#6heh2dTv%$^HM1QDqNhYsi6T z7rg-69l2{F<6*XyM#z!f4e5v3GK>(^-RO23j0_Sv;XAG+?MHGemH(TF-I43uK^1yE zn2U@H>FlOD{D3P4XIFiiE76dES6)@B(q5_Oz!3KUGlgJOlVfPVHD)N#+)>_D`%cUp zpDTsye9PlN8-c`ZVmw6~?QuQ~hUPr}hlksXYxlqN-P6r}odl&dxJnXXk0y z5uzFfucRKf%$_9=+X3a-^@PBw5KI)4+l`rZI-QJco~b2UeOa*uuKKA1_8*v;O4QIHl&>L90&_ zgX=#FwFUXdlQ6)`I%v%Ue3)iI*i?^vw3z?3_V#^k_iv0Gg$4Wo4R_PK`>}!}rWq>Q z?kD^Me{<3~gzF718BZTVa;~|z$^GqRIFljN_^UZhX-uyuIGm3dOm8m<{Zic)-H*fT z{`kG|)49&an5X+NRY>$3bqH!Hv^EWU_7#Lhhr6*3SM&s(=lXK10DeeyTCMU|N2HzQ zy9|D)H@e3^w|edR*^eEgaJk0?tvbzi{WQ3|pAk~W;pBR8!_4cA`q2N4#J3h~Fj?pK zcX!hn$U|(TbGoH5zLt4`hRLS8jCB_8tR`+YbWd<&*`p(wL$>w+W80Fms# zKu#P)g*KVaZjt1Y1@xFHyBjpxjW>6FT8O_9w=8DgfY@+?==CtzpdT;l?S_Kuo>aF7 zvq4W@@A2zBc^7zoy%`M0;~ved$Ky!SU1WrK$7GB(yhSXTucpDP%Bv`&$y+>6PI_c} zti1|(>yY^Ub6O0h7?+v`&7VkokS{)5K$!Xq44?V_tYDxc@5i=qBw9|R7ooyF zBDX&84c1gY-S-JOMzP#i0W4Yu&ZY}&F3>1Bc|U5Rh*xMy0Wl6W)oZP2syN6;%kkZq zWxl#6#QJ+|aOr;5>%qWLM?1pCX={ymtbZFqb+JVMgnbh7MJ~?UT>v9)fl^@b3T^>Y z=nBgw;Vp*8jqq_Wz8^yW^(WtgR-++5c)4>Pr`5Z4zRvygakKkTc&FUsR=6rjrrD#A zTg=h~_B!m(xNJUSa-(+knh{aSYN8X=mMYZJu6p)b*McYx-=9F91~>i5HH3~yVse;7I}>D#v2LxH%^XEsNQllmxIV4d@rb?@%_G%m=bzoSB{gvE0-$2sKeN z=MDd7NB*-bWEE0#YXz4BB!k+^$?Vn%aGlpp4*ZEMXfesklJM49uhvCHisQ2n>v4+X zlF#4|8r`NYnPP%%4Q{4)I-Z?37?c?>4g3JIw!{9A6F$Pna5iu=WwMdDQrnNmM+v7U z*!aYp*gHOJob>ALLqR|YmYFbqsTmGMDYS&P-oWIy5#Z?2FFpC?2U^cwr$+Y~ez_Z- zf*XvY;avq6v@ncFG3cw#V$dOy)qt=`?{oWysv90z6Vcjad*qRoVdjOiC@`{>W{QH# zfRk^gh@mW0O0bcFbGAyJk&?kzY*aQro?i%)tnnml6!j+}BY^&ieWlR{B0Fgy^ZF-b z!|Pi%8~?T7LS1lUG}%06SA>}@l-pGVA=+P-7-=6*cp_I&rkk2#KM?xcxoU**nJ-+C^h?qp3@`*^~WIo(=%y7txb>DHcYy0zTt){;{w^CYL6 zqHP{!<18G#qSN)?j7848*|G!RF>oeDpGr?}il==xFf9~|?^XqbB|wXSaBHV>blBQy zazMCItsGPFtFzm_n2oNlIeMB1 znaps{6fK4_rs$jMoRY(6??{eCgMrB?==zB6!6P#^w^ zE;BH>LkS#3!{9KBW(WBbuq6q@TZGPTCidvlG6lP8Asg7Uk=Lfz>_=ag|{ zljTl<=6RA;g@p9q-uf{ak5%i#;S7N@HF)EcHTPbEGKxU@OLhR*!9Q)|-<66EoPGJz zHvX*v##2%oE{Y1z$Hf;<+Zt??U*7T`+D5_c$#?R?e$bpwUXk?$yC2q70EX#^<09Pl%*yFr887cT)v788V_lg-b-cb!;4)4_Kq=uM80207(OnyCOsM?q3z$ z&imTmTo*~$*R$#U9YbbOnlZCSAa?!+H}xSTN6c`ifmiym_P+ABq@72ebpH-r;dH`tbcRHHQrhIE2&F2$i?2RDKg+0#i7jX2CCtpbkX)wz8 zL{OY7DRue+FRt@ANoiOFT6dFxNALp&o-ws=reDE!4>S1o2tbU#F}3McEJw4b2m|mY zQEPa-ype!A0r@W>`VHUX7ooYj9egCcK?vA%8$$|C_lM%BQwl)K-hzRQrEU$|JTl~E zULv0oV{zJ+5A5mqWa9$?m#?EC=T&Y8t;as#lCwpQ^!=^V-$HLSEHt`Ih~__$XZL%PUt`IkQG&-X-LdARU8;e&}RMGZZye5ZtuUg zB{HjTV@fv!=~Gl{)N8Uo(jeEf{w?@)gjO28Q)toV?2?|nS<{*;JWb4Ofi@^}1?O}a z*%*B_ge#hftddItTgbk+l&DAt$a-L%aRv+z#a9W1OD&APlL45(8S9N-n1o4rgx zn4G#c^e;zaL^GHZGN(u2d#$tNs0%+&n;xP-ZBn?b;7_4KE|j|;sT0k1@I4mk#P`HR zsThU>wRu<= z*CBG^20i{X82=hX?(b--JGrzDOt>-G+-Nlk9}%8dgyc>qj8-E^&wcJOX9!~yeq6v% zDR}v9v0g05q*^DXg!k15EKCNk5^~yZ2b>%@(rsbJu_9OKacfS+BMHwf*lRRYCL4x# zA)J+|COTjt=ylJ#^%L1|mG)Lrd`<{i#FEW?{L*@&qe6W@9Gru zn%K^c)ci$ogBMRGM}`u!HMBHea6CeCiaak|p)GjNg(((=hBG!JSD?IgRzEx`k8>wN z-SC#J2%3tX7sJLfHJrWvz>_({6)>eyrs^1DTAT@@_Uvm^!s=Lb1q!$iS?e}uDX7L{qL zWNYpA+O2vM9zm;3h&KurdB{aSxUBU1xukX|D^2WO5c^0UC3fxLuu`wDAU4j@T017T zv`P~D;xl$VJxcGy;@{(|z%o0?Pg`&%1`d#7KDXhJV_WhA;Wxy$_z-J%=Q7lw9uVG@ z1|*Q-BYC{Zm*a0m##NN8qTpl-8eN=Au$rA@IWq#jOHaVosf*e4X2g+v7h#UIPPbGg zS%dbpx!D*{FzX`T`oo@XXVl)mz{z0D?Va>{?pKqsM znNU31wl_H=P%yexsv<^5Yv_1NVoU#(a2>=6L3{F?LB8fi^Nowsv)1SAJxdN{a`AYs z!kG#(fpQLeiwO7aO$$7b7?Tl6UR7|`BKfk?B?1e85mEH5Y&r=3d!5fdc8fob4!WTu z^OfWui~il+FI*BX2Sh-JzSw!f?eqRuC`T`@6XjfaJ20s6hA;=MtG9QHZ^_&(Tlui6 zx=aHFM}J*%C|SpZvsA<~xx>g>oJlP!xLoZlQi`ya?XGKJ%MDWFx1yG9bWtc5z9&qi zg>3&Q$3+nXMvGVz{h;}|fgXd4kH2h^&1K6yA&tKAEE0OJS8wzho!+NT%eQ2h!P!7Z zXRM3nlI(Je^ z#4gl;z}O^pOZNbVSEJsLrVqQaXZ0k2JH*Lhee(Gn#V)ymI#=-s{hU?Kp;7XX)sYDo zU<9sakGb6N`pPk3F|or4a~$aeL2HPV>};~v3HCE^mp03g6Sm^|LYnSMtHhfwLV;L> zi#ZM^6Yoa`wgKFard=IdDrmjrS(sNGDA!b^JFrK^0o;r{O(| zu56unv8as(ld-dy-o3{7%n|W0V4AbYn3BWE7=uw_=}KN8O9&+U=60Tp+Z(t<^n40E90v)l zm7}dAHEnDV*Vf=?tm5iDJC8Qf;LP!!)1)6291Fk__3r8Q;<~ZfYF%8Me{M-GZh0jc z#dWWUw)dI4aZud#O=RC=Ig6q zgQnCy{jkm7;j7+aYB7e#omwjSnv(@(<8c;l*-(gPssMNin%>W3hg(v)-RRs-OeR*J zf>Asxv6>}+G3}DTu#VeDbU_Tqpc;x59Iegt{T1*G1ixAr!wy`8=v5dtOL9H@dKf+- z=R#C(GB}T)i@1zC-f8Fkg2f!Pq1VoROrJm(r28(T7aXWFp;;~5;>3idpkD=N=NC{i zq?^Qq^4KSy;RI$<5-edU{~X&T?qHBu(@6MI$g*u5q2R*FcJPUG>ighS&y(=Tb}UoA zsHURnJBoMDdtY|e$OEiA?%MVYsd;dFQn%y4z9?fkE-0>^^KJj9)oe8o^c;+?5PLSu zMz*Ocu&h|cV~Lncvt$pvBzi8Nim4z^!EK{aq{BjnJ`A^5c9-Gd(^64VS3lS3N27Cfv7CUz|lYHB2 z4ylHSpxwbg-45#M1|v&Tr39ZQb!hvbdLRJRO?vtw3{X^EsNIH=9IY#O7YmT3-@&BC_BppS#u{kg>-Nw*KQF5w90 zQ-$5^$)+9;Lc>U@FW>zVJ3kl2ks zOgSPxZH+MWKKCm=r8Ro61Vtk6)%{o|qmm~%Dbq=~ z#Y{;w>5muSLu2*m6x>~ZB>4|mYc%OPnj#jmZj^kj9iel1LBV0jBe0zu#v`V^A7E&} zD49PtDjNrcg_@xAYj!6w9qP&IM2xPH_9gh11Q;cDT+amaF)p#?2+M$23|lMr#Bv&) z`7ecrq{9f>Ftk@Ox`!zr@ua^4&}}x|ot-Q2<gp@heFw%-AjY)Su*f=jv}Qv?hD zr`2ihzuT%EZQl*ATxxCY4Tp>3>Q$EiJEy}WWg83%#Sda4IbU*Q_$O;@K~Bf-q!ST@ zKKM_pG79e4%qrP3KU-nh&BOrI%Bm$(?4=)4q@Z8T{w*LrnfhJ!^Q$hC-VIa~t z86(2x?f|Br7a1k{ZwA@1L}f<sV-<-;@hm56^o-dXIh3H)xOZ4T`_V|^<9YSt zDA87wBx7j-yKqH(N2?u34q)|Y*Ag&L^l63fsI>#79en$1A$G|rXh zB}xy1NO39efM;H1G*dbjb{=sqB3YJ-&v29fO%z20V zt6X)e5gU}_J{zUfMS>DIza`5GDWtxu6L3Qq9Psi(4(8ngb<%R3oTBkMLvUod9iO(^ zRU~1wyOK&*#F9(#R3=3#e^6vyid3FVk(88k{jNe%E)k-mqa*xNB4+-UMO)jklxN4x zb;>)Ql>2vMAK_4pZ(Z1wc=LISZy4C3w;qXf)yH5%cVJ-~XyrQj*_84ys6FC)K07MS zcJYOrEY-Y$saOUm*hX(}#MTTztyUErfTY{(X0>UN5%!H1aN^r=%qP_$2&g<2oSF9~ zr;Y$CRxpk^G`?`L?Lyyr=Nr*`!h1s~NX{`i(+69ReMh%3&L^wwDQzQT1ynh#rTth_Aq9QcX_!tYJ%@v9Pu!FGpujB|v8=2L`ShS>E5 z5hh3xUvN~^Zeh|*_VKq>2>f)>L?-Y_>*q4{*&PBow)3j`YSUfug2_0>x(+8CICL2} zN>yp+y{c1YJ1bgXEfQ2e_ze{zGmOM z*cOg>_;2jk8#)~tcMnr?4WoQY-Kr9HQgApl^3BD1qWN%O$J@S|BYu4kq9$;trGT7> z=T!s>%aj7LU`ZA=ld5cGQ6S=TBkaiAvX-oN`bGlo2_2lrvCZR7ul}ifzOMDG#{_cM zRXz}0WL?$k<@wq7a@A3Wd+E9=*UM|WXkC?poQZWcz8Sse8P6PXejn6HU)q*QAjd?# z?DdG9NO6l5w}CLF3u(Mp!t8G!+)I22Zp@~XX8~EkS}3)du_rr4)>We3t8t5cm`33oaWNQJ5It-6DucQCt^fGn1VYx?qB+SS}evx z*V4`)An42{yR^@vab=M;o0qKqSdqw7cXM&$FbNJbYCpK0GH?eu>{1bpzmXTb zV6en&oNA8xc4+i-WmN{^yFi+{V**w17_o(yk72-&#B zWwe)Rp>$3%cBLE4R+PO966?@AD$E5>n1*1f!_QvY@kTs_n3tsaloXH-&*Cp~UXUYG z--O}A{%kxV2x{e7C7OiV$WS$}_4F7Ql%Ri7W5SZe+m2gqY0Y{KuVj-<`tEhPMfqeW zx3VCp7;F&Fy?*b~UsyY{lsKbc>ORuM_}aWab|j!FL@VedT+QYmstFacsXMH5lg+>4i5Yzl|SN6DKM{|4=Ij-LwmLlIo0ld4nv#s3yN8FC|dqM>-1sI7=1h1fa4mPgD zP5!c3`?9(F1tlaEoNRk(DYan;gOk&IbF_J`8h5D6)aI{rG<+83mD_ELcMBD4b)s!_ zrbIcJdb!d(Ex%_kPvvpLFV~jc7HkF4u0lS)6qJh5Vpg?K&p!W5bV6VM5Qgzgk}4a;=a@B zwNF1YmxWgdkj0U&kl3#7G}@mIBZQWDqVu;jY95ig#-wU2#)F^yqqgo#^G~*Du#Gp( zRx_A>H8H`FStLqb6mk zSa}km{yV5`!M)qKpKzVA!2&dU9YmXSeQiGCN>ezsM~$k|DA6SKu8tIScx^4{$s6RC z{*btyVWnW0zMITcv8bu^L zF7Z^HJVNlYAT;g^OhvY7{bZNBomx{=$X>TeBh8d?sD$op(#LkxUMaL`K#1 zB7=n`M1S{yer0VfaCL_wqc$JrAcx0|ah#R9xV!mAz{Y(t&D)l&fcd7~ZoJb=z@ zs%m@a7A70VXo1A4fyNR0Lt%N%zmdg-O_?Zoq~KIX6H~8_BK=TBC|HOV#d>)>7IDA= z@V*)xxl1^B(RdH6kS$Qz209lWmHzB^D?c)l%)%gC1^+vEHLO-qs;2tBmIPftYtsK? z@D(~?rZ*qXf*)`zijL0bOuswrXRlx<3NEv+O8MC;I2(n`RxB%UlUP@AtrEfEV`|+V zu~DzxJgJw{mr-(;BzgBy>Kw)%F%$}zvtk6hT#d22#}*^T-5--Q^-RdbHl8PrJ|ja9 z2O{s7so68?i(wgy3$VY+g2VZPQ9AKWe>OA+7Y4y4HJC_Nl5jC^7S8!Hr}x3Tlw8(fX0w*6!x-4n(V=K=|lqo zWfIGq-QOXjN3|tZ(k~u(wmeW9Ho{p3 zwq({f1ZE6fhqo{gqr|s2j%}GM1$U0Nu8Ln0uf|L2`nMdW17d-RD zw^wn2Vum7=qlz&>doSaaOE9zut#1Fx)V&>$<5gad2~#`e1= zK4n#xh!Po3(V-3zHTEtL;O68}W&M;R(RsUEF$m|d*&|v1{=7D3z zPXp4#ME3g}fmreQL1O`SMUD!H)8~4UqtyO8?uYX3yRgAIMaK7n@GJZVD=Zr78(2^| z+hVS5+oE@}X|8R=8(^h=VY6A7j& z-WpAC4HO}@d1|&WuQK?}rKMv*O1-w?Y<5-&jir-5K5O&{dg&)NXyT{wsqG4Zj3* z(JPT$=5G;J^U0usxE3X1e5qteZa5cq#T)F3?;OFQekV6QbJAsPl`GzWD{k%Bke61u zu6WIN#l5SUe~xeVu^G-WVh#0~nPu*}+@<8X$7*_-IEV$xs=gm5Ft43+_`cCOJ+>R> z*fm(tFm+|S_`GdPYyC^HZPx7l)d;47W68VnEejy~w5Jf)2dUtmg}7sPVM!iwqqCne$`ZF1rmR2svXp%*gpFSSZsZ$U zTyW$c+GVQ8;%YFAc`H}viW;AKVV~2Wd^4Y}YYqLi&34$)@zJ@N!D5BqP4DgyAy9Dl zi*3oRBn#M1&gTNsSb=x6h)??uh=dAGxReu^*&1Y*Ot!Lp<*)UzB*$3^jb%O)9KWUR zSTy?)YRL7$y?j6&;4nskBO?Hy1^f$(PfP+7l=>FzDxMj`-r-1Y5b`xU10CW?VNj?Am)m zpzC=<=l_OB>y{m_11uPN8I3xKJMWQF!yL#b7TIgvKq<&@rrgH*j*wuZ6D*9v`5Uiq zfwn8z-sy#mIa`@H#={HF&*hvOENJW|kgeJujW;>V?v?Me5jt2*n&I8z=9L{{;Ly4a zPDZR}^DOHu8B^1ZUwUOceSi?e_`|*8|=~uASz0AsS5)ow(`lMsI?eHwo?F)#um$O`1Z3VMWEc6+yYpX1 zFjd*wF+sY&LoPLd4a30*0kH?Za8fEov!&w>*{I!k&(|L7h6$9k3pdU})GbEl3n#PU&Vs$VBs^n;E)HzA>eO9y!UpOn_heQ~+?ertoga@c zqyQ+Fk1qd2fg2n@9)}B)tgn_A(W6EqL|ruos^E6lhsLlhzM$aN2s1=!%ZeV{BctG8 z8eS3udUwRY8_o?nWU<-BIj!x)1iddz$nuY?ZIsDoqMFq4E5>t%D_;-fGoABxne}3+ zEOREFf{W3x7zzLThd56#qbay%n~eSiP*}yQNIRtdI73@SUVq*ZX1KK<6A>p<6i?*{ zVFiWuG=^xmp2QDeh>G6qU^+HNOSi-p&S`9NPGe&ye%iQ3|En)w>YK=Ew06AIORKD< zzUnXaUar_#vfAnbRr!(6rPC7@*WD}K)`jNum=-ZSTmMGL^czPf-obRX$E7O>AT+ry zB(ELOD&opX99f);4<88Y^zpV-cV|{fCD`|!^9YVj)4nRp4H^4q>r%h+xU;uJ8w{dL z5%X3Vhc#6ihBnp{*3ixX+xbOz$i5+=u_9WQt+av-QB$zxF|3rF*7@K*Aqn*Wz~4XUD>Lt0r_J~}?DpUD3CS_gTem7UX$?xe(7 zLdOD4=Z&VJJlYkfkulzVl<72qGl|vbn63u2!d<7oLmaC+~8)r?)VI?nO zpOlMvAA8sZTcMIThgI8&_ra~QRFc1E*7Wwwj#1x^kN-qjSfYiL$eXhEWZit{@1`rA zQk&|s+8Ki+$(^Q8t#{l!Y4z$yUGf9lEy7)CLXmH%W<(eBimMIG?`nj=npqAy!T4=y z@d>(>H6v>vc7Dj&6#g`0wk3>81(&u4-;(paX#6N^e8ab*`XNt7G0urCO`JUBSHUI%_-qh*nw5>zD3mHoTK4gw^-DD+n@k z2Mb(?<-&{G!6DK902&3#qIq&+nQ<=L!8`4V*NEg(j>p0))3b>5s@m%CtG$y+xO*Bz z;z(w|g!b|8do%7}I^Ef3GT$&)ccp{H}!4%!cFBMLcL;bQ4 zCar=K!QeRfV%8t=v5QeMWkW+ZP@AzKd9@G}9A=@0oeXJA3n3Cf^VuSfR^|gq3l}sSS@*8(LOrZdDGje3s}yOKrBZf1mD2JLx8?J8gvXUE zW*ZES(PArrt1FPzbSG*g4Do3aU0Itr8^;p?1zg#Y_2>-U&#Z2(;4zijKmh*25E@q5> zrBxRHzV-Rnb20z&lQ}^MQ;aSpMnr1rFF&E#5+f&W-6+nZ)W{w9j-ZwEA(KW=(zugW z67;e)F=p*lqsnCr*!>cV1ICRfdB@~|UPVkL%@%Ka&DPI7nR96aQXX3GR4PuB`6wE3 zMaFEx8l;GmQ|q&QmcDv)F*&K7GJ%lS3%?xB)NclD)!Q!d^u}h03#nOW;++ zRH!^zT(a+TN!+U_fOHfTege|>djRpIry$bz3nSgxU5w`vNH@C+uP#A4l6)Gm3vZ87 zWd&du*Y&{i=?LkV_y+F7;Rm+)T`n42gy=ZdCjHLE1r+UvAFAwl@Y$h2bS#-abD2AY?A`IF8b^dqI1Z-5Xl-PTL)e3T^w}V=ZI{$r*e) zbX)M|7QGAkgixC#dZX=EML3eG2qZ>)hQ(#4#&+%$TE+Y)8V;Xg<8wU^95;j@SXrOp zluy)fRYSvWf3e_uRy;-tE|KwuDKuio066G*zqq?!P#?C{3K((E&sCE%%36})9C=Qt z;eCVjr&!KZ)R8;Ir-xSzt5#prwuh-Bxsf9XudZ;KdMZhZ#v%x{PQGdJ2`#?V=i3}m zKqk7qhTgN2dRvI@hU(cygwsas3gwvSO!_`9*IkwGvZ63HkDg$!#zKK26&af zkV`{2^hN|Y+(PcEa-(-%euRN6!r}X%zOz+-w@F-3#lLp&uYFpn>y@p;x-8jSB*&=V zD4|#vOmk_=b3RUq0dKMhWvi>a3a-)Zl8!T?>t1uxsxVoW2{hzAtUGKMg5i}~S5ZN~ zd)z`X59tkLSJed}tnK7u&Tt`jZphn#W%6OUUDl2h?Op8C0F*#$zr!>eBAU1!k2R7E zW7{sA%rQXQFEfTSj>(lz2&T>T>Eg*#a@sOWJdcgDagQ&U+6_^R5s%~4f-?Qq6g}uf zqX2+xsb?GN{8RVhQ5IKrnf_Cz@XPuzc2RP9H(y(jqUfN+Aw!eq z(aZDbZNpc3amTRS>YSx8vNVN)E1)nu>-K%HQHL_veZ5Ja-qNQ%{ z3pv;8y0PNr%dnF@H$`do7!3gK zU*r-pKN=US3R0WWc+|-lTa0~dz0cV?z6=L_q~O4Q#$YF3iOq&46E~d6G92CB_HbPP z^12s^uA6Vde5;yXJ&I&o!9m0$WtpuFJWH4H1Iz;a8f`_!9Dv^xr&v431vxqC5}=#mhT17W2|t2S9*BIO2HCEoh#9ot*H_jWT_>{|{ z2@C@{{$|Z5)5(^B;8kTTZ5=oPfq8;Rk+jA@c|551#W;#DVZ2Va{^3Kb-D`Bpa$Xb? z2KOXSIus4@9eEWU-9ZODt13DkMR7en=pe0~jt?{3MVA=jpdG6J;POkJnkY1`YpdWeD2+^*)UlER zW6~h6lu4PN%;z!mVs64+Aj`uNfCC!f_gNA4guALzDq(H!ylh z!c`6z3C9q5`?nBo)h&db+M@9zOReQ8ux`tMX@p=eE(UZ;LY9D9-F^$WOF%l*>1bs+ zB%H=k*S*Or1J7DZd3#|B;#XoF)sIYZz*GL1UR`O$#26)+7v&ZHiM5HvD!g2fxpxP_ zE}LdCFfja(fEKa7l@$vBFO$`J$T@46D$`Dl3+2H7qEH~&fTh=)rCN>HJpTJ;r zG$FrF1(%zM?sYAsh!WAc`WS@4%R#rvYD+&IJ>k`K6b|;;B6D ze^)9@uGw`O%&mpbqrrYP{632YOKhSnS7Ec^N)_f}ke&+DW~{=vI%9D)q|j2z$k##w zvXBx|a7kUXrV>(UNmaD24pMMQRb=(!`Zx%+T9{3ND6}QAJT0R?jE7hDTugr`xMgZ& zE&b7M{#N?qus`?}0hGy*3@a0OjF+576Dheg$L_v$H>6)u)2+pH3;*4Y8b@{fh4M-T z7rfOFLx0RFiL@6Ejk=hsV?ag9Ho);6QzU;qYT?w5r=R;@rz4gfG5J}?;q)<07F7`u zsUSQ5AtW;#B~PZoHS`;}CY(&~ajDkCgQ@cQ0zV|3AhMz z@E13IJ_2&pAF+dDl#mDz6F~`TKwXXKS*UC-%bykX@$Xi5Y=>9+sC6M_BHUGC-jYXi zj<{duYV~Yc2>`B*PAk6f9@wTkh8NnU7%7|^vcbC(9LMsFTkg^h2Qfz@1j>G+;HfXz znX+?!KfylOLaJy)2>&>;xHs@?H7H0dIOUnMDcnUEw&{mStCNXY^S&Ofe%~xk=kXhg3=!-;L|R>NcZDel z#Ml04?BXNX2|U$&1=A4u?%66F9>V#;OjF_gh(*u^Kzh(j+vwlI~5~T*C$lEr2t(kIH`{32(pbmsQ{&f$=;din#bsj zC7POfj2~EIn7d`Fy||4?mRhyT7{bk)FvT!Lo2=YlB*@0ubA&15SH~6VN5M&VHR;X^ zfhK!Tb(^pX6I$%Fk%IGc*O^c9R+mh zq^~(tX#R15Tp|(ha>XgV$DI(7A*Qd+TTLWqG%=wJs|B$Z)1yheEu6ZSp=F`2L_amt zr@ zRSqi$mBvyd4b?oNb}-VkRgRJ7m5!)Z{OfeTTqJnTFD1l9L2>&w`zP2qk4pc8_E^>> z!Ou7^3Qon6577_K$d0apIlLSOA3+}>@P%8sWQ91j+BTKHR%?IbNSRk58}Guu*>7antw9%!M^b&J(iFQ_Sx!rk6I$J%*yH#+@jNO%@k#i-c6ODHBX*RE(E?cx4 zE0$E2a!)9-iKA1_L|R&9v>PjoP6byABeY&M;Ddcb(W)Y}ct}*CdQ_#Q z$D#^5mEG#{>))xN*G{4e+$v|m@(PPoE8bZ<9IYp0k~hv(I9Sn1M_%<9`GP};q#k6( z!2Im0pR9G1$ZYz2A}k0mmZt0-%zDNB-TTfLKdw{_O|1<*@9(aBk1!?rI8JU>qm`0u51 z5ZEqATn^eNK6jU4YX!%^a=4pWl~?=KZ0$=z4tJMfYX!HAyUVb(n`}OJmtkuKw~V{X zu(g6)#@%JuTEVU0?slu*T${P!(`Y^#0*5IQP=jr>i`cGIx7|Al&S~5;gaP6^ zR^2wj%|ee`mPMVkFOn&%HYTHxKIgVbn4V+Uywe^XpAqPV!8#G2$7I|TK_u#^kL>Lo z&4m#8vL6$A1-DA}fiw}Yqyo6W4_cjl>@1F$c3596D7d(GSf&<~)<1}8g)A2tui(~c zJwv%<4P?@f$GL0+&hq*b`)@Layb&b2_Pa5{=Jb~AXVpHRg7XzlGGtgrF_@Zqs+FdS z!6sWoKYVW2*4w-1r}8*l=4=v=s8?d`;B0HF9B11r zgjlV3B}>?`fHe>my6h)pLHeEYHA%QVwEY=>oVMGqy;?xMP5^IP~_}W*#^jspKrLp%vfX6hsKXBjT6{txsf2nxR&>{ zI8WBRnn(%bXv^m}ge7zYttkmomg%Cfn-|g9n^+emVA~(rjK0(B_As$^pUR__(I%`k z-)C1;Udl1s8pk!)QfGU^*GWudM}UQBle-9_?63FYB8Y_VMS2&*fu$e?34gLZce0* z&YQ6Q_aL*#-dM+7Y zq1N5hbgF06!?aY|EZf(}(n@J{gdGiAC3#r+yYkt}$tEF8$ce6|N^J#8tZh{*6oB)q z2+*1%!(-7=C_L)erRWAVsFFexEwb&h%iAtb;YihdP&e;`MWfN|o#;VzAQ!Gh*6tK` zOhMZ@h>Jf|ki1)aQqF_gRtrpWPRl}7E-W(SFo zf-53PPqHCgwnJvJLo6%GsmOT31JLDAqrQ`7<^gV>8I<1q#rDeb%3X%jlLmOU{XUE36xzl)s`ewCvTo zXkBDlIk8$-k1F)Ps;<^=$>H6p>@8odt4N`;c37>oRnBVdl}4^sy%Z{6)2bX_A)yx6 zx)B(;)~&@!RIun8KjP(EgueQ`DT8tZ5GSS4XsD-r?C$9K{2qwuw7+a~K0FG+NpJGr ze8GnmVqMd_3NG+3Y1IQ8e4(&7PT1)%p9ecD;_i5#dDZ%{@uPxkeGDvZ2udVzYB zKjnS=xl}nRxLh5@$_XLH*!{8^FHWDkv&oi-0l&qf!2@0Ian=4(^cS}`Mt%r)(Bhk{ z^O!)Vz^q_AkWFx_j3a?W?XBIyc|3SqrgNVg11g0N-H#@H>Yk@ah=#^@D^`J zDPS2trTM_9RbZ_u!Uqa2^B87vK3F%|$XzaHYZ5MiL5`ywyn=PhtY8;BCjaJCNV$GJ z1cTUeI@QEWQH!M0wOo<#fF;QQC;iylRCOTiBVVK`pCGw{TbuH6lG`Fzitw2DdXKXjjqu({e2HDqC!pfv@rRFZ zPR>8ufoLzc7Q>$#H|Y3@DO|FlE7A_PdTDqP9kH41NU7jJlS0im`QOwZ!|Aj!h_mTr zO9!Ih5Ma@mnEU8zQzyE>nAA>8v4Sb6!b)I6=^xGqv(Y6~CZhg`SoEF#FK)E1ux*q# zjMSx{M0xw9ZBw+YJ=qzYZATW$j`d>|ZPJe|o1319_y!Vu127_$}$6%~?# zxRhlSn$I|kFBgGio*DZjzJb-F-y~Iyf_pk!F+VA^r*oCClY-0Ps>H$F0zB5}tjS`l zR?MPTe9-D;D<;mb+lsmRA{c7uwUZSy^CB3XuXoEwwd!w~Cq+b9u*71SAtKo_khNN- z7fWGp1y^XXOgn-}o-S{_E#qkyH-09jwsYlAXX<@s>a`cq$Tv)Jh3dTG3up#cBo$|g z1ytTO+ak>_CHX|Po`TD>vr2M^Ld!F=$})(dF2~Gz8iTB_^_HH>DSF2aX`raqhj(2n z+59U`poB-C_D6TVjLh zgReigH~Ac1pn`*JuGZmWjabFKG$uCldK96|rQoX1oC$+a{)`5vQ!iyswtx6{pI zweCk;Vs<mB_WkC0du-CLyO+yy!W_M%jU=f z;z%XNS{Kws`z!>det6!_qp6x${&@!QZa)Av2)BIPcM^0=$9S#lmn3*=l2yTp&UiXq z6h>*OBJlUl2v9F^pL4>8)H$_{V2+Odq(1Zq`T)q%i zd?@S9c-oNY(Hv#1h^N`FgLcnECB(17dcIJ2nAf?LVgF^Aw*~WgG5?&XUkmMcR(J<| zm1&W6vZm!0hTWDx0$lV5>wKoC`Q>r=+9mCC1<51`eTSU)m94s97S4!e;$;N z)Dn-wf6hswPDaK{D(BBX>R~ffa%9jU^Po@O2_FSl_MneD;gjHc8(nGSXCDqS?pWlX z5h`;yNWtAKIU`i&aFBvyDi%ATvxI70PZS2r4hkiY?&OG_Ldy`otfP6Wj@~G=yaPA| zHf7(*$(tt#($bSR?+P0Vyz#bMq0jE*O$7`7s*^W0Y`j@Jaj3afj-gQX3p3TcIO5{V zDJmvqud!@V}|y{ROL8T=&_uW4KvjVr^mw&qQ!Tw5lV3xA%0n#DlXDxaI} z0XrzDUDoC#;@MJodhw-q@-dqNjZSY8oJ=2ro9TEcDwGC~E#ujUg(DnZ%eJ>paZSv( zfnwz5$zUP^{JFXmu`4jT0)s#wx{ITx;Nwc8@tBjgM5BWkBN!&a*$Up&DKAHqV5o>u zpx_E}=n6zOEN!mv^mIS`6#{y$Vdo5#$E+jXBmDJV0`Aq9#`EpM}rhT1-@gq ztL;Py?%1T+s~jxXAUk@y8n=^=+$yO-{_<0!d*YXIKk(FtTyLj0THECpddV=9G${jY zX}meTXl(rDC#d()rTp~TD2^TJ`2D=i!w0r6SQBGWfVA$Ub zgE(x3#)aC+b7Q4ezc>UZ-J>#!+@yD`&K9kDb}e%DU~LhP#ylstOG2K4p6d3ZN5kcT z_SlId*6BT>MsRx1QNd;HP1~Mh6I+Z}VoPp33axt0<4&*sse4X;3%8VfoKX=cuWcm@ zQBP8M@(_e#-w1ziN%&i*eDkK$-r`+tSKW16E~oMK!?^PJ?0y3A$Bco3I4X=D`ZvF! zXklHU^wpb>SB_f2x8fvo5grsk4=R&@`od0qmnJ8AND-{ZqRa z1ckhjvA(MQcvh@@flK!7G@m9F|F*Id@ZXoua z3E048nUN05SrF@)AQfDG@XYhS-Jzd+_O#JuacQ6J%yveR%UjrnVsGgqc^JKFb)=`CSaN`#r2kq8X0Qx~(<|Ztn{Zu-H?1+^G!*x@DK89SVn84|v0l1e_lYlC*Ye&Blriy8~?4 zSvwArNUNlFXlmi)NIkssq9pOO>*ypXwTjWolml)j#f^|0K>>lbo#xfdMuMMU% zBtICq%wVoZpLVlZ@78;tI;|dhD)U4~;9UMqLWZsay~WoSbS=#W#)$+_dEAwI@S5ZM z7`0WZ5j|ar1>;tdZ50__3>ZPU_+3^d8&4z)3)fr5Z5BCY=F$?FS9T6a3JuM3#5Z+6KztiBpFz6DBCXQ5g1HO#vIO{H<_oa= z<$dg7SxU&SG00Qo7dO~H%*N1~PUMo}mLb1IpxfxI6TV}jn0m<44mP^Pd+TZk1s78i zE49Pt_S3aPo*57uwz~@#F{l`O0E4VjjK{?r;1^ZhOa~)o5HVs5?ZesVE4`y)8o^W* zqTrS*h16Q@kv6V_j9S^M$kRd4D4PLSiWkc>w9|hyj02TQg|<>Qsbi&4g!p2Q+r5>{ zYf}@RBgcJ5YCV-&>0uiM@pZ_gbv9!3d%Yfp4P2j(Cg<>U7J?&dRkTtSx&FX0PC)eS7Tv)%e8IWW7b~D(ML?j6sCAhL`*8eHrd?UYrBQrQXGB2C$MZJA|w$6MD&34&LqxCYjyt&mgHQ`7fgMB<@P8w-4hr(s0 zeS0@1wd``|&45St#^t>QzY6Pi9i@xO^VJKb)H}!j0DNb=B8r??)kcTDtqZ^={v>Vw zkRHegA%fxkAVgAyfpf48Ty4ARx?tFzUH4~N<~VmuY2zbMF+eza4e7C^?4Dhn%Xsp9 z+&qk^yvgx{h`;$Flg#j@W)sq@uk1|E%ENA~B6#^zXu`%~BP#|;fA!|W8R~aKfmCf? zN{3b6gNcNikmUma?o8)OkuW1N+XXcVaRssZx4psm*PfM%PyzQ`)BDL{G!`LY@E$=e z%rgwXDmVlJHa^)Q#H6hq)=O=bVJ4nj zG>+m?>G)--Y%pPIp?67VF2;8~EMJ^LvmJC$9NBqf?n05v>Egz#P2w)9@Q*uhrb>W; z12Xe4V0DpF2QIP9m~|3c{ic(L{%kmxQ)gTU1mi*LJ~8#9a~w%N_KA@m`rndU5)K(c z{F4i8A(h`fayJnE%>5DLu`L8~gJvcCJ@kJKi6vDG*~mzuf{%oaaIKoVMQ?_y(VF1! zTaFK@>?%zZCaA*U(??{#RQJ4)$s^Kmb}Tc_`yPc@_ICYmcF?wV;D3c{scUaz@ZQqD z-zvCj&HrT&?Rl3e`feWp$X)TjJD`8>R^CNW6wC!`1qtNoH($Wo6$; z0W^f*TvFE%C=D#xYFKC+(L}fiqE=z3bygNTcpQex$Z4!zgD<2rXZAmbkm4H!_bgIc z%@F&wg_OQ~XA1o}q;xM9(|Mwlu3!}vrjj*#pCU~0D(;XZ5+R-MDoI)~8RGkr6T#zR z&1LvLXKBKkq;q*5rXNRl4&#R>GJO!seBxi8#Px20dLFJ%$@mL%eMuep6s}LM9=vQg z1-bPko-a8KJdWq%Q)u|9QR{?pwN~U&75@|ae4lLX>Z+<~@1$0ww8KYj#beB{&trjH z?~r#H5ze%%Im0;$_nAyTO_~*2B-2k5W(60?^wWe{!Rb#=HZ%=&PNttG%nFX}%>rgr zfh2OrLkVrb=X;AkZVzk?ZIH!!I#Fi8NJT8y4NFkssQMJlka8)B6+GpXOL6BvD#=(e z<-$*Gm2z<<87rb(v{i<3`E=3rUH`h5koFlm<5l$)Vx|%{f+BGFjmiX>&>xMq`hQpbynAU;|x=gV3vS~*P z8S*>@_AZ=_rb9{8O!EN{5uJ%c7S^ZI%ZytupBZ&QbUS6AFMHUUsW~Y}Qwkzhp)E)6 zYP|Lpu7ZnZA&H3?5+M8IEQoHLGxPDe;&JGX2TX5O*W~0*xXi~S5xhF-C_dy8EVm)j zI3gu?%cg+p#6<<}JU!)QE? zLfYOa6`ap)_;H~>_h{Z+Kwaj!if#%mPQ9HKTQwPEJ1(2)XI^^sI9R zL1V`|%z#2c^z1BO9qPy+uy(vUNUQAC!8bhXId_&Bzx8jY_oxwaCC4jm=hf5);Z?Sb zG4Fesw@W+ZQ`qxhL+|WFVr@9M=R76SL*ds@cKn?x3P!^*D*L)R6Ty@asza)MfOZMchk<3 zyPacy#0Ji72u7LsnXKm00#rY`40&R@LRs>a$AKQ4iP1|nOk(FSbmipDYImU?dqKL_b#lV9*3C%Co*&a}bg~4wKb~_Y z6z6?0Qn+`wQ+{+F+)deB=I!hOHnxZcyc<5~-z`uiIGoLa`I-j;GRnM7ne-}Wa1S3E;%wTfHm?Y!&$4|q~D zyNy(KGNwmdCDjag~9p11g1U9j^j1npjDMn1m>}@`6(TQczH?uJV;~VUxYi z`*mb?AK@QW%8dj5W4Ti1+m^H)f0R}kO8NA-)9{q?p=YvN=J4HgEM*J9R#z@ZVK8T5 z!Z(^G?J|Dm?03BnI{cSnTiA|kc80tgzlDOb@=EMCXxkK7Fis{5XEZcAy^Hgcdi%Ir zCa)p#tPYR)B4<915lS8k^@AM)k}c;n;w$&soLgPpPX-VR5|G6=cZOWNN{Hps*H_i` za_TEp_lhws2cXi{FQbM!?@^Dque`**vU{BM%adSTJs$l-G=L={ajL1??^l!FB{-Sx zMB`pmxF+64_};@0tw<^US1U1-CRgEyXavnkaI} zM!VVQl+O*s))WI?h30sM_H*Gm(zMTt=ZD$L;rVlWJv=YTZz)`u>QL89azDHxsg=sR zm9i-7rL;3ye3v1MhsR{hdZO6ymdiFI4N5$8gRl&I|<%+u-l%ekYb?;{PFTsN?rSpQ{8fAVkMrV*D?@|AKgUsou^^i zE#1N^S%|KdK(vC3`p!V~em0^%x1R~oO_b|gf?@hS1GVz4k4&edmf>_fy+$lG6Sr}! zDmX@ibJt-m#YhvOy|NtbPCPP)mq5GU-)Qnx3?G*VcG|95iqK!*{!JqQ^zxMKxH-7d z8Pb|+={n6MWb<@=BI1dx-P1SV@pUbnMy`dkV&kBZZQ-Og4(c@P)B1(Cb5N`JN7?oC zA9&^C@&C`>yEiA2BYU7rXHnIsjBoSgJ;*;*lF7!Wh#}KN~M01dH{%C!DBZtyckK6;igw{NgveIqZ88A zHuWQVcA^oA3;BXJSvLP19O6=ZjRZ-@1aw4QLe@gHDS)IOWk==d2Iq9<&z+G2#yr%%cFn5GcP zm?e6WTnkBmDbf>CQK~2Xn4>3B4zXU7PazrT30_?NzzKvq}LQIMoL6$ECV%!>2 z+@uD=W(YWQ$v_y%G?WEqP&{Rt@o_~mt^Y}7YVXaMOtsF;H1$Rt3w36Qs1eTW2>w^% z%;-{r)}zi0YvnjIX-ZK=is1N z*9}#ei!P(dISx8JU}3zbA7X#7*h$xuseI6n+Xqm`rij@6MbxMHLh6HR`6B9bXrVoP zhuvy+&(|I94%ywCms91~1CKWH5rk+XcMxopEe{zzfRuV5#=r;YISp3#-)vbva8*;oT zA-7+|Ku%uBK*BKC3-QjS^!Y4k`(1(Yu+~h8t5h3=D&FA4sIunL#5MMn6E6fOsX&3X zrZQw}X57A5bFSfnNM2F|2ESsL$n<}^oo)n)-1>*c2RtX2y7u9{u0qgD z4b~jsv;hN)5KRE2?mw+&*Z0%a-HZy2&LfLuuwFi|V6#hVlx+q-PM6) z(iQ~yttdo>h#1)b2@5|8OWHI~F!mtgsD+x9Fvv(IT?IAL`hQv3dB;nzJ#>0()ew*;r+fIkM(#tg^@)x#%pc zvdA2HbLLiAXpg+Ps?72j+OsJy8)+WBkXfR+zld3$sHRtBbA0rU%uTPz=J;%2ZhD1A z$D1o!IV?FE!SRKs?4v7j}K&kLL@g2^)Am-$TpF~gSz@Dq-> z5O@1*=5)Gi{`J0BWEP)!?jvbm*DyyBq?^^*1lNA8X+U^nWfZ)xdegAA3D#PUW!OYB zscUfkqZyDEYpsG{2BR3(Tm``l=nNkRmsqBm_9mhIw&F`JF-ijV9D9^#vet|!8@K@0 zT%pZgd>(f@X2#0RvCwAojJ1|AR$<)*Hfv$6T<437RwqHdxw6)Zjn>>+xp@~Et+~0f z){2eR+*-vz6c}wa=4!uVT?D^D464cGA13gdR0a}$DV+R60l$$lkmSdl$^Sr}{4L=( ztL3-!FlJyO68t8F%P;kIX0gy<%~{%6o`JE}vi(R|m{v^=gqn;7mrh=t-4tCQ=madH zaJUZY*aI0d!ulfITE4uGgFP^Cwb%7`?}HQZk@dW9RNb@DF-vqJzwlm?<-zQ-Rhyt-8B zgRVyR>uiN%ilV!x7dR1J_*>ZgIc)s>7uMV_^}k-x`R#hSSkG_ZLMKqs`Qj^TBs~nU zST6P%)f{@9yB1lIFro~KPunRu8>t+Ml$UD_y>=bOl%e?Wv>g+M+H}~Bi%7~8SZuDr zh8paMWU+ZOZQWwI&n?!{GA$z;oY0CRn?uDl+QQaMTw}hVHJAt!L1&k0I~H`)UeLAx zFF!#yoCF=FcgZv4wlC<0y`XJ@OMZebI+IW!=v{AoX8U0;Xj}MBaRh)9u~7to=$&IF z0>J;3L;!%^;q_<)fd9*h0FLAcKtk_0smW21n$+^tq+W8kV*6@xRIVmRikjH&&zUS} z@&&Cy5gXWJz2wBj_62=tFKFAHtm0f29)d8k$H+C8CGILT%4Ho(_EM1i`RtwetjPbJ1U=>Zj zq48}0ASVL2$mid+veKWqWrXESRw575wW%`yp?;;;S&gk2qGl_bqlCm|WglWXyf>;Lk zOCoUcT^xMnUQ`&JFu_0Nb={bQn--w%R4_{)B? zR{LxyE@_2)qaks0 z$nJb(e>e#KJGdOh!%??&4zK<>zcE~hVDN~rH2S=^A;Yy?>^)AuzxzPQyi4mj z9e21^lKd2Z9Q1A9v7trW@Cqux9*CbWQcsDzr}rYl!!Tg|>ZQ6wxz_CcV8RLOE!B-c zx;Gae48TW8gw}yN@~VjSUd`afdjzy>rugI&YmPn(F|C7+l)Giw~>D~_bpsGxQkId1`;77Nem+TH5o}5-;Vg}e8K+8HCHqC+My>bZ{5eF z?nh6%nBXhpzak$a&LC9cW2BpKsgsdih^kV_hZ+Y$KVz*ybrUZF53~@;X}m`SWFpoa zv45_t^zY~pWZhKfNUg(RttDRlmixJpz)(R78X;&t2-j6mqd#u{4`WW+vrm5yT3XD$W*Czy6QOA zRO?7z(?ea+Nb{ktXr%ce&T2+F0h?Dc)bjP$MPp54Lq2{s#doX~yG|}Zsc5wStahC{ zShZJUm}0Cd8md37VHS*41%^fHf51-52`uBep6*tX(jdhGE7TM(w~)eqgrd&%eIv^V-m~V&Q^HRgvfRc&ykT)UvI!ek%62&KEc}!OH2~1;hgf~hrGDpMn}ek zED*>5v7wtjU#W2B3%izpN^Tmt0h^0z&mLOCxpk;hypH&WPZGZ z#(?V0>~{M6uo0aqXb#$dD$H&&pR*QuKj4ivuC?$vI{`@v@vH*88i-DlCsH9VJBQRP z`D6`OXF!%=4tDr3yAw}ivV}JlGJc&7A)~=kvZN}W_SW!9MK75szW;g;N6Ht$99|y; zL*;p3XoJ>(uM!KqnbS$?3Km?@{xj(wKgB;71;g&BHyE9_E~0KQxaj|$wkgyy;`oR; zopt)%_>_c~4n@4&K`$=Q(KsE{qtV&qj4XlTkH3#6-BEXZHdY%dD8g=&m#xU0y@E%7 znJ<*JN+W1giaESj3DTG}0X-SBJ*xTnyx}{pY$}Du`2@yaDy1w>ABgGV@V!l@8sMyu?i3CZ4i=csAl=1j39Xjh3&FlGQD)68 zzwM_Ph+5}s9AD@kpIS%fmjQoLH<+&GcuaixjE~I1&%)>8?1!(M2JE#mTyc`>$(mVb zM*ZO^zW59e?My~zT^svhrS`qfW0hO<77QUxgz%5q(+0>d_`cJezT6IjPX7Niy#qzw z$b$>I&U(aEo=K31hfXIXb_N1;mUx(Aq6tz1-0_Mh=vY109I1{;t0`pwChm{Ehr@ukT}czTL3E#5ZfU0=)~#92b@vWD;w@@k^9 zP-7b0%x}qL4y!mAs`nrRFizAN7%MbFnBi}Ut>5!MLDC6X=WmBBmfsez&y1~N<)*e)B8-+`ydn|6Z8N}s`RiAjr+#hWXAT~T?`dKLt>+oGPPJc9~A_vB&3Fe+P9@32ndGRAAC+x~o7z~!jh>yF6s;B4Z?sNk|i z-}Z%>NB@58-d}5fefJ*c;`xFME{=7|HLf54V8UKqQx%qHGPd~-Pw?VQjwVQ&`v`OC zkk2+~v3taT-^p|D7c#q`zfFHn*z?{OsK7ntW(99hBZ8t&7)a`HqXZItsKFb6SrSKw zdTBUEPy3oBOg#x9c**a!O4!gaZ~;$lKV+(3km?e3vS_>(7c_BXg-*(9#DdZ!UYN{a zun>ko;x=gic$y}W!PAsX7a~b5(KNLM@{On)_Xn3m-_Bx(H}6EiJifl4-8{ns>XF-P zcVuCRdv?8EuhHYL-Gw!Hq^$V0J5o`q2YSzHsVh;C2vH3gwsR=uos)1pJuG}afxv1G z%D;qbs$d*pP9jqWiD>U&6XBY0HNQ?4R4lq)6D0w;EN@}cU~dW+>5z|D&`thw^)8P# z#NWI*P*whz`Xu?1(O~nQW7PFqE1JZk&ll`L06vlirS|<;6%~7v7lo7-37b*Yn<>Vl zSF>AOyKH1xvA%&zf+>M-27g5yRPus%-qI8#OcW6Ep7>$`YYt6|=44={i!4iTZ(og;xCpZQk*YQ% zLsqC+l1(~Z>$BYV0_)=%V$y?EtSTJwS*MdpE<4X_o4U8;U zNW{c|g|n;1fVl-%W5D7mhl(tiFA%G;U^<@e<{QWsOoI&wB?>9^p z+|V#XMc(z}xM8Q@CVEnD?$=E<+?DZWT(?tkBgSj{byF30WxN*G?R4CP@$hgzJb78h z!^1eVJAIdHn#ObHF^hEVO_N5tW~M1WQhO{N@hp&cv$@}_Si|e83vb5F>NUJs+izB^ z;TgtjakF|2ZyfG7D%Nn7@y21?aM$o$#_Riyio>f6ifQNg5{~tKP1F!jBu>9pW_$vQFa&Z^f5qiS7 z&9lv4&e5xcX^%GoehsKL&JwdT#%V?^>%CA+Ez7)+tUty{sb`s+legge`GKj~i(MU< z-g`tUT6dZid0Nzb#Z)d~?&3?K3$Ho{K0&Hj{f^Po=s-l*T(6Rc>{pi(@jiM(lPz&U z*vjt-hJ96WwvX>&&nzu2i*G(l&O{&&GYNuCz$}7n6h%@m>7+O2#?lCkURWYOJ#Ra^ zhLx$~AN*SrlnTRkwM}b#lL4>(44A`dlugCI5M=lD8rB{LGrPvWlonYRlAx!#4PK~s zx-YNQ$R>#EtGJJ!(BEpFA9vTT^7Vr7>taq`P(oxB$u*korm|n?>Lg#9F_Dw!_>|6? zuA!KIc`LZpnGNg@Zay+)9g z5|2{qOO8F((%f#0e8PT_#GyfHUWWnSjp~c{OW~WX3SM8{*M7{9eav0cnNzhqHYnbY z$Tzx2x9EJ|k~mU9(l_HVmGuSWlw9Iyrdyw%XGbAv$0zteVP5ck=`wdwFd6b_9KEi4;@btX$WBi>GT3LT(Qh7iF? zqb+*z*j8%)+FX6c{dtYPurFdLgffcq`MJ1IrDk-aMZU-xGHWw_=SdC_^N%xF&Kf~6 zR3jW;J_8Oz1V5jsF$;2}u$EG5K)S`v?YAG#m_X&#F*e4?${WhlnGL{uQ^XIoYXQw4 z)IC`!>tP!4+0TnSM#b7U)y{745%9w`^xnL0^~tw>Nvk>(XNWFPR0(AJOq?e~08clH zYeP@=9<|==e=rp1Otiq)xr!({K!2-i(ps=j-@WHvTz-^rji-)YXWS{NFvXD7U8>j-dhQSK&_73P(Xv*M> zx^`;WLlEyX2nCJ*?V4zZAPRUrFy%Ra-sk5V(gp7gHA(wZ1Rd9XM@)bnS!%9C*h4rC zUu)I!@Tx@+il3WjH`@D|h8Zf?=@=Qn$;8VWR2fkU zxa%)A9J#|n^n7&Yi9+Xdug>Jm>vZSN5%hWaP%F&K&mz?-=H{=sb7#mDOIF19mmq5D zp9+OB3#s4GAbuWDBiynx%eOoJbl9BUJ2Ifa{?-0nrU}ch7baMV2dl8nL}B&XkqL)G zfP<`9JgJ)n?dP2wGjtcmvJ&8HCeygAnjQ=}d*V$oG#O(wxzSrZ~p@YAW&lJAdJCE%#-yXTns?Vd5pG0u@-0Ur;sPpA;hPz=+`4(hn zHLQlBv+|Dn1O_+`7S#Cte1g+mD#W;o42d~T>#MMW*h=q3Q-I zq4?$i^N)#txTZB4=nCg)7+*36?3~+ut!IZVD0{ zvc6o~n{gRX^2SgHS6{H^pzR$kFa)HEX(CG^=W=S$DJPE5CH{%w4u(cQMWBwDYv|RX z2TENq@@2-|IV5_|Onjig)OSSWU8Kg?F-&g9tfD06U7sOogu^q7;;z5W^Yzc9V_+5x z4t|acz+c$R`VskdctS|J8N5BC?^)ai?SY-KAnh*I6u!29BDVN)L(?%_cmTz05}zOZ zJPXA0-Hqyb>0|a)PvXcOSvyEnDN==CujDj(TpYtOJN-6!fkagCngKvrD5&1d$) zmK0Ml?8`_TI=XyzbDOec@{d^ghTQZ%r%e0ZLuOv( z=fn9KOy?DY&Qp7{#%(tSE&cXn<_E0!%+ZIsa;==q|)i#Geyx&={Lt%2%Z* zohC!QCuFeKLnEpI2Zw6>UR={)YRyTgB+oQ(BGw5A!mpDy;_fb&?8fYn-=wyoiGAf| zf}Dth>3xoZsI&eU;==HL%KF~_pJh*opgdUY{yCVOJY~^u)8-q(5QC|!79vUQg=-96 z#m(!Ht)0+ED}gei%{v4*&V;39R-9W8Jy3X&GFARS|00B=LkRl2MQe_(Q1c;BvfP}^ zei;!o>?xa6j}OqtEK|YIculJ+2@N4ym{)_TxmR#co-&?#W}OI+`oEa(jCbgx?Ai8+ z+G!YSNA5&%-lkH;#sHQJ56dL)7%wx^Gd`&@iM7GJ%T?~DaD;+5J5>iAra9!^V=$rZ zIbQ)Er)5iFmtimR)Tt<1;O^3Bn8xB~xe$mG59e@hLdQ{M=1khMZ?e^oGdIC!k>4TK zeii@^HVm=}5w5`CuO)#H&mKWPxFiJu*vr|P>QW!Q>^=_6WQB1w3sFk~(dz!HJ7k5% zWcdHw$E_m1Fjcg|r6P8Tnk7YmJtuY>DNFJOT;AI}21+xE^MpCSve#-c6LaH?EN4nJ zlWO`BX>+LXS)VGG_8^$QeBu;I==vBMh;exbXqk)xCnwL^!+#KgI^TfgZiH&%UxPSd zxdtbPa06Or3CBDJH0)0!5o}XIsVv&PU(p?bu>7@Yd+waw5Re)gS}HK}FYGNW!bVc& zpobSNZ+BUWL@A_N-^@5LWJ&N1N@Tev6oaD!Ao_$D>dN5l z>&JW!vL7nl;I-KNdc@zodA5*)moKAc7wzX|bU5|)n-biCS8go_U{#x{sgQc~bXo68 zU$s;qXd|jZlD(M~ozQ+~=zIhqKU*?-?gjRp4MalIE;C0jTgD;t+TKg^S0*J+U=}-u zpP=jsPq_{1RP3%vn{jCOjv4V?Hu!jSM?|Ytt`|9WFo|piDe{A+gI}3xb(QuXk*1!V zbLa_Fm#BQxEq9=VdC-3JQOt}0NF@At#n#S}R0kqmfeWut%_uvFMMPsU5dv*8oQ_2j zlr9Qo>LJCF*WzCtk=5g(t8A)Nu`mcgX>+YlP!V^>+T2Tq;6=tmFstsVPHLx^c-zlZ z(F+D7wad@u?3)Xv;IIC%GixNQ1J9RG=D==_5fcw$eIbbnIR)?74huAhXIx|CjVC0O zOVHPJfR(L1R(N;;_S>xm(>|$f-OiINfmB;*e)IuREV(I^v zk1YVg968E&FWLPhtn*YmaxIL+{%=9T$5pn;DlZg|-P!LUvQ_zvytNPvIl6W^M4DHr z>m;%e0=a$2U!+CR)=6VS=h9GMD5|`t{!S1!o}4@r&cU^tr%~+YXdxw~Gieb04%*{*EGk|!F9HgxE`tVzl^tkfhv%Gvt?HB$U$qD$Og zEEp^E^NCIst%{PL6yC)&eGLK2)ukJ=2BQj+1&#rS3Nr#OK*)SV2f)m3ztr>4}9>JH67 z_R=O(39X^^f6!)dXg|m0WhY4&`F8?I^MXr1f$#u`h>1{_v-LPm3kLNdb=IEoEFCO` zG+r1+aAEILx;=uTd~+2w_yX?2Kch}!#I_b1`u;2hHm$$3e|SW_yt*9d4mm`TcAa?q zOs*PM^;xJgZg+C#I2?+<>$$X6T5Y0%f(_QD4q`BQE4K z8Q_WO%?MN(Mv+@|M^>b@t{tezm6qh~I9S8c#+J#e~ zWCt4q;wI=s6TQ+iwk^B>YFMi~oS^-KoZ}$+zJNu}4Fr4a&~Nvp_9n-2NXaZ<$h)`X zoG#W}RWbBJDH(&eXT@qdj2YpQ;k!ztj5^k^;QdTk9?z)ne@rIjKmTIsAgg0_*P@Y2 zx?W0Te-bSCd)Aj`h)T@^g^l4tv(5-{#F(C);|`ujUL-PDLRu%}9&1WIicwlUn|{zd zt|o|xgKZUahD&JjsbC%J#rxXB`5B{e9;o_qB7I^rIU z$h2WbnzEsBx}e^3q%J5ot5As%{ZmszhGsg|bw#itUSfpgzadBm#l7Peujy3k z^iPE09MK^-n|AP1uU?9rZt8M;Jt*1?E_!0oDEu)^7ehqxt?AsY@sF`@b7)eBj5``j zxNOhfAhEgg2@zNDXfb;6KzlQ#jqDLnbjc_$u?he*oV6GNcwq#TU_t;j+P(yO0aS)O zfP+3Q0|@?sX~=?z0Au|XXt0sqL4go55{Tx(juERG2_y(OwOGL-O&~9o(&T+jSQ?Mu z8E`pl!zKu40rN*9kVrjP0RSO9H~|A8L@n_e^CAU@AnHPMCg`#GC%YZ!v4eDpZ5xym zeh&+A4+b(e(eVJ;!tq5%J;%0iL!}b%Kk6{nZB7Vpb^iqmkvQE|!RhYmvJ*gHFMzO- z%wsK=m9bKG`1?BrSg;u4fb^Mw!R-jK&@x*p?;w?Da^%@*KtU#dY>HUCUQK{nEv%muUK zC(5^9C`SSa|Cw045Yf7xAr=^AiTQK3&_TZwxeotH8=>|qF;e-L;epQCQX+3)AfCWM z$-sh0|1o2kec%rNJHf#2@`nriSJaWC>W{Yr2%Z)HrVsuO5;Z)*MhId3Kl_s%KtMv` z6x07pgA>YfJ#Y|<9wb7@?bUy^Wj;<*vF{Wwl-8Kh*maPe5hRTXKa`3^SR?1$Zq_c`}S!WC`p;BaHlTc}nW|Ku) zV{;r#5iOU zxV(w2HpWMVn)HgT_Lt()XMn2icrvJV@$n5w5Mzo!OWd$pqhu7Sf<)9%9NbN#U-cTRFw+fE-Pk+ zBw59s@0VtOtjfe8vb8>2@p;#4Fj{GUL7#xzJR z3G@)vB3_ABG8V8ZNIH54()y?*h5TeSNauCgE0KOxjyl6a>@JXGuZX=;X}1$xMC2`0 z^_Qzhwy<@_Qf}cUr0d6U36W-d|1&w+!t2X%T>VdBE0VYIlv@7$n!N$4U-8(u$7ndO zPZ57r&;7E`sWK78uyc?NlT6Yh!~&}fkJBhcLi8`*hhmR37b`4|AGN`AstsGzuY8>VRdpYe+}L#QfZ z5dWpa0_zXpu0&-2Z|=NCNw9j5Dv?iz;eU|kJ{qg3*qm^aR{iP?x|=DvMhP%#r%^*o zIz{D#N16@YJN(PU@NHVa!JLM8PiQe3nnRI2bNdArjvg~_YGxR}V==5sgpe!&QnMtk=s( zh%bkruGmR|G{XQH_jwsF+91|!5a}j)e!(+8!#tYQc8HAn*J1qr=4kisnKAlDJ{LDM ziC?j?2`4d0u#s;@->;t-;W5AxgViTLg@1R&U;TQqNVmB7J23LT=Ds*rKfWgh?yI}q z|3qlNesiPAIKOZXUa-1FjPBqFVMey`;MB;lzir4FqG1CevoUBuY|yP1RR=QgXzS41iv%UkYLs_S1kam+1?un~-Dhc(_+Uhi=XqF;Rzyt~Rg^|lwg z*uxY$&vGVQkW{Zpop@9upQB#jXlPJeWTPy6n|o%>Zfu00wqvv9tf;snr^52)Ok46Y zJ{H)W3JToMPB_11b*xo)Kz41xLVNOT#-MCcT$ggRo{{#+j&GR+Wy#&xIQeNsjo@qN z^p(tZdU+&bi;@uwQ%!hxSvTkL=rZ5{LtrBXHTb@BW5azit8&`}UX>_R0?no?S){xJ zemvYB+wFxcqRkzc zkH&%(O|QLi&RIj1rt3m$jCr;9(+X{d`hoC()hFHx=rF5&UtqcEt1CCd${)g}=M1sh zbVZ7vM_3Cmqt`3Y5LV&dTJuCWidQXMwM4(*S?|P^6S%l(eA~z4&@fFFHv04u0jWt4o#7HG>0kX_qS-q97Bka0SCZ_elrJ>XUL?&Sn zEZm_?N-#YyS}<39kBLC(XnR8C$T~@l2RtOL_KPVbMMnoyQWQe6gg^b69mx=B>K!?Q zXRxdlGW47I4FwWhItb^1dMn}|m%4MD@Aj0!1Gpj)#kUH6_x+&}EDT9t?R~TZeMkOx zl74gS*W}aPF;YX2#1EQ>{xCHo7}8+;H%O*6QsXjorF-Q8_H{#w&EP%j(HN#7$*4z1 z(C6~y>>Iq`7C=uqJ=@9->x0!Y$9W_|fE{Klc$(YcI{Bu}3w&8;Tr%A&Y$74deH0p4 z$wq&QZO3e|6Hy~c34ZdodjB4m+(Q*kU{XJ{5zWAmUxSbW8uLQ2?6HuB^N<`Nv%0i! z*0Z2b<72hNz2L6mHuBAF&dEP>oGS5E4l}heE#@X!p}ZJHqMt+}wI-I5;VqGRt=>IN za=RR;G;Sx1K#}!;J|i0Bnuav29(OyW<0)Bov2H#@hy6NJecHyI0aNL2t!EspG}>&L zz=_lxR_p3b^Q?bDJ*Ej}vYRZJagexicVCZYZ?uqaunjA<00AZ9tJX%ZE z6-!a6cnZH!{qr#^LUVrLMb2xomexu9C!373GtxFN1^&FRx=_g_$LKQUtB6w45GZjNzuPZi9At4a?S7q#Hyhssz z(QBvDEy(Ovj$abCJ(UpRaMN|}%h&|O94c5^hh=z*m`#WSMDJW0`ZM_9Swwc1KAyz$ z#`r{Rye?+&gK5u_vm-!dIBsAE<*2TgZrh1O&%2+Z`u2l+5$k@Mh=n(kH^*6L!VG}B zkGq}^kDZj)?&eGw+IAdLqO(so?yCye>=Z%W|G;wIR^BpYf;d&iEZnEN%d0Zb5-^g= zl@RRtIHQIlwWv_;6>S=ZW~9ce|$K}I%>L2)1M5Z|0zMj00(mAVN2 z4v{1~4Y{tNN;lX)GGtW;jahN&8-&+o*yScgdr?iIDpigs`mA`z5xj}U)64jYI)}I$ zm4_#(g$s2CZO$7Q)?|rZ9G;TiM>5nU81{N?ljRk8;f`n^)K4b=Gi~DWy>Ymy2-7c4 zq4b+jLUb{RlW2}^p0xei`PHF}62EHMgCB1eX_-LZmXzo_Pn%(X6TD}`s=s|Wn;G5S zwO3xmW~4EC=%vih<|c?yhTTRG4XaF7u6D76mGkZx0Ufle;3U|IhAc4-8Ua3#pW6tJ z_2s3=V$Nc84_d={up59(RdgU2I-4Q)l$5l#xfl-=0NmslO!OH4oN!DTv_M%nV_>@x z8Pv1%ji+Oex4$Io^K~1C!zQPlWJitVTKHW<1shC+R!wRXzuTA$e$P%$CgTa9n0$vI z`|ii%VLec{-Y6+q%GLhROm@-8=Nx?c^fX;7=y!oE@4W5& zQ1>AukEOhL!gmb7a6(1x0cTk__#7amXal4_$c8n=72Yo~#RU#twJiA1N^|>%C4}YT zR?9|2sUbE%S!i3T|NZH9k;&w7y$`}m04=hDB!w9IhTuAeuPG;t7J>RP#B3tG)H(oH zf`!muBKiI|LtlUotpyaCC>eNm?lcIb%N#h3LX-)HWmwgLHP5Kf6U_iDh7iyx+@Eky zk;iJFyK%i<5HX=NYlb(zp3iE5Ocd&c{jrk8CColG!7}U<3^R1;(GHM2(kX`sGh}Df zeP%RGyedlBnmz@F@9xbb5VD=Jy+T2zWdT38nMk}#8VyU%MLf+aICN;38@Cr-wo@6G z@Gs?!h}tG$ghSTQ_FuSol`-x+Eg5Fy8x~1Yi7cfclvLV*qn0(Ro`%n6fubp>Sd}>P z!z^KR?h;S|S9QoSWewE0o0FDB`NJe0S5PIuF|(W`k|I&_DIzO;|CdZAPAi1)I$x9z z6j|o1!oOi*hE+?H8GkdSB12c^PlI})gjg*Lg96V69&^cy5yC)rZJlOlrLI2q81a#p zoHI$513)dW_7i(#Xjh|LgWOi6$>rdnllw0lf#8(HD8q3!Sm(VWlqleWR>mnrd-Ar0 zIg^px3CcSw!Ip#lb)2!<0VxR%_%JA$PVazjJwO{byK+!6H>cH@B{*W)C(5!#fk-91 z*f4S{Xfab&P7+t??O8=A6KiLD(St(zJEK~OC@!%)U~Z~KUlvd^PQqs5q#N|9F?k=)apL;(TzFQ{-1xqFJYEZxsrChJ)a}EU1}7IWlgf27(@jF! zy1b06=hvyDFP1s!38i^ldCnVW5~;Be)qF((SI1n{!|6xp#e6YoLMV#cde0NN_EcZ_ zK*{@+!2yJV&J}-rYe8Q3THdf`X294RHqIUf#HtfFENyz1_Rw83U5G5R2cB;6q_$7a zrha&lVao!jljqcz&tL!;2kOQnED_%X=kpuyUf#~Y5HvWiLy*Y$zwXx7@(ziFDwi7c z)Hm2DjEaXHHUmXlVUiVAtsw*|SAGgfJZ3nz7lN<@h!L9DnDR*=qwxMJ##u@sx>#I+ z0C}#b!^o6UNhSHT9jzOB9uu(0f~EM(SSye^nd5_r8cTLNu{prr&nG9I^6a*C`4kSs z9+=hrDLGcCfe;HeZd<*XG*2(ip`VRAnGFHFY6WwHly!)lL~XAAsnhTy&dm;Kg4i4{ z;Q8Ei(nFBEP8Y?8Hwj^dL7{SfY&*J4p~kr?m7Z3U&^zzhszi}}*K0^DXqYU>J#AmF zmz+D>3g14`+C1AkNpMapAtaAs0Ucf8)niA+=#`p`6XuWC{bWX9Vi_ zN-7P{8oaNx;g2tqZa5XSKKFvHyPdIWn0xE#{(*O^f> z$RlZZt1B$HUSkM7*g?WuL7@#}uInRJN@WOKj**LC_ZKi4(V#%1$$F1`yMdpT>q26t z89`EEiI89JCtoE22LH%M3-h(f4UXRDsSngMM2T49@EC(ow|MuFUgDS!tAB{I5*SOE z9tx^4=Qj9Ceu=OjpPfEOoQW63Qw6Tn(Izn(oX9;++NoZGgam!qv>e=&R+)nn#GR9c zs}n&}dKX#J010Yj$o(A_cthy&JSImR$la6KH>%Ot6jMOf=&iY**c}*r!R6NEToXOp ztHhXAQSRuR$stS%Y(UXKB#4r`hW07wePgEX!c=6kh!aM7wAMBEl>wWL|DZO2U-+V7 z>4Ll$2+~c{MKx*i`pZQmmoEzUqn3+SKtMqH#H>6|F@f9gY+4=dH6i~DwQhzK%%innG~!{gh4IRj7`1D!N$z8RURB3~5M z+7%9BNb!5}Hm##BbtkGe5U($th$~eK(Lp|s*6KRguaBPs%S}7S>{%Z;g~+e%&Ud|b z)V^RXSKB9dmwQ8whmr(q9%h;R}(LezW6W^J!PiFN#w9a3tP(wBVo(;6!{Y% z+SV3(?G?}&l>1XS3)_pV+Mh_NSdo-^b@SRU(#dzs$4kK2W zWFQ3Xl-(Pc%HPUe3wBHiD&Ew4J=#xyM>7E=JV5GCPO6_(_dti2nQ}Oq;ePT3qd}4{N)t^) z0skiggsuutS~;?gH!F7t#?_qB`pHX!y6FUFIcRx)?V-SC=3cU5#+D8GvFs6Ul*a*u z1u3aU|2bz*G2(+%#ZlE*%0&fGkv)bt*(eJ6r!Cc$BMc={-L|h4V(IbvOwk5cxCA68 z+6ImkN2v+$K*mfxgM)YC4d z#6%&H@FE+y@pOS1v&|ygJQi|Her|P+fOk@H!PqF#ZN#z|PdJP+-!~_YCC#E=Ue3eW z7^7A*4W1U5V(#eLg5{OxO&T(ipHQ;r2IzPuo+Y0C>t9sBA0JLuWR@PORnSHKI=YSO zEoLRQfX9k0H_1cj_SO&9%q<>$W*lR{Ha=F4utX8qDn%bR!$Rr9EOT_ae=2wJp<$`$ zI;z6o`zsG~<=($l9Q7}azCw5|EtDCk9+1gEmX61xMnsLU9JNnaME&n7c?wiLtj&ZR zc^tYpm=(<;kOE9REAxR5OQWBS7|ywR<4LCqL&jy7*Nm1ln_mG!IAz40l_jrQC4s8F z7}NPx?5Xyelz#Ofqmr%CG9xXS;lZi+C(DJ-{&u))UmrbLYxCQf;Z*Ht1 zp=s?YeoRgi*D3}6Ca1AAyT?M`f41M)PoUaG+&%GqPZvnmV$G5RAnB1^o%$?Bd@Oql zt48%Nn|EbXs7M`^XenywhkYv*Dx9S!M~WI|Ev1pwpDpQZ3RP|u%DTGqShndXXny$l z+8pf1C`x8}hdD^%rs!n-o??Kz)3Q;Rr{j~V8h}q;5Xa{V2-tI1(+NVtJu3-sFfqB9 z5|}mWFg5|hByYece|1gY>!uU8=HB? z8bW_D^@)Yo6TeDpG(!k3BOQ2|*@s7C-3tt0Wj>i}N@JGNr>=ajs(sXh-8h=boEVr= zGEpJ`2HS5N6=`78PhU0KHjN0#BBgr)ju(l-(v{h8Z1dRX#)VQMfc9h%cLX7bXMPp2 zojLD{ano7q2!06+r8a&^OVU5$U6Wq^_B2x(y><*HN@-k)cA3LRQxpDhGgWFbo}~%X zVmmIJY|=e+7KYrYuZ&}{j8cgr&jEg(8H75nYSy2Sh5|mHNW?qbYFUh|20?s!P6KTd z9D?a>L-~(2vYry`&B@h3)CW<2KwJ%qV$;*bl}3~&$aoK4uGRVYoH3Gvc-rU|1pNWX zT0a#YyS3(7x-1wEf$o|#X~5&HQ%V$#bX(slIXYysJfY24UpGe~10E^@xiFXD?D^G_ zt)p&tY6(5%&P|9026_JAO#RTh8SopXi=@`9g8`{TKr}YEt6^y2;TU)WmZ6sUUc8j( zubBh|gZT@QQIz0^C+$hTXV}z-bsBSu)LNxMCk*GPW@z#ZRJ&=onHqEzHPi zoV-`NzYmx4Mm=SXu!CzF`mhBeu0Xg$65oOeek*PVnB7Qd;D#ra8TYdkaNfiku0FD; z&yYjgwhX=@=xiSCHOq-wyovd#k2fQVAW|RoN4}uR*&Xnc_j{-2wR!B9)mm%oqZ4Xi zqcjLFITPFI>!{(5R>2RXT9EMD8S!x z=3cL3*uaOyyFTNZgW!|#JwbY469qc3tmXOk#{hOgMN7u)-=oi}oQW47I7{QiX~I%f zHtO@kIwE7rA&{h1x!8GJ+|zxbOZ|o5rFDgJGs5q^E>bf`%;qEW8O-RsX>xDB$*yI- z&GM*3;M5?CqiLO+-jP`6B8-eJUzlnjb$bs31AO~Gj5%o0>=is=8{rY}9vNw^6+_et zNkS}W4XEN)u->0xN{gDcJcky&EE=+-fy9rWBt2PD9O?8faPcs6<}Yc=1>tMz7u3=4 z@wn#j@ro7p$v6buYH;y)T9dF6-9mhP$L_3eZB8CEF00f?15K(+cJrd)8_qNuDobX7 zxv9$~D=EB4RVuIlNJaP6nwnMTlB9BnmiCY1Zyol*o(x41hKY|qn^u>XoJty2%r4!> z@0{zWSiJ{} zFCU~#vhd9Sa7v^Sxz&;^4u=A7&q!gSOQSk;;CzI#L_j_X+CpTeub$s(57ul83LjXz zWAhai7ZvU`+k*I}(<4)<%f00!_O+P5u<&CRw-RKe#}xlf;*M3KIVETM9R(+l=W-T2 z){XMdJbEkWnnXOHM4UgV>@vc~5tYwM^2JS>s+!z_Mn3#Ko>nI~FkiY)UfDn0BNX6| zu%ct*j5p24ZVJV7?;SU0%>bzXR;NY1C-f;*W1|a#5^#UzL)t9D+~fhK&~nRh*h@`? zRC=kr`VP+|*@qVzMk(Okjz1&zHfBt+UorPgN5B=0*7|jP9m5<`oWJMjO+VL?SoGt0 zo!KSWv-6R8C#KoaOuXb-EX1_?^!P|T4>E62ZGh6OEf@XLz9ohW&Xk-mY_?@yGx4G~`{AErge!Q~y6gh_uTvhh|vNEdV> zuH8?m`oUmFO|yPgHtYidvGuUcU26B`!!MA(ngrllM#l!rV+40kw&YLa>)u zIM9BVVJLVrMez)Ai-;4*L~+OzFVCD_v-J;93ByCK5=plgAplEFSW=E&Us71?U_Zc} zaJ#N=Cox@LrmtY7Tu|7qxACs7_;t{f#CdOAAId2oQZb{EnzoS?C!aj?C? zAHcROaRy<33<}2SKit5r@kl@f`!~k{kbhz2rz}u~Ek13jZ>S-0rOs?MJ?3iZW|Wmj zO%iR7V_@@bdW)#%aw3q0!$wqdWI6yJ;(1FzE%+rh*=XDTw&GgVdOYh1YyVEp^0U1T`kGaFE6kK@qFiALj^O;6B_x z%lUI*{LmV zD{qCWII{r($)!Sq^Wt>hIMZ}|xmstfx7lEYqcx-Ihw%f?C2f{d!>4$h^Kl` zDSF!ym|Pr1WohF9785aEv`>#6z2CIsp!0|pH22g_vSnuZ!raJt^2TjUF{qZlo?C~q`-wK znLk9Wc{}IA2-}t`1jWx?ii%~rX1*m0Ym;X*{P#s=v@<=A2V)Gc8DObROE8~3mp>mv%U~d$xAXxKgT0=avHHSP?_C!^b?jO-zp-T{ z-1r821EE{j7khk<6HY5iPX`_5T9)#LYvs~ghM#Qlke-GtIi(TsY}a<{^YL$j?39`a zIx!L5?Bop!T=p1r)BZF4rP*zM_|CL0XlVCgTX^bGev+h@5sm2akV8Ir z6Ia*S%9pl!wV|^Nukv3f-FcmX=_^XwGpEZO$&aiLCos>508o(_L$c0(`=l)GT%WAG zlsguCIe=ex!W;D2KZJox7%s3!+MjkT$5#WA{U9MUku`8;2eoF{hU3p}E{Lo}aCb?T z{dg0}RwR1(lDI#=vUFr5u2Q~6+n~;V9xRxT{FZ)f5Drn4it!ms$d;d!8Y7Pw4{o*d zCQO~zgdrZ5U$C}S6L4`~#Dw39UxeyOpEF;!uh&1+mz??sLqNf>{sk@Kc}-4-jp5`HCE=!mistT zWb$kosw7vkLyTXwC&#(U=&d!AYoGc-jnqejUuSm9vK8-!rWtHkZ=hk% z0x2&OFM+6u1uWf(9$If>rRRTgg+5;YxBHu}Rmp^t3tQy3`Lfvz^om%PbQMsM;14)H;AZFvr!b;T!F;!j!wUjA!2UoQSz)s ztBVp*YTID*_~L4AW30%n2-B4@q;03)Owj?_%NYm%n>g!Ec(10yZK5=*M{9DYC?C>) zRT5>!Lt5LB;klgclnE$gA*|gEA=kZ}CifCz=3;Avrt#5C9TO<(-ON6hu5~0%20cbj zU^DA62T}0F9Y6RwzVaqbe(Cx%Q0dm9wc3bJ{@L^v<+Z#08d6V z=Yj2}!`5|y%Ez#ff87<5;=LZdp18g4C-+=Tt2%We{85t(2GU37h z6DXZwHY9k(sar8#NBC@Ety7&4Ay)}qKokjs^}B6Z-*LtyY@Rc<(csD_5_75Ui^tt3 z!g(7r7k@@^>(A&6a46LOAxa1%W@v*E>2boXE7czj;Pf@W2Yrm_kT_kz7KLdnguk_4zlIlcMHvI4PZ)GSCB#AB2cE{9<@k%amFe z0ZDDL2IjD5+Lu`cSiPP{yMiIl<%Eu>Va^>jmZcEqS4BfFcpN$pNNFxYYNRwctx?y( z#=9osW1ic=N8z}#Zal&I&L%yqD;<^vCqxNdkoEL#%XcLR@>Z+Er`uNw7)=*&cfx*o zfb+(7;I~0*5|YS|fAS~BaJzFex}yMy5N!kIKdd?@P!2*qLBo3?D8MH{tAzc^~y2M^SPU!|a8& zmcTiYmmL4*+*v2dlvN14NccI5qmnA`ZNlW0!MxkLBf``LG~0(GE7(H7BZb zd^gxaK+JViEhAa`7sJL4-D!mkS#)#`reTH_E%EX_$Ac-b+#CtY%_`s{fcGlAnn$Z^ z75{w#7W(~_;>G@=n-~pV8jCY0xx5OS3KAJkU~cH2H;ZY{U{9lX*mb7IrD0g80{?yz zMgw)W@;EKbGWCm0&vM0zCT?=_p$7%soG=Yqs&o^)cc3!HLrV#%YO>X;iz#8BF95|G z{=Ac07~Z<~ku@9S%dZ~6->T}BJAi12WWLWaBWp$tW-9{qhg5W`TzTapY@Xr)@p&FW z`cAZCXYq=uM!7}BA>8^nz9eV`p2848=K7MW16N3S9-$SKQRVR5wD9-+^ndpT+Ijr) zACtOhH+;P)g80U<^D?7SXEG;#DC_9c5)Qz~Pyl0P{-P?Lml^Q>tk8JqA=8?!#Q(Na zS*(6Az4SsOh<~54j}=RVAEaZuTx}*+KB?MK(Hj2KYTArBEI5$j=z3iA&(*BZJnGF% z?$gl3@A2dNd@-rY#T$KC)_KPVu$(lZo?MyoLz#j-U9MIl}9NB!eu1P&V$e^Ml#rN0M> z?&+5>7JF{nwm8}T@HM;}mZ5_;^eM^NJSs3*J8%nga%1?OOh{xUfV{jz4qjJALT;W! zo$yX*K+#I3GGcU7)J$wRD@9OKT<{&qDmQkg^s=(098}7+F)Jh6O4L{!`JIRaov3*Z z1W6<*W8m2yKa;4rQP8?#jT&@EOk%pg){#L|e8(c4c*lagD5xww3H@&%SICj93t#{1$$XsFZz9kz2EWRg&YZILA?{- zklG$tet>5R-Qaj-0@Q!S8!RlpcS_Ig0n`3ZSdEY!+{l~lk(I z0s%VFh}T#>icqxH!KYnge~~)jP|>QFrybdlg;RojuFv_-huR=rF(BRh!=C}-=D{@6 zt+Kgo8D)6YnainJyovaM(v_ot%C0o`ysL$tKbajFoL|qDr~E;vE&D1taqV z9N^%ntu>Da9Q6C$iJF}W-0@+K70b8yqfo`SN_sR2LR|__PwIq!(wxkcMARw%;J&j+ zLeU>BAWjr7FI?uddRh_*2@00;Pk!J!^5e&ceyfyi$6638lMHceoDM zg%DWTW!v7&;Qx;=R(lVw%t{i5{$`{9vkhxdp-)FQ5JPXfEeA!i!0rA&(5A0i6`)4G zl_(tSJW`hj+io|K5LynP4~>uRd>~OT~#$} zy1SOzrCxhCRa`$8xANz@1zWT!#sphnGcu>vtGBvT5ounIrU4Pp25S2;!$A>gSHMxs zvjH{9n1bFe>eTt+t~SRPWG@|G+@CT*9P@-kVCXA(b;;&#aOUWz4_|OSZsmd!=O}aG zxYv=Jut6Hqw|i5xIc@D>Z)GJNAXjk9K4<;2W8W7+PrqfDFHr`>ahS7(?qWagHPS`) zPij1VP8TpSSt57<>LWofS}%(tQN#(O8nqx><$#~<>{J##Llmy`X%C$Md5XS$31=8# z2xZd^JEBwve(d5T0Tj%RcUN3`}-QtFW1N>YEij^Z5tL4W{~SH&gh_ixqso<`<3PJKD@z?mq) z>F)Aag)S80^g=1vLSaTJc!*(qFYh{oLPI_KnJt?I8!yuLh%-q@zd2JcrI@(L(OU2G z_00MELsmT}orb~HogBRji@Bk+IoLW=Qzy%z?dEAMzL%`=hIrObR)rlVlbxH9q?E~& zx)9gI)p9xp@{4+HXQ{A_FGIV`*9q0{MLQ6v7+n}uXFXtLM1^-lt-ectR-t%XVeH|r zRDr8=3G6-CdOpMje&Q$+u6*3{dM<{DPkrMNHUHTf2M5z2j94o)fUTE&Ls#r@gK{Y} z;DtXlPS!89Ff|r-CokB#iM@m*2D=AGLwx~wKu`}&(nPEr6sb{gM3b!xm50zvV5nvj7 zB;-iU=k1ZHccwvr#aD)%p+sUGz;SOtj2gLiXC};daO!7lTqe1$&AcLoPnjAD6!jg# z;72&dw8}ocn(AX4lw9rX5;(Xo{z#@x?6=VXP$95D{koR)JL;-gxVSoD&io8>XIQVe z2vfgFO1#U^EAZgp8 zV3|0`yYn1VpXnbJ?$ao7JrEg6%W$D9WNxPyf&`H_^dZOzsPvaB7;JgG$MrB~jM@a60S~eMc4l#y`+0P)w$|D0?f5 zoLl9xQ}c^k@dl05LJCNym7jX^RcCIE8)eD1KfN(U;L&0R8_~42U;D^jKAH-VQM{|a ztyF??d=2fYM=c6BQy9s+eMpd3?Yn^*l+1NXr|u!I2IbDLv6vh4ap`)*wL4qzw|30| zAx5~dbn4H_V|24m^=~#$+Wbj9{EQIY0}bMmh$~a^ao&%Xo({HFc6jinu~%=v3_d9R z$f;tP4?D8qLPL%c__P^x6D>em&q$&QOp-rp^9dC&VlU3;Bu>> zqTPST?EA@MOp7mOhT}}WhIEkdx0TpEaHS{SvjIxH3 zHZR8e3ug)fT5So4!faiQ9UtL`Vj=<-eqLUL`-pBfn)MzY<&EhKFP&(4{aBjKIph11 zpa=tZ1CC&99s~D@eJEW-(PSm)fvGjZ5>X^1Ae8?-Tj=7&typWurawz^zMqlU&2QH+ z$8K)-+mcVN8^PQvlxM4QzZL6dC)va6h+IFp+|F=I%AIjb`n0?~_9*68^23$@btA(4 zG^T%@^-;B9u$@tlx=0wx;g}y&qzw^Voa(L$;e+z&Q|GFjc0KE~iYq};x_OZeW7+Bt z4^~0Ktd+dp>g%=iz`U?Fwtml$he7&)zA%-UFL^<`m_La|CJ3W7Z6mndF8=z`;!T@# zK)0OYdkBpPJB>(raxET|NW&A`qba$q%7rrB=<|Z$B<0~mTf@NRMcZ)PzA%Q7s6?n0@bCSIeEqU;RnD)|0F@nFRgR`!@4c$#J+7M=U$KrV= z(|CQ}n^nEA3@j2e{`!uSiOIC+!f!G0-cLXCGveL^U#Cj<6-m5BFSlPU!>VmgV1zYC zy|8xGI#1v5nX3)8&Q_t*nGG((^3C{zT5?3y^p`RMhatLx;SKu6c?MmjGGTTs#b;@* z+>oywj=8%^WYI8vss?`NnZjS5=<0>=vLE3sZ7Q)y2_%=VIP)5%TG2z8UUv&+MD=m1 zYTpG67=>0zQ2I}>D|!xbirPzsn*00O7q!3AI0>oTU0z;9zoIKPP!Nk`q#i0v?lbhG z*4!ObJVjPsCSC?VKVPCxDmZ59a;*L?TqZM^WVXX3suNqD&c#GAoMZ;yx}rslv(=_X zl&n78T6Cek&-xit`s0s_S>a9(`zcAJ$SJk*WTN1}atU+~;|b_R|nX z!|CtGlPjf9)Mw+x>7{w7_lK!;2f<4lct*X}lrR65mLp!aF z=t5*NA1vAe!YCfi@m)>PoH`d_pub%C8Tow1139uP4|u?jmHLl!va~r5MV3&A`|6a- zC!=MB&ZzG$^UIfJRE*{69tLW$SP5ILQZxQ&s6O^sh=a(@*oehiUPy?R{y+I}lOfRi zx6dSP*F2FCEw{o?R*7)6F!w!!^Fp3vs7eqwdE~vY#8lWqb8y}_L3Y zA4=%#;SdRvv!xB$EXlFeVnZ!1ypR#MFS3z7mwuLkC*u0W8t6T9%HIq{kZePClthRj zS%^RNxgMg$U|NFBcY~G4cwTVfX0|y`Sp5w=@~)@ z^X*;(m}Ai}#Y7P-^%)zL`5e{`1hqzD%G`~L@xtg?2*uqq$vRPQ_GBbWEgtsr7nddd z3hI17UbTyAS*XgGk;djd)T#;mJo%N1^ZM1wHJsJKlvHIj5r*)R+MIere;_X~$+MY& zj1dAz!A1-}Rs>FNOvTu&tBlu%N|Ls_;)#l=?Q@*e%yQtJBfU(GtF?c_7o4Xs3H8_e zg@UNvevEHUWkfM%e^?L^8nNhW%BNA$PAs}jhn4eM0 zFA{b@L{z@*B&RBSJ;}8=tmsIzB>DC2!Z%K&ket?MlB(bS$-)L2;^5B4DuAsA1r0h_ zts)z4vg?IUP+k_LwI^OcYruz~3PRjut~!4z#^MfqDn`1lcT|iGsza+{j3n$z!FeAp zD&a!7jErb;F9v|vnEewQ{J&#^&2dU+Wuhe8j{d5I7eMz>_quMr!!-%W%LW2LQCZXf z?Q{Evz=RrM;w+7UJkWeu3^)1RFCw12^k9cF2~HF-pBSg#O6m>cIKuwwF{IEX2PecHH6 z)MxY4uLEf3O;5<6COEM}O6)D4K zAvxFoO91@81o?jez<=VgMD+wfHXx&XwH`o%+gYd>56=NPOSa!#!$VcLYv!h6q~-8C zX$BxB--3ZiXkl1RZvjwP=_?>=^aIUUh?Wzk!V+qn32%`?&?^8QGk>+SEmNDx=6e=G z@Bb4USF6DKll>MQKL(U)lg)l7{h8!jfS9R*xCA~N@RD!;7nSc{=WTyFZ#O`y&lzM! z8;ak0(?7TqnkWIQEbj89VodsS9F*sW%WTq%g*qx%z=gaLl=mSn8(xx7_+o_du-2C6 zVoWg(iipaLDjYi97={&;7gFz5R#{xt4{zs^@Zk>t)vWG@UzZn6jJ;CGS=$_{LVvzC z0|fce%Vs0NiLk5|Y=-UU-iv}-vDZuFic$hBmj$=c5}?LUKsIzN0oMcwRUMH~6-JJc zQJJSb4QOuRBB1>k^_W`?h@eETq{WIFIcg;cNB_&RfV4As!9kVt$#X z^}%P>w3v}p7|=|O1wve{l#uNMp)wtGu@2G_jVaSIEvDA8A{<<;=lwN7c@;0J%mcxg z5%CiQs7tO$Ag(i4zKH2JSLYs|6#WaFT-(K5&xw z4}i#_S5QbyWnq?w*1dVjOrYNv@!#q&==%o8KVV#bNyXT?`dvVzicnU@fe>}{9Va!D zdLkmCgD=3?wgnvE3XPZmfjGWhMvN2-#iPWuH>`}?dzU7Xg5ncLpnGRR5_oMERz}M{ z9E{P3Xl~Omq+<7n+B|eaO;$!aXe5%hys(Mnr)VL^YsnF3(-f&O|>!ps{x3BS=ztP_jgNW`FaXfnd(li zrCdtOKPFf+3TXqh*uO2c7Jf-r&C_Vof@Zr@UmL^I@}g_1J0s_?HYfb=Rv_HxsTFv% zfU9`b3@!Bk&sN~K0wBg{G@6Z0Z$n|#^9KyoR+TRn=5(gJJBgAYc(MvMYo3-i#(y&d zst7Ox$};V#^z1s%A7Do8<3G$;(gm22@D53SV{wkk>@`s;YbK& zDFb3!`J%EoUn-H#J_`2KA2fdcyFV~v`@{9K&nlj2iQiS`PIkw}c&`gEEdrP}=+p#m zlba8*j}~p#iG>xDbx|~O?EXEE($MDFg~N)K>?xs&`^Sh-MexZ>=$O)+OFxc61P1Vb zv=7XHi)p%1usDP1?nJ>QVjqrt|3ZbS?gg8BV4FoknLHYs?@z1S=wuNOLxPvLSsNyX z#zM7|%9O1zxChv14Usm!zl18UpPzOoh6oifah=IFgLfhF&@PB zZ^m-Z$?=)*yx#?|8&ccA@dJ-f;tqXu;_#DFQ5Jut-Ip3by8)AbYq#3ulXmA~N)Q6t z-N^Bu+HDk#ZBH#}5%b@D9tC`MX3kkbUrK|lVlC+wK+_R_OWrBWkrO}C1uM3ZbfGtX z7D2C}`tbqzMS(xzl3hQt%oI%SZWMi;8P%)tvy`F3Qr>mGKcWAHq?x>@E?t2RWU5m7 zA6#w$=Dq>I@kN7@-W2%%XScdkhA;qhs}ZoLZng3Azq?h~XP{d}82!6jZTt*$tNH%_ z(XIYhDxXl~2c*)77raGtZJy({OueML-=?}$Q?~1k{Wmg~U*9o{wp^J8Qvz?btA5a* zyA&C^Q~;93vc%6NcSiv^RAL;TC0vxUZ;{OkW zgj4eU|88O%Ie;b>pz$&%+Ako2Kok4tudfw+2yKjkCRVZrXkvlX{?o*Mg#FdT9@`j) zw=XqHo&o}QyB9i;a8#r4x*C+P8wpGC_B90Tuq?Hh$HRbz1=#0UB3@3~mC{#}mDz;E zaOD7bN}P07P?Sg7BdoY%7x?|v)Pky5{7ylaYTQan*I;}+W`d- z?gpg(a|X!u`90@k8x;3R2pJr7=gvhUo245+&zw6v3FPu!Z7&YA(tVZTE9-$z&ZbZC zzdaMBSxuYjHhkB}0kp1-96;;Z$N{vjfJ#2Ku24mwbp_Ptsdb&|23prx*gvi7bT`nt zO5OpjYaHyUbp^nh@D>1TMF-&WU#+VJ8fk%lk{BSMEYl52d}k27*q#q9wV%vmV9@pg z|Bipb#s?s2+xt=*<54NPMLb{oY9gqjppU4H@x(`NVKi|A8Ci*Wbg1H|1+k^HnN>7E zHGc9grF|;fjG#=$BrdTrmc7-^^C#i>j0;`%008$?H30H2S0h4Who)0ny2Cd90rP%;lH@aB7JApU;f^e1<(UeejDTHW^=q=AcE>% z2KQ-*?AulsKpi+^Yz;BserXZ~)Bfk1ElMa0OIRh<3Q)^EnruTiB4OGW(Kr+N9y>GXTC~LsP+ZA zEMSxeV&I``V+@S)h5mny@=IyJC=Vq3X_U|Re;VbXEPs#kh5o=O9}0UK<)LH1C=Y;@ zswD;njPiiXe~t3Pczmz#o+c@v;`}v9)e!}fIGJ(}5kQySWbR=9)Qsix*LP-arz!ve z!WHW2U<+^9mePPp9;kPJPx3KOll)Q|Fv$aK>A(kMqYEGpxB3v4_|qgm-3?6g5_iBP zPrcN#3jpp@p@04r061MVK=I>@0sL}rhH7|oHablbLYKMa?n2-|!2bVlYBjX2z~A>@ z+|-VM4Mu35Zs`DB?2+SCH=e@~CXN~W5F zVJS&M7^lb_!FK@Xk{p)}lzFBjbZDi*7grB*Ef%EQ2Nq4Hy&%^L0t2lX6li6XDS!}d z%KKoy6hmsGQWpJcK;GYx7Lg~^s^n6{7O zN&ho(Kr20RUo?~*ddDB801 z!ZC*#!Q0kHr2XoVRxTL&1#ydM_9sc?b7moq7p|x~W+q6YXKdm=MPGhx-X8}9-t*Ab zBT;IGkwzi=w4q=97r8Hmmkv1A4*ev43Z zZzPrE{G?m3&#e@H5}IjQtLOMk=;L$BhBgLA^TE=J<(s4YDF=|LrYLsx25}-YMb+nM zmi|sEd8*#=6aO#?dA!ldSx%MVM-E|fl*bh3vyctJW<%=KC^-{^Dw!>sd_PB_^UvoV z*tpdBOM-U=%{Cf#Yfju+=PfvRu8t$}Bd<7fs-Tg0>sJ+R-Ks0I?k=G@oCzYEz8krV zTZ*d}zV}N^6N)@lQF`r3C=n7JA|m1PocKB4-!}a&`f*4UUJBgpgBaA5e#WxCU%U3P z2;a7-Jy`}sNtE>(zsdaU9y9#D-=Qi!)<(cx@GHYa+lWE0&LMe~NVHS4#m2Wd zG@{E79G4h+pi74Rv;=ayzyxUu5aw` zk-<*Hrw|N|a((`~=An7)F(yFsSB2sbhp6y`&MLuvEh8$JMD%QO-^uRXw#-Fi&;3^# zHZk9nh#*mh)n=#M-~@R zrQD2?A3QmIj$gUxWER&H#teT`bv@)Fwk(d54n+!&uFe24% zI#C{O7cN@qm1s+_HhGDfh`?o1j@D`}=1QrE?&UZKiOcINj<)RtC?JbIx6%5in6-Xa-+ps@ocfPe9gE#RNPA~jbg#!D2tYTYTnE6viy=XA0 zlGh_=S^K@WPO{Z$vfOn+%G>h=F?NZ1t()5GtFvvv4F8|(Ub%!nJS;Aa;>9llUjB^V zZMaG*f7m9Eycg++R<7DH9Y`BJ|7Bn-l^2_o+ptUU6 z=-_U_(cBaxJJFpdDQiRtf5P$cU$$}Axda{$K1}<9Tzj<`F{~MbQr8!v9d`M?zZ_u* z@p|@E`&%)w<6jwYbMu9ns5;0#<9X>rRv=P?RthY;DIbx8pwiRg!5`ex^lPHkuvaGE zJSGB8tGIvgd47V(geTP#mT(jHf+>KsA5Mc7qWxHlzROZV z2JEm1AOjWWE-JG310u%>MX9YKO&DOiwlL7(R$iuYzEBuwdd4FXl%jp4A$p=H=wJn35of>+em!{&oqSa< zSC9ocU{53!FybVyF-8YsqDL7e6K@)$tkK9{2Tl^BD7&LIe{2GrbVm)?hzX=Si;s=J zIUsuSlN6FX?~{-KGF6)=1zg4;gbW-AtI0!bR&S*sGhlowP;_P<_HY1nKmU2D0<#MD50qFpg#I_pTARbfzS@g=s{?@9tPB4t>UMgNcG$j5ZX-?*!YJ6hpk^-(gC>W_5vre zoC5X=cRLfSN?4-WMjFPcr6INS{BlH)Wd6x~X$Tkojh=jUoY+$=7y++#H?uxmM|-bO zgBdo?cpR6*K-mPTrBwvv_u<=2f_po{DFuUP#e1<@PN2R8oBuhs)nGn?kv zo*d@`l6Xl)4eraU;0M+~%nZD^OAgU$@;Jl*D=;VrC4d}5z5}M`x745OYSK}IOCj8S z0{iYCfW1L(sW&m$H8k%wLe=AWeYIG|NjawNq+&x=WoC;0ddyG-Eszat#Qd20pc7#zy_OLzMq3vZGP*83O4gV z1~5!Wp(#J}>HW^ELnEscWFiL0M6!E3pOY&!_~ER95JUk$<452^0!StN3$+xa_4aN} zK_2h>lbbaMtx}LOg>@iy;Q^OS%yU^X)3?aLp>y2kD_~tUK>%(>^MF0sNpD(xWnEmi z&=jGV1W?t;cw#tcd)#d=q3GLdF(Qq3g*afdCS-K5+5C+F18smAg_pdBu|dvKIOx() z3X<{vAR|U!dA2l$qW}(!(-nqv0ukQ^;#}`dCIn*QZk(*otXvcX zKJj!|eFen6&%W8X@(b--hh#MHONCTY9cpm@hO0C&WR4X;h3@|q6(4m0fO6{ro8RdG z5(c>`I}(cA(h`ckV^Kop9FudasZJAsjQ;750J$(@Vm}A4zxJpj1*x4d1#+%EL2mM;3_&fDH+#N7~2$fq8uoT5 zpay%N|FxFHkKuDmdw}{^2Lp@r5Sti@%1xIehlJ_G^qtKygU|@KM&U2^r66zqKf(kg z0W^UBOk6)4lpo?9FcSf48V=?fQgylM*JkGN160~&WH_s0i5!sId9o)_KtaJjwrjrKETJ4o7*h35}vXs0yF`9AEhHfmJu+0Pd8p+Koc{7!{SQ{Ky}i`Vefd~ zTU5s3QG=skfLJL1ZN3RGUkxm=LtiqXe_aY9KR@&WGQd+Q46Jff9Yw?l;MoMARaJeo z=wK;)x%3(UR%Ipu?RL@-F$lRjpJ@kS(T(Jm?Kg8knEdVZt5HtN(LyVXa$i=mC#%NI??N?MT4eF7-{z{aW%F$N+qHJRlq2RB ze=x9fmqvMSVwfZ+qYfLaNfuHaZJle6VeQdrSet=Z>85U@6#qF3{BuU!_&GYqi^DA{ z>|xT1-?&=$?nc!8`tfT8Ei<`NL9SED^tBaN>}^`tzPr2F!If2E<~tz)&F|s5I}OG| z(z0!(z2hX?D(aS-_IA_gZd)2|wRWqX#~(0Q$KMhw=j0t6`!{`rX$3l6GQ=Nf$|}x(#Ibv5 zt-9O{eIw5P?jhpi%=XT^esxPp>#92ZG*cZo_RvQw1LR3?W%W9jK>~|hV3>v;LwtyP503ZFik|pVK}*U&s(brrkpw!Q<4#HaY^@W5?o zAW*erL2S!gN`~N~6tUm}9*VfCj4ZFT!{_O!I?3{5kwbN-Ut*(t z<$F2ut7?^WikIvm&$wUGgw;3Y?)l+>@TqNV7DeJ&vR;{fPv(H*Z@EzpVf8nb;ee_@<;2-EF808FkH|>}NPl1cO8)URj z)Y~?TBXnCULL~Wo{WWVF*iGY0Sqpnd1mm%V`SD3YPs~RQP2TSQfJ3NVsQnq?k7*7#JY3T5UB|l;9o3r7jz_E;(_V;QsC>xr z5}=EJe7BUXH;H_MQx@y|!beDwGS(#S(PD_)RfJSH3r!G;NTA2e9V$gOZXG)at zJs^EcIC4_|_a0e+LcW*HZf9kIS3)=8C3d!H&Z=~Q`KM3h?I?0X^{!u!N5-=qH}!T^ z{9e1Eyd5cZbCyh-0A4#jogn`%EXV0pn=R5&I0yJO(@HgWLJN-EVK-^$O& z*rvy6hE%v^WK4WPD$brw_EK>?>+O4xXTUkkh9pHEX5+b`ERQt!61d4ti?+4Rz5^`V zl1~Fh&-Td-ri$HM-AcVW-6Ah1)W4D2GfW;cae7U>91`+clH>8JP4N>#A$H%-T3Hbk z{@K>=v&*=H-JE27^?ow@d=_vr+iph%Y2uk3o%U{-S79Tt0D=y6$Kzi!zzOtDlCy-h z1u)8hH3Lh3>G$nu){Ztht?T9L>&=nz!6GjY-u7-r7{l$kpGbSoY~}C-_2LKdnLarr zb=r2H8@xpOpJk`C55RcqdtM(Huqb!>aXQd*vXcMeob=wdyTkYX%J01XF<80jBp@eV zZY!qwNF{%I9O~z@nEOrBVJ9uFZIVvk*7)=#(WMHykFgVM8X6y~nzWCvn~zi8R;H?% zubO=S0y_OmR>z=f?R6pVt#H$3<`GWW22oRQw6XYj8-4)5j zEgUkuR5s|M^Gs|!S3IzIW9N>eOrDa&5~kSr*8dF$MNg!oKAo3K1%+QwVtlf6?)2U4 zAIo)1=J-lRHpB*6V?_NwH;>C4V#S2NRL>t)d!}PIA9)WAYZrMAA20mpZaJki*&2xa zsPLVdkVp3Y#(r8TOzD;j2x+^?EZGo1Pcq7#ui=P!@E05ObGsI9IDPaJV0AS?SJNj6 zSSQmREnOp+1=6!c1FNnbZ>U0g+x;j#0>gTKvbEKrQ|^B9RHMF+K}6Ftk)L(5nUPjX z)oNXNPGDI599N9CI#-;dMgE-7;#wp~N;TG+=c`y(TnV3A4YkaOxGM1L&&1b|5w zL){W{-!M6Gjtqv&g==S@2e~|;{fSnOyjSu?iNFNy`1via>(gz9jNjXaj{WAS6n-Vf zg%|ZP3(<@u=4}F8Y$AlPg(mnK4irRsDD%v0BpK00`2)g^)=H{N@4x{3RqO`@xXIKqP3F+z2h-iL}__=Yd?NJob^j**#J5=o{rhHS5drtVGz-Fv+AH}>G*lOO$0 zmmzk@0*~2aE&g4q zoA+mn-)YY4(nMFH_o`00G?s0mZu*_7jLr?kk?=>kd{se6GYoPO7bA(ZqB)Z?Wz7<| zMXWOnC=xy^dK^W-y#b3R?Lu%o<#SVlaU$l$mUXrhatI3KISioKuCwR)x8Oe!Gd;ixZf?uO9P-=P}o-d-HwNR4d>;CYE=Q4?eYw zqt9iEl(}^`*XR9oNAl3=Em+HtLp~U%MY$}&OktDg(kGhBM1k`F{7@rSEXkWtc%@ak z!6TMMQ}OP{i58iz`kSbN_QBf+TZW+9d9C&SFX=hA&N1(eeg(U$ZSTWvR#&}OK-n*Q zMkD{@UP<_JCbt2>IrRI8bg{$lJ0Tw`Up-V=AKyTz!@YqO3-zL1SWCb^3OW?KE8G)!% zmHb7j5dG?DqYIMcIxb2#s>mNY)=sYUk*+nHUq066ZNR*83*r5MCs?8>``vTh@JS)L zi3F$Z+3|FND``GQ6GRxVeNmyk5;Bcc;=HCh#w%;>yrS$m*@l&FpeIZ4b+9K-os}Z` z+{K3By-87fmOGJL7?v80*Xm9mkM~AF!R9+z( z+aU68Eu}4sx+*8YyngY;se~5$cR5cYxo0~0b(&_Y>Ja`f|37d+<>ySwZSYno7OyNB9U7{4tbpjbBbvUE*s$$oMRO+LKK~5soGb#ps;EY(A!Q&(5 zO^00ky&;MFTdKeo)-x}hpnD+E!yKtfiMc5zQ>ufuBBC;TKiL123)Ij&xWI+~A&B6F zS;q!4ABPTZ^q}t43s5qv?40i=_rf{h@6z&p-#bt9ey`W`Aq;IJ$)N^g!|UOBZoE3$ zhF7JeU&^d8@rEk;D6a9hUK2inbzE_#?Tb?LoE)@CPROoQKj+d~-)Fkx!0+Wp!$CwG zsf8OK41HZKL|j~f+j`R=_+aD!7g^ymp!`Au_>zOGSRzIPsQBXP>uGS&Dvg>;zA9oe zC=mzOOx^&5))EzXPxC$?-Lrc@f+X19x238MHsGv*!kMKdg$eFYdVyDdXsnD`D#DrU z`k)vcj6-}yg)DOK7q!mA$XP{vcvppX7};^N3fT)-EqrN=GbQGKNyc_MnC>(FF+)nl zlFUSsy3~?s>jI7-1W-Y0Kn0}$6_os@QbH4IUyNf6U8zCTCJPjE9?`LWay;4mD-Cv1_Ac;{Oq-=iL5UIX2F+Ny5oPL2pcScKUc zs}-|~5pef|UY;DKE#=p*SD)cemrS`s zKM&kyS-mqm72TI7Qx!53D->k%n4_j663h7+s^|PGgt+c{S6Ek;)gp9LiS^H?Y161d ze(sFtv5lSNz&o;c__68h_KK`P==AiS_pxe`Egh6~S;$yTAGwqX7|>6$wu@q4x&Gk^ zkLhPP;PcHQGephT(#lAV(aP5v?Top|lWU7xe`D$PweS75exD%OVuENl{^GT@=DXpN z4EuxE9>ZoJ(tYaK2>WaI1FLdPqVKfn?0Wa%7Y5n5C?xn9e@-VeYC<@UAEgc9JH_qW z*Br&zIqjmbc^D;2dU@3_{B_rQ3rh&scETwWhY5kp5-3d z6z>Vm+Use&sT1={+&QZAO)G2tDZ_ikuI|#VR#jDfhKLD}h8nF9`y(P|4tJTr@QB;w zV#MkG2>F3|dTT}z)Jpmbd5K$k$)=#vH){ueQ5-YY+FtSLrA(CfdOdG70+Y|%P;Dr% ze|cT4XmvULdW#4DBjHTz^h71#x|OD%RQNsZ8^-LWE7Way!64q11GDEQILtK?G%~Q- ziK~(gbPx@P(-6fUlC_J>VUY#tZ_CY=ICU1I6phSM6nsBx0EvQu%3BnvaOQJfD^To* zD{HOD5c2a4O8u@%|4hARIE(|P*UGBqj!i_Y4P~{=i~(+@5O~lW0jdD6IyP&8T+FDV zQ)3TGCoT+!ybUzD{IMU{@h#tQkp|=5# zW=0nQ$H*MD^$9`Wejx^ObPOnX91ZEIKAMTlR(}_vL=s zFbuD)5qroFn|VBgY6ZX5bV_>?bKb(4UwfBK)+!;#%_coqb=}b?$4yVk`LXCoA>EYv zmGsFUip%AR43hhXRu+qhfi#leM~p;u*2sqhE=b(+W6PYOfsj^l?x^yg&EKd}l|BU% zQqM^Y+WM=>*iG5fmI*`_V(s&Vtdb6LN)ukms=LsXzUXUg{rX!Fq?P4~(nrXf?WE=+ zYfM=C!M9HU^VflXNydlMl7pcBVXhejY^<^0Oq*Rn5*5+Jo4fhGhSs9saQgm1Hm1 zC+cxs+Sbwh9*K{OQDGaGrL&~{QeM1NW;3f^*1Ewd9H8G?8&=BbjY>?&;OL=6ZE(v< z$gJ|Is-TbpZMT+l>~+!HW=M1=3YMBxGzPDGH=(ZZntjB=7~tPS>)=M?J1$iZ_I& z6r{xZiQYVSR9Bk>4lglC&1DYq5gLa@%W;*&22no)7k-VDDG+Xi_wa^tNpi}B$7nhP z6GXnMm?dUbZn$xo%!`zKD~h0&&n z?9BNN`AjwSb3*V^H)fc%dR>$#g1+?z%M1B86zjiMkLf~pR>%BqEXCJ2a^!nW0)55? zuzHRPN&a-@$A%=Or29E3>X?npy-Q1+=giu@AK^AUlBo6RE2rn}DHfUKd>((VB&RIk z=NM4g%}xGjaC3l)(g9gPLm_UUCwrW`MMo>$R1{di&|)=H75MIbhu)W%`Z>$_KI#4e zO-^aPg^sMwLP4Mk)s&1`OnQnD#ltJ}*`(3Cs2q&Z4|RNsWLGqS#`h@-%Vj;?E)r+UpJX_+xHNyq^LE=_h*W40|E+nh{c}w7%tx^yDoIT z@8ekD-J0NNP3P@FR4(K=8(WegZ;~ zAFvL^YTdcozNgJ65%NKvMzQBN-{Y~NNOze5%MOQ@h&2d`kt?Ct)J_X3FGwqr&Jf%l zb%cYC5=*gcZ)hCUTr^;{1z3;v{((!lZpRL`(yX7_d%2dbH*?w;xvm$}Aw0Ugcw>05B%8~0xpnM8h_ z5^@p!B}l{#KO4g)*C#cHhtgK>z0ZZ^s8Ms8uYUcEnL0_^XMa6LE5#*BSo$-3%lkE> z@vrC1*rBE3AFp?zcfKtHN4{?9fXXU@l z5xq3N3|4`+gGTAXhY$|SsvGPZ_)oe9rBy`61|P-W*euc+a~(bQoLN`EO6rC+L!kw`Lb_8 z!tLdTE2h+-{<_8`nVNEYKxzI4T>sYsT5&9OC)R8C2NnNPY7~_pYwVmnXA|_TvgA7xn${`p;`-EH0^5^YFVFk;|$Vgr&#}{o@ z(k0rXbhwxmhZ+4PqiNTUEK~QjS|Nf{p$bLbyVzPZY#&Vy{&=6B(N&-S@s1apSgh6i zrDvw){G04jZPw(wRCOb6WlT!Q541nOPY!+ile{y!ziFa+x|&b`-2yQ76;d#(Y$`Hq zd~_UJzb8D?H~@3Ju$t2xMCwnNlN_uwwN6>i7j!i-F#RpWv?n|4JSkfr?06vWu37Y&eO4PTEdwn%?a0w$OQvxAq<>gEH0e_x)uasV$@pVO4%? zY;Wh>D%WR?(pYSKbKed0P6#8CRd%jMnTOaf1TmmSK= z4cJB+>oU)zLPQbP#ORGZ7PE3!n~Q*jw@MGcikwRQNjiUmCV3ka%-aTCP2~`5S{W`M z*=_c!6psauL?e2>foO8uF#8Q|Ap$;R)haG#XJyRHx%#?7($W$&k$hhQahYL4R1{2z z*E^HPvAig!!iX4HVq{5-A^71`{Te##61Q<%tz;*L0$Tl3B(k1~0AV2J3w$xu8aOTT zVP;gYL|-|;SJy+!oQE%+Irk9m&lo)fQq5%7GOXTJavVzp&n>Aq$fIQ9N9rOH zXdtS5tZERs_~8$ONGvcO1NBU@=f{fXpp_&@{2lQ`|5SC3d&P+UNrj4?lBAX4J~&Qj zxN2m#DmPiE+|-SCGYgs~NO~>s)!vNM{JV%mjIeg@R>Ita;rUc=Z`HsYU1OtZolRqK z%lAf*vZ-pUy2}BTg|{~$8>h=eqn0^(XG|*kTHS_(B2fE(d{yXW5PrifwA^?{!8~!x zD3@t?7R*L-u}CM(`COf%K(;vX>QjI|e1!?86q{NzI%$S0-`O>`?~D5RS#{q1GX^X| zauS#X!;CbQN7kDp)iiM?4^&WL;a%X2QU7YvOybBm5l>t9!Gr2lm^ahxlp3#fNg{ol z@T<5+zip+>T+qolPxxmo7n7F&!Faw=4Y^blj(e*AY?eYXOMIun)RqZ6pp8e?U}G_k zMmoaYoj^FNs%}n#FOolF9EOSjSed9zB=ETVu4L#F9{? zph}<4#>#TO3Xi8lW0aYvvG@SSRs~QC6ZW z5#lG$M5E1b_XKd>8@`tOQTeyX|;K#8#@6g-klpyef$HrRGo-LFKkPYdW zFOa&+*+2RC-WcjxhFT#{6SP?U0Dtj>^ z1*2o|%SRqEA*PKwli+!a*c|3AXJi$j6yNo^tO4uT9G&BEMVxSFDk)FK*Uz5Q7@i<1 zzo^bg>)ZWMkM`w#bj1Im>@5T8YMM1s2nmE>0fGeB!QI{6-CZ{B?he7--QC^YC1`MW zcXz#;_d7Fl&Ufd`o%^d-S5>d7>Qzte?$vvBu8S++_$WV^_OPE8H1!f>9@Li)C6(t${Od=a z6Z2@T-vEh|b%GKv!Ntd^nj#4~lqd9>b@O>A0VAqZbcjPykRUS&Ocf*AJqJ>si|~5p zeMR8QAJ4`C2HygGwGHJ73h~PV(ZOY3(DX6nh)b&T0P#Hj@!TwLYoowGEu;`!?K_Sv z3AErz);c%g6!ug9sF3;rnm8FeOA$-CRZ-AuNpej;?iW|Ga%m43`E8>12=hTh#>I%j4kM((2qPp) zuI1`|FCv{jkHTYhHQrjl*v6M9tZ(sZxqtv2ruRuf^J=1v$paG%T+$X0@4Wk z6a>^0zKj1lhW5GBMJ2NgFv+>;rx@GHBKy4GBD5=K13zQ^j@>e9e>u`MQJMy?HcLQs zhmm1FVaEY)d>I_f`MwQ?4`5jxo%)s%Z~R-17a1qCBOzzq=!*;!6bsloya$yE^UizrHjc)u)J zv?Vj$a`NhnLRyB@O0JF0j_XwLQt35SRXfxxMv=_P4k`_bx)r&DpA zPXU&ix5fl4FG_k}hrQ3fP<2qU)CI3ibrMRti1^ZEuvbMEcX|-1SA#uX0>{)f)GL5g zA&r%*xQq7cfdF!$=S=`5Q@?32gOSOJBF zZH^opnM3=3A$0jNC=r4PBX4Q=QZ0D<7yaQ;CN;kTa;EY|vqP|aTK9`5bjiM;6t2iw zKP_k&^cZib@*!d|?;w$#G<9>2NcY0c>ObBp6ru`QMrEiOH~oHBTB(&QL^ZE4oZ0Y* z7bQPPJW$J80q;C!!Vf5*rrl_krN~)Q2BX$r?=^n;B*dO@@xG!0+19P+>X#sb{Tbn~EBsL*ngi>U;E~+J9%vmH3;iHh10YDT%D9I-J1(gSSZyV!? zwUODI_F&6{XNae6>z%iQ{T#$I1lF8IKqjT{Eddca`uXJ-i(64siA-li+qM#;%b*e2 zxu-dwN3j#PQZ84fle^MzYo(w^p<4>*(MEjeWY9%9a&ngiV%+Hoc^tabpd5*dFJ*Ul z5mj>^g+6vQ6j3L>gNGZP*yK>s_89P%?za zB@ci=7Zq@Y1)c5A71{)Rr1f6+7c0jf!G-jIm&VfsB1J8Z3%T)-rQr?EFPC1Qgxx3AasFr&) z^zlyv4al3?bfmA@{5{1q(l8|pxQc9_ctA6$B{+RX6~HeU6US$7wwNUKSpwR7^$ugu zTl#0F%)XU-ZoZ`R=1Q2X%tv)W8EI*&a2=jgd~q#Ek5ByWAv4|=sw(h|xwLG;pB~)d z8N>|=wjQvI!O!biCzPxa_F&-eb#<#LS3(KjyP!TvPYk9}YKPz1dqIK0&nx7Eb1I~; z{^YR%lkqlZy7;`)&})t^8?Wcsnj*2?aSqP2ehHQ}W`uG7iU3B|bAmrY1L@JD!!%9& zMGKz4_$Rnnt#(a4$YoEvrRuojNdS2ma<3y9h~1c~>{I%=^70J#ANOX&C&HNer7}u7*KCya?{f1=Z6$n1 zd|km1a-oDMXZ!qKaQQ!q7CBQ$Wt6SMi2{_!B6@NSXj-PCM=6LMh)XYE1SJNRl08?S_s}3Ty1i%R;?%7~xaJk_VaFuo{zln}jrsEd<6d$JSo`;vO|S#dc#<&&ob7E-m_7@Q6Mre* zi68O+bb#00u(;=;=G(BiF%(K7RYiI3$nO5{QAb0p`<7Fr0gc-QO-Zgpo?Txi-NqTH z@@`A6O#6-VkJ_|F;%OFi{v|*{Kgu3 zNJZbmVQ4YnjVTf&CX?c|ttI+Ruy6%g<|-;bR&CmI)ml2FD$_iWB!9cTm*;7>Z}$?=D+<0C(5@6gunNfw$kQ&NHEo;GX?ekf9bp>!wxG zW^737ElhRlKTm~Q>%YFRk|g#y)_%v1CUWO%HS%B@&mZxO7uGrrHQM?i?s<=it23&E z@IIU81Fzn3v2N?<#f4(8G7R^Z$RyxxjhPSRrccR+Tcg)FQ&l?vBg)M$5%GnHOC6wWp`LqF2*w;4MN{~J_s3ZzOJ_W0`fJ*3<#N$WZFmPCiX>RPB?+0g@A&22-{v!*32~CRR9CmV> z(GFK!)BuD4(wqhh8d#Ok5WNMprli%y?eU9+DHwTg`?kWZ>a-Agepf(p(y1vOZD2>n zeRl4Cd#{mhM&ebQ87{yL&m6ZMnE`hie(G|#8!&a_G7RLN$3mzwJQn#jz!!8kvE08ou+At{cz^dc2p*+-Nu7A5Jq54#U^| zLniF zaOaG?7jWmGALm#yM8bLR(3#2Jvd-=CT? z)mj)zrqxs~?&pHsg^k0`h#D(l0j>p_ZP=?IZcSB#KjerD*A_^FuPxzM!uc0&g}OSV z(jU{%2hh6wrHSH9pmhIX8jE1peAxklbGHj(H(@uELfVXMC4y68#bPoGvvj*{vs6EL zQ)^*U&qdj<6>?DpjuV+&8`q}B z-et-r{%A%^-BM~fQ>{}UREQAobf=tm;X?h%4DV-9QHKY;ShdU!tYdJ-9A{A$7lM z&qw@cSR{A&*)oeaFc-XvDNCpK9`pXfu|nmuvv-KyvN#q_HWTW#u7wK^Me-FG`BfnM zuZ;j{u`iDzxR5J9;m}nCuu1zwB98;f&9UM++p^+%i1NEAoQ)3m)=Ti2o8(0;Y51I^ zrGhmPsGC+cSSsEwdY;)br4C-SVbo-S`?>ijnaA!~kAa2peThmJ19d6{LlcDe<-QlM zzZVnHFgoieB0}J!sWDu1e!cb?Eeexzpx9msD(aw)R6KR? zgEgYZpN(ExDJH1@Y2!0M0u*>U5JuvIs>o9pcBMz95YW{mvznFN$DgAB=q^k4Yx!>ZrG?Q;TUodo4w{ zxEuuT?lO3ZUNB-{H7HuFhfaCUvf4fam)>sC&3@FHSl6~~caOyIe$h64w+lESBSEFT zj<~rP2yx0IJayg&OWqGo;OTQ!$4UA;b+s^7@GkIv)=7mGqA0=|o z4|F0Qf){Q&8zKtc2A4=2fsc%pgQ8JmvT1=X!DORf@sXTi<~3RD+b1FcMbl#5_6X5~ zMypESDA5!>COK1dLY-bLgnm7-u4M~lDroJ7DO>S%GQy-OJElf-)0Ld5P>zW9do-1C zIXc9-9i5&imjgk*6S=6EFvEs87p3skX6#h#@L#nTs+^-={9-M)f(mL^m(4-nQoNk6 z4xeHWxQ3`uX=5XAXa+;vL7x5D2m5&+oWyJ;&IKAx_$NgF#lEKz{#Cx`7_8*!8+(|P zJ|SbXdzc?F`e4bJd>MQWExF~&*K0ID9G^Myu^A)G&$lmrQ5X(ab(8c^koj2_mf}+J11lTV&exwFJ_>7*hEvJg~AQAjv=gWy+e-{8Hix}j0fDnU}{-G<6Dy|CQ`FAD-->tf<|@%Y$p9B*k7be7m~uQ zD?vY@g=|;A(AuhLOnWLNP{C?3_i5IiDN|BN15co5om}Lvq~Y=`LhI|NSy~NhE-tFv zz%eF1i{F*l8Y`#Dos_wMOQkb+9Ss$=eVH*X=&gjO`A^NK2ps1K9B2L52qaPn##0Cw zO{VPU@(xRa4bJP*7)@sLM3+@#9VJuj(-;qD@E{L< zbSU+uSxe;576!(RL6QyM!w(C@k z4#OLAF*OWi6IU_w`q@tktF6Bi?igO#J!wP9wuWKWG+;pq_EmG+uTTT5h0UT2ce4`8Vf_^6H<3e+B`1N*T6|50i}?ctQzAL~X`K-kGB9{pR{mfV~7VN3et zoD%4Pp0eeZgTl#pxg5r#6;wC~sb7=jE_=*(v)U__hB3HQCYRG)*cqxARPAt*B>Gci z>YO$yLi)Wh?>Rl6;(Ix`#j;0XP@QoJTl4pBJwDphuXM-nh8j1jdGQqhR@=hIC)P0* z{uIr=o4*{F8!yzZ-AaeMcri7bk3z*xt_OxcE*djgT_n(R#0{9v5K$==yBy6Ek^WN@ zsFulH&s0j5s^sq#15+KV#m3}2nbLLRQwlvTTKdTtrC*oQew5B|+?v^`{Y&%&YyiB@ z25cK_iN)In%mS+`iAwlrW&k`4!g%{Xv%F>hhvZYeXvDWrWGIRXuOGzlDp)+2P!#YJ z^8ayFumsy+4El1{3Y@lS!1#~m;c;hr5fETcN?Q&a)*JfGrR!%X4%*sW6UadC{jiJ zkSXQeFdx+^(Y!vua=h^MUO9Kse66!3dAzc^+d?K6^>2&H$P_@0r-eIPEjOtF8;<~EJ; z%4Y9#?(S|btX|wL&fJ}Ck38&Mp9D>9O8(SW^F)J;$`Sz?B|`u*iUbK{)DP&Q@cs}g zP?fv|#4S7cWU5!40|O%7vE?xt(!dvo{|w_d)q~uQT1x6>`R_>oAusITkGgyuwS0iYUckU zNvVV}Z!T)3o^(3-TRe`?ubJTs#=C*WZH4N#6Kx^wO%!I!rqopW7O8hz08eTy^*KkV z*R8$Ymp10~?96~sBi(^?wI2K*OG!4wpzd9P2KBfTAIP_KP>+9*_87HAK)!T=s`K8s z^|Y1XppIROf|?!pI>1{`>tiEh5vGl$fQgU(-;qF#tp50#e%Soc?jz#ba1lzvDN&`d z6FY^~o5-%;FofUyd@xd5~$Grb6GuULm{lTBNTtVgmfR0rD5L**7 zlK$#|rOoQc249862Y^z6&yIkg2$UHFPv9@w1{=YhvGLyhe#Fvc`;VA6+n%JuouABp zlgwgU`FO_nBP=wsROY!wWIlkC!kh-pFEplw(+9v5q}bv~)uwn#D7$%S?UCciTUp9U z)g$J>@|(>zk^DYYwjEe_iYu4bU;S#SF_1k_6JJ4!jr~B18TdeoF+hq{hW%v*bx6_p z0D<`$AoU5hxHGIT@a&cUCky|pBTzE?7wji(Y=i#8f$KW^v#eAKT>spGoy_d)7j<** zT{xr_yMS*jfXVC8d6^qyMc?%B)t+f%6Rl$-KLXDAv%(-G$EOlKh+p8d)!>odM+@G< zJPzgw_Mocj)E9+8Ls2vtKq{doi0HV4J6r9&8+D}8Wh>%9q0O4dhFXOs2Y^w5FOK*^ z5vVZuDS^L44}9bwG0?3}>iA3SG>Xh?r{RmoZL({|q}cP=?ut%4DP4xb8?7#!msy?D zIuqNr-^+mozoLMeM&LxC_pm!hD&C?X1ziLn1=>g;1vJng1xbDigSx?Ja)3}mEf6=s z8Kg#K%O6DC2PgpODWDVwVMlmpX?tyD97e0K{u>g=$`ASUZ9aq0bSD{y2$*xE2wUE&OXI@P$S(l)xNvhM+@Dy zG!7@)tVwK+Rag=Lb`|)72ml3?{2+XS?}u3SO!Y!)FS5ix_O`QfbkBeual=0(0I>p- zhM|<>2_Y3db+hFC*!S}~jmEfcc|4ujkm@_=-N_b4~3dORUJM+D*F1E$BG4o<}js3>yZn-i9-s zvk9brpl8x$o_lFU{|IC^e3q>I-~Gx4in(H!Pyc~suy9Zk@fHH1m(cnb)Z6o(+h*XF?#MU2Hzfr#v<|CgBlN9;c` z!ABe}ngl9*q)Nj=fE>V0!4YK2&cHIWbK5Z%$2ib_?e;x@RvzJxRa-4stg8lq z&R+D95>eUDvyN19ZO?M9^Lj$Z#n1i{0tF16XtZAN=(f9Aye1z-J%(1d!krA8x}`a{ zg%tibQ2t<%IE-5RX388Tq5b|qx(i~^zgJXF#x|kf1c@;YE``a#w{6cbnQW&iIW{SV5u zen2V?wvoV=MEoa&x4Zt|LHZvlP+HL9Ec@ufy^nUF969!Z^M#z6x18&kRCCdoCdINR zQE}wbH>#Gl=AW6jPu!c4D;bz3EJj`d(Z23T)Q|LT@== zB{$^q$-jM>^YSL{h3G;bLX|e?$1&GWi2{B*i@Co%30Yau)Xu>TnmC5B?TC8QeS{T_S=x zHZKUJI{3YzYf2%`QF^LRg#lvwqex8YZer`liu&cuINQq3@5uAI&r4tTXE9)Pp)TWrf^*37R$w7yyzf(cEmGc3UY{AfwXIZSME9dcwmx1vvi`G$z^iU&&>M6A!eQlf zY3gy2my2(eJ;zTxhulRtyrRopgBgB^_VA--*Z0T+cUwD@@V`VC^QCLjy+uxp`Tdra zP`#oIhnhgxP?>P86zPEdq#hE5#=!8V?$z_jZVH#qCkuzpm4f!!OpS53?OIl9Z7%dz z4~F(+6(?kmqQa$iyluAX3x?%9q8S+D8|f(M_sp-1sIOtC(AZ#RkPrLkhAie5ww$bJ8Em0EHXrinkUqg!O{$=A3Lqs(WTrA_R&NF3ptTQOM-tZ~%na-Eu`An2! zdM^7YZ99uaumZCj0PFGs6?Ve%?o)((FGKH;_8>inWd`$KOijApZJ{&<%wX4m*ndq$ z^HVmrPR`cbu%!a#UxA1F*Oxdwc5N)u#Kx+@Z!DRsVM7dnK28NdV-7}{Y|iON4v(A(}}r_*42^0!m(Evj5lLbVA!O$&5V&d zJ9Z@IIN5Be^hqfK*_mv%nZZTXH=~MM7r3UC1+Hzf6^mbYV7;&*-sp0Kum}A6G@8IH zM*c>t#*VBn&9+;6VGLKWs9^F>rHcoqEa|ru0}poKnpDvq6G#+8O5mcg>R&D_s4$Yf zIjHqBly(ixP4x$dwRacJTW5bfD$QL(d~XP#hD{6`?wSOH4I#tDf3n!i=^8m`{j#J( zgZ4#}jH2;p=SJ?+mrq_T0~>EXA{dlt*4r1Z%QRFb`>{5`0T{4?r8c6VtqMZ6<>(IN z#PIW*Ki@+eR_wZV@EbuOEs&()c;fq7*SiUjyIJ%jZ%l<|+wC@oFgr;viCI47OBh2EBz^lF zmF10MAGMM?U{V{oF!Y7(Yh<*o;DIw5T;*ZUgXYb(Jx30=)_n!k&EWE3vg>2nAO^`& z7ExdV+F13p<0rCJoKE{==p|?w7mb3eCV^dt2(X)*)j#-}LpOp~&S;XN(&DZSE%_t% zG%Ys3NVf{2EV}#t29J5bvgxOch-vRX)>-(lUoEk;=X>;>e^aCYSQ+#zeZ$_om+IPD zj;3*hFQ9U~ti6Qc&@~v?uDC+hqtOoc>k#Cz36%j)g|yf?jr*3KsB?iB^;@>4{kt>6 z$NJOLeLH1^(i3O!$%^3-8n#v+0$tG~}%;$WpFN(~=}^FUoD-^9+lu!`{X}6`mL=#hz?Cx0*vJ zmHrt>bOD7)B~6paoJvgjz`c8gEHUXyCG9<;$~wB6_harWNgHDNZ2`Y6SFl$xp7WX8 zYYJ^6ke&aBu*c8+3s{O*01)Taj~!XkSNAw?bvg=c&IgG-mahU$%vIV0sCSEqMHmTk_;38&mFD4(06N z@(uqnFf!5852N<`95`p)^j_D@oXu*|b8_cuKiS#b-q3e5km$$6OXsb-4F03=x$Erl zkwz2NQO%+kEM$@E`|u=ocAS10EEV!~>*iv~s?&|#k8f1t|4m+Z~_fV-X&#HufFk~I&`M9JwbfoU={q*L9W zrh7P4F8p+NbIRiMH5AyhoiSB76s1UDPSKUF+XVn9-x)of%^cqJhU5PJ>1pMA@A|KYox|Hza=XEo+2-P@|>^}3)f zi{6@3)F``6zZ9pLWwB`*-p55*6}Z_r>+{)6)}(c81eFORGZ$M{vUPXW(4#XH=^-f( zJN2SE-qXB$F!p8}fm^_g3=ZYV@|FLE^SzOtq9s~?_b+cX*UOUa$U>ij(37?!BkrrE zJ4UBISNK++*%Ew-U*AN}^vNA8uL`Qch?`ofNHsMDUIy!1 zD(4vw+1PQ&gKRq!Gu#W=sF9Or%mi6H{JgD zJ*~i=aeS-OK(oNQmZ!CVxjf(v#nFE`pP4$x@%KKtL~5}%2w*8Y`)oV8(sh- zphPFGI)cyTzi0_u*E#%#3;HSpCE=@w4_bf4mK|%s^OzlIx8`<46~t%6hlurF$7F1 zkTZrZbl6hUB|V2%0`$LUg+G|v`sONOTpyZ;Y3XntU*Oo$PlH>lEy8y;ZKg_$LEhzr z_fv{c)`y;HH7xJCzCSR!LVnlseTV3@<6`T?MHRr7i*Ef}3T2K=77_OQZ`9j^O|yob z>sn!ezKNms7>Wv9>Q3uQQr6bgo`*F3AM3)O6tL-CspD6olpLx^pue9vjm%n!_`V*Q zG`sK)`)->wdqB-8z9QbNAc2QHoE_qRf+f2cpvK0|X&v1C6o5rH01&0f^^ZE0AvOn- z=rU|cz^lky{h_XNoky8oZJB3D!x40_diU~`|5Va$qXu|v4;q4_ONQPqapYJEV3(x` zKx5Gn8NWdG{PzC45Dlf0bZ}Fp#rjm zrjm>UuxFDJTTVG7p>;6Sa{P;j4%bbt(fBntLCSYJl@`5>b-6?`Y8i|m2(B`tYnS5%gq9dd9)fFa27(XpZ* z&6IV1zS@L8jxWdXKw5fj8jlRxewSlrITI`*Pyi$kt)W z?L{@vQHxeVXa}iqG$VUln#Jb)&rQYA_7IN}| zFS{_1I1iN5XQfjK+Zm^bi4P1NbyGvJ>+FAEQ^KiNrj4`PJ~NB7q>NYK@s9N-a!1Kd z5ppxhluBJh4maGaOKb2g+ex!g{W(kcrC8&ry+SD9E}eSwyiaI~VxBiK^$z7X5oujK z1Tlr!-s0?8VBw+>t@R0}Yc8>g@c@i>hPNX)N$bs9O`Iw?YZhOW+BiPcI&_s1eA%Qb z@`&-_d0oWMXNE74+vPV0N3lQ6#P+tXQQW@Nm>o%`v4(UWjxv?tqrg|?Nw?%JwKj?G zCH4|pL@Q$0)W}qS;>Eq}FX{RRPYt%%k5$?v7WBEah(H^oB|0XhCz1vzzlUiRG#x;= z+|ntY7$8x+1m4o2sJSX=75G@LmnDiC3#+~h!D$t2v5;6C=U&r6Q&KF$APEnH#!^TD z#;R5!eJtxaiK6HX2B$vE*jiddZ7Y|Tbeo_Jf9#V%8yNZ22%i{)0NW+R+}d1|hh37L z)jf~33SKxs`hv9z(){5M40^new+(tga{$s|dFtub16_`u`OnwhK#x((89Jv3zUP46 z2{mo~NE!wWs?&T1SU9SkP{Vf;$CELk{kY8Et6=)&#ML+Kjhq8+D#zB@ z-lK>Knguxhf_6ww!6~7D*X5z8m#|9kv{(FNgjOhq?2*??%EI0Vf;H{$bU$P31U4_G zJ*<9_{)ylA%o{k7j#g?fy|kul>Geo(92#Wl*CDU=TO6aM?D?RZD!jbgmS1e*mdo|VWgHHx5Rv?Sy{v!loJv(^J`?o zOx%w3_XCZ4OX2H{xLg{iofg0Dt+}O?4%eSwFAp$)*k%E4(GSMtzhH^B?{|dEE!qdDDUq-(+P4o6AiaRbGY{%7%gV2%r zpT-W@>u8~beA0VN+qch-l}xwc4FxT(jx?gYy*%>Il7z_9b*8|$&#w)`=Wyjme_aqG zzayIJyr3<6<->t`4;c*^Yd)KB@nO$Z?9=ij@H_C`ojx40_j>I#KMH2@7@--oBVsGU z{j7}<kS78QK%hsWTc5sTr<9Bx85D|*vJrmnA#_x&=D444;=m&L}3D+06 zIVkGk$r_Ax>d?K{z0KctU$j{tW&+mEBPuJM*G@JK)m|JB@0a_}4;N)`s#ZBBPjQ|3 zJLxVZRu&iYoCG`S{8^eCN4`7+Hl`*@XUdP|JdeesJ(eX}_j4@0_JPU-1wSKO@IbOXToeIQzI+*?(4zM z^584XEYen9$&rv7NQ7PlcKC-~4Q#2HixzZ6@ySp|oh{Gz@OR0GLwjB@IuPX6mSx=C zw{*q=gBKRe@BQ#4kalL-K>bx_AA)zTqYlyzSwl~*pKtCkz-n+)$pExmQd6)ui#f>> z(8k`c6Iy(N0xyo&CavD8{Z2%3yC%Oo5q9Zcw-7J!uvjuzx|yI`jf<8RuqrtUOD8rIUuTCv}j!3ka_W(X4xQ zdGi@?cGsy?FQeY=l<<_Eavo}-yYG~4q2o7BzH!dMamhuIL!D;lhxmqNoQ@yvM8nZ~ z_KI$xxdXv$R=R0864?CSVU5g@Kva z((Z~(Yun=mTqJ{-T_ygQXC7mlkQzSo)DkLwxh9rLW!9Y$rl|oh+<0=%<(PpLUCJv) zc!hAS?78htSKe5eTUyOhp11?9ru0!|Q zlp}4_lDPNl>%A!hAe%|--F>wcBPJC#YIgFM5uGn-uoCLD6XFQ7tFJxQju)J`Vto;4 zTq2bFL-04I81AonJKZDBfrZ0AB6R@ zF&nKR1~CU1^(4i)@dUHQC#Ht$X7nVz8=p;dHxiW$8q1`$8ClzBus@5ey-c&*7kIyb#0^2$!h@ zs$fIXClj#h_G9#=z~@0GLMWAimmTt$TCr;NW3=^nhK{@m5J^Um2M_F3PHE-0i zBG0`$Ao)pA{}gYtR16bI)_D;>#MD&D0Y{99s15<^-WyW zjq@1M*z4~NFQs+LCR$U@_HiP8@(OVaQ#cr*y$PbRzG@>~ejko_EKeO6@(?L>JQ=P}!s9-~P=F<&Nw`aiO$I zS?6DbXCglvb{N&~qropCTQ`bZrG3i5l}PUwNLEkEWQ8xqd?|ZP3DeT32-alWb)2(U zOFn(T0lh_+$Kn@}GX>-`_Gp+G;pYrfDQwsM-0RW^iG-DSuae+<1IaXL;d$;Mfnf+Q zX~y53jnlOS3}IUeznezwi;s{zKR#|C`q<2`|`= z>`QUz%^p88)rFBjXqR@s^Ji`v7xPa{w77JHIVW6=jw&7A!4PhF;co^CaYzhK*1TJW zr~m`e!FH@ER}7Kf8hu(7PSzxyX>xs=S~(&_CvOr&r>=kXBarYdo3Mw_JT{d)m}ZnX zr>es+Ua7fiB-K+Im2Dxh^8P91cJ1L#gGi)f{Mc;Hr74=z1bB@$xmi2l&Lo5vVNxvnZ5?^VARuyz3=cF6AO$=Nle=i(*~1~VhKnF^T@ zcyh}a%IVISDiP;iK0jY}OEkUK=7kT}dOV^GYHxaeWX_P@J=REPbM*z=vVd>pLCl}G zDLbd?w_(M5u%Ai6BM-bF1l*5Vd|5##2v&GF1{MY1rqGd8`eqJREI0<__rE045z-K> zGdj*sb}*@R`{6EDbBV#dG!!A2rfCkvEJ+LaB7SR;P(A+y#GZg3Xu3A5)(A_aP}{eTe1>I*_tBczp0b|lb|G9BTxMI z7!CN(O+XSL0zJ%McCG(Jm`eKjH#84u&_3)Me@jN5S7s9r#Ju<)*bGE+v}5l?f7kpW z6a)TQhu|jqyd)M@( zLcjWm{%XNV%2Unv**qf2TfH^6wHxwMzIlCheA_*I%#VJrF(x4NQMbXUangHitv*>5 zc(cTFYb5n*Bz0>f^lBt@YozpQ9P4atcI!Fc1GXOmHIs)yO8#EA`y7-;ATY#W3?wrP1l#32*M{LCzvgB%NbFi*{a_n}u za`J!!V=QNqp`|04mNL-y;AFnY>6QGI$)%Hrl|C($JNtm`<@T28 z)qOtRK;8Pv&2(&Ff8Vrls)SJ5`eoGTK&LhwvUK%&d+XS_c2(H7^cNLP#@bfsNYi;I zE;qt}wbj%KcJwkbGN-kPRO+E^C$OCRbR%+oH7!#*@M}S|s;4XRYrB&R`%6aL8CkC{7W`zBYG)BAbn>lZEIyXX6t`%}}-ov`kYDVtLIogt^;ywhY8H%3X>i+iJ* zt&pV}=Fj@pcb94{YV6#AwLTfnnhPwT+5o2Py9~0r8Sj#1zMw{#_-m7C^nzLRk7GIR z3N?n)dSg`36_Z-nTxP?_D%BCLso(o}L+I^U^vkMk+Kr)|fI9MWwVV?9h)r)@4HmmW zeGQhd1o=p{!Uw4zL{c}XH*GeVC7Yx68aADEoG#HU1HQ%0mTVU&7OHfacaPwPL`C(-5GxoQ}t0)%|Ge>7FW|(QX{sgheBcit!NNm6G$dAj8r^K zW)P{66-Ou&uQ>dxh=)`>jjS||Q|h-|0*yibkFv9cC4d$6s9M*NC0$z*YNdVa=^|k8xiLFYRDBZn>WaOTEzPGt*AT?umTcF^w-j@PkOP|lPrBci7 zV$IWspodu(*=iA%%I%P?(ho~lBAcoo;solIJr_L))D2z)o5vE&OIOgI!?1SpG(USX zW`|C&Pw?-|mcd9w(&#J98jV2e-8Ps7kd*%l5fus&l$PVSm5L%d|7=3$7K6GoY{Na3 zkp@oyfZq3L2MS#eInx~jr_Urdx&n@+ZusJwm2$n9-cVlAU+XWG72aHHJ=8daLR;B4 zAfFP^LFWZidGT*QA!FQ~RNDU;RJ}aBIx}dM0OELc_g6Civ2NxjQU!h7=76T4arXBT zxOtv?YuV|6yA-o!;>GX#STT;N%>`h%7+m|j;!>uEB7H^7AbnzxacXPxciH&;_9xK* z{-ZHH{huTP`rKfvn>>2_0pZT0WZrMKyBCppai&b}-wh%5p?lT8C z?3q|n0%6CmrhmJRtQJBfLtGtRP_>|IwbS{xT$BF5BVUy7&os8w->WVR;m&u7QNBJH zoxY)!u0Mvo$#WxhRx1n!SD8j(Srwm@Bct%pH2P6J<0JYmP>V|+`O3E~ZSpH5zj7}+ zHBh%W)rCweA4$d@e43$v|5E{hoOG>(hriO)GfURxM!R(Gpy+w5wRS1zH%ch(DY?4) zO1JsSGYZM`X@?(4ha1O5NuNijioN)_4%o3PbB$R!ZbeBIojRrNbe*tmYus*_S$(7K z@7diKh{qk=A*)4v@v31ssyY3qy zIsP{ff_L*=M2u&u;Y*^C1iyy|51Ixe16W2gq>98~s zf}S<8!^uewsvsDz_5AIn!3re}wgNS*^06VuF74fbjI(SX=t?m@;p?iGA5f{`v(v>k z+;>WWyaTYWxnOvdSfuwZw9i@zzUKX*bFJq#xcBt>L7msRLVVdh;M$-_p+2sVU6*rc zp2q@@`_vx4P~O(`VqWvf3k-eG^}JANoX`8yy~0`jNcM{t5aOnC>XrMN!Y+r$&YnY;UwL#(1d-A2jb4(Amj7@ z(HMR;I8w*_N#D{`&&yV0RA^G4>U`Q@po zmeT*hure*0W^GO8{WMQ&YqNm5^Je_|K>Pk_RjhqfAOiLd zKK1J>0VzE)YDUa)Zcoj#v}68&z(Y4@*&g6}20xD*izf6V=(SdsMsH`30F#3})Hik$ z)6?svyey@r}gpgklq#BuifbCFFyS?!?$DP1OD}2 z{8c0ObLHN@?InwlPC;|WWrz{}y0*QkAlQ%y*4& z3|Wd{n?+$@qD>Hl*0EmAn@px+_`1`n_`cgmmLhD>Xn)`TNrWJfNwiTtr9a>8sHlA3 znYM>@=d9oE=b``7e#xjienL`#VERq0xc{Pd{|EIrW%G41Rqf!_>(^tzE1rW9S1z;% z@Eu-LR>oH129S?E>Fo-tjvKrv%A+YOc3Sr^*{EqB>)`T-mB8V7e%rKRd%*7|ZQi!Q zZ=Eip>A~Tt8K{pKt0_;_O%NXCB2Z3v(&ML;Ed%a!ap%f4u*bi9-bro)xarsyz5_^V z>8Y7RCfmS>m9sfUYw^Aq*-8TZccg2_2kl}-b;VuLUlr5=Z=!CVo~)IhTc~x%=gpHn zz2jM0i3cO;kg(`p+T5>%rEqH$n9en=<43g%r;{0n3MLNpup^}k{hQst% zaXpErKPA}JJxYVpjMEg-diwXO{wh610-eSyoDrJ#0jo)V&T;CX31>N7Mlx0-!+xM~ zlyS4x`xghrsI>;SNnW1Sbn_scwwZ^|G^x=@l}x9;+F?qS&$z%qR|pMC6HddMpctz$ zCs9b1Oq<~fFqEcw(rQdlV3JVF+{<^&bplQ!!+D?)9HViLp^gw5ls3%TwsWSe$PWgz z`1)SfW+~RZ^ZgbnECpqg3ctOQilpy=Hq#4BuhRz`HXep+Q?Lo8sC9F79Sv$ily+fu zu=QMkXKX*GWkdCg*>-ZYM%uT5b1`U?7Q0;&^{#YhqIwIArtf3{PJ@Di*=o^ptdx9# zAWTfdChI$cWp@OZx{GY&U0UuCI%ajT%D?AB)l|ixdS4w7H914Yvznl}Q$rog*&}!@H3l)AX;ujzeJi56O*3dMB!Kd2chgMx{wryAu-fY23G37?T| zrZ*PK!-A4JaD#%THgLm&bJw~wAitWj^*AEvW9?xkw2Kr|LKW0Ry?8q!-IW`6P*1CB~UO=#|)9U4Fxgo~)QOg;4!-CF77b^9}gyt!O)iT%PRKJW{ zD08o*GIJW_>wwS_RphH@AC)Hs=cqz7o_^Vxn5O)u$y)Y6yHM#Dtd#ui?3xTOEYya0 z#k8RMc#SOJ1_b9W^xvne)qXA-6YLPe$ApHJYKpIf8n1ItI?0{*pG2N$fq{)4ve#VaNS)W@o)1Jofpx1&Pxf9IhO1!F=SO7MB@9Ovd7 z)>o(2rn=dvZ8|I(H@D3ZWJ~B+Hkvv1Bu2gumn|VMp}rfrY+F=1taw#u;!nTfALc^T zN3*0!57*;XVZa45Jj-IJJu84*^pDwf`3;dO7w5iU^A4M4_1&VphCf%Gh*uddMc2y> z%>-((9||imefrP@Le5N;TmnZF&L$fP=8nF<**Hv2j)EDDHnNa%4<3ur$(>UCiZ|5H z<1baUWE630M{oT?SW3+(Q?(t06aN}e-f z0l-%fvVZuyUECJI*Tci3pgCNoFGjwD%8-GvnUKCh*n$6j;kV)fDUIfnZOD~OfnwK_ z=g8=l1O=p&N+)lplFMXEr$BI;C<|nCOM?SbOQq3eGbq9TFCdmuZPy@?JS#b%;J=nk(X^Tg>TqAC7Aa{jcIzZhx_Uk)F8Yg z%kBip8x5pp+%2U#m+budHsw-!tG|(h2K;)DV77w087t|t;x`jB=Lwba{0>PDd=t}b z@0joyGybR9;GU1nt@|Ftg4egZFrn6Q0e^?I8o@o#b%vwZj5XqXb!&@WVc#?jKPh9^ zc<5gzgLXue0&xNxDyY`BmX^-cnh)MOC=bywyTrt9{BqUY&jfEbHa@hE3uC=Jz4D}V zmKZyPCpI4Og5wR|)|V!-MrvqioOoD|CX0w`$H?!hafu3B_R z1cH@cmHq`#mbYXB1%rV`u%FQT!&waiSf~{V=m|lPc~|6Y4iBLJ@<2H6dCn^-x4fDN z_q3v_EycN{o`qiu3EsZ6kuvM2STR^%x(**&a=1QOOJ%&Qog)Q3aYdz@G9{$l8Z4OP zpY;Qyf!t$|1j=V0K`g~URwDsgN@gd?!N7BTJMp_gQM##>hGrNc4sA0X{D*>Ds)CWU zRD_X1rj&}CL8Z$SD@{pHDRy#9+E&HKvmZvPRbV^5jp)wf`Qp*=-5l+!SN%Ni`&4{V zj%>}^J(UMb{s7;TFangvyKXbA9A@6-v0k@QKcRQqhP@d=Wf?mdeww)%E+LSCII@}j z_8aby@x)Es*ptr=ukWUzezqoVv4$nMXTx<O=TYQfEEE%L{kN))X}MxbnK+6#${AgF=3fN<(Z79IEVHgJ!=5-^9+CFN ze$2o>8aCIk;|Wqj--37)|1no5VY)n3w9$x5<-H z97X|mgyaM2+7kYk2g+6GcAH1rTt3rpC3lMne;Y#c&?N1D=C`dl#|PAH!Jwe_5O)=* zE2AE2nwE`FQ|dXzzKzg8rsm}8)(+8o;8xo<1ihMx*3uXQjm^r`UC~X+v|Y)~lPy7D zzF(T>bGC%${u8#IF!gTG`zvT$|0T#SbAJh71<-# zV%nClRx!jtrU@VBvghslXY*s_rq#w|e)hbs-@?)Ds>eobX~Gx<3T8jjw!^Yyn=IoR{Kp=fYV$SgSpH)fe1Pp!MbW8wXg!9S0%liQ~pwfST zOzv#b+Zlo@{UR&~n@VVmIxXoAT}Pc4EeJuRjm%ORV`QM0`}&*X=Ve1pYYmTW{xDC{ z*DOsb_a#?koP;;}f-eeosv2&x<)8^VGNreBYeE1nrl&K}8as0)#bL`qXFQE?I@}Dr z)s%)HywH@=;^GkMQ!O%qiT$%Ec<)>kG^Mquo?zzv2`q9dHY=Lv0K&2#wc#W-S`>VW zDGQ0-C}gE?JIUy5`))=s>@B!B&P9W=VEJR$V?kIHi^6-X&_!SEjx7sKxW^f}8YvCE z%$A7;MGf^e@_QEqV*M@nfoIxDtM$eIZH_CH(IT%h1i|JQ1eS0XtwJGJ)&zFw)vMm_ z&wuxY?YPNVYjmyjs)KBL8L~Xvc-tIWVe3Vu6@ETyZ}pRYi?o4~N-KehPO>%&tgnSv z!FFb|ZOdOW+g$6j$wR&X5F)q;{_2uRT566(qSU{K2u??!fXz z8(QaZ*Z$1Dc{4+t%1+>N_@}hFI)O`u3!rAD)+N>%@u${)ifj`X8IK|YAx+Nf8_#zy z?b%)r>|2Icf*?S{VSm8^=YKt6R#m2wDcwR93Qm`yq(4rZJgY~@NNA6rzle#mGLv;P z(^==Il(%i}wzF|9`jmFzka}UIa=Id8k{1)Wz5XQM&Yr-98Ji!*>WeyH$lB$YqYuu0 zD4W0|PQwEVn{i)F9-Nklq78vmMC3z55+?7@SRg-fLM88U4g>lh0j{A6f*%r937Phj zq$tM6|Egb?%6ERn#^fNp>r?nQTgeo3gXNe3Ude;^f7NoK92R8+HUL0_LLPKF&WsVu zu_lKx8Z~RU>=a`0XAQ<^nz8U@;w*28r$2Xo5y@>U{ zEcc3htJsQoi&*~7$-+Mx54|6=@ukp=%gRGIUUJK z&r`ql1AhpLUKig+w8wRkW8|a%AK95{_vIE`x_7C!Mk(Gze$ zr%Zf9fnRRB|K;Y!z&Dm2vxEz{s_=sHpwx%_fL!&(#l|<51bf`D^obMcStXbCowfbk zWZIMyj|6MTh`O|OqZ>25Bg6kTeC3G2?no9LAq7EN9ZhzGRmRGKeb2S3A};~oxgT-+ z>9sE{mbYr#-QjR(bn5LuID-!82aEB5KC}G>C$XUq4u$_uOKE4!(8!j-QF~s|gE$`$ zeTVD=KL)-qvBsKay}r?oU_E*Cw#GPN1X}_P&`B~?u&&%#@BdxZt*PAj6hn%w`V32w zweZ@LLeuC@JWjNSG# zfzUG!GIXDC`Z1NbzYGd?io7p-w$u!Xh6`<%86RsKd{{bK$66TrlL4ge8G=digLXK( zxZlDhd5|mzAZ|e6|3?<^zn{L$T}rlia9v8*X_f7f?;R@TR(KsmdQzQZT-Nw1y4$SU z_Sn}RwPHJ>9wGy|o=IZ*`0D%ig9@7?-)kg_?XVh%_TZ`zA!KPa6I1V}`ueG8O_AKw zk=kG2`Py7o0H&|}de!UU+COnF3qc_@n6a5W@%@Aq=I~|ymFaIgTi71yV>~(S=+GG$ zJ>Yh(BC8)quP(QX&SL7XO)HMWx&k)z$Rh45_%mT4xC()rP2Y%HDf_iM+fA;*pnCXu z&6;=4_`7od#-?!pY483usk;+1>whVbe$f3C2uCrjaftw>N>>%BOcAskAXwJSQ@&g& z2I5Y{Mnbs&Ip2^ZCFg-m`RvFbQ`dc7hX!KVd$i&Bw+>CFm<0#&#}rd(Sf#tCUDd+W zLB>JD{Fx06-A{)hWNBfeIQ5`7G}EHQ($vC7QL2s1CBpRN!x6$lBGfcB6}M2@-y(Bd zPk|eyWi@7l-aVfd?@Nt~z(_?B9?ktygC5l&X_nJ@DY*PbXg_jVUGnJZVWFM;_RRq#5QP%*meZ%%yN zUAMn*X2w=1-Q%X}&O4769SR!2(3h?1>QxQmk^y85s}}6m55*gt)7FZ*9OHV}5g1RC zjPv5o0h2(d@jl=`@>OHr+#R~``c5tqiZ}IAsYE)C7P9}FW(u`5Dz+=TJ=!9b)5+$K zJEhfRBWmMBA_dKg8o|&ox2gEh+_q|%ux6^JoR3NTY)E=N+60ex%C!jfXKX{rLR8EB zO(&sV)KIHC8KaAmQhY!~iT`N&5s7v!LYuaDF`@>!8D6okvM(QlIoF51u6z2byQk=T zRa@X~6+DhNY^*qW9fv-oFN9F}TRD-Dy|KqCV>?;Dv7r*?1Db7-vBz$tj{dt(J9V!< z|LAup_9Tua-b0GTU(jZ-6}sp_j?tUdXaDlEpkn4!4n=f66praKvSYuxeAYjL-KuDP zSKiH%_41cG`)ZSCRq32a#b~Tqj#hXXpX;+POK;)Bj6K22lSrVV)j|EM|THeTCWClg)aJS^#F_c{gSQ!--`@UX>Fz*j(l#nIJAdE5aVcl0NuCyDV zANC~nCDfPo73r)m&<|-e;5NOPDzKHwK@5!!Gj#Lw2FYUq9~@fHCH-!PsLA%c z$AqU?uA2E=_!lHJ(fp5(>~93)(UonLm1Y{wsE9eFc~hV$Jayuz2yvzy(O9ZHkrfVu zzdzU(Q-ttVdcoj}Ad$k+O@MGbEw%&*AT!DRDm>pF_YIBuS~AE9?FsASP6yAZoWqyI z8h)fe%ILH8Wfw#GZLjU4KL0KUcDSsPe~UTH(GSc#53wJAl1QP8WjFItoQL%_oqCR} z+C;C01xh5T(I1q4k$}a;c(?AWvK}sn*kaYo78hHbRSToTd&2#+52|jXj;EgS&&9db zao&V-L4P1fbII&O&U0NjOePP_P=X9^CS!hJx}7RG(lUv*&YZRwy!Rd7LzaPuack>Y zd#I`0w*luFZ$E{0 z^%qjp_7kQP5JTw|oFUUE>`Tt-w8UcYDBJ{F9x{{mCLBx+kKT(yqJTje=rX-BOodxI zLviO#hwBZiuq$0WW1cqNET1PLk7((Tjh1vZM0X0&iuMVswLBp%S@8xtXYmg7h2S0H ze?ikc!iSR{5SMuF5JdEo`m_%SAnBI%jvnEoZ1)IL4|b=7;deCuM~pkJdxRCTU;LIZ zed^ZE0NUv~Dw+cUgo)w@Pt>r)yyc~76AWU1AbI)(>1=8B= zI5?zOI-|*)*jlvL^)AmgU&U?K_T8neQ#5-)FPYv+DJOg?Brz~J0ck9?x&0QTYJDE1 ziR!lS%?|Zhe=zOrC$OLZ<1Gim@l+f-HE5BfAs>BW^@_3;rBA1Godm$aM=Uq0ign}` z>d$xj?q}R~Xq*Mw1E-v|%FX&X@T`9r^wXz!<7f@(A43-Q*E0!N<|J{l%mJYmR42yO z|5++ByWYi~rTW(Gcz9VdtZl8ZydI5LoMZCq!j{eCx_d#!`kOxnn_P!m-4d5GG~wn- z)NwuY%A6O)BJqEKK!%YBp3AwDt#kwpV#S`^h>3wb?Bnp4kH4%K><6utm_i?fjrAETCZAX0gXPeLhRVHZpZX%Ye79GZ4% z{_r{M;|+BY=|`>Okt~Wf$VWM2vAmA-1Y*#9p3l9Y?G=K%Gt8iMW4s!*?~cZjnsCBH z&!2M;P#J@c0?>r)2Jy_F`UE3^aqdiI39j)Ym~Vyk7iZ=l-T0#bM7e|&?F!&#)|i5? zPc2Jm9YxjHHnqlxkk5EKQ<}?$2f~8XAkV4xZC2%4-wGTBPHXFUndF>?R{#$g03X>;-{ z|2ypuK+F@39DLj^cn!`mK_t*r!^?dMilPS?TQ-p7sQfxU(9S&OM@ouiZie9Q#ljaX zqu}eQ#+m3f57r(t>8XHWY<_lQEabw@ZvJi|AJ7ffAHN4z&$c4YH#57owUTQl%amjK z3~J*NQ+#IeGlIHO&;)mhPQp5eWE&sCjrBPY}iPD8gwn{SK3 ziO;5SS;2c)z%C2gI;bcxJ9=V(loRG-=j*%zbVN;=IBF(9eKa4?0KFJOb+&{Y_-*g1 z0=hOf4oqVk3hg<%fUxPlF5v^HF45`ujgDrm%>?u^9dTh@(v~~1XT9yjc-1^Q-vD?; zd7*MELl_{YeP8fOKbOe}^bWfIqTdku_Z*Jj^Ue>OYe*ivSf3{%EckpyJ^10Dsab+YIf#Yd!vd$eDT&5Ls{-*L{>Dnm6>KLw-zP=L*BN#RO z>r0=~;}*Ly#49pU9)sq|r3Te)Q}JqyZiWOE_I9Zv3jHMRf{{qPDIAGP9vgQtku%Vd zQ8Y~PxQ9l&Or(}pw7-OQSmWRlAqv|R1w#sJO6+s4t35$Vim`=a&kVpAX$sfg*-)AP z2Nb&E2~wQHkqjwGUjWSVU4s%QpZB4^Q$MUzw3GMT7H$+SP(GfG-=Ci$5KuA4p`KWI zG#-sd(2;Fa4;dzg1h_VZYmn&9$@O>&mjTqS0Nn65trrXvLt`T@iETNe;3c>_SMbKt z5pELyiNYmR3oxoSyqHL)*E*5Jz;@Hfa-9Nkq0m8>^x;m$R2mBc84Qzp||ldzM6%ZS}O#*KDK#+SfYfqGiZ zvr2{uXtwC`2I+j|Gr|2(>RAR;uz`?)oAR%HRUSczy=mQyen3@@qrFOQXg0uK0aD|j z4JFEL4h>F>7{Y1ryG$G&5okEVc`&?6DO@Bo(MEmU#vhyWWiKUm45cQ|3`6C0?IB)l zt~82#=L0Tydf*^3)_5mS9A>YsEo>2c&(zW64{Tvw~h7>O`LdnHcno~ z0Fm0?y7cN?W}I8ejdEfpivF)4AWIl?^Z*W+U;2xf2rIrA4^Nv!uSw>E4vcvL4e)0*4a6%T= zs8}|}3kWpC&RAiodPLR>;v#?1QsoOFJdi^E01Z{N4-d;HugA(KW2hjfIrj~2yhMA* zny)IIqcfs0N|i$ruWbMdr$DO@iO@a7Xm4}UF`ZzWxYKOot)jgPT|J%0G9yxUEij`A z&6e9w-r}cmik1v_d>Q>z@7iRq{FBH{#_Dt?GgcD`nE2Yp3@2IiI^r}pn*EvS(1tan09P1lMsbx4CBmfOUjnqs=+E>EHU%xZ% zpld*4B&?R2#}KEkKx9)0koR(_A39E1I?__2VYiZC6^6qh*G6@f0TLZQXC5`j0v2Sh zoe8IOS=3_hix0OUTG6mx-d!R2(0c(~JGt<`j?rz>vo8zF{3kx zmLRM(cxVjX!x+8a!D-PU=rdoi`nm9e#_$?pP>`ipLlnyGBu2U~3Yw&22<_Y2-`k9G zT2Un~od)h+x~%Y-l7x4Jpb%rcItLX@t8@$8=2{>1KHL;FMp8>xst!K(#DAI8LhqMk zneE@jRqVL2tvZlS4CdJbpkgI`1H%YuJmwI=jHgcH&yZF|JT$I#R_-Wn*(=W!^0Lv_ zP4B%XD&4?E7~pu5)Esy&7>1LNE+zyB2tpsJhmpkScp!st6XywYCwTN$99)2_eB4lxckwkYK$$hiHs0 z5kwNxY)`N+!*Q`lOcLSNOctVu;RC?L?bh3foqthlK_Mh1VbI?10u94!Ihxkr3YIg1 zgC{P;p`)D_l+4Y+C%_q?*e`Azy)F39H~KH(=m+%lM?1GjPmp&PSk%$Myoa)H_(eCh z8VAMxC;5mM%aM7Y!Xb_PUbCML1I`N3Ic21)=H+%^v1v?LSvqEis z^f3WYnU4by3zOJnaYctI4@7UNge8wcCozy4XQEG(nL?7w*m*s)*#(6e9cUaq;ir?a zbs6}drP03yKbUgq!G=1S?j^k7nZbI* zGI6~eoR?9YbTVUiFuL6wdLS-8#I-qvHn2+$nE`G6I{NvN&B+Bc!pE=|Kr2l}?=I{j zC7_URm^2zl1gbsQ1b9z7*h#bNX|dk1b=^)J_moHqEsqZns?TDi zfH}U-bY(>Y!mkTq0f)u^kY}v-yJ40N09M_DtI-5`-p5-2RlW9w+h7h&VatR=a|V$+Be82Za~800f_^HpPi@FAcfhi)8a z9G%@Gi*_v}NeEZ)okQN4SVkYCD6iiWM^V%N3;@LCWSh1&zuKm6u`7S0YLSXpr*)zy zr^Mi`f?dDNF?FB+xN3grM~mcX%J~TvQy7zo*V1VMI-1Bah4EsoevjC?$x%GUEsdN> zk`*jC+Vq31>{y9ngViqTWDl7nF0EO45Nqd5r2=h>OgsxtB#xCQBt%(Nn)6d=CVQX_ z6euchlN~!Q)TL=@sWt$4-ba%f1mSh)xsDxosl|7IJaBaM7kFX~?oIbytF{51B>AEXu*GZA624K;^I7T_9I$k%{f(xfq> ziIpq!=cn?d7r}%tN|hz|MIirnRq&sZnBDj>cr%e;gjt=bwUZMzT{~H499x%BM1sdZ{Vu{&a z*3GGrSokA`jP>dy(->oOfk9Ph$o!RKu|0s!*V&={V!C)%aftuCWYAfTW2;QX z!CTfS!U=qIi7vT#4Pdd&eEl!+W$Ut7U%6$L_^>e@6jo1->Rt?;kKILp)bKxyb_EDw zW5-oi5!17l(satg(IG0!4F11K*)FFD{>@`@QcU(2*%SgS(Gt!Ge^J{ZyOi5|KZn5X z4W%Pr-FrN|r`xt!6&vE!pzFwzUO_Aln54?DIUSuv%nb;aU1F)&U# z_yIat!pBC3O|_j}jxPe3@S5+6n0ca4){{U9z=dHDq*+SJC(f@2UL@_}c)9Ex>4359 z7d97D?w;3Z-(VO(nrVoWc&I1OEcVagWJ&eFXO?5zF?}BQMNI+>p=8<>L#T}`scZwO zI`XfG(vY3HF`X7cp6u@?CSoXqJt2iwO36jrSv!CPqxq=sGKW)LNyTbs{fiQ7V8%utitKU*pLe zYy3=rbX~Kae*l6ZkRcdNv7m{7uD2*!BRnzxkp;640etBy`F8KjjqbGD9aKJ+hthW> zwjc-?)8|dtvgJ97LyxlreAGU=LLOQG;vQ)=wm>i2(Ix7#_BAf8uwKS0ZOu0^1!ZMI zWZr?@TD2;QcO9)ZmeqQS`@%iAZ`jACI7NTaL9Cc`#`4jQKu0aTQh}%Y@Io0eL!2#^ z+@>Sl1IgV|T-vH1F@t9EAF#<^^16?p6^ke9x${3@J-b*Q$mdQjwxWM9$6y2$^9Jp~ z4lzpE-Pnf|I4VlEqU;6#a!cgM--KxOZ!C==fUWt55~KfASY0h>uX1p{&nkNF7xx(# zLk&H=n^S*Mf#W6R$Dn?xTUI}+anzSPNOhm|qYwW zN`4t|Tf?ar{BIfcKfd0xS-^^&fR#6yp}!W`|G}ny#r$mu@t^tc7t(ui;*SD}Q1y%M zeLW4x1gsx44Tv=7f4G^F1uXeLl;7s=YdCi=yEyqh+f-a~y+$CV`CnUEWrHGD2Ev^I zc@pBK-(-%oDfovYR|Zmz_d|}fA|%_|I0+yu`(dg*7mC@oXG*U%llvy(wq_NfXUw50 ze)|UclW3FY3Z8iIJ6GWbdeCY=e9_qDMHZO*ie}lW)zWKIlr|o&ZQru(GH2O>JeE&2 zC&uGd;rI6kpuVy94{rBtzS|0bZ9-}halbkux#4J=dH)|8Q*)>pR`Tj*d@k%JO$ztSz&)bk(;k=JTc8f0( zk4sexREH(;NDc8jaPVYbi|r;}vn*ClQ-F@$Q`M`-{kKNj<~b~uONrR;l0z+$dZK`L zYUi$tz4U!Aj^@eWKOeHmQ$>%h|Kv^UX5n@~mT4LJ#`2=*fs@i)Qhxk4zB0I(&zbUa z=QLTXF5OicR_LPv2xHhhV9mxQAV5jF=CJ$6Thmh$A*W%Ipsr-4qhUT0>JXKeFn>9+ek)0tkY&$br(=Mo%rlIaS= zWqW%BhW{ANWupEOy{Tg(FFdt-b4BqYH+%i>^^8J`&EG74@s;F(3n^09+F^nD7O|`_ z^Jr+eSTaU~VweL`S4u6(6(>d!O!?n47+lqKa`c995`_5j`1*toaWsU?|1n{hN`Z?m zcxwZy$g^-N2GRrX_Vk19auW@BuA+&ziYqS`kW?lE$qeC6U4=sj755_*WOHo1_HzXn z9K0q#kehXsC>_zYw>n3biXSWl#4ZOIXq_sb?T~^SuQw*$PUp5rdvYsI5p&}~)>8K- zClD5)mTBpho@2^tYn5J`3n|&OE*usw^X6|fXOV{#Kdl;CtIZs84tA-o*w(gP1+9C-=5{ z!$fbldk{Ut_L7DLCfa>u-Csw+fsET88|fGmh}%1?BxnG;21{hyX*~^GvTM!b$O5(6 zexQ-frW1qraJ4IYx9a(tq8{IXMlSMp9KMm>GV_a-v(NPnUSs>q?<4d_ADRk3=}dww zOU)PR<3@flso+u@36NH*JW)mam4oybR*Is9)Mq_zw&W(e;e+|P_UWk`vBf%|+D0bg z_EQ6P4|*cs$CVKsXo9~AxCuj}50td|8>DTS44w_GsoQ2Akc#G5=7>3{D|^ByPxSB- z{0>SkRV&~y#{{sAUQZkOe=`W4kSMjviT<=Sh|d7bJ=$M8vgZUUSisHt=mUh5G^a&? zw1)j1R7Z2QNX6pSFZBmklPv20hk!{l{Z5!922tuClHz#hR0A07rSNTlbY=QfzFN7y zgqZC7psfi^bTqOG`VcPDIE&Gl>IkPp`d>S9Xsv~zR{&`rdPB-h&RV!nR(K2m8@d*% zlrOy@^)6Qf;s+}tHefArYgkm71iWKbO5-{KlV5_}7~+9} zxeMIB>GP56JAV#B+i_@HZZNtY+ie_osU3t}qry|o1(34 z(m0RI{3atG@^V+EfZfbl=1Mqfra}9?4}_ZJ(?JhxSJ_uPBb0Fd4oP=n z3zQGo7F?GDwqRYqtUfztObvv(b2;Q@wXJ<1F)wU z!F+~;-&S(o%VzCYb|=^D)@H3XUH#WJCY$bu&EUhW@EW0H%G*xZ0E!GelJ6(59>mIn z27VWp)_dd2A1)}@NIuAJl=UtCg(<%v=CS$ikE3f{&ZUlrX$rEpJPss%ZSKVVx@vcg zp@`04Vm*FXuT(2qL$50jaSh`eUR%}--GGs{0LlrM!FqC`nwnHqp%YFt6rRXV?BDN& z30Uq_lp>1xsii531KN|x34RnlSKCebV3+nKj&GLfgP4Zabnl4jw>GmvA(OLH8id=R z5f6aM7ZOT2&tytLUtC0No=6Ev-e?H%&!+%;d3w{dyjcf2Pex`6X%PmM_{I&L6wzVaia)|;64UF6(aNYnOvatn>VloxuZ*=aa~0dUx4P}^*Ya8kDm-5i z28Q=Kh)S#vK!28?Xf>7FhL8%L%M#J)A(uolC1GwFHKkFsm+d+EEk7c>3roaFBu@uP za3u?g{}IjxnaxG;Ie0b7!3PV1@PM}?3*Y=5oc_?4wc`7>_XM;(+Q5&}IY-JRI0N7E zYw_~`@q1MWGV+@cup7M1ZgG4(B~$-z!^ z{$=c3V`7Z^;}Eem+;RW86oLc14}PJ2#HhEk#cb_BKeP1xwez{wCywN^7T-Nu-t5tA z;OC#1Pr)#h@B5;@>y-o@J6t2zbW{7QoF~Kat{~Fe=d|uB z8V|M6DX6yza=mB~V)&gTpd^71@m^gz6nNe82+D5W;mD+1?gT#m4}AocLb^o^iqFJtFSCbBpC{!`C2M8s>Z;}*L zP>Q$VuMTxV1UJt6eat8B0#DE4C>tJ!Hj(|ZHLLBvkC%P*m!eq(uDO@05JTpFI+;t` z3cZRvX)OXn3lD&J;yoT}u*#hu)HjrUO{kD1=LT8MNDsfA!>coZmVNQ#Wv#v#O^W0L z@3NUSeawur3nKCW0@L!#(7A7<#RzasFfodSjPpN}M%PD>)r6!+cb49Ek3K1&O(V$y zuZ2#V2Pg|oy_k-ZJVlBir+=diPC$4vir+iD6fdGv^of0se#${MfJ-bKlFqbW*hwx>N@x3}7OAuO#FP!u~5AFAP`pEZ%@0LExHC2sU z>Kc}?Q`(CrDLyxom%yB4COzpd6ajlZy@HIkMQvTu-befW5555Z_aKf`i;YPL9%ERU z(Wz(#H(jUH9y=!8U0pd`i2^2Rq6)Pn312jF zgj%2^T~#^DqzJ_yS_*^OsL1#HMTd065g!yWK-b7RgI>{Bvp(VT#}V2Ciyr z`vLudHoV@o z%sOGCkg*RE1Z6Zq3UuLxVP7bN4dfT#0>P_4h>@Y3V50j`K<7|{BMnTGB>P0-lx1i_ zlB2?kibuRGMtNuIbXZ0scX6ZYgzx)KqI{7ZZ=8@w1KMv2qus61S@ZF9!(`sMkum>; zigK8Yl2K_r>EVHI)jWU1yrVn!hl?4CzxF-~IDgoUNc@O9zcTbjCyopahKZ@Sih`uU zM;S-sDUk?@+>zgt0A?XIEm46+@3EUw+Rr5d(q8M|gTfua?fuZAVs?9~Y<-LEpS(SX z;fs468mrUq@bPW2jraGAVvnZv*g&JCfW5fLm&NUPxRq5FfJ6=9#~^?Sjndi zY%<-aMwYw;I-=noE29PH}n#7w7z@);y%{)Lg=yxVC98QhpYFM zu0)Acjt)()c^JxDeX_w!4@H&+G#FNa18XHklQWM+5Vu+1 zx9vy?dMT~*Bu*Ef4(&oYY4!t{KqvDyN)B%uu%D@Zfu<&_e3-)YS9-NgM=XjQGaicP zCNDdCy=Rm$?@%A-$etq8IlMP2?8K1?%@<5C*FhW{YUJsSG{zYiyO7zQ8K`n`4>~HMTd&m+m@O63We&qw?ue7o1j*eVfsC_8k3oomYkAujU z64cvC>K!#zV+`SQ1cO1@aPO;vVfJVFLQF3ThbW$82nW8e{dp?DEhhXCY@J=HCxPyG zZ0cfU%2LOGUiL*YN*^R>ACpp%rcZ`a~?UJ&wiDtmra{g^h({qp8K-Gdp;a+O|Z=$J2* z?Vd@rY9DHN*eXdBMO3O%I!aPWZ_Cu`c{a zI0hjWq);EBx@Ze75RxLztL-x2W6GQpw1Q#peDYGjASeI;01yDA3AKu3N)|SD-GBfP zac}@|zfgN87d;DG3uiquduuwQs~!tCY_UYT&yFwZiyV&A$m|m!e-w$yA`bLnB8RDI z0Q2$fGI&`;io|v>KvuMbi>}XSw%qWs>gt~U>5JB?O;!adV^eEPL`=+%FZ@|gAF-bY zti`Unrr)q~gIZSAUM-R>jT%);R6BmYcrjv0;J4;XYwz^FiYugG?2Fk%lQ*3KQ;AUo#!Z%O;l&L`WlVMSGS{z5OQNd^oL zXlwy(5Tzl?S>@^}8Xa-yIn2>>o|)~ep`E=1J5vP!;K1lLBtk?B8yLioIpw_33$J#% z*m6JHe$@jax+TEyDX4wh@pmtSIUijd|HE&P{OB0|7r%Qxg)M`QwVT7`ADg^=ljdXH?dUK3dAkojsA`_%?#wb5AO8jW8vg6BX*BNZywC{lWi4?Q6uJ#JZ-qQA3>myYwz&7CuL2?ByXP2n*-h)y2&5@$t(T%adaPUK?-wy z{~rLDKxe-WCe?2Zqw<@2R_k+5^T+Y6^*-$FcPt9$-HZMSc>U9Cv>bnB&FE@D zca!5K4TKRxi-GVnn)rPT6$8ahx#12LjiUFFr}D@D@YepH8C=Ta|HBAa(v z@rzLF-v9I}pWE%Xtx9EQ_d9(LK*rPQop&`F<8@L4^c_v|gXv^3n~wE0X2C}1xL-d% z>>GfIc_QPgJk;Fg1~>lfIv_*s_O4Vb@i{Bwsyysu4eEwWR~VvyUj~!GSF%6v{K2T~ zAmbBj#^p4BJRSV%4MwxUk}SLdS)1sCYViD~Vsm}QMfiMskkQ!WYIMDvv2|;joU_q3 z#(Vdp$#8lqUPs<5%Kv205%sDCwVfTK#UPfp>B)n%WG$dT^Xb zB(Dj#cheb5in=Gj(WOtw8jdjP8Mqhssj>V{v=51l(H2v#%ERtn*b9ttIh&AME6$v> zNnR^?q2eCSsh@M))9x|d_`~6p#EV=aZ=m3A{K+-DZ{E+1vryG-c>ilTU+{f$9Ph|? zw2$%!M8m1MT~EI%4^>y?9{O{#uNo1ZT1uQNkh@A{zq;S9R9KuVl}dGYkA9RCXY@Ig zXA4Sx7*H=L&xgN|Q%(N0<&?)t^WoP!e@?EfA-G5{$c`WZ>rIho6FD&QPU@8vDt~v@ zHEhPRaWx9Y!!2)(c?YHjnQ6B^dF7MwSHM_Iudl~&*00dTU2pJpFb-_IWjY=zG-=tN z3={86g8Q(iU|eC(<$URnsSSTZcjiknei7X;-~zUKW^?ZrOiKOm5ue#ol4r5z;V+Eo zg6mlsldl8AnDXP1jHzEoe!L`O5~^CAo=28itE8cr#hG*t)ESCbXwkYNWN>ai9tbiLy-qYOGgM5 z0uT(qQ^0FkS9Jw??7H-*x%7Zl|EE8J8e#k}rAG-$unqrm*zdGX&VFtQ56b*sg#Ubr z`(y5Zp1J?|wL@g?f0}lP%>6H`9pa4FJL|X4n{oczwV{M2c_4FgAti_fXOi7Tp=~B% z9H?*`j=E=^ir_MFIWZC?2)E)ZbFtTBc>9`{iJWz_NX}N-7z9d&bD%zcT z!)vrZn7&8fi17_xjt3Ae)3j$;DVRd7bekvSzCwqYz?#|$BuYB75ZR3HeLE%37W!mF zuI}|j!A)lf91#m#g>WUP#E_~kB2jBHpWp#Aa+oR0 z&u2$X@5Av?ukq3Q^s#m7owh#ryrVO`_2~$+jDjO;;DR2UsxoHbhp9g%h&8LOX= zG1Y3v^m4UgMQqQzBpFd=Ok)Zcg3-ZMyq9rVPJ9&PEbWeK=dA%v#Pi-W9)Iv?F!VR0 z3qPv#18dDcl(9+_T!wM7vRPsVnPHu*VwOa3L#9@@bsQoh<+5f;L;B1MtUCBDuX{gQ z3~u0ORq(IjNDMxVghx@>gU0cX^+vwyWa-Wbu^LfTfkuaC!BsE|CWC0ZC6oejEKg$9 zoi@#A`!Y*bE7e-5Su!$~$P8)V32+1N1$BbRb(y6#els>T)}FMsW+9ebTqFJNHdk_O zEo`OS;@UH>t%c2(TU>j>+M3f;sl_#FYUlfm#-6ga7VAgh;@WSvwpQDPoW<7G_V#Oy zGBbNP%FyqLEv^|*FDSn&Ev{*oqdrmX_r1Cn;-uX2TID5H*PKq2T3)L>)P|Ay?OR)2 za|TpudCkEpl$9k>_#%8%WDej1tofg<+TEN{v*bgZp=D_E)`^Z zmK7JnntZLgzLvq7`g!EXOS0xF3oZq``I;*(4)#hdxja9;S6yMtqxUzv#P&~2@n@ZU zlrXDB(MwbOWhb9!US#7@m0o2N926|GJ$jWbA%l-uWn+1JIrOi-%2ptBf0zKzV*)(C zf>?E#El)xGHtTHCql|?%8yH%7p)CQnAQt=2yU@04sP>43wj`D!aYO^u^2O`K5z8*M zN$*qE+G@Z1wYDf~iWl1|q38URwYFHZg^O+J%|30Rt(IJ9QUGxZMhcqM`s2guZN`KFSTd^at-56;)=Igkx~rz+gIX=D9&5f_RNZYp7U|9j ztH+xv6;%g5pLxqlT0aV->KO8?ht-vRA!sXaS&5A@v~s@jEi2MvYySueey>4wmx!=R zO2yRO*#w@+Q-kX9PLztNQzydoux~7=9v@Jtn7a4$Ei1~)GH=GWtQ_P|%ke(DUQ2w- z3WItHoa+ermL=fZmUub`;dBxq(lOrZXPGP#Ol66-<|5hX4cv1+nz9 z!F26M7Cq8~>4_etP~sa4rsqrCA9Mfn%>B==9m>bj<2_FBBs~L5Zs^d$v|RDhfpk{#W#j1F_h=Yh zq~muSMt7)MK8g3BY6`O1?39k8 zn|gkZ5QLje0c6!EdS-#ZjO%ex^vq&~8P_vM(K9P5W?WB*qGuL)%(z}Eik?}MGUNKq zqUf?I_mNR_JIc_&`NpH@(&L!z-7uK{T}II@N`A{Idf185QFNyl7~?k59o z%$xBjdZ}4C?6d2z#G~jhJs+?IT%-4*nhPW#iRegSHC!%-^=TX%DW~1o;y!3vaI9VpWA3g0Ts8@3XpE-(-L6wf8 zGX`EPie94dQ=&%+N_=yLpYkQ{kGcPO=Kkl`4y#7dbF{;66Gi6^Wkk^}|E(NFk3;>} zjiOs-ctjLEfh9L|Xkl8ecaHJD z9u-B84!{)!3-Hwx-K|`p>M?qhernCxEOPM>hapHjZvv`EBCpw)vNjqlZoX zwsG`mKfdKSI!|kljHBC8h9=H89!HlRN3EZ*g5mEnj&4!%TgK7DPLz(L?}xp>7{9SN zdN`n0jiXC7#$+6Qzs$TG_Stn=;&F5a^@8%eLL5C`n*Z>n(|zfX%;kLPXJt&jR*j>l zGp2qW`SFsBxk_9$pEF-Gt{UR5TwL|}sl93(J%`%gY#jZcm)_43Da)q!qo*AO^=gjb zGsn>}sM2wC#=wik(RW>X>^?G%zWc4k(eowlkGcPO=Kkl`4y(q|bF{;66G!I`rN`0V zT6C=(M~_4OmyM&pwObP&5l2s8$qgP_n3gMEI*!i4!_t9t?tDrhJlRwV|p34Gqs8dwK#fF3(^!_wUtg+F2OTxO-Z(h_9M@mR*m@xF5(i&?o zUtCv|s5tCgajiU9EAI)g)5W#&5IYztS6WL&8x-8PDXnqjdlS z7;Yj*d{0ycD<>F-^k$ zLrl|<^V^H*zBsFo7gJ|6-;|g_U|cD!9#nQJ;g;*8Gw;qHYPuK#o(TTUhofnwKYQTJ zt2G<@6n+WUmFmrPV%2v5Vrcx=TJ3MdrF_r(>(0U7ysEt5{dI4bewZip!)1%3vx`0g zW{gSOW262)gFpId3}TrgdmPo0<8X)Z*SA&bt9EsNuWVPVrMlXkHoRtVxx7{txza+E zl24ZgYFHd7xe%4n@7T(NK>RJ%qb};5UaIA{{{kVENL$Z4rNm%A>y(lXJ8w#{4qzpJ zO8Hj^sYH?U4NNH#Qb|lHSli1K(~QyNPbm!X^~5yY^0U^h;_P6J+qKTVLz{srozq@(y~F6e*qzlBImak zQexb6AuSg~iHs&+NMAFCa(=b|Fo|{zFL9kn;@)>A{mCosrRe zGeX)pzvy?~#zpk|5R=Op_N6f9rdL;zQarx_EvNUAH+$j2 zE3!xo&)wag9F1wq0cL&(u-6e+jzxbu>NP$lME3bj-&kXXqO^(_#bFnTQX7Pvc^=S4NEDqlwOaabaSRuOm$7jrw_9jOx!H=CREb3Xoi@h*1c;NPy(} zT^W!ea*6~l%uQi%}^9G8|3bT=a^jBlcjW&qej;U(tv)RwzoV2vHn%ktqGH zOu9I7ibUzf=c2ld#jlt~vKP5xZ;iiRCJcHBiKcwCmA->!?cRVYd;%aQ}TNR+(9 z+Q7fMEIG(25~Wv=r3|~ST~?Ny(d3H~Lwp@kY94-w?ak(~9zK8A(QT<%j8+q*2<$>J z`kgsQ5#$t#(JKhjVMd&xl!Fu*O}-etqIXnpp48LA_lM7K+(nuyAxNvpQ51HuApNe4 zyC`ys1?lDG=qbisbTs*b^opk4`Elx6b>sQxBe$gzVziPRMPL`Nf;|~_j)*3W#((K3 zhKrnH5e0+4tc*4?mcdFTltf08zY6w>`6Ts|v_0w7ik<2TS=fc}+~Sc2J6}Ai!{5;y z=3=LmeAqec*%WW2534EO7m-oo+*BE@HcQQ;?r3slRN%dij5d$ccA{4+Heer}3Myc4 z;rkNo?eeuD@DteE;cJEVSnhU5U5dM3n6D&)Etm3@Ud4PB8B2t(3_J(;tLgsU(MhY@ ztDl^waaVX!bfK0`!pYawjuBJ+{F#{5sUQyieS}?OIX9QTOEb0sm&@Oe=Ij)F< z*F2lvPU%Cg_I`1_Er(NEcf|?Fm5{HL(d0WpuV`U4&--%HMpVeS{#m&7IY-E(+F1fj zfvr`}%qoDLF24jjHucEvVi8smP!U!LE{YZ+yJ^$A9bMnBY%J%MSJY3iUHfbygp8h5ALMS{Xdm8msK)OLf+0a!oP;`f5U5 zzrd#0G@-V_QAY5hV4hc~(_v={b=5NDA5xu-#UiN=i_<=%RLA=8TT8WObHsftnq^B# zb!;@bQY}DVO{%-SMygEPwdgW(=K?8^=#^zU4R(e^M=b5qBAqm@BLb`7R+8InfmLWL ziEWX*Mlh5wtuH38kv`;0>uboXE_TOf;dV)Rjf^H&S_S0mNNXKg$}u?&3*Q#XlKs3; zisW*rB(hY`kfqY4c1$ersX`QuEIxw}g{UbKAGw}t%5HgWEgya3kFUJ>U0`-i3<=8@ z0yMv)B4hoJ_2ax__8b~Mv7=W@>;{Q+l=|{nz$#h79V6I3!o$N6g80f%cOhFog2`eu z!^V+|Qlo5N9Ou#G#r26+>D_UCb@~C%x>%otqcJTxpv(^e^*VY4NeJyo){G3YOaM$( zqywRhHgN*+PPEI;ze$xMswPjRD7e+^>1>r^M)`~rvx}n=YUQaqrLYf0v$FRZf|L>T zs+AF>$Y}DzT@3G)q^a47OH#P)wOEq$>oQV=D-nrOso^z{@)NNmE(+~2LX##f3huE& zW6)7TU~oA?^D+#p8$l~B!{RCz&oQHM6u*IF*FRn{i1Puv+>*ZDLHYQN3!x0lCTz$w z#czDH?A4BcD#ahcQ3*bNs^Z_!18c?lT1@Zk@umz7HU6ke-Wrf`IbGa%=c9*U?48f1 zgJ3?N&gSc>C#FP(vD(~`G7RoUtl`3;DY##S{A@ZBnPN~1`+k02DeC_>-1q7VeSaYp zD8a9NR|W1Hi&fxctH8);B6GHZXMn$^1^gkI@XA9C6JCoo;mXOTF%#JJrdQK|-?}#) zMNP2=e5wL0?n8kHd9NTvS?R8&EZ^v8z8%x|JWGyNi5{;eNWUXFilL@ZkX}NLVtptS zq?eZ?4edTkj$)(vW(28scHaHeKdB#`#w96C9WRum7?46y`W;D995qFv^b(6C@jeuZ z(u+%yN$yTcQi(;9_-Kkm>D3lVq+{{@wKCxHer_B}kuW7r`f+6`?(>$DDFyfK`nd@l z6-d?dW@Bgcp+Kr$UZ^xvATCsI^RuxtMw2g94D)rQ3Zd6tw|C+eQQ`5n%X>^w7)275 zGC#%T=wEcvz`;?0L`6)#m*MBOJ6(tN}P5{OO9L_wu@(IDjDFnLmrc#yf6`Tb_JPLA@ zf>Dk4q4U--O^MH4{;~&K#DEQ%9sg#yq0zlKKe=%GrcAM0g?sagOyTUvbLq}S#DKnJ zPjkutTyz&aJc90d9e;K5fA^K)aOkN#5c9i5$;ktbejoSpVMXUE5_j@N0?KvQ3I zn6T6Bai&JM8~U|QJph2bWCD(ZFTt4Xk$JEn4x5voYy3jI(_LOFqq+=aT%oWL{ttHy zuVr18&o)p2;Bx}51+f!-DaT4WDu>JmE-M{mvr@_sOjFM1ksr^@Kj>H*ws`er(v2b%9; zeEqrS&txFnb^7OQHo6``w}r1z&*-1-jX#{;dnP<%o~HM*-D&-F(K>DX(my$Cw%i`2 zU6n8rafX1)9e8uHV5|FfIbMu5Xa3~ZC@tn&UdyMEAaFDb^ozMSodh0UR&bhwd_PTt zu%Y3d(PIAB+S_-v-M=w56c!MIaot~IdHVPkjufaGM8o^M{!U>N|7o`$r;qr=!X0LkNU;ngS@a~~@lXf}RP9KAIY z_zaOpF8_^J|9s@(_nZ_}F!4@WCyoB$1*VVV*6D}dN7Fg_`d}*^YK$ffmf=7t5l4~% zK+b+7rW5k5wAE>T>fmwF<gt|Q=kJluCEIyi3kDoDv?F|* zG_i=O{M!J^iDmXDtY?uMa(>q70T{6d#Gb(`xCP9aE6jw1w+J5Bf``F)IfRDuCttl* zqahEXNvjTP)qC|m8vJzB?0v*5d6zS3RY~@Y)d=3XQbb38{X_Y<)*K@}2h~GRU~Zdn2)%Ba}8Ih!MPT((HG7r?sQz zaZ3rFPOJ~DdZ&5z>9m|8aP$Cayy^z}Gcg*J#C`77dWa1WuWX57bw8R18}g_cK02D% z7Zuz!NeoTwWL@2Yu7bun^ImYbAnJ_n)Nfzsss0A@BeZ=@e0#_edSgauC1{IGcKa<0 z(wx))&?z6#6GG@vmKlv}V!EL&uE*4|LrbB|L`{`#{?Cs5XIJPbwB@fATn3O7^5)Z3 z!7+K=W-{PUWR8l6Qicq-PW!bUYTO*1ekf)Qhb=yVA*eeWI_-(wv^lt$-f0JRw$Te? zbu{n*bnFEFkkgKWhhR3aLt{FTK+?A#kJ>TU!&|#x*6SagHjexC&Y_Gr0FO)7U3gb^D3Vq+^WtJt0e5-!k2IU-Qn@Gd7$h2?FdeFn0xV{Fz`t z+shCXZKmYqdT27f#OTV5O-AO1Hy$;xoMEjps7$i$B*|uOWe!c>dM>itL~qmy z5c}h3G9qiJ83cFU-Sj?~ZL;k}s5?3Do-l6AV7XDCd7dHxLPPp*zg$oyA_4W`aE4Hq znzvC>8h2fyDvB}sC1H4W*iSn6cf}+$v2T9T!M`;mctXm?20G!`*ofdsN5g~i;mfz25Lk`n<}`;kP!_k zTp}Q?edF-C$C^=}GC+U>Bn=hriqO!ze^qch?`nUuO~hee&!)>ehRm`vW9|+??EDR0 z=zTzLm%*KeO6g(kUFC0aBaa+q{|<4V*$Cpp?yRnauwe6o9A+s~<_ue10no7D$!Ip4 z@)5T*o(sm{v}kt;Zt@)yjHiokE9uB z#2a?8M#1TtO%zv(a_G@paE#%hTZ3Ni84_QW&R1F^~IH(5ajX8Y{ zu3*LTP>(;X@dDC6*t>D2NX<@_FWv=-F!wDPnad1KZM~&br~VijnN*l*L7(Q@79$i|_<`519#S#fEG0 z>IKY4m^uAPFkQ~aUoj)i?O&u4gEe@wq~XO_HNdo7+*fdTT*G6`^`w)A{Ju76@^50#Zkm6?Fi2$e*`1ZokSRn1*h%m z1U5vZ{dR=ZII{cLF2d8Dt^K#us4iuaxg8*3ZqVny2IF77(ES}vb!C<&jR}8DCOE#D z1P_RMECO<;lQyiONZ08Y(u00Jpw^dmypA1wW03%2mVQE`YN#)zk#c8vWi`uYN3xhrDo@gCxb!;V->B z1mSXYQG~BcbFs3ogH;8$GIABGHvIq?^TTy;d08tplJ!KO;hq_shVn?=JlKEhO?Wk8 zED0>|%!Dr$T#P-LFSp32W-hN_+Ng#?ZThyMgh6v7X-L6kx0lwCu}=#LSj6I9gv(nz zB{(P%BKBmtD_khE&*7VyB^4nozpLP~J~0b7Qd=D13!Z5i|0#OOOt>pE0!JJq&&Tnz z721NARG36z)Hr2vu^7j#)B53YK9U_F=>@lJW6%hUzzEtO6FsekY12FHop8Ra=Iz9d z4kDK33NZEugL%yf6E?RqW7@s!ybFf-gGjiz4-h-MpIXM5^XfOV19O?UV7f+YIdBfn zQgCqwTa~j+f`b9)hD2dng@K2E1T$j-#~FymN>oC&!C#=RgT(sk^yj*!EqlDbc z1!sU@Co@oY8w@$u>yCV#{8Dv$9Tt9~G3Rv!r(Y#_SXQeU@QAbPA%hAQ%^ zf-_&lUsghdU;!|sg1(iBctLo-`^lg;`*IMki$^j*$ucr=$h+mjX6$mL28j2?#1wv> z`(L11-Kc}j=5khhP^S^`7n<;I?-pOQ;$}Okkz`Torgvdb84fj!wS_D-DT{@H4n~WZIlkBY)If{g`Nv;2 z$of-gKpNd~OeK1+UvKmq-Tp2Yz)Afeo)u=zD@xr9-n<6Mc z7DDtee0l$mqLchg1t;#NoA1iWI!X_+g;L=HjKI~rG&{#H=`gO}u%c5^&BE&=m>b7!binM!#4n z#$G{d7F=$l(bnXSG}6TE#lNw_s?Z{jhD(-JS+#LOXlo57V|OvVTSxzl59DA#!IkP$ zygMmJk7}+Sd^Z1g10T&D0PoZg}AfcBs^l_+&4c(*q7z~VwSv_^@J%>7)S={m0 z^iKuH9G|1W9nHOx_G`9U=jUgiT9U_`uLj+K^A!U{R1d;-F2IQ+%_s zbIa;SB5S5wVSw$8nF&Y3vDUk>YdxXO`NmtL0rXBjZ1FwZ>My1yfbps6`&PJTJ0@R$1tmx0x2)7V>wn%UNNlV;?1n2)G$lZ8 z;`0Cs7>MGQordD+Szq?QTg_Gj!Pvp*3PEsV_Q=v(1!fmd2bfOg@>#qEo<1FqPX%7E zrQo*kQK>$Jq{q_Lx0MR^K%`J&xAOg-rA2f?RB(xTF=awD zdo&}{VU(~6EtkAK6o&18<~|i&L|&VP@uDIS60?*5gmf$^0&zs;qbQu8ie;eU9IP2? zQ;n2AMwxO14t0y#?W$3xyOrIYY6)eE&b!J~fyfU7N@i%_~GBXR-LpFurZM|yg$D8zhc33K;nSA+g!dJB8Q2|;WCooUf(JYYx+!VESJ z$rvfY-x5By1CvfzOqg(O(P=lRSJ-Jc zpL)Mel++7q;%J>WRtujFJs;b_{kh#UIGqf%mgWe1W`)1Z%WI~uTiRZqcN6`&y3P&H zy|35~2K(56^Ld^^*#}ggHN8|4tB(f`ucy8@LN+>nC^+1+AEE0$w=1rz`RLx{ToOI6 zmSY)=ikgI94J%*Hr{g70*d~R*$!3??0sF}43%1318P_g+UP;r)BT#T*Ispr20#{<0 z+x*uk$sC$k+$m|8CffLMkeIQ+o;>h%V9QUY0lrO(nI9WPS92w%FT}nQCV$%?A@SP ziFJHL_y5_evSPk*eKD6dQ*rMkbDop-3^z(7elS?xa$OUv&u9J>8D@B$>j!~Vqcm5H z(Axt`ZUPlN5NWWM(il%UR*QLs=L}_fl?E#s(@C(&Tu4Ol#|to?;q7qW-km>^qz%j_ znkgO*5mQw!%ox{((73#y;Lzm}_)NAB5|=Iq=o&CemXqm~=?A2PK0)Kx?8IU?)RHMj zF}gTd7FkengFdfR%Ng# z0ImXAK%HTMht2Ll!frcT-vgCwb^o`5i@PgRL>>RT)ot#7zgcT<-3_m7ws38m!%$Iu zDii#jRa%mE4hDs$2QjguKoWcSk@?s}OD(^X5=1on;6E^}D7YhIILTrI8c!XojYG5Z zv;nBo8S4=me%oel1l|Yg1GP3odZ~W9;aL{{V74xp495OfG;QXG^e&CUO<*OIId34wTbY*=Inw23 z;y>O1qn-UhMYoP_I`_8{Z;B?j?x3n{!tNEXLr-=489ss29RFHL6Rxn)te;HrlKqo& zwm_V{AhD04safWuXG{~xMm)EMQlG~lU>+|j!QYPn^)L@NXa4TeLr@93n}sUq2<)05P~xEYwjuBjxb z{6T^zkf5?62@)E^6csC_F(fk8ZnyEzDq()xc}HUyFuz5hU;DG;XpB9Jt2Xu@xmJ%s z9M=0+k2C0oX2*X9UIeSr^+ zOeHoSSrM8vejq3k%wHM}%CAZY2x~Ory3P@Znokk%8Df{Fs)_VbSJMw_m^Los}`;?Iw%NN!je5E;A|bxohuE;y03oN6))(t?4Z&6$r+KH) z_O}j}67+(rwjl*~z%k%jR4q+el%66dEmkYn@Pqhz3_<+8^_0bAbp<(}%>*_`@o}(6 zx~|}O1Yw|`#?r?-R(MgGEF-xof7mu{OTz~rDSw=u{b8Z(2*8@Uj6EVdsCjvgngaM%StaEEv4OJO>`BQH1+ZV5ywG`DSwMmKd>B_O(} zMIT~KPF2|TEbxs?1YA#M68r3SG!gZe4$TE55EL8%BHdKrtQaPUXh2CS=(HRC)3cMf z6Oz0t58(#b3tQEX%?A~v+u(MJ^!TrL8o`=O$fe@76QL7-aT%_;ngsz)vbIGujAbcH zE+of+v*DX-%`nlxLx-Q7wClBK3N=q}^C@W@?VbrL$yQB{uYDB`5B%A9L=e;_G(~_6 z*7W-n-LkIx__(wO{gdburZ-+5-3;qMr@V$&GHE2u_j~+NexjH&OCc8Otr1tPzq1)W ztbbV!tVJ=kf6_?!tVWWDTxhT`n`pjAJ;7%=zxnmURR|TwvB`~ zepFo>tC#)0wiQeRf8|@A6_IYC$38T$I$(kD5rguh7ax!_LT0F^5CXlQ0 zuzMM|3?H9Gv}a>A2Rq?DzRE#m_ppRn7)v8EP&Bx!P+rF>Y&9B<_6IkMXy48rP4xv( zCVM`ZEidO=-p{=EJ)BbX`>kLwkmBy|y`49gsFwz6v(~s!aNSnFbMlG#H@HI3FF{rX z#^!#v(YZJjtmj?srfTXYcR_t}(pn~(gh%fFX?xT7Nt@KW#&)yS^rl}FT!4+`mo$sh zLo8y*dWo)iiMNL7kK;WsU9Tiw5pr>IT=d@(aS6U0R~!9oxXL!9-zp0d`;I45bq-&x z6ehlz?#CUOs&n8fLwQY>b(bUdts~RblKzezayK2#31=L=sY%%~*6_pv|K-&-;lQpf zCtP@LumCr#d*K48ub+>&5*ap6(nnSKDE3L>UF|2TGAlU0FK>|N{XTizguX9zBhJr` zx@V{T!=u~dxfxM3a=SIL@hcSd!X;6OQ=g% z*{)gx+d3|}jYSf<%xtKU>EkA(ZFn2xiK`*SlINr1M~~e zAp%#|f>P=}VhmDSz_6q>!xwiqUkTXQC*PxEa!N4XWI#cM)YQB{V`ivoYw5x>TmSe1 z32y_9vid_2CQXx)DUVIJFw&;rbRr>fDGs^4uOc!oL<>XT+#eG|!7TNz>b30&Ej+Wm z16Ig-sB8h93x`U7cAJ%lj3fmITzUWLy%|=ksC!g>SBrzLpEl|L5%>z7Fw>t8XWo0~ zj2xFQ-R88Ny^@V6xYV{PtB+Q}nO?|f#gYU!i8X14VD(i9ink^9`ou~7PV=~)t$N+0 zJIUMkQ8XXcEO8J@;j@kfe_V~RaLOhzI_i%}eELSJ#Q2}bcCRB<5<6b+n2Xu<^Tl$G zgf`d%XG!5i&M=Yt#-9z1%MLT;l0KM7wwSOjufxvy@UC~>Cm-A3sk71zz>pTVd3Mlt z4IjD9Ym?kuT02{c8w(hwAF7_+n-wFR2Llx$%Sh}-jx-5}OCXBM0m>vCIa}T#(@K>i zX5meo&}p*nOh+VT>RQnwW1b<=&hzhmvwOuTB}0+BB^L3pWzayQcij~lc52+HApI?> zEHsCc0r>N}g6p7eT9!uOK%nG0$67EuDcPPTtHOz$S-fHe2!)12oTXq(MtwtI#!zl} z3mq|(__}S`mbp@JXK8B-M#k}KcuAc*BVAfcf0+p{q25n_z%t(a7@O#HFn25>X=K zDH_x+qS)g(V)UHU%j_p3jStm8%N;2hIPXkjrdL)P@IsBBh$lH3+4Vde&yw||8rbGM9U1*?fEej$ev6(O)^2RqQ)dHHtr05A_|{qAnA4MhG((i# zPfHQjG;W|t`pippy$;^OZzIC@FJ;aznh60Zta(v6))^UXYZ*ZF3Ky*Uc5eiFVIz7mRB_DW?n z7w;-tg{Y5lp5i^eq`r!0-eAvsrwxz#dpUue(^+eUp1ITg&^fn&@FN8D%FcPsb%Pl3RuOWvp6&!=Ef8Lf2V7#cz1!Jd?da=e4XVh?T0F~|elbU3}D7Y~n zMy%lhv5}H%t7PYgB-mQ?VOW;?W@X?-Daxw73^}1R zLvq$XE3~Ij(*>#Eo`srYdjL)rHN$^|(i?fcacUod+BGw8NHJ`>1_pEMYOk@1}Qm2ofl`yvR&;l-o2~kWu6b<|8?JAxb!_G!k{vhCUng&RxL8(vm6S&NuL7#$i z0-Vw`_R2VLbZg>l`j243ae6<+&L%Nba8?@K2uoU*WQ^ts<5hikk_q2dp#z?6ht#=J z+A=lKIoR(bnDmbPBSio#x-OJaaI6o`V2nCr2(5!HyRg58@Tg&)W1lw)t}(tF$3GfN z{LfyaeoX(C1ABN66#a5$kF(P)?Ay|N7pFg-o_#u{p8#IxFb#uNaBd6q(&f~j!SW)g z>)y7vi+iY~eu%SmobIECpn)BRA?&t})O}WZh~eNATx5)&@Z{~<;c>OH{%1!U>TqM@ zOGRD!@YpFMqZCXidT%Y*BF{g9)b&tnC^%+`0Oi4q`r+VZR2ehu+B-s^ZFx<{zs4bByO<2rSO4i=MUaJRU5W44HJINfwkdaT6_7wsaF6KFo;kPN9h8DwwND3Wun35PTcul7XqE&` zz5fry%p=7r-L1N(zdxR&wLD6!(w`_GfuP`4>d;OG8K^S~t~{*WELhwh1y>H#UcQ-m zZL?H!O+^9CV98AEe>^*G%3iPj=g2X!B_5yElzuwk`&IGa&+6O$UHOFp1m7i2I4*y!dgKxu2_`)~@7^yg@j(Vf}S zl#7)5Sp*jw&1@jI;By^K3`C>~sB}0SD*CM(-dI+!Gp)Fvv4#{}c6-_o>f+hxt!XZa z76q4RHHn?@NHeUKVXxhrOTsgHXv5CN5T4p&c-Z9{Ba`4B>z>m8;cUe9eH%ZvyqnQAr`w7bl*P0P%~XXp`HIy_ZP#u*ZDNP~;_IF6 z=h6~9*ax=&m_TR0OGuf(1|h2nyN{f*%Mw5UHdrHyZRBLU(~TMz2I3`Bn1pj2vqH@| znX^V*chZ_SE`Jm*3_M@$I3hredWd3s3{=7GJ{}swGT{jY_lPJ(nAxr9!LddP4u<9> zah!8x5q#^+m_-I(ou84hKzz{u%(TqEoHA9Zd?m_9{l;=kW{~4bdN!9?XPJ2|lKnDg zYALt~(aO>6zurfgfH_OSH9O=pEP${oUPU@3wZ}>9D%ARTN2q^m9>yY6Mio4j1%&nr z?a3U_X_aOGa6rYL6=Kw8gm`w&TqRet$+?=1o#EAM17eAWh9jgij>9qsU}m#6r*jV=G`Z?1 z&pP4!W9yN$ZSgM-jxkI6cw0^qU=~d5ZSbv63rR@jsj5s=})T^uI8Ac(*i$Hfm5w?9OaqvI?ok z$s8jrI%|18qn(Tz;`4q%C%Z*zH2=Xl?N{;3p|uROwvSHh$Fh`PxGl;x0yyRAPU_sn zv@`H>)@T|WhYR%76-Km+BL$a>suggg;Bry5GLE3mXh07B&vnNTk0w+hAMG|oh4E1;v#_K6FcbTtgm-&uRJdyWog_&idzm$14WHwAY3)0OW zP;iMf0-1jeT*mhckzgz|&XV+RXJq#qOa4?{&5kiB;c+n9> zj}wfJNWrBhMnrabS+m9+SHzx$A*oUVra1o<6b-ggP^naFmA56NAmaBM80Lq-cs(g_>$)@>234TeJ6#|J z`(Ob0nbvg5!gDK* z=(+d(yM0rKlP9$ZvK5@k)qz9r#K&_GKPB6UGy5Z`S8z!RWFp4v!Z{)m?&C>?lLk>` zFMxTj;6&hfNnkPaN4%e96i)LBWY` z%4Y;rU(96$G*J3-6?MLDTBXQEvjJ5iX99hH=%!Y< zlQCOnLi!Z4u2J`vfg@9tEkKd>=}!2OFxtf=JXSin5t2s&&d8p!;}>}i;UUV|!wox9 zI9$U)k)F#a&6s5zfvL-p4yUSZD!433;PLK+11h*G57z$57X(u$r;H%9*zb-B!Va>^ z4oV2ZZnhv87_TP?Z(TvKlgD3vGL9l*LZeHGz>yyP%TM?y$DE7WaSATXbKQYM4IZ$L zb=k) z@j8ho3u(j}3C=M;T3M< zD`jt2kuq@zVZ=I{=OH1xC8X?a>;w*mq0^1Rcs(iGbEV8GB(SSv4Is(Qu|EZoa;UNZ zBR0N(79Hv4LKQlN298N5<{r*97UY(>Dxr5@u7_`*rH60bKIC6c5A)g0tl^hpH}m-CWPB1Tj%5{AtA8?*mHdt28n9S0Sb~RT=jy5_3OBO#bY* zASRN}8j;hp+o5dojsy58b={PIGD21`?!c2f{J`#)&5(q*7VZ<=pyynCL!ljhsIm{p zo7(PuUMD7}XM)VfB>d2~(p+6rq0`PTTC<7$cQ6k|qRTfA)x9v7F7?Z`FUejQaJ+jB zYtHdEO<$3qsolIy>t=#e6}9|dt|W5!p?`AJ>6~?rPCww~ zuiI9AG^8}Su5+Z@q00XavhX6QdtpO%KdElAGFUbAG>HV%kQ~zE1y@(t$Ul`_S;G?u zyidMraTYCX=JNqBsMQpnU`6klJ)@h5^#>YN2nnYjaTp?#;}l$og%O8A#-J~a9)qBk zSiYnfwy<;scc;Ul+%&?`G7AWjAR}_1`;C%5q2X&HKCyJQsH6riw>VD7*Y)atDqlPI zzkR+&XS4WvRR+%BTtn-U46Nu2b6{eutKe4V;0)F^QkTZThP_tiD;h&NzOwo>F z$Ei_dWVI=Z&x%F~0GVRWX3^P2@BE@iCh^aC;_irf(o%Hg+&NL=B30UD1{m8#2YEMJ zJ&W`Ei`+PY5Vq&%@d zJ~x`tSX|TrxNxCc$NXrxSaptCjfO|9jImAVBL`y62JdAs@R3CYlNgK{I|I{ijBkJa2jGuS1*X-1!wiTAags-BrrJefekFkiK zU0UI7t#0aS))8HZPDJ*tM^E)uaB^z=wa=S8xPIY`Yb!#Yc~i_?cnB(XgQ7|mPRr#r zThWbNU|PYUQyRB0^33`UEKdf3R)pd7E4!5$8)oTwSTM%X)t-~pXka4cBQVLeW{0W- zr~t~%g9KZjHBHqC=LtkC_VPO^6?s1!%z+LZg}XKnqCdpDbk=MV4+EA@U*r_cVKe9eB86>PVQ(ziGum>0c zIwkRqL9K4R1>78v7IoTNnOO;^QPlNrvQAuJeW;whFskQQVjb1IOmVj>~t`L)i2#m4@r+u zH4-VxcAJ0nKXv*a>gRYb*;7H*5^o7+k z25Ho!|7AL2VG(zMl^Qm|(_m4b6JZVV5$*#r;Zb>K>Rm&jflY$Rbcqduqj0b(noC%j z&*-r%9Ld-9XXGWp=9hHqOPg_M;vVRMq+@Mfe%<6haDWH)m@MD{UGcHnTHlyO9|CWV zr88{LuS%YAa33v`w1$#(P}(6Xg)6D$1S%DrV$|Y%9SU0Fcbq#V8b3TG3NZ&}1@s^o zkFM1@Gh;;n!E{;4L|pgMDhMRrMssE=AWA6aja{xtY#w#7(W42DGusMc^9HAzbNYlmt;4JVV$kZZ zV${6MN7LO`6V!9~4YjTawhxh3_uZaTOak%6AB}Bn1q*{Gx>3+fZ2VBSh2-c@<9wJZ# z9QsH;7DIU*haRyh6sHe8`fA07Jq)RNSC~0KQG7N`y`&#VZ_jYl;#4>a3k=aykN8wI z1sCq>ekY}>)Vo=H>Ui%Z%tXu~(VYXMe93Zri+$Pey{buG=NPu}wNq za8Q|%xVLIQ-F|u4?Rjg`p3E)Op>>ErG{|TVT`@KXtWCie^Av#}OnF}>Xrz56ImUv? z2uDT`D(xhLrVVAI+w8ZnH0GgPHknQ{olO~?kz`$CY2yLwBIBx=Nu#{ENk(6_#~8xd zyRhoeMKf4AgiMf)atH{XMo)Mw)sBLb=4#TM6PS&+o@h2^U@Ev&J2PuHzL78TN^9qx zyc)IksyqZn02l50C!|D1s`DRU2)8h5Aa3(D7)3mhJva+|^L4f)lxq|mFIpYQS#Xjr zxq&Jix8wo`kqcu@bU+V1DhlciQ+zEV@?ZuyRmo6j*e&=b=ew!LUhZ!Mv(T z=aej|R>Cu~KcC0g*)4v>HFAT85xWt*+8-W<0k(n>AbE#|eqmHBk`sw`urYdc<;~%3 zG58Sr2oX1&aVOKui7C!h`D?ZIHxAJ`_2yx1FjtNw{s|q=9bBVE{(OE6*P4dzJDNzr zm5_iWkAFUobGJfE4=}mRJul+!DslJcyhxLCRUURiP1K81P0!WEiAqyP`H<#zri4x4 zt@h4aaLHI}>9WyH%61KKNeN&9AB84CUGp+MhP>nXE}nw`JUgKYO*v9W#Sh*mECH!+-w&;SyI7h07JpN z>TKuKw5e9YJ=HQ%kmJwwU|4BN0Kh4TBsVw?N~%V13!=`h{CI(`ST5J6W8p4I10u1| z*-%cBLg@xK?F;!oY=zsD%EYzJKGzk#!_TlZz$@D(6n}TEQ&vBJ1 zo+pxuqs~3OYl0w)o0&xF=@n{I!JV9BNKUHAI0{5`hS@U{7POZ^g__Mw7_43j%iU>g z!$u~R0j@@TK7qtdbUDQC>k_2}mF}$t4+D5Rgk0`@uTwudJv#khNWm7#VtvCLAJA+c z$@B^cZp;V~B~x~rOqZsd?I;bk4er?dg8w~VUR{mo8(l1tvLmEk7Sq9WJXb9djcUb} zM6Lg+bJT0~kL$hGY2z2Xm3g@vorUi@F6;Av9M0$8xs30bwVNp8caB|lUWJbp90SW> zXXZ^d6^i-TW&I3xUWJbpTpl~G!pC;7+3dUuA1k;#c3y>#6s2bJUMCpaC7Uo$4K8`X?{*11?)G=J(g zek7xAd(q${7m%}vkJ(~cYyRY6$(u0Uv=J9s=qQHdb_gd_aHZC;e+FrZmUI`?I#Tco zns9(BIKZ|UMfik%Oef;V^G6w;MSPAly|a7mj&#$Qd^eTq=!@lS;)?*_W30206Ujlk z4gL$uP7o6XH#8Lou~^9Ek&v7cv7fNWl^eoG>|Vh=M+l#O8NHVo!UrnRE@R5{<-OOa zcb%SvvU_#dAIiH=XGd(+#&Wb9H{1xLc5fN@+|v1Mf;|!T?Mzg z_Dxm0hKEzsQnU7{Tn#HS#cgR*(K`(`yUrtPTD?yH*gK<+&JY%eu6Ol1h+PW-Zdv#g zoGXI~Lp36l5I5`ONX(xD;+z2x?g0|$rNLU6o=1e*U@eqw6#RBpp5}u2Y+;W`xq>Sa zb|6h8DlYNoc%Ww)jC}(xq7ELf2NYaX9pvc&rS*F;o{)Vb{T19QxR7#^&5%kz?q}Ze zo!P4pTfLJ$Wc47{wA+j!Y({JGc8XRB6`ZSK;vvLUG=YM9vK^+HzznveLip6F73UQ2 zRe2cZyXMBQEajSWp_iSu{7+o--O7G-uhJ~%n!8mtEf{vqEtpqz&7DG<)ru|m!d?k1 zi?Bee9}_d-;VB4Q7O3mLSKZ8#*ZzHDwy8#M}ib15WEz}xxmIH3iUg7 z0)5&hETJJNWXTCL$vq0Yc^+<6iZrnTZ1W>ihIabBKE_t&syx^V^n`}yyY!;rxh%4! zA!Fl+D!3ayTxBAw4J@A<+=LfqxV;nqLcEL6U&fv$40Q4p=u>d4NLj({ro8KHgHi&% zW0x+hFKE6qw2XX?jZrR$@*307AQ`))p~hD<3gWj%W&x$lDh%M`3{q<7tQlF3$!CkQ zs?}C827Er}T@w@;rKS)aOQceUL25MkG@~WCdxyw;jh%7$N zGVozyGI(G;cZY~ox6}(>B5QGtNru@jVau+k!QfQ_4b0GUg%*j!WJGIlL4~jdm>*E?^~Xf*rBy6qp>gpZT9sD_nY5OWS{ z;)e>Qa{yMti!n|w8Y$a^!Be88$8m^)vvVL1cbk`u@%M^sa-rayXnihO8l}nN)815dQ{7^1{8{dllSl+MaV3JHmVD=90b zEe=+0e#-m! znXBj&T&BKbMTbCXpqg4W)d&S8v> zd}Gm71zz|?ZX`(^qp^Z}G^wLBR%k0z8e=cM9HY`u+No6_aS{3pWB+*c;p6u4*(bAQ z+(`mPf9Hn$3XZtICP~`*{czcHgPUlG&2CFO1qULO`h0``P3z>olZ8jBMJ_| z8x648KW$a;SQF@znvn_GE4VldWYd042_DP`v(Y7#B9Sxsx<#!0-Io^Qn_^f7+%%T8;F-eg zS+cRmvH|qrh5Ree7E%i|LGyh3H%aoi`Aa=3ZT~7X`6Pe-%(j0+CQxuGyznR{F#MS0 zg-0=gf=l6rkO|6Dzl14Vg8Hn7z3yUqS44Orx#?Ca(JjGK#nbHy zC%({(WadfK2QbrZnFEGw&!f{VgVE{sRnHjG{y68pRI6bkKwSESyH}WLQ=~6lywaxH zG6v&hRn%S)*l*!4;iY@qtH{Op^;25}|4 z!t5*W8cQU}A1gA3YET82WtFYS5(+KLC|i{y4C*qBvL|yyISpE{%V~vUmPpCyjwDoI zb*i+~DkXP0xhE}IF!l$7c~uR1;AqfVxGej*+i%yqy>}uZkq90U|1Uo^jyLe{F0%&G zOV*h5xc#ZK!Fwb_SM@{S%T8Um=DO&R=|*HTtm&ILyY5~_hh5!Wg-K3zyJ?%hP2HDd~a({E&31h{=-f! zli3f5*_9rJ2Qs=#P4rFu@T`+XL^b`~{UHzw-^1_;nY`J0;&m0A`*r=2g!qwkRB)ny zo=!*wmni0tBxD(47}S*{38S}&CQ*_QR*UG7P74>^3T_3g=c3z;vOL!F(5=t}=@&Mm z3ibgs{YEsgN_29zrdLc80*de)v6TtaMQF}udk57DZWRX4L$!iig~3ap`k8TEh-X}d ze#wD8EiN_q-8{SGwP)=vZECPRzU%M!0Y`2VMUX?JLjdNYPW%F*52{+;!*wjI- zH|i#mK;HOwSoL}>GbLqRiV>O_*X;;*Ze+5iZPG!hNlL*bMOkuvx~nCVC^Sp6QrYC7 zjuH8oh$l(ONkRRtP%HO})H>)eDa+;RBynGkl%?>UX%t8r&x-htVA>#UC4_VED<9$9 zFN4*b%RzX?KCW&`5>O(u(cNfcx~2F}L44{qtE~N13U1YHR(5|?jIT}aR>pSv)-1yg zIXkpg*_x%`ZgO^Lt+F*s!7&xf?T^Z#TF>GALEbj4_{OOWIa6pU(w4RpvS{OzLd)9z zRBoyHd)fC?QgRCRJ$aEjDN=}d_6KUZ@xS%AV~lmTC8F~m*A<dMi;?PutbQY0`60A`Ir%u zlrbR`TuB}*z+A)RDwacF35DncFUc1;Id6ps{Nk($M-J8CMF^Jo0LvWl0V%lE#wC+= z8etS%2FtEI=@@W1n{La^I*esTnZafDMOZGV`&eD26jqIc#QW`PyRxHMExWsw2BOF1 z=AEir3(LacS;)e9-HFF7hPC53h9^yuSQOS{D+dOPvSnz+Lhp?xI3n@*?33$IuoU0Ewt&agC^^3t~?d(ZROQv_(tX2c7NneXDXMGAe zV;||WcUq6x;4CT3AqtUS7nj3OWD4*S^=YN?BoY){IxdQkAV9<6re97rz3laD)}u4& z2`q5ShF}?k9NF?G&i=%s57}Bby;_x1qEm+SgfLU9<3X0!ZLmIZ0hFW2jbtYfBe1A@Av07mWi~NtbX&T+pk~r&geJZ$h{oM7;|*&h5-7T z-%vcT;!%R?so#aYR&be}U$NH)Tt??}x*g{Xu!KT;QO4+YKI7*xUdg+h@Ut>TFqz6p zd4w^-DRr4dcFJ35=QlpAR};t76Q54_RP(?5ME3Fm%d`qkmTZ%xaYf8WfjS7u0!zK- zTpJX-=b6U|v@8_7Z?A4jTx^92v&Y`-|kkT*E1^ zSRsHn#<^O;cQHiZ4Mv87GY31x2)#0i6>8cq&laJ|WQ5Vw%abtMOL3Dp)ACbr?`vG2MF#mUVGAlQWWPn+1T2UiM9`E9x`B0o zRKNyYnwe>_oCdL;3R1ykN823l-fpYP=10@JG`37v8>RI{4;th6?DRt)jFNwm$xsQ; zIf24;c~;NvjPNP6aDq>x3~D--#i!i_pR&Pa8TA+|4VFU{+7tLR;-M%whu+;Za+jsE zf-53-Svo7YmC4=xh~$|9$+$zQAcfi*%AQ!ci3 zJDksPKSExWTf|)phi&+gq*sN4=Ml!p{BEifn(0r-?F-vl$^j`El?szGmQ}eB-+Zw( zX^5rP8hownRd?ck`867()@-QN{%-MMBF!H@!2B@UbQ36hNB%o8HCV zd#wB`xQH4kBmbW|tIB`YR37Q4J*yePtO!2g3NByl6Z5S@%czzyNK02Xj+TMW*x>R#YL*6OyCikvK;=%Mm61MbTZtl= zPrsaXVaX6TlJEF&+*qio6ZxVJdU2?Nf+Iz;79rUB<4|hA`MfVYgKN_;8Y*E|{aXHh zf);kvuc1MP7Pe|6M+>|9SHTsl;WD&G{3-8pmcv1S_}cF(A&&30wA>;6&z5>WI6SBo zmzL9hhrWk}!oG)v@|wPf8|3&t+;Ebiuz)-;qzXzzWf>JSn5%km<`Xe_5E3CdO4D0T z@I#cAa*;h^$*I~5MnYg5(fy5NwZu1-H<(aD2A0~doT;n>lCKqc-e4gq{;t0I#CF{9}n z+BQu9HgO=$1oz2~j1UtTE(Za!GYmKj+kmTWRc#Xt+p+roOj9JMuqka^1S$pyN9&Le z1qackN0-sv1X1HLr1Ay_3_^zHb9GW9qna>Duf8$cmDj*rg)NdUBh_&H*)~>%Nk<1OJg;X;*?hjX?+SLfVdA{&W;YQLR@ zG6Th?5;BxmGa`@A8|`Qa+dayc%_&Sv^d{-s#rUp|sgJXKw!AKiZ(G;T9$<4hUEDZD zWb8R9?oRWKM4>nER%+%5Y%-bi8ThSNV%p&T*MPa|6V~Y$-uK zV^6`Yur`-kvd8FK1y{s&#C4zQKejH;`_1#rq%g;VmaMEfiwCw;30H;D=NqhS-uSUNEmHwC7>#ad@gV9z2n)y-4~MKY0>g+ezkm_&OoQFVELG zYVT=$9iIVM^((k%;Od-y<8rt<+UJIwDD}u7ua@y_SMfiw&-cl;t`--evjcJV_ZT?* z!@_x83q2C(wHw=4(FduvHD_gq(Ltjio~9ZUTBsnNrWq7ms34xE85Ep8da~tdP-hjy z(=>yEV*|8=nN=?F-7-;3weTM3^vhXpdxUC9<28lG92e@Fd_|Lk153syqJlJ44jOQ+ zs;O3rB!uNMD@IfCRV%Bh+*pEz6aE04SJPA%=S??~P`9(wCn%sd)i(&=N_-1i#U^pe zYQY4g_S?fZr{yL3ukN|MXH!~{c@Wm~6Z z$s@_N%&))5#KHtgfZ!s^GhJ8uA=1I7X>+}!(&N*%8#+( z`wV$WO(!G*ATI@|bt3kIe|NW%W4ZhW9=5Z9b)NTfyChOxN60=;SF`0EN1w*p81zK2 z&kqn_*VgfnjN}FPl^5K#I>zfo_E#d6<(qLFds0xd_h)iPjs;yoE|7wwAfZV>nYPot ze_`*O?9k9d`d6>rK8Z+WKy@fwWw_VL@%eD{lY(#l4DkUrw(@!t8=BeQS*P*h<_wlB zRx{Kp`xy?+am7n;iTN5LitC>@P13>xv<)Ihuc*l&GMdY+T#JC50W3*qd;0wu!9_p@ z7Iijo=o7A(A@Cj7XM?PR7Zb@k?cH)JkDtUZ@$>8i?QgUBJSeA=Rtj>|p5Vic_}FK1 z`>5RAoQ*!1g^V-Zvs^JaH*IHOq|)4|~FWwJ+LyR7T(Ag1v!5_`RhBpyqZp?YzoH0 zpahz57?v;?E;m|*+^R%P5cMYlM3txD7i6 zxvM4p(@XDpiHSO{yH8+!j_ClG?I+{s4IKA8U9FZY#)tM)S8A&$z$0#rHImg(faL zvIPGW{x9Nt`xt+5iSPPUK~UkpNGhep_w(McP2zh?qb$K-?-fjAvPL(B zzX;&CLOHE*F8PZ$#NPxtZqRse>lE<``*3bBe?|KY0(YFkp`oa71a-8B{?%o_Ip~c{ z&<;9VZ1wQYa@=z=<=7iW71lwRo2r>F{7JpG#&6xfEGFP#%-1%-1cOhF!NaYuC!NnG z$i*CIhF#0IkHu!)*cXhy&zSn>mx=d{kgOY9jd6ZH`zMbc5^aT8Tm^X$a|eaul5rQl z><7m{@NbIg2t9rVqUUP%0N4S3Qjp}jMy^J&K*ha_9&_u<^Q(S$)HUx0AYy?_pU>8l z>3lw3OqVa~$i_JFqKkjG))<+I&|P zV@wHPAdx6=%2kk4i13QKn-{6p|2+JA)b_B`m@DI;X&h7NL&g`r)g`fGgV$nu7Cuxh z7w_cjT0u?L|KfVKnxba~xqx>}&mI|j_GXZ&XFG8EtEEfX=P`ZB|4MsLkh6Enm5a)8|a0q?+|3Jt_$0|>&|jWRt@riZqKdx@}2ENr)4eXpuS5jl8* zBWyfkfU@J{4=}H5^+pwV&+sqaym`iW~DgVW8fU4zT6AaED z6=X^^K~k%&Rf2tJ4kn0qJvp0&6sk^)jf5#`nk-oGsD%hC6$y{ve{PXbFKP-hA`%KRrA9(h z^{7?UqR75?`ZAy6g+t$FcN-2hhK$Q-gUSRa%lXR_?ps|c5IKM20Ft+l~7@f9kS~pPGX4e)dMk6 ziIGDs4<|gH>|`tU(%6!{pdD_-UJg^3i-b_5$_32kBD<~_b5XmN zQrb)0VQlKzw!PH1WG`rkTd|jeSbGT%%Obat8p&xV(m%nm3_q!KoqmRGJG4xO#Xhzp$!>2>C*~H^?fv35N;YcB9rr&1( z>r(3;+(cQcT`jNKibObrr0{|FkMC<}SdH;De zoji_L4^!T0d`wy_z4h{C1?z}}s93Up8b3?iCXXqx{P8pp%~}uOPE-P?BxhvGdf%GEDN8##WjReVWvLsdEQ(C2Q;CZMVb@xv}&F-b{?x_@E@zTQl)4sB9#~3xlhc1ak zHNY5YwNLoPDUoP|F-BVL6UmgCNF2~aA{EAHwfv@ANCXN)Fh*540XE)+Q%ryaxs)z! z@?AkKDu?F0CJQ`J7C5-PNgN^6QR|kT4FEEsCat|1Hkra?1UVHV%^iH~?Ln{zi&=a3 z-aAnrNh#?Yb@m2xtk`ci-mzSN;^E~#V?4J2+Hfde7UV)5TX|TH*$n? zv;{$qn*;)V`3tP?MBE9!g-0rz^ns{gb!ZA~vBT!b1;e#;vXl1;(pL$7th(A(&9}ri z65X=cRusUdd2QI35}Y+wgVJkBWAbQFYA*?V6?RbBVR27R2aN*Qteu!Jg@47JXf{Jn z>%^vLr#8;Yb55PcS&m@SChUjo$HT-MB~-&r6Lv+W)N%HZj=hooWMHrMkQ1t z*Q$#RmxpJ!xMo~q|MEQvkV!Fngfv{@8a%P>fPCpg+&8*krzy|oha6ghI{DqHu;BVEuXci1@9RiQfabyztQ=tF#s7s&NeRBQdAZMxwKxMGV#IT zFEQ~s48>I&`pzw`ntL_|_~FvC(OKb+d$y6OXKgsOygggb)U#E6fj+{n{GP36>RB89 zDsRu)wpv(vcGqjJQ8_a8tPO>flpq|651kSO1R))V5(NC8TY_*%5(Gs?BnW~`sR_an zO%N0aDU$^r*(|VPvcOux?v(N^@W{ymk3tq`TZD9*ESY;Y209(|tkJh?30qdm@7cpl zJ!@O8ODeJ*i4UE8yPdPhcJ#`MY{$g6Yc9EFXs^`6YWec4YtT{(stXs7Zs<$!a6a)A z(I&XgKLt5=v*jBA<5rf#L zhBVHN&C5-Oe4>wRwkfRRe88+A`y4i+poF>Wf2M+LGvV9{vQLG>3QCv($LMG4#oK%e zl9xf|Qjl#zom)Zn8Fg4e2@~o6PzBlM18mnU~_bDdkCzi_nE+*zx zdJ;^HlZvduU9Z!(^Io*E`@ZnEo+D?G-g3<6Kl)qaUIegiZN!{xPok1kVEuQ8e0xdJ>q3! zOPwgumeZViRBMxpj#eddwdLrwPqc1~bjq>i%g(5MdPWR6xOS#3E|gh%k4vUZ_9hxu z=qO^)d~lVAfKE*1!IMmzGEl)`z~XXe`SJP}geJpHbglj|Gy3lb9`sXfzfq}tIH=b@ z93CFMgKjw#e?P8B$G|@yi9c5>hllTwN&~3W4OAKd75p8z3334y_C}qw=un)ED*kZb z{g-z$@UI5l<~iI|{$F03sTB`X$3F{l;?rL}K-6#ApG2QMucqUt+xe7nuX%g5m=6MS zzp?>sPmqJ7K-dQy75^THs^0_-M>X(>HED3Yw_)m9F7}?r-`{;;Y$TLE@FA{vIDVD= z?pBbdGmlyk~(zyMX9DKR*;MjDk=SKDe4$(^}k1&iD#y+!#D^HZ|T2 zf>#+SGXwjRUqw{^Y6_QIAYy1U#(U)iIez8Kbg`MOrsC!fpw#(1#E1uXEru@JinUE? z8Nx!_H+|N%%|81v-oD5Sx}o6*f*O7-t(+TN@1CiX694}^_?Ea`MI8krQAyknm8iUX zm(Su7v7eRwvRI-_x5MwPmzQZg-T8CYA$v?2DnSX~7OfcB?Ab)e9W`s-{V{whs1M%gA^vsQ08ifGpg z=t0E$D##TSMbv(hLZS#c6Pkw+8YIFt6nq#HBKT*58hqU)PQYzTtmk6lLmSw%1v%#7 z(mMIy(dDTzhKIe_kRqrBfh81DD2Zh27SzHcWHuL3*nUApbZMff@1UFGdRdUOcXr^2 z15jU_yNSpu$ffqVwDA>M8h`VtRGvcu+~CWkr&TruJ8JU;819&BBrcPR#?zUcAcDUr zBBf=&EE}iUuZm4QzSoVZn;(_V;>42K5&H(&RQR%ji4)x0%rDLraSCJC3YO1s(V-U*HycwsyZ>=x>+clu4y$A^K=Qw=c`%e3nu!IU3D7TVSAD z9}GKXQUn@Re#KU(GNqGFvZeAbjFPSY2ZLza!{Ia7(H$>}UIX823hvz|(3Nt$CwPY+ z*WVV)vPRMs%_G9_mn0N!9A+ zZiCgY)yw$iUBO2ryM3^uhTuEj&H;Q8Sxf8o(D;l6Ptg7t&9R3w?AqU&Ms!B-xI35v zr*IPS#;7@LStX3quvu7t8!lj43CO${;Jv_kV_mF9pk> zWtcK(u6(;g4*CDvdhq>V-k~g@J@kk07UMKIbQV&Y0Cr=McJu!`%&svbiNUZ-@EZ=$ z_yXHG@BlsN>K@k_yj_0nv)qi%h+wC!T<(Y>0 zxkEY=X*MEEdB31nw)6N`gFf>nKFZ}~4ilo#Jgwy^pX0otBklY4d9R%36v0a*C)HCD z463%k81xP13J=pTd0kFcy>Q*!L4dnlG!>~*z{|^>^>UcZ*%si%g!3^&&f~Q@l6Uf# z#_#s-P)7dyNOgxQ39gpIoDkOOW%=cwJNqaR2Ylp4-S`*fvfcDPd-n(b*SC*ghA%THyG$MhX7st#h_iPWsi#8(lOFPf(&eSWR%bFg zI*N(_&?F+lpP|i#>|Sm4?FE0{SBQTGdON8QWbe4&ZQI&+XYN@7O=5PZ~Dt}`4&WtoYE{@7{`qk{3?SSuS$p$vS z4Sr->T^#OC&bxBLqkp9-I%fF#<^CmS!Alk;ee(Y)KJYNoGgwt=U-DEk$9&>n52pq_ zPVT~c?TaUwPeeAV=dnb7Ou9M){7=P_xZ3^*c8dGvAWj{$7T6u}djLS~sW0mxI9;hc zI*+_pE9;xa{m$P$?b+zrQ4$K@Z_%^(2y9j>Mc0ME!MfSRAlngErj;5WTTPr2?3sgt(aZF7W%g|29m<7Ye$Mv*>`uB4cM8*k0CDMcycu_=pg1*9 zI_c$rF=-F0aV1{)a&$tbTsfva;Fq$-bqHFuwuN6;H&T2u74a;lel1c~&o7jw?^G0a zvLnSpr);B> zzlpI#cjQV=*KrWGzC_jB3I6t z!$b9wZXswq?BON?!FiV>5QOa^fzn$iGsU4t@5NAGRhkX4?izJ?;`}Am2N>v6Y_6d> zkwk$E{5UkZvV#rm8#yOODAO@S>>RFJe0k%7`oBD;Aiz|&$$6DEc)TjM9^cbArusa6 z2YM2IP2$TFl({iDn+;!1afmm*;?kexOxfuVl_hzJ1Wp&W1v`A*5 z3+XizmvEE_t2Dqjx$5jZlKlBI4wr2O{Zk;xr_W*p0zdVGzprs5Sc)$z8l0;e24`D~ zz3=b#qfzVYFfKSl2TlSSK5Fw$=4FCF zdoPlkZeJIZ!ckYCq6GcQh~C`0ARPa{X)NcZjWfO(YxZVmFs^W0M$a+u)4K4@PQM?| zh4H}~^Rq48f@mBa2|j)IE5?}e2CpdK93;(v5#taB27(y}4Ha&Y>=(Eg zC>H}ABaQ=jX9$Qw90V`;1OYG-AcGA=uuESG=+v8k+Dx}|eBAIc+j>)xXwa%RW+<_C9x zma9#9C3BhmS%W=~@!>PZOU@OY7F!?AgKE^3eg{+4z{MhWJ_Ofml2ovj8_T zN`n9QbmUE=+nS?vMS`#@c%g7i+!&zL?YuYuDluq(=o%|-`k$ug4;5UGoFd6oKsdl>c_i9PAj7_d^iDX-FA34E@e)#(KR|!zwlq6-`zdPbv05px&Fu|r64Fv0_d2#1mfi|kexRp z&s%nxW-YGOFx1XPG<5~y*kmdB2a_!6$6{I2D??IY_^vF``!8 z?lbV>>n6X9C@7!ul%AObvjv6JQ3XmS5XcM%a_?)zYs=W!STL~b&*jzz9KPXd#8m?a zV)vsQ-CfBy6KhEX#FQG@ewfbyu?O!+8LjrMy88LO->i7gPV|kNNH`3RNX3^ z-=RL0L3}R&(^ppk2<`v`pBJi{kdgakyL2J&Yz22wD@U^$BDnDK#B}^RuaYj2pnwJ3 zKx4T7ICA%5@H-_iSO?`3jvE6}vuU7VYk!wXYK@}VF6V#%%07RmDmTwaE;Z^YA&c}` z8z$%*2KZKfJn(}^XhD)$*Bd!xy}wSrIZmvUfpgVYV()5_PriD$LS&r~wX{C*gc00? zyn8*3-{C&9>0FW11N%}TD7ya@D7L@99{jiNB?CPTvyFZTr@uFXsQbW@H22Lel-HMI zhc{f@GgXX!mUNOcMh006<L7G=l}n$0 zik!IEp&gO4Sp6E*GH(^V5t4OoW%3<9{7Y}VcCrkbd@SRrXp79@veG^e_%1Am+DoW) zW)VA7Z}uKCd?<@43UwX46sTjUAz5lF@NPcO1!zA}1((Ctl>lWaIiib2f?giK7Hu4^{fDR<*YRFQ^wATIvmNO{}%N{P9 z;dE%p4Kv=)AwIrs=4UFhopf;>yXiRF)q8$J3>x03X6)=2)A1qWV&%np+H^hU+r%I8 zhnhQzcjGYbFTpwh34QB*E9}1NDfcS^q)V!^y@BS`S7=5T_UTIf5QGlu=XK+EIkE~! zlEorL&i7xxdf#WyF=Oxz5il-C_P*gGC<&jA6|sL}tH(_@p0H0vyVKmbyAwl9rvDb* zmM4lD_@et9xB)waH{}hGRWE;Wd+~b$+9mBdR{=(6W9L6+C-Kao3AnrsF} z(|-S$=DjMG-d6--B&>?CqGKphM^$m7?icIuf{B`I6n0{iZ@&><`3-UHhoaoCD8!sZKiVh)<4Qe+mIhT;UdeCt z1l{8ALEKW$#81fgG||UHLWYA!oA0YpqYu_BFfCsUEH=g2J5$ipKZy4{;QC3|Fite} z7~QeL7aGgZsGjLAUTp`^HrmJ+v&O*bl;uiKQ!iJkQCO%#YpZ^rGe=@5>9V}6-r=l# zdS*(2r~}1}*}K9K(&a`;CY(CiH_b{6tI1{@>b953ed3A@mOb^}+gS>jh*=V=O>BAw znjt4NHH5jFTHPG)8J~N9uA1DuUmjNUX|B6>YCS(>oJd+iBTvu6Rz7M@wn)y_0)I*u zkurJZ-uLi1jl6Dq?O}p6NxriBXf@W|*3~aVIn7e?V(o^MD9=?KgW&pGNc3^@4?I2@ znWxGt#vlAf3B>v{`qxMRChEC<1*dJpz&E%grX~FSWN>cxr0dqK8ll@;^W8m-?_VU$ z)!XQe`0!3mO)Qx+0DO^`$`f!z~`oWSJd#-c!ujPgI+s24xHUyk6 zRcFR?w)d~;-IdC**ZR|6V}_S!E7ZBuEjn9{ZFqjVGY(zE1G?tlCUOrHNj!ctBRK4T zgFb)3(q@tHeaOb&=k?CHxmS+6)p|npnHEWwEg93jXLJzdQE&Gj@9JyrAeC1UL8>%^ z)&=tBVXn{G76<^9bo|F)pBf-RLks0Lsf=sW-OWWosd;i+-rFP}QG>`s8P42~g`%hEW=U#Zf;M2dOp` zASbZMZ?y~e@z=Nx-@gb+YE&`-4vf^AL|?4Sq)Fv;Obh%YNyQ{G$ew%89;q84Cb<*?lst^j@@co%6g|W?Ssm!$&;I1Lv*?cp_Z> z8f+xDp8IM;*Rp>A#SY0+CoCl7=dTm3vApD?6>E%5ylo*`Mr5dh)Bw(;%hg|XXH7LH zxfcLDkI;OfV&M1#rCu8ldEyK*mOpm4QLGSd3)#YIk&bmlBvKA)yisF*qMyGc<_jXSH}56syZ9#T8^Em&0?G%0Z`zjbvSw2tr8-wrdou?R z;(2mW_T_!y%J}2>nZ070Ym2ACurfCg+xI54M19i$;MEo46h zY}i(Uny!Y&Y?yN~7L01lKK%Q00*M6kyzN;~jhS*LrGO~;I^?FCwuduXq!tr-?uLBq z#A#zjSbci&Chw!Loo(RkPfcDy%(1H-)7Ee{GrsAw$lRiv^g?PpvQbVS35>Ah=N*wV zzhliC4KCsffD|M(CrN|%R7jB{Us~CFkO`8Vo^Cmqlt|6Bz{70HQ6t1|5*rZAIBYJ! z2a#^0ScLTVYZ<%D*{911FAkj8)PwUeF41#Eh$PPZgk23?V|yU+_=K2+uFUc7eYGHW zhI_N=$S)?X9TNKHl5oqknhlR*lKQ)-D2kUUg?lOnA~ePhGLa5*Bgm8S_PwbCPzOTi zW?9Us4Gk3tW|@Fd0`W56dMVmw)eIU4%^Vr)woiCZ(-~r6VW|8Hk2#Dsh~x!0x@p5j zMU@TMqbn{R-a~gtkkNb(8$jbjs7TEU-Uufjd3;SGvrDD9%=_F0#}#U7@+jYsrPsJZkOuDP%!f$jBXFzg-gCz`9mH_R@jU)`F1A5 zxS;!K!Iq4@1fC2&Xq!yN&K8m&>AirdB*v`Cm~)51N4lzBUBVSavbuj7Uy6zjQ&_<& zA@U^SaPx)p(h# z9%<|W%PJe)^^2wWRv4#>rj^6yl=b1Kd9{FC=V@)rqSpAfyJZbj^$I{Bin>s2sSFp2 zx>(I@H(RZC;FRi<31?7@h1wg}xQTN~eW1?lX1=Yalg3)7AV-F?#@H2D2OO7`jT7~F z$zLVn!_XvUAv%#roDJ_a*E8kC)lHSeC^@AV>?|hLq{D0$c3aV@yaq$+6e`mLHv}`; zHNi;rq{bKsA39UmRu;4=h})F`jt?&)hY@dbny@qUauNto5PCY%_bskJAF`w z7Oam~CylvBL3)-0(V&ees0H|NOYiD z{}&GLhf2Kh8iqZFI299TU!Bv*RJ6@({J-f7XU0B#Vk@EE5l^xBsB66FN~dywQ%p#e4yS?|rjYq33Eh55rA$%~!q2A_LbN^X$N=**faq zhblJ=ghfq0SX0bsU0xea!SIq(r(`Eju!`zs!gkW2g)zP^wi4Bw(x8HWtvHX!=Q99reF zuq|;VzqsQ9?RD8qW6r7`IFDA-4Q@mOV*VL3#e#9od;MNQxBT@n#_|;*U1fngWSxxE zM6`NIIWN2H%>M^C*~P>AD9sPbs?C8He;u5KY56lL=9HHs<+)40)2B#+C1od6oP!qH zM-PECg#`Is*#^~WjL!4XldK)L6#`V1#<5+wa28nsX&)ddToUW9>NBJ~T)21dGEj=j z3>LYVjOQi+jJ!*?nXqS?o>}$sV~V6RQ?*N@^PcCpG1N(bZa*f3y}3M*&tp-S-%4hd zM$oO(-^G)2uNy>?x~50YYQ@Sc?0s7bhKZsX1tlVlcS?&A2;U~-#VuL%(Dk2`t2Op| zYX|yi2P*V{5o%07S!L|8X`gwI+pY^!v2?ED)tdCu_5TZ*asXzjo@pa{`8k>&<%H;4 zr?B;RexBSJLE)9cxx;i}T1nx`b)O@vvpv!YEHf9QrtYdZ5%$oOvD!)9b^g^-&G7U6 zbJYB4=xJtaRHXT&=}^)h(>7kt9E_-1)EA1VB6@BG%i|A0Kip2;^&l~tQ2MzYoa-c7 z4j1{}+$JM!SDPzsS6^uYB5LlJDGyXFsiSsa-IWz|ZVT%Uinj*z%Ww{TzqRLB6PSLK zwmteG?PM*RZHKD%^lnv+%aZy!C})#~N{CKG-E*nFe#+q~w`a8l77FT$IyhJ3)OmfM z7Cb}!^6pYQ#RQ-(qV3YDf-lAE4Jtt4qh4ZX(@saR2Asj497 z7Mwy1<6EPVVS(xvm|{ph5tA}!peKpZD{)2 z*c7B{ZM#qeONTgzp+inv!#TWAct8fhUIW`_n7Df$N$mtz?HHaW=?}4Re3WinxPG|% z;Dik*jYwkX2Mt5|zX?2r?$g8-g5#lySy*iJlr7rsKJNI`#a=^Gr~l4_dgdQmRk}6| zwlPH1#eQTQR6#z<_q;>gduij%wNN|43JT9lXOu zBSXu*Vyk`NEi^@{W_QIuCE|ZYIymt^BCVDc1^jgUtym4$5X@0M6Q{tH-gVS8>@%dagg#3pvAVxjXA-jQ3_|@~_%B@06VI%T>~@HEYAB3zhUN zs0Wcjh0yFwSozC9ijdh1kvdN%fse?7g&fnrF@y*+3#IRbb=++X9E?j_IzAh={gD^p zps|Ql!3FKa6hsD0jxDw2k-7f>D^m}v>(~DP zYd$Klc7VpyUXj&Dh@m?k^9NXHm++CPe{vLlfOQq6f8rHXXbT!C{sS!7ERDN_|1Pi% zwoy37t*&xN`%Bf<1I$%F!20Ruzrf13_@VVbzyeDB|G+w?{$F4zHvbn`5Ml@a1y)cY z^#2EzyAQL>L@H|JQ{-=UAk&28%TppUw3-GQN*rrT#g1tZG1wn$m4E)uL;+I~To}Yf zql5e{mH1yhuN^?mHlRqhU`6K|LJK3WQ9E6?!$Fyu5 z!UkaCzc{T(N9c5h2Z7b>`d;k0kE!AEi#G-Ht zPD>eMC(vNp{#UTdLUSa#788WDXCfmPdjfco;-0=~imVv=cmG#l&L-&a1z|Hqzv@Ig zh3CRy++f6vK`L*l2Pr8-JX95%K??yz9F$tIsyxeS_KM9vmsXTo25cMJ3$Vs%#rI@w zmasCOO0%l&V%PAIr3|Mbn0Eu`|0Brx+IwiHhDo2>f8IY&+6vA|&d2*1qRQ|ykD@Yk z{%Vyd97(s;MGbam`i=%5_|{X)DYP8EsO3vNQehn04W8oS+UE zirU{ld&$=RpcIYH2Zm@t}LhVn-13AKT>Hb#T z6O1s@hI-IwwySu}nS*v@io2GIUKWNm>W9ktOs`E)OR)BID$!NH4(xAU^GGh(Kgm(w z%m8nbZbDbr-dv`p?*Fchq;K$x+I29X)Y8qO))pp{%G7-GXL@r#lhohxc6}6(Ooelv z=|g)2IsxupJAOF~gjQZ{8fjtAJHxcqV|F)tfYo2_gKx7~TX;9UR*_#y__XG>2!C9u zmA#)-*t(>y*=BRFU^ATtss8kixG zWm2;mh&WEziAw$V-H==JzmOIkF0kvadi&c=8)$mvi!w)z zajb7#m^8O5=GhM#pk&^w+K>c3F%P2@Q!;!B1sYO&!%F1DoFJkYCLxytDKyj=Fat71>pDYgDFgwMNX@1j;kvVZM>zeXS$d6U@otwus5rur!}Wh zzYdH{*i@r`tqC#-{r;tx;t*fWt$}Xe%O(kuF<%YinWv>Xt7$LP_&}s7hyF`7G=o7h zQHL4rSCW&|l9g9HEnUJz_LKODIlA9V!&*nTlDKYFF4i$P^)P zeBl;cLAAW#_Hz@sS9fzem|o4J=LZ8M5PsHah#Cp=$zm>`2i6>J16^dr zxJhZ69k>{S>rDduozLk>na5g6F%9&+!@H1Vlm8EGxPV<*+@%06y2mY%JrPOeLb@3-%Li6bvqL zhhy3kLP3d#%VAyDxW~bU9N>T) zzZkSJJsGOLVV$(FB=^2KK+V57;E%L;?8~z3m5=+vSr#sUqfU`ni_!0mI>Cx9fi!8i z#(jIWiN%#TjRcj!poM0xo)T_TPk+ZT|7=wr1RueS#Inuu{Y{TaQi{?&k?BbLA+IR2 z=Ti+WOr--{5GK3i5uohp%jhNOQynBZ?WH_oc6yiZ1sp^<)*#qeMs=avN}qB#f?IZj z|6qX>Z26-4ltT)WbVK865I#U1tx?Dr0|?Y{!jdm|_gzptDoseEG8jT<^v2tv1Atq0 zyw8Ijo-x{%=eDkXpBqs-x#;lJs#rlQCn(+rK}V2;qN0e|M4_TkN;fkwhzCvj0(fp9 zbeB=q{#=SNJ7dF1_1yzGEXye61yU}E1wcde%t1+yv^A?s+&Uxzb&Ac%+4N2kpe?jPX;sf+fa$!Qc5OdBm>Fj{Uf7 zI5zO_JMC}c(RYPCo7A4GDE>pPXDx$oiv6I2Bd`ZHjUnqKO|H-+XYOdWF<*{gpd4wu z(ly8TkQi>T@?xrYW|<|#D%x<6b@|L^4thkO7)N5&0jMjb*H8`BH}a~DbSL;7Nns2y zQJ5&~!6LUg+#H0z z+5ifK(M9`rpEw_?1WvENF|7n4S8JRvr@C_LO(p9R=w$pjE(&!J_&M?ygAhGknRi5C z`O2tu+~D}KZ_WA271?U%IqMDDvlSVE@`9z^`9*gAVB?F-4(|(M1L4ZgYdkZgGyOt> zYXSA7y5jD<2-T8=li6X7+)}^@E^i588gyxaD+1k3Oe9!_Fk3cWerjJ=a_r82t|tn| zei^U1Y!X{$UbB|Z0%tZPh#7O-Au*y$uqP17DLK={zmr4Tg3nZ+b)yi@FE~5K1 z*4FG~=TVYj1shn`=NE1Kuzya{a%$z--jF&x)Aam0ytnORG|kuV_d0jFF0yuS3&JD^ z7MauKOPlJHxw5c#3MkF^gJPr5ZY&bA=HQQIXyL`{8#83eI9#&WEj@**{vE*KTURc^ zO?RhPto1jXOQq#64_C<>gYWY+H|+1`ukl*o@sO84^lI8xLyaYKs8QXMU@XYS-X*LH8LVO7m4BTniY+3rkT!pa1E2*Ijly6z{0{R+=GI0dFE zJY6h`OLez@Q39UT>cAO+fPKQ1y;MI41Gmv_8s=NB12n97U3?1N?@!^Rm4j&Rj zEG>3tou5d6x2<$)`C!+*bW7dAI2~%>Hr#oZxHzi%1vo-9__m{pV@dBtAT)pGRn+jv z?#QqAmng!xF~~eAvI2RH1MnbL2+d)XN2#XDrlg5C-~Fy4P@|cSo$P~v=U7z|EMevO zoh}wH18<#wz<-FHdR15W2iR=1YxGT}myiJR93IkibRPHS*Fs8hp{WH-o`r%Ak+~N) zG=fzu3+0I|Ed_ODN@fI(N%Q-MU}pncKsWbF#4vxsF=RxMY3Zq7#+7b*=tWl?x;YP0$ zt-e|>giKd$dZPHFS5L%M5Jqp&sgjGE61SsnSp z>|H>eyXLu0wve;Snc5jMqvW!f^I<8>gphWNjM?0H9|)eZBKcWZ8^_x%uW6Iy%L@vE z8+u(=G+`K%>RJ$Ww!jgyuY(dCsia_8HgYkGNd!B#Ajp^pxwW{H3Ay^C^>QWF9IBlp zp^H|}E|fBu+Kv;{ABR79BvZG;fAUD;kmgyH<)?dZRICfRW^G9{+szw1GA6 zx2@s0X?eLVyx&fGivWz0P%PU;9lMgNmw>4vt_FiNOX7b5%Y6*L`uDU}sr11+IQ@-^ zBbup7!;<0FR>liAAMf#jTBmM9oQ(uN9WT)gXyc=3$MD3grsz>0z#bb`uct~i zKyv69$ul$je{<7oqMCx-ii>6(AJz@u;YLN$(uf8pW-KkaE?A=Ehp;C=PGzJTagt}~ zymy|V?L{tYkXDdLb0qe*&Z?)^4V6i(ZonE_+F7G3@5WuGas46n5%0o71S(}zMr3)K6VH5(&$_- zJb;?q2y_>r5E?;7MC+i<$0~&f_LEbA;o8qjU>j)Z5;oVbs)dLdb5tlxioBKY`?(8{ z@uyrXgTKfg9u~)27{ux&)0|swOi;MmF=YQu~)pur0R|RD2 zQ8?GW$+I`r#edtS5@dgd3QXEYxV6_9U)zPwc{KD_{aL;(jh4fL&lapDVBM>iOt6M_ z#z`9cTXh!9fNQ~=#T5%7*M{zRL)F5n6dZ1el&g;1kQ-w_M3puDhar06k|D=^C0YDg!W347YIwn9=c| z_+BdLx(@8zPiD)>1E#MQ9Zi{Z#BbosC>Wf$f1w8(saJ$9aN$9YwGGM{4(79=8vp)0 zPM2Vzr?9G0`5iCafLn{xgSRgulQ6_{+wk^M_qFP@}pud?5c(*aWP`|IvY&mBc4 ztc~&VMO^yp^sf0H_qryy>@LT|XVaXCBW!kPfx)#oMmcoGy=`O0SX~kR?3quniMX(z znU(qOLUkomlCHej><@))RIYx@0IY>H&sQvPAX(vdB7@=2W<25hw|H%zXCm(lJKa5B z=*AlF@ksbW4}S-r%I?h?&DfF+eEZ{mS94-8)Xz|V6+G4jLnRp@sjpXtpj@)(@royF$=!KDkI1v0u=l z(vtoNt_W{Mw}S~TeodR00-4y+5M?u*BS|05Y$V8{&7m{Ge&M3LwyH^vdk4$?`M^p4 zWO5464CmI{g@~gpEXmFB%0V%acue?Z%Xjc(6n9T*4J(MZouOq~(s5Ld4(pelYJ}Ki z4XKEf^)yJdd8+!CXQtQ%-4GhrGO9ef7U!01A4g7I`m)#N()#!BFF6pUvPyepONPDe zsTdL(*7+mT&|HT_+Pu+;^>D(}T+LDj3ghLmX_Ib8+?{n#rS^8HTBX$veom_vtKlWU zv^E)f#@)wz{F_@n@mVKXX!2J&;k5;@9WZ*H&q3)m*j8adPD6i$91MNXq7L)MGx0dR z{Cw=N@GlnI3#Od#J>pQEU|NY@HU*eR-F$o&OO+`3!5fuc1zn#z#qN{Cq=sRLW9gLI zECqs0pWlg8qZGHNi!8Q925hT?*;1d8zwo_0AV>IBK69M=fP8!n)n*B_Hd%ImLJVCT zX1lMjNl~4Z?!VCG$dMvQS60-5xeP%B$o8j{i6U}BxSM}TiI!g(IC${AX)_ZE?Dhi^ zgD2zm_LfaQE{pj|b;-whK<)>#6K`HO>Nz*6xl0c=XI~Bb6Roa-k!y|NOWhbyfuEWd zuAS8--A~=O@LqagB|r@rp6L@G0Prm;h;(H<=wsLW3$F&VJvWep49C@3cR_4Mv7KlL z=VL-;SiW}z(dY|7%Yh^bP|xNp`%+H=^7!dm*a70H2!w(8-xr@pC=Hj+-wdL)(a%%a9V4D@M@ri zLN%2Nf5=-Z0(jN<@CH`28Gs_wUaTUpz`Cm}< zrXD`v`lS&Oj7`Vf-}=9nFYyz)eDu10n$irclPsl%EM3LNRoL3kAWe;va z2ec4dc=ITmZ)U1dumyw`naz(!{H(GEE(JXBz7)rjxY=f{x(MH}qD&!nVwFR)Tg&9t zkd@aORk(!QK=cWt+?)RB1lTFTLDm}>gNq{7K&z*C2t9mPklSzAwflvHz4!bM7n!Wf z!OOprWnNINwN1xt9aAD{5O)j{W;iAgg}lAK@tQ#) z4_4%3C5!F0>B@0G8D4D^R<^UiJ?m@@rkFh9@`F) zsjJeu=Tdf3!y7zV4EAeK4&3-n3AUN?L9M?7JWn|zgJKWkEkhlUSVWNG4j7HIh$y8? zVwqih9rBMMJIBX{vpH2&`iXS*%a$@U%o-`kOB?hK8EXwhbc`~4h-p70MTj+}YQ;N- zaJ-6$mdC6SoY;oR!dJ5f_D7Fc@K|7NUmLUScWss#auCFYI73ropazd7r6-ZVxRf=1 ziE8RA7uEs;hd4*bj2l)=?4!h?2V@VPoITL%8tV)wI~mKTYa2ZN;rxn(&#=oEx=KJ< zH_AFHAFX^ewy$e*_g(WwT5^Cqv8d9j77v9#V{z;x`2C>8V66p6K`BL<)ye*)aHkk= zHsWZI?pTZsbAcL*5*FxeTkDATpqyH9(xLWTtwlZhLF{Q*Ad&&X0!(?G$=RG$n-8vg zFI_lC`i@+;@|9;-wqXWxtFSxN!Un9SehX>wv#wdHrhxudv z7BNW?|AUy$u4n2v>l2%E_Au)~*m9MJ-?n6=OPObeaerv4woo zGoYsE&wNd=G_6nKCew7frwxv>HG;&k$Y9MCl<0($L?`GqC*k5LZ}T^O2oKC^vOi;1 z_zovX%x(kkVpp}q3LvM+ zws{UFSWHWi&(j^dgisePFW7og>>Max)%MqR9BvQz?tai;A z)tfNjO{3;MG%JP7X~oCPduB#lo^?FsCP76ZUS{g${7?43U{pC%D$eS+iER1d|N0C(Qmc#eC-ye+S4?4QrA}h7EWe@BJk2HYk224y1^}h?kgqWG);>x;eHvGwfRVzPoe_NRGD5eEYF8 zt7JG>6vVyY_pT$?vgwVZiQOLfoli!d7$GmHiIg#*49K-#mWbAu&ShCc`T?q)i@*1X z;g=XldGzVcvfOWQZccq1mn)aC7bs{adaG4DJov$b$<>={-X$&rSY%L2P&pAsq9Ac) zR+0l@s5q2SH*4kU@2lit`ondnm)&=Lqjd{38~!HNNEe7?S5MRo6|u3HMawq1Fq*`4(bTH*QQR7FoF9b81vXL`Lf2h(&2dwr4{9aa z$yFFN3xQkLeU@u=Wd3DNK^fE(vNq_PS(8UmnwX~zzTJ4Mj6y}jyI`9~;UVK|V!!tf z;cu8`8RO;gtiAz6jDVzQ4JS%MNASA$6<;6r_V#w^*44}BYKegbWcJ`esx}}Lfk%qg za8Cs1&6KU@+8g0mw$*c?;Jakul~;QGgoFSVRpt*YFMk{abeGVf@!l;sVn7qq>%N9= zLs$uGm%f6mm_}Q@$ov6+`RgnG`? z*fb-br{02jaQ9eDx)JO_?*QMBy`gAm&R;1W%%!Ae5+%7N`W4nCY(xaz?t;vEMo1ND zXUIp?U%r1x>3lND#-ms*KSz;O>79NO4HMts_M-0ejmf zAF+Ae%_Ay;y0l#a*>+D2Xy4|KX%joP@O#sL+)q9FZfg_G9&1ghIXF9|2kvw$YK2#> zwLD-EmQ-Nfhd|D125@^3NCPrtv~{DIc=7dgxl=1pvB(*Soc`3(gtICqpnm_l!#}a6 zrF_ko9|vpqZjEM;6#^X{oFpL@-qM_UcESGF8$F&Tw83Ov%mk9*a8nWDlzLpIm*^kc z>4X=`Cht@Ogj^RGmmt=a5+ddeB-2#7$}B&Yb6&C(EH=yxTdLYw`4fywR(C!bc?Dek z(2$$9ZfQ-cFqWYCM>@nK(ZfyEGH-m(spCz-61V9R?BzdKQl3Tu_QPjIDTHG7ZU{=k1EhMQ!IqTlsV1?YpDW$~In%p;8ESV(`#Q>^fj*sGoE) z&~S&Wn4aATnhZaS*ZHO85!;DEKZt%TdtbrSK&zDee8{5GqX*uPQUMD+Z)xs~I04an zOUZwt`*|eMtB<0;+^58CRx>8B88>V@bxma6E1?1s6|-;zRzXSYIQ$=mabxpxZ`)$q z1znBsk__Xtzh%Cw7kK!VG)41BAgD=9_NBz3h52W$VuAo@lcq0q-s)`tOk%b98(d@> zt)^_P1U^AZ-tu4d1F>t16MBogk5y({qg_Afgg)wm_Est`u7&%d?6BgeUyzQc94sC%=;iC~jkDtomx=9n2#R~UW!etES8BPktzvMfjctSN!#^y; zA&9RS!@@qv;RO>55)KS~Z;r3bfcxGU%~D^U9{oyf%oXOVK@i%1jHxC9A_ATVUW^Ex zh|>Gb1f$mCL9TB&YCi1lbT#=;KRFMzMs2DS1a^P2oz=)3yUx@LvOESI2v!IgN+-09 zu~oGJah+;i2Z$X4Q$rGFF=qS-vwxi4@$g)ci-)j(FSIXM(JYC#IPKPJW^!y|dH%|9 z5>`05uP++T-K`hlml3oUH`q1%=ngfyX&YTTM4nFZS@ZHwC_=me{FHdagBkkp+~V=A zVWvvitXbVf#KpZT#l;}s|0}b9dCOB)B>(NU{ckx8fl(6h{J`6T+jKGBHS%XQwu!s$aa<%k>JNg4P8y!bPcOCs4{XdPjr}=;lB+?<{-O$T!8=bf6gXDn`<_T7l zAwqq3xRUTgViDF2PBY2>L)%+M#nE-$qPSadcXxM}-~PI>#J>-mQG8>7FvaxN z!Oq08WY&et*VCU`Voi9JXOr=}^2&lVMWRTrI2XMRjW+qsCP()j_|Ok;J{1Lz#V*^} zdCiBHCFsJ?9Yy$2Ol?~}X>{hxcWOnDAWTWsm|u9KPVqW4Gl;J4$#IVvM1-=v#Nb=O zC-cepP1`t>F3N_LuBl40q0X156Xzhf2qjPQqeReP*P#4E&12kqcSSY`J@!5*oy$xw zd25XL=H?XYkc(GG!aW^(twB6w$*tCojY6gEl+RAig+#lQbb`>sj!qcijg&tK z4R%R~f3XhYMp1@k=y1C+K17ugK72sb`2NV#jhC&@M#<&mwD3jrc+1JqYRYMlysou8;#USgaGVgY2`osBH0E8@m?YW+06l{Kg8E8;wjSD(to~)0C^u z@;15@;kb46v<5pmTC5Wu7%C`cB>l46J{24vO>YhP%78R4GKh%o`-k0Ln7?b_%Rt=p zM!ZM#>Ypp29_*XqIpIbrWeH;vMmM#7=;tq~H0ac@y+#tjR^XhhLJ8Som@6KtIC0588z`8+kgAK%5k3qkz&1n$4{qVVk209%?caj` znE`@S@8vCJsQD05BnS*=xPw=d;F+wWF1Ii42nngX^kA5z+VH5dQ-7Y_S8q+@P%h%Q zs9;y7<+raVUqMCh>f9SkBb6UQub{IqWFO!9XY`pCM+%(7O8O zOe}$11UpB#($bNAmmT-lLpgi46>sR%V> zdw;$k(w+*38~Od_O?FrK3Syb>yuw*cgG1khPZkund|A3|4itx zlx72o~--nh9)+bo4v%S@GyksjWm@ar$GiRnFmfyTRj@ z8a$HAh#KKZR_h%!B-iw!VwoVx#b5y!uM3AbYeKUskUyH#2nh;JdWGw^*ZI-xd0f|@ z1+I@FwDd1K@vhW1<7!%cIeqh>FVGkmd3+&d>)v_vBGxHa83qM^{WQ%sKyCd@akvZp zMZ076mu@-4AA}a{W49T!efX7U{9?;%M?3TKe%~Gaf1GRj9hGHHoo#kGqnq(Ey{8ST z0^z}?`ZjM{H=ylUm%VB>NIkvCBgvvJWpFfs0sg~`c+2`~!k;tJH4(r1Ue5f6>+}@1 zS`G`-eRH8hZN>jPRY88CNk!QGa~87Ky)}K!?;y;>IDz?5OXX8&!dFC7)G9?tZzxA#brSY11oOUe4BAAi7{a&H-|+_xg9ZNC|E zh|`GvMIFMU6YlK6>>GwS++hMM6RF2coA!sE111CY#jaxJA7I4hN9&e^=n|bdHiY2o zlDEzdVE^XqT;;jp+;4Vq20xa%PRjc|dN=T-G|5_(e3Ge4uhR}nd_3))eZl^a>_E|r zYEQGDfsXNY`SzAlb#Kwb3? z9L5TWMWR2O1cMsrMc%e0f-_)V@;1?njKo;Uk6UgSP?rjTfCd__^&^i#^fm=Ln<0VU_#OiWvGEsCn{!f;ZU+#!^}|~ zm^KJX6Vf{OK3*8fE>L}0+%hQb-3)jMI}I^U3;ICcdM6jO8soc0dn_dhe?voZaO42_ zdW$Ids+nvb32O_X65S>DEy>-RoMry^bWdJqEychs6{)8)Fu;RHYxldj&o#(Awi1rS z?@!|Mkl)+{hBa)qUIy$d zaQW!H*~^Vv6}srD5t+8b-jP4)i61}A@VH{qOCb5>CJIZ|VDE9!J+9c4emp^#E28D^ z)X?8VmJW#7#a1P>r2NwNdHS?tULv|C``5;=2BElbZ=KXH(Lvz#E1WUq6f-wUmoCqS z0K=u~{x{kvfo+e8jmjsVq-JDBt@pKBVY+xcV76NwsJHODT~zswf4C6o_*pD;x0G0@ z#rq9fR9V7G*j9;3IzX_=;}X^>ZAr`MQ|pl`h6$Fr-TkVxPoFPZJz@E@uTds!>%E_q7v0zIR*Z#i$*^ zBu~7?35AJId%iC~@P$P8!0maGnd1aY*yA!tWQNiYz4|qnpOIZXIu8Zw6B*+_@ecSt z-Pf;3|1!vsJ{1ys@{~}E3Zxkue3y+Uw{9^cE(csu+Zl)xOGOtGNTXpCL;037uV1?j zdsPuWMWr7)!bkNDJ*NWiXYTMX;~`Xk1<M2F zcd6+@)JzEaX?cb*!`;rwnEVmccdOW7T+O|s@duVS^FeNcWkL$Y>G7-&%ie>Bm;z#& z@G+tNM~^`Z5 z#6NFtA)lpklR29&zumo4d9LX|ppw8S9r5I(lE9*wCtjV-Il)uMgP$?V&KAS79@)R$ zUkPDsMrnxj`t3FiXZq}nX}Q57#2#^2$rAyO9tM9AEC8m?MMU81E~d#)&dXetrq z#U}id5q%Py@$xIMom^Be(`LQ-bGBJNR((#Ry^g6+DG`i!hjg|sy3dCq`E_b z7{=nkELr0G)I3%ZWGT=uwesN?RSDV0ShDNK)P+e2<1Sqt#)ZoL-y~UM;#sjfN0ojE z>Evose_Zfvq3#_5ecQ^>wBOzIxCoPp1b( zN6S|lqDltL^uxp%k%Ma!ZBi1r95AbH?>qN18Q_!zi1-|0qKD#^gf+LTZi zwfpF56(iJqlR(8~Gok&@)Z9Or7TvnKtVm}2f1<>j`yy^pfSfY z5H~{X>*Z0qp5}Gf2AdUu1|AS4R*Y%b7n<_kQ!hy=E z-$|fa`tI=k2r=)j+1Dm_&_*{~a8r^|0%;|k2A?6&-pQ>{M! z_Kw=^v)NjFH72wow#19QL3tu3Y;W6tVV7iJSRw8$C~6|STwuAzKPg-;wvP#VDIy$R z-%qcnQC<+7dL(I5zE!&CJzo9$03_yJ@HzjepC2RV_hg@@w=HR$#+wSoBiVqpKL6N6 zq-6mp6{G{5}jM z)z)U~TS+0z(^Qg!sF`VacFM0B3o)1_9VGO^oPj$56A7F)PCDj8O~MiPc6qz+&8L0} zQCm}YW6odH*r|SY@RIUHiV(AyBaQa>z7_`VP>$G7tROd^nxEz@n38;F%0dLRq-J2{>3h zINdi@5)*fC_8xp!jz=CJy}}O-i;B#hac_cqIfXVF&E{Zy>-q;^yzi3(x!->J`34Ex zjNaLrI=nAad@Py)JmWw+Y?yo$YtP&kfvuE#8(uWx{De=uPD@#;!ze|!JK^lgGt;l{ zVw(|;rl5uoO#&fOD+cI}0?W5km?#G>Ft;FTnjIY9_f2DcQ+3jQS>7ReFwSdT*BZ#+ zaRz;-E;C7r+9pGB9Geo5p$J_J_FHCY?w@}3ij`@m_aOhRn;18ekV4t$+RM0c@e0xx zxGYZeixZhwH`xgm25<{B_f3~1-%@aXpm|(54cZu4gAsUWv%|5)!$;CK`f#J2(z+C^ z!GjzFl_gN`ew5u@@r5uj0vj!;|8_mUM+B)7AK8l6Hx5&;L2nFJgxRJJflZ^V%KWv> z7!9<0^9m|cRQq9%+D?bmOH--Adyjf|>h4z%mWRb~C>B~EYnKbAXc+`zvzNEA*%NW0 zj7WjM+{mzJF8$#UDzjc>9D>Da<3uD{HkX1xfguvxZ?T3Ny^ThJQM7>TmB3w#zrAHu z-fVl=*rP9~EsY%SDT~~~9D!dHut&`w2^?R_A}8jW(RwBDjcQgY#V_*7Aiu-&L7_;& zblZ4EM(r&QBj}JH3VMqQl^HK12ZDPo>ZREn+j~JE&f}ybjg0tp8TfLk4@)6Fj!J=# zg+nzw5{V`2iQ;u8EaZiQYRmEgalMaZjLEN9@zN$3%fnVI2n&rxH4JMwP<@Pt&r8$C z@+`MgSV;}~^T*YiMZ0Uo z_wuawrqdZC>N3Fe|D&utguOie?4E{ZYJoWaU3gX1|13N@ z6pPk|Lt+ujE8&s_Ra7ZMWVG8u4jEM}vPIu=a&615Ef{Mu&bxc6-+qEZl-ROlDo#Ai zkOnGKp-ZHdsy!yS#atx^e5BEy`S(vt`X4`w;m6F4lRemlrzNk{_y+5NFYTkMYV$x1O#RLy2s>NgN1pd@?W8LWBcP*A?BPRe$r%Hb1pn z&oh0WqlZ5KQl|P{D`T0Jo9bVXx9T%OjQ623_E^DKl)DjFwB792I%Fy%xX|G+tO#pQ zuE2SKqIJCap)~W202796e%Rcrk@0N#P1GMv#22C3*2RdqW!duz)6 zd(_%BTf+T!iikTov36l*0IM{#y zNJaNKX{;2Y%u53ncWAl9jlh5*KV5(?ca=d{xm#gaXvm+ix3}ex^F=UdxjE zZ2Q~N$OKGGpp@WbGB3?K4;2E;strv$Mw1+K14=JVUatdHyk3J*LtMpD&KWu%8c9t! zFU>6VbtAPcgLYCp!`1^HAusNt!5*f$|14bZe~7`JFo(g`wS7y-9u@@#&y<5AWlt5(9`)=0#gt*ZxUJ<+Dm(iq&|V%U zO1gz$RdB8%c_j$i4nn)}_`IMkMj!+V_7)>G0Q~<=WE?`J_-``iZvFoxWAcBI5e$&g zoKM0FhsB9X^!t1Y5(U1tGX;Q+*B^Rg-AcHKYVdYNj*JIftiws}h2q28Xt{`$}z*;lkT78xp zix2I#)!3sZ>Q4ws!KMiNXL>F#oc%k18X~_144>7=Gml{a&9T1_Wxf{>cqZX|3yFwr1QyyiKznj0>!uR1q3Y*-!`j;{ z$f9M!BI`vMpryRfs8pQ_dvk(FQNHy9gkAudqAe8LZfTeKS3B&Tx!Z0+v`|Box|A$R+>^aX-7Tj!9qA1VB z&(>v+8n?)b_*AkNk1X{Fg&lq};*tYflsE~@zh`csF@i9&7y>$(@zWQzVepBD;>74zaw zpu_wBDAQXg6uN>d%E%PD0VZ>rlI3}!1&aXVFv?s3vjTakLS>3E6anS>qX89d6NQ35 z4Ga8F&7Ke&1B#4N1H&G*g*nUcP$a24&9dI@@JqBkb2cPVlqU8WY-~187L;e2B7_aA z$)I@ErV@#Mx(e{!TZ4VCHn84$(*Mr3Ous1dBoq2=Mi!mafoh z;xlUbqF$ALkqol#P}qFl(08#&o~fHmv;w%Y{;`jTXtTs%rZ_IoPKlj}(|UJbL>JAI zI3zkYJq;v04r%`WO-F8l_$8%p9#%4STi!SngAHhS=r0d24xPlW{JAwbIi zt6^A5r9}TaR3x3g5$XauGXP?62X zwZ-zhS+dvZ8Mmm(&EOZln|FbhK&;+SXYd$#0V~PahtOeL=%Fm6u+AtHKO>Hl|tfNfs!hc@d9{J zXaOH}k|)OZ%lhY76(49WEU5o3Em9D3$dGh_pS{#3WNX)Qv?ZO8yGP8EuTleoD^;!h-uO6xjP`p+Fq|ODN8yfKcqG{t6{X5c5Amc}|~v zw#Pq0f$YP+#gfTxoGMgL?75jJ0jWFK>(I>10zbXlU4?fZ4rjr3X1y(kX%m2yPfn&y zltjg&lMOQwEa-YIra?x1RUGil_X(5C`fR;H0qN zVrC{P$G&i{f0_qq$uY=Yhck)>k%j8-I($qaER&Zb3fUgHBnJfh`MHb`7S|rEiIRF) zjRyz#qAcVtMvjFPPYzh;VUkoJdF?8S*=Rr94Z1^^BAn46!^J$rYIpWJ_RmZA1eR`|=IFrvAPg^! z`1J|~%5JYS?t~2BVDs5tXZ~xsi0#Yl;qkHWJbVkfXB^nhq#oG6Lf)G^?Bq{r6SE^b zR|tzJ*aKZIu>5WQwol3)>b+l3qgaT61gHM9f8-`C$>^IXS9SP8xCPIUr(QgdU(+ui z*I&t#xLtE);HS=r_%|*E9&4NJLUo|)abDoWa*j%AxN;H$qA8_^uvqMH+x>_YWH=(< zIryv`n*8M$$yr5g7BPgRPys;tQ>KR41&(cao_e|V8~L%%f|zwv<%+p*&=MLt4`d7+ zUuNPp<=^JN>~$70C<@gVpQ(gDWv(Z>fS)A?;0DNmUTKhf9$`8frxoqR6totI0NhP~+eJ7T_Cn5?b<~{x(?9dH0!FYTead|H9ugQKH1H z`Z$er1V(`HPL$BhFGZUP&a=x@J=3+Zx3H~-Z*ZRDf(YDfSp#Q z$3#hF)iWH*@q!9yi;CGEg2nmj;kw4aPm(zwu^}u(CE@@9O5u)Xp(QG+#xJv3B{`j# zzv$ZQOgJ0MW+P2E0d}O($^a?X9`FJ9tF8>FV#A=*gIeyKe&jThyQxCe-^al*`u@n+oOR*H6TD(fcADF1!!-b zS^wk7B|v)%EeW}M`*-N@$3f)Fi-{5_d5GXKeyE^A#h)5zNm3h|n^l|rl!gX`C4Io0 z`+t})6f39@Vpvh!eYS}KL(o16FAdI92m0SUb)f$(Q2*QiIEX$sy$%Tlo2ype1NYRO-|bE#r^?=0`^65}^NG(EYdn&9Hp#e~UjDC19rn z38vcWG!x>95PltyPivdBS{KN~{~H%jzfx1<1;cl6AP%L%5Ekv(N$@cc&6gxV=b61A z3896QTF;D1rsr!Djbsp(V*}vhb7KgXfz;cI9)Fk1AP5mGR`Grzz_h^Mr%_7z4ox~c zBIY{J-cZ+DN9gB0xSG8CALL2*ie+{j9vWZVo_a$$>BC-1N$2KR3P36@Q!FeD&w1*O?S(dKYwo zrWfEZ$)Z9w(Ddf3|807&G=PHoyaRJq`DX`~|I$RMiQrp(BAoLAAo1-2V(o4 z@Ohq{CJ>h0%zV>C$^!@4>>i|{-6{VvLFl=@*_Njv^~UqT=$@%y!;FOpZjbr|0XU?65=?!}%CfSBlpig{knGMY1MtFx;8RM2mrBj{0X3KM)i4Aju8r@CJ?>W*7`t$VvCW{EHEd%eEYO3?qT zFy(m>30Eb(2QT)iGuq6Hc6F{tzii8L zu-v-{Rq*-D{;Nv89%Hp2?WML5>o!!GY3mV@5&)o0f3&XMDtkQ)A zOlC|1T}-*IJJ)tPNUe1ZNxTYJfErDXD=w$ttBzH5OfA16|;U$zH58>X{#{iWcx zrd}!f7~@a*kBs_iXvE`-DX>P@#i*KxB^iq1&JJ8#jh-XGWC z-aQ>t(9u+mkd{^*fWXbQQnHb^z~4{=ypo<)6Cm!Ft&;qG#X{NuE0;n%TvE8bsoWqF z{yl*E70~hWBpSN?Hxl?FF)e{+zhjtH>P{WcX)f zccyoD50MpbHAz6oc~EgsGsRDf2rUlu&(!&tMYNT><@wOcX;n|(@Cb6o02Vt zW0mlU>5mf)Ts*(GX}92sU(}29i@^9p5n%}8S860b1WLR!EjWSOPJj>o)iAF*Q*GzimsaX&lC#0|?565QlrX_`sB-Uh0nyGO;;c+!UZ^R}jAH)_%v&@mpYT-C z{CUa_LTfRq-+q5wuzlo)UB0eV_wS~s!&fd-9+Er;a=jq%=oD)Gc7jUtvMll8H|Aps zg;8Jh59r5>jcEBB=@3tdKdsQKuc{uNy-36?r)6n`ReB@C{!>-~~+KeNsEW9X>j}xm(%2yP4u8?GTqx zEIi(M2S)V9D6LB8IB1kG_HC){m|*6bRzXq6wdkh4Mb+?B+HEbwy41S6S$7m!-8rr- zTdN#ew9q(?Cy<@P;16+- z(_oR<7+DhjhbqZxXl6fV!70+j2Pp;&MAg@fxRJy!p!H~}(?;&qE{A#`{@{=gPs_d+ zkFe=PNw1(Xa5;*IlAmKK3$c>3mDKMU_Qqh!`@_cl3q?fNV)fg$4 zlGP$2)jp?Xa!G`zz4$s1qW*q&n&1B=L&R_Io5m!#yeE^6SLi8Hvc@$+X3P$YlS1Jw zl-sz?&^QF!+n-`W8S8HZRTTJWT(Z^P$e!j;>^qxw?IpLdlwM3ct!RJ+nxMJ&*XVxO z!H?wL*)tEVr%!M$iiT8DF{NI_qF)cb5-L!{!DmpWn-!cd5r3o|-Tsx_UiNC8J_2pb zC0|*I$wdve7pNCqoIzxITw92HzZ=n4k9? z^PV}Z+{N`^oVMyaln*P0tfzO*qWmOs2p%3x{+1?IBNBZrXmfnCw)|i=lD=#I`(4}8 z2f;?-JtN;4R-zJbd}2rF*?R2x-BvkAyUDw zkOB#tFei$1`*dw=3?s{CuYtT@k5x>b2CWrh5HUXdLR%FJ6NAI9h%u|Y-rz$XVB+BB zlLUBk9_iar*YyjN$_kNJp^@oB`TeI#q6c!@N0%SnhM5-EtA!pS--b~td+*?#m!zt0 z=u;5jJ8{p}St&k}$zzWU4pQ{F7vAx;M+a4UR>CoOY9MXk_lJP5kqJO__>v7@AB?h5 zatlnCB&u(?xAdr|ei2e@9~(N7h=tXW!I|~srC)txztYO~Uea_X%V~~~YCI$s>NQ_d zvPLxNJ%2NtS-fw78u~qNoSm4vmM=PJ9(!Yy7Um{yHWN|5p4N_#{l06Q9fCz53g!+A zfT5FZoCt@zV)L@?#wm;f8D^ZZ<`{CnY#3+9=&=-i`>QK3KxDE)w2Tiu;+q(RPqh_3 zL<~%ylkgMS@T>(msf5*zkWuP%mR;p*dZDkaLj{?nq8;HR-|xp28IYl+B`!fz04FeC zv#%YYj7zR*`j$~fIl{V#UInD4!PnLTVkZN;G=v#2A37fSaAtVC z(F`y}nJDlYjjNLO)%wP04>i`#=p_5`Xit{;H+byaf8RQX_#?#@}Z&4 zUaOG`Pg@JkR1q*YO!MH6M%E~2cOP2|ZUP{5ZVQlMO6J;pX86!kF%Ucw&Tyu}F?akp zdjO~Y`Y0_s{^~e;$R7ESgXQJc=;UNZ;}Xcw0MLsMid|X;@e+d3+xPhbLpX-{eCWMs zKtNrx!eF;5>2dbqyw{tfJ?6mF$~Yb|Co5MCOYQ_f2zk`N>RxM{Fem^EGzuSQAM&qQ z%4FDYYsYjztN6r+9ts?W!y|gwYU!m0A|p`QGzSQSAp$X{JEJ{D=C%)V!r;CnKGnfN z14J)d8Uw}k(VmKp<;-x@@fT=cHUNZ*MC}M8+%)ad;v5&MzuRtMZlnU z20hfgK>m;*-nQ$5HyG0Bc7(9tFNdR+(GI9{BfyJ6!8wL*3~U~@-SyZmE z$JxDw>N>*M5yow8ov+u~%mA4w8wTcpS=zKSCg^Vz z76Wr-SA2_LLc&MWYNR?bAG?T&bRVqN&59v)b>M{iG&vX_8yX8Ie z>|c*c$F@tWi8x;d=!rfW^AVtD>(;2px>XgNC>W=z(9PE3_4x^a)hd2cSh-U(F2Hm#hMY!#o^K%JTL^QN5TIJM{&99xHDWtL8%951ii?lW!NZ0DiWM6z&>-g5KW*MEXzB6&C?t z36yX=lMvtpMPFvI42BC_HD)_B%lcClG&9@+5y+@H4aiVfj~W;iS^*q#1KFWR5qbFw zKjcSTC7?H0;H33x4-YPugV7!+tCy|vtj;!o;p(=tl8&arbD+Q>IdcMEbbZB@81*f4 z?{;sdO`b)-^Tcp`n^ZlS#WW&dli$RZLF4QQhs*#~Ubh20?-r3=*8xl?7@%Pf4%We_ zNBM#vd5)nHAI3mzs4$rSRNgL4Z>$#=DNzO}2j=F_mO<5*sQ`0CQO$>5W34dGZg2zG zhCKxkmIcZk%*!yRLUhDE{k_o;nwQV6xBeRNg&0Qwys&<+*^}VMTaTjG-kN}yeDJlm zOY=fT@U>MIrTL0ozvlUj@au7QwZN5X!xU4l!IRMtpq2e!_`vvofDic~!-TZgWqknc z1iJl@{Q%lA)+wL`;J&Z@tyK;SBqu3(Fmf;rpixgAE1(}3xA-s4ukjZ*0B|;PBul#>>idXJ{sX;*q2Lv_r4)cpz1;v#^3|e{Gk*=9cx%K<`ZnmD-SGCEO~YyDV$vPa)6ZW|_mAk4 zUSDSIH>6x*A9(hyv4s-U1IQQ1O!N8^9(dWuLwAkjwl^C*JQk}?)l47e=W>ZyW3!?|qZLUT}a38;Vekg|&&7NFWn_24` z98ZfTbut?*f1;=vp7sT4nT@|~|8|~#FXVH$dJBCdYrA%>R^m|QsyBK`A&}bl+G|^^ zDtF&TnPXk-79?OiA5dD}_}$Nh7Vj1PZyWKl+_*@CWqDE+^69)bqY18TWyn+e^3ks~ zRp5?Q`;nJejM!gx53etHLS7W>N4~&l3XB}Sr=4Np@Y0}}fquBf*_lSBg8iy!_3E{3 zQjE8Xez`+cQYWXQs8?c(q-k5(K2!nID)qrzt2aM-^!j{30W*@bf~<1uYxDuuo0Nr^ zy^7RT9bJ$rB3He?T8(*6TuIGH4PENaT%^@K>%c(N9of{Jg_;f-^_zzJ`^veD0W2%l z6F;>#>2C&Qtw_aU9L5ZIK3W-h66<(=s23Y0Z4cas{$#;&Ya$#q{U00(BU8K4YvDm&8~eAm)TViYm&eVdv>S5nw#+7?IFXCCJc;0TnP+hzE$o8vKD3u6z);Po{-qb=sL z<8RT$W99H^JkEQ0dv36ZiEm%1;ec4PKi|iHDVp z_mQ9!r^Y_^0r?<0g4XwU7gODDr!K;virK=~p3_G~W(fV+lSd?ciaM8lzejCQ%_?&E zhSxgDN|B{LhcR>CnrXim68){a^eXoy)$3;Ho=&w^!0qQnZmN2?-d7cYy1ieF?sFC< zY94PB-ctQio#=k`^Pvn$s^LaVvHix7iqiIYGnYl|Ves3{4@bqeo5Pd0U+&S;Oz)e` z)IwK>NFKb#z{s6=K4&^_pN>BLlsuG+Y@oW-yts&_@{M(P;NlouwLLeBpm>_zh=e~% z6P)sCsLNv7|p|9pEgv-Kp4BrH$`uAC2oUV z--k8Clf8qy{c@e(yYS0rUJ-b|`PpLChtu9KMDgd4g{^+eC5+R8iQ5y$rH&So71O%L zlH3=Jg#H17q$}h0wgal4K59Jh)KUmnCC5JFFKly=xlCcD()WMwJ5xPBZIN8Sk^uD zK%!pp%C!KMBWsXXUW?J%O$5iFB)ywA>*Wx8s5OI`bedUOaFmU^47&#`c8J?9oM`Ql*DI`{TfdT)N~rFQhTdb~-s6#)3#!^1tpqoY8wCR8zV2 zrg_32ilk+SO~RjmFns2uR3Oq1&E*i({p|Kk{WOLRwY0qLD&~UyP}&WvLX@oh1pY)b znUvyBqBGY{UY@t>4!vk|iE@w7Elnv_k1kS~*%QJo&C(68e&?ZlQxTE1Spr(*26~!E z1k`W9dD=+dwm>X%4jc+tMK}z|$C)7#qjMH?b?^m|Z6^L*G4>^qqK?P}gYlT&mvuA_ zg1?)jQE5qPzm4pM^>^;W3ezAiUYn*NAFTLEH^;M&!;8OLt~-;K+ky=wGfYD!tr71+ zn;VNB$bXmTt}70OvUs3V+H1PEZZwKR%RtD_cm@G@!mxFJ3W^$OHc9$SeVHQNk1E}c z!vGhp(=(;99-RGo-2-(Brqd*eMY;e>GI|mt>mB) z&1aRxwOufAIC(4uNwHS07U>GH0=GN9UCKZmkBW|Y3cb=;j@F!?PK5N6z8t(pe{r+y z4_Ps4T4u{1Y-4hlDwkz`#pQHJ=%x7j>&cPDNQ8k&J?2c&p?gqQ^Hep3(#z2Za2;pJ6uW67Ya zo$SoUK#a?q)RmpLkbOb5gVD`|qba|T(OnXG^WCD}A)}f^4Yb}YgEb!~Kf(G6pTkvt z;z|a;+KMi!Q3;;`gT$$wN2|*eLA{(rELQR(jDBR_ug|TUA51t+d&MN{nPl#vMH7;& zllF&@Z-@?%a^W}b#*_B?8l=tM;YxBGL#~y$lfp=qh_zvPUF+F?W#+xPzGXP$414HZ z`^$xXtDoijRiUJe3MiiR*P&b+^C3}(LqxhD4z(Su>YPxO-YX4r}acRh#g3LVz^OKG9p{|TnIqUkfeFq%TF=@Ip<3-hY3wQty-1hh;^65 zqUj>4p1gClbV1{RG`et}A+dHT3v(v-;U@>5yS3d@=)dpJC(?`h(04NxN6?F|DD_x( zeUF-eLYR~39|rBE`|Fi9)TlrEqrxM-(V3=~>>ZZchQ_0AQ2wdnv8h$=9i@Uao5V$d zGezwpOVYrF1!;T~LI#>6ncN{B?#7NHl^`P^R;_4&q^AFn)M#t5ax@f$fM}uBVk;G* zN{PJQA<%6iQEW7 zLGnjf&hDu;>U5C)cZS0||HSEckLMOQwe+bS$J*{qk9+Hv2O>rrkkyvg611}-KPMs( z4?*Zw97IhvIhVtR$W1jkhh+>Rhnn;+Memx-c=xSy?Xc{46FIxCI8AiP3qj-q!|v;j zwf7a)NvY8<@;BHyhw(RPneMOlBcs3*l7fAy-a0-fvCUaX8y>AJVm}yb&V+30h+mm< zS?EvjrV|Hi2DO|8cT#)y`y}o&WJEU-e|mdw@v^Ycf%L2_x(r?0>fz7N==9~&yVnhQ zHPWL5M6nj78&})TE$F{{LfTc_h|0gno9dEs3@$Lar7FrrbvuYkDNePt`eRh&6qL3_dm85wUhk%u&y>MA8cp zMJ;y?YilB6s;HPKqyZiG-xssMA*oqJ%ruOzF|W3&2d||93YnJsp1jSs&g6OKO=gAu zbzTR-VNn%S>{4|(Cz!6nt{vvo0^-|#po#2Ty27JQa+aV!xc&Gr=NDDw%*=@PI< z1v`&!qZ_MNSaR(Z*+)&;*s4{L(`^#WGK4c6&=(&Bn-mn~6%=~U%7s6?d&^pn-p3`U z;3(X|K~Tf2Y>>Bdb#RBiZ8*FGeF^Po%u!(A%7%76BK@y7*r#6Wb9~FGr|=8B=9x9=Jz_ z>pwRU|A`oK*&JXLk$FHi$K#0tqH(b*wNXtu`y zml0V$gF@!e^>Ah&O76oHL?B9}DIiMjwjx9uVl{OM^AU4L<-pZ}s4gKfq-3roUMzWC zP-r+4pTVc7hUn)0 zX~k@=4(M3|TwbZkO=~b-42+!idiJMvs#0soHD}v!1iRAu{FL8wYmP2R{faAXwOV`7 z|1ZkkIli*zOBYTj9ox3uv2E+b>e%eqw%M_rbnK4RvD2|_8~5ZpznRa>yziZR?;q#0 z*WR_(UaOv}r#5PzRZ0wo3hE0|s2Z_SPDS)~a_TM?sD&{u`Lt|L{`9(KpTM$&A*eH1ooY7l$`y{zi*oh!>_aRR#tpTQ_RGnb>%ljD>#Ct<~}q z)@rFp_Hsn4D!(!qGauNo8Y^#@Y6ucFWV8v&W-YY?Squ1*{7UK==0oLp zY>O>^ym&HFX6h-U#PBlelM9!{q+s+lhQ&^$M!3DfPME?A8}=%QsM~cA zO(dnq7r)CWTT00*S3((3(=go3D4Lc<83BX;eqYWYEOoVBFmqd66{SelAr~qAqt3eM z7fhA2mS(_pN?4u+t11^VK%OGx@~bK)3sXZmi|V`xg*egI;EUE$PRM}X0X!%eEsXSB zZZT*WeWhWsO6c-ma&_Mo6rZork*SI%ol$(MV|{Fy3$+AQ>t7Y+flPxu*^r<%oAPQWYx zx<%#{DK@}mkHWCuD}`RH632D4Wg)a+WOpMvU~urT$IEzbPt#yxr}Y8*v}rX=Ik`MjV4a0_W-Y2Z~s+EDj0TJu+71z#2z zF|NG41ebNnj-ccK^ngsTw2}kAEvSKI3OSpd6rPqGYFR6%=G>12&LG#i(n#Qu`Lv4T zWJ=@jvzU)ZqmK9fim2#+V=u!rTFXRKX-%j*<)OEx!ra)gDc__B<@C!jpmvOvquG;% zuT2@@cM8kIwe^Z|XyivZn*c_sjd^hMrLCCOW#aV1)dwi$PcAl+A+iY8ylk%t$-~5D z`rI@T5s3`Z_8fnEEc zDoQ|R-xd_+4=y~_tWjb)9zs2r`h#&yf0wwB6^6}YdSPGv>sfh<2P!G_QqCI-%5gqv z_i)cr&PrbyhgjYB5M~ZLOAH9@b0rzaa|1D`Cq;)e4m;*2Dg6q z1Rlck{okp~q0r5EN1?=QWW@n^X!e{_NecUl4=H1LdjpPuNtu15_Y`^A{i$D5jsSON z$l$P=lZIH))0{6Iu`2PK2(M|61i8%i!^oF}|4xG5Qb08X z?i1hqDcMVGX`52M0_+1IO^hWP5N8B|1HGN_}G!JiMt3fKCK0b0yXC96#Ni^FxI6O~Mln zpY#Cs897%TM_pb}#0t-%44gw@K4ZBREA?1k-RllLr0`0t=H8(r(Hw9yQLFAl@ZQ`AAiadB4RgY($sE#6hS#*>a<7d!2Wej(ZM=fb70;0r($W#Z(JrYG3qpggt80;r9D)F zxejt(^9(qKT2!$;GF}h^e`;x2w<&64``SFJZKM-HCE^>>B+pSi02`T@0lK1Je#0;X z9+kAVo`g~kho`NMo7WR7>3(jI%ew9TG}K$%M%BD>>@MrRAfKgFVE90Y$F6qcSRx8~ z$!hstX3}DxviunX`T= zyo(KuAlq`%7X&~7eRV;4cL{Mj95^|Z)HV5!T(ZW(o(UrdS4tM;eFLiEZDVmqZn)Zp z)#0_Q*veH#sXzAV!;S%#L3;8Mvx*k`B1wVMhiP4zOp#N6I{aw!k|!O2%-zYIy%jd+ z;zH;})e;$Vn7Xpj-VPGiu|9*YQZkVK`Vj=t2rp&+IJlZMg|mzXb{|yCSWU_*U`Bbk zU>Pp$$ozwdrg1kOC#_Dzd0*Dk%%i02){ z>K7OmQh=Zwx+%|;5^5(kqoCX}01RQSkY3+^2kf>4oKouTs8=eXA_I)Fj68NeDG9sR z$SJ*;MPa`PZI+6d_XtEed=RGpQZ@~-Y3q~>tucHHS+A{di&h@6OVg8FIZ?l!7B z#iW^?nR$cb-U=JQbHLWW3T{SDryz?>#@qPDZA1(EvLB7_b%T>!!kv3Z&cuJqAaXmN zK}7Rb!zvEGMGL1x<_^5cPiDrhAk3?Szu79-KCdd1%^2~+EZ81H*m%CCpfTExP)utE zKvB>nt}E>dngCgf_(vLer$v*<2+A_44#;e@pkaAFSj&tUjd@=x>nZa1%TE){J9(Un zmW!Um_W~-0TH9J`R`XMbpha2ZsR0_^&H{D9k^<%jw-vtba!|-m_N~ewB^e2WNMB_K zw^y!UO`R`lKaKMOey9b9qc)t1>b{n8db-R|@YsK+w0WXg9A?lIhIUENliKZ;x0ITY zuY`>0lTOBtHXfT3G0PrP(2=I8&o~^B7_hKb3W1_<%w^6jOchjGLP_)=@c-6Lb!kP~iQARvX6Wqe*Zd}qR?4itro92iFO>hOGFFyJ!t z>rnKLta~&vD;vBhI`%Rn>i6rf)=AYxP_C3L8t|+_ z`#sYWLOg|O&SSI4B~AD`2qDl*l(U8rN#o0ZxRz}5t|A!{7}ZBJf{B|2uLmH^*3-qh zM}qKktRrz>Y3O~mcOyV0^_%3|KyoC-bQzS4(&@)09l?Hw3G}1gtSjH~TS_<75np2h z!oV;Kam{U?*7Q4Ols9Yq6x3_fJ_)D9YE;Qms?UZP{Q+`Pw~))gB9pn46Tc)allg0z zh3|b5xs2z#G*aa`QdvV(Vk!!fwV3K2sXy*IiT`AVUMUSF$|DGXTpTn9)7cy|mF2mZ z8-bfr#u9)9W1Untkfcg}T!aJndm-hvo)}4)HL2bB#{0Uwse>Zk( z9)7u-JliQOqWwC_nM#wslDW=Km}GVH3qzZaio@eo0Kw)i?IxLlVmJ1aQF>h zoqV__Y&{=`yKfE`^;PCKZ6pkh@JNHE1FG1PRwD-2e z*1H%?zQnZr3y~M9McYIsob=?%kn~Vms?^Y8l}Eh{V~udSrPJk2PI)P;Sk|R2W1h5W zjLZn&06d1oec0JN!BI@Q6GZgC!DFyR_3v|Y8N>q*%Qan?MBpV>YCNN!)M+G=)=-p? zG*uGSqG6Auc5e4_L@7GsE6m4~*r9q%Jc@YF%s4lcY&`m$pzBr_4xs<6P4v z;N|J^<(6?ma%;Y3oU`L!M1B92To_l}{C(DT95R^oM}QonAhBVMMRTb;X{xYJ{WB|V z6lccv+RJ<^E81~Lgy%lwxYul8sN_j zc5yj4xXGFuTSsubO9ljtW80PGeo%Z!*Og_2L80!3X=JavTRM73{PNK-OaZ?f8X9I1 z(eK~8Bu{8T(R+?ev@kO%4aG$5kCV)3g&_{h%5hrPl4sOQPtK(+UR?~~skc75vct3o zM2Y(96Fm4DMk?YMuWrOAFc~S(8*%v6v>S^9UZ&U4%|9o9VZzF=Q10J=c##fzxp-@9 zjO_lkP{Vq#D8ZzK+hbLd@1WY-M5n-vr=lDuCOqV6HeivHumLyX4VS{(IqXpZR@A0>xM zziyEwcMFs)!#U`Twh3|U4z>_E_LE^VA@sBb3_Hfw&Qk2s-tpyxhlG<$05Qaqeo{@- zVQId7TbgOG(7Vfz>fRP_R29}p=HLYu+DPgaM$KZ(G&U&!K_p=X@m&*H9%P@>VSyun@Sk) z0C^>Pn(S6OW~HXVY3tf*#kb7WezdcE**xde5i^)7xwQ!D2J))3UWWYNa4Mw^TTQZg zDX;hNc)h2a#_=wz`P*n8^rVxhT5b31($>S`kG6VQ+542^y#m?#tZhO*_r0o zU`Vl8a_cwN3sjli74C-`j-`U;+ec{R1XYOu{ws6(6Se*VdJ8#T7o~HPFo|f@W^#hY z-JH?)JlE0uZ9p+os|hyh^^07y*gh`08PnP4tDl;Cy>Zx#-JnK7Ke_&z`)spOi85BL zaS@3o5pWulBvvl3TzN%nWlNnrKVrDK+{VPd9YAI{F&u`Am1Rw&Iim=?rA`|?TPgX6 zwHo5Uo^)+gB*5^xl{q*Pgiq0-SVbb>y9r$0Oywl*Uf@#3dccyW93xyj>KH*bv6kUC z&+1Ys<0eeKL7}clYP%^w`szxHLL&lxKLUDb5=M&)q?+VvT4{?;H3hs>SnVZUVO9jH z(H45lpQzyGBB;aa2x?*YZ$PPWm&1C~EkFqU8MMh#AreyYISw+KM_9??sRsulFr;vQ zNmiwyqcJ;_8lXJc{97#Z;Wrkm78mjX zQ?V;N$B;%PuW`Q-_K=~#eZIz8d%Pm$br2o`@IoO2mc)3BTB%qIDn7(WV+(u&P(oIg zQ!}-ViO$`I(S)3P!J`>>sxV^09i?%wV_M;39Q0R{AG`mO)PhyN#%PI$M1kU^Vsx0P zGTuZ3x9qdzjdV|VIC{EwT2RPu99|n?L$PH~}$tbRcfmXS)4XM_1m_lI!pqMkE2g%?sAf$4JIZ z9s@W{Dq<53pMVL>QZ9Wl?735DSQ)Lz-P|!G3%b4?Ek{PgHO?6aoKDnVAtUqKI8Ijp zy{?kmN9YnCD3T=F>E&ffu4oxx%o#yn78YiWZ23%H;gRFHIe7bO;RG+qY+{?P0%%b3#H6{T50j&F223){m&- ztCg;U=FOjMEzRG*CqkrpY2&fBXeC(Ls|A$V(=hBLh^uX-y|@AA)<-(s{+{o+)69zo zdP)_I45}@>EfGAKs(Y#N+#n0CE@54)9)0oqXBM-?&-zWLHP_4BVN~1PVZ({-Vi4Rt zZ(yrc5RRVUu`~TZXER;CQPse@)*rU8LqN~q-1EbUX<_iS)fRKa>)U<}EF?n@UczW3 z*pE{3CvYTM2eQ8}X}|6-9#=p^Ehp^cJ;otDeLQ7jf- zyS^Ok9%AHmN@&SZhsY1GopCy!va9&G&U7B6m5wo4Z?|gB3I8ujNhbd zW$iDIPOlofAAk`$#z9|fj9h3Sn-~ky$NwrV2?BX{t(OP5c|v1 zAnRQ%vx03{Rz~N5(0c+Vc)`2!qAy3|Uovj;14KZA^qu@cB((7W`n8(Ew+5 z?zC!~b_o`0bKxemQ(JZR`Skb>XpV&D|2feN`$(U6Q-lf4dFa(h_V)?xNRke8Ijd{i znT!)(DpiPGULyS7bSJGi0@h|xf-1iVbO=8VWgXn$~*>bokb4kkLWo8r^H{^az$&m(=aVjvn}*@!mz{%IrxHly)4ie-dcQmHZY%Pl^O})zb>!S;k*JVG*)C55WvuVs;yB{+@3Ul3T7?<|XH1ks=c#x9%j)m5f6tnRiXK zrvcC2L=Fy|*Re4a`{Rs?o+<@%?W{7m zuvk-dfY$0OlvL{n&5#C{Mdi-;nqdvWOjIId#!f}Jw|bAh7ll@Y$lXngOoes~cT-D8 z{0QSL-ZleEjHg@rLmSFD#!5^Mu{CHjeZN%KrnEi=sd5%CJcB~7%{ZOZ+zyMPtVoYZ zaA24bZYoEn4k$u}Hcm&o(!>_T%-fr5uPey_|B@Nx+DY6O67Q_c0GxCm;U0$402l2> zarCOHi?Q%COrWx$8TU6I8Io@H9*`!*KMgjIVNh$M@0b2;k0_mdhw%@*5%c{*QP0waF#*8>PN@GGvSn^u7zQmpnwc>UN%FzB>@mh{w6 za)>BMj(4x)t1RUl$3=IX&HAPO74{5NDnbc+XO@8bds|0WMpa-1*#>>Sg!Q2?vv)=(NNtetuf)$~B1Uy+yCLGHF=#S8FHty!e&2eKOZybqaO#u{)sOan-7PonSjQ z;G?Hb5u3QCLvm9go4RVYf9|h+zu~`1jo>xWYyuO{O@YGceWcHJ~%98WSSmtSu4DT~%6EP-_piq;$z(NMgMLg1ZUV z%kUQnF*>>XAXR=Yp&@lg(8AFUq=jj6%EPc>=;Le~iD1+m=iU;E8hNi2DGhMc93f8; zRJ9T+1B0DT9kQI7hCyoDUf?4&Mdb(!1K%I;rJXan!|LF$gw9POE=TOpb< zBSVM$?ca*ZPjJxqcGxJ#K6LUDsl<7trjn(eO`ORi4GYjYWIf!oS`_r?V+{~zRY@r` za5w(kq%~~04pJcL@sDC~#mPp7SF?c3G3K-Cl892Qv^sfj6tHMJLp(c!vBelaqLB*9w56d$MrcdfgA<%*N+m<)J2Xy+R|z zM;O?#3mu|n{^z=k-BXL#ukIAFtfjrb6;6N=N@8+o_~x|-!(H(-Zx59x-8|ba@nFv! z_D;x(Pn-Wla7cT>UwpjK%!Tvd+c%L;XTo>;(#KZKZ|;mJHxg; zdz=#?gQW;*t>Rh6FKJu`!jj#iP zKV7D@A1FX%#PV!Trj7toPp-6@T;{fcj?~k|1!X=pID5R?J!+C7f0?` zsF}0sqa9w|ZkcCU%Z+!SVCEOQ{LDfX4<+noXdMc|`GvrbL9&r|mfn(bsSj%G3L$LC1 z<>oEZpaT=mIR9n6tWH1eWrsRFg06pG3Os zltBELuWjq<_Gc}7iPSm^c$P%sa(TeyC64j%jfaBs@g*i3D5I=?8^-71&?`->9o+@D zT3dD5`NRfu+4i?!?c1gBN;D>w3kBn1^QX{6sAt}O1v+rw2aC_4N3@79@O#SP-}Jfv zr9bqkM$Wiv0E{pT*ov{h5S^Lt(t-V}W8tdcFE=nmN|oxRQ!wtVoMpO`wt0TPP;Rya zZ;*GLmNPInEt21eo1owaqmha)AeXVf#tH6MB$%Y!0yCH(ZbB!KMHeP>atPH&@pnhE zCEDkoQE|Gq)-n!3-_-g@!*L!bmwmgYW7fqU?hlqLIq>!Wn!a6K{uQ!uValAaEDTLX zG%K>)+F_;n_!>}MqVzk&OZ z8#L;z<=%nHb+iec087m~6tnE6Jb(sTv3(ECho_o5nm$OJ!r=@=E)5tR`@WEe9w#Ns zzO#lHp@Uej`ct(C2yU-ai=2f0m*gK)RP0pFrpDJ{_7se_X-ZxX5`p^oo`hpR;Y_0- zXLH4AGG(aU0&$?h?G#BrVO0+(TdXZUZm61?1+jIwy_v*epiV?uic*6WeQ2!~(cWQ)Z}XFM$)3uo3$ z{CQw+?B_j4!bFs;-XTlDBSey^^IyW~rNW1MQ_idj4-VJFC3*sYX4cn`)Oo4zZvS7w z9Tgo*Z(S5TB$Y$Se``+;@ZIg{6bnaB*)wm8yb<&NAOJ1ujm$rT{4{#6(Nf^&2?^n_ z;7fRP!K7DznLN~Bb$^7j0}VsMNusdJFxd2oNk9r=AS6E;I-(lZmo4U!c685+P1tT9 zPUqDvePFVk5P$glx4yZrqPhO0-PI|M{7!kTF^E7AshYc4sG#HM zEdzo>QrT7Wwu?2e=kun?JybPW9n9*eB{4I3S@$y?oLZMO(9h^HT8k8qQ4ab#h>T6o+Pr#(C$gKfInVg+uT9A;wZZ6Ou(QqME=)4U=q%M8&{< zrK5#l(}GBwp@7CLABGXQt+}k*V}^nKe-PoS%R6!}%a>tc{%0ZXpEJYxYE)4I{d9lU z>eCfmPTt*RI186XLf^hTcVH*)P9S-C+SR7i!1N6zV1Bko1=B)vb8}c<%tsbd;mT%r z{FsD(*9X*6$l2Obv1H`+l0FL#RVeGYyrgc#B;YT)@9is@({p=FT82f;QTF^t ziPP)(7MlRrjTpV3;ShlpNagnq3H@u;F}!mv(-1sYrTSHyovkNDjMsPtduR~M?a!dJ z@?SM2#3c_NBSE9pM?f3--E)Ljgr0HBcEyAGE-H+EM>k21;^Q$q##2zQdUeeoO0-Uo zP%-|z%lQh=Yv|zW^|eF=DzCfiY%k%hispw;6QjodobQhi;8<`QxgddCxM<(Mc?E*P zh1eUVEQy+4{7YCN&{cE2<&HL=)w<}64pX~Qh$p;*n zl3}%1)PRyb>zKsLPSGdMBhz4GdS*gO#P7jmLsCo|Ru!c$6$AFg%uLt~QpvN_Szz?= zqXK!C@XKUCR~cXXILs4)u53`?Hfl0pLhKgh!238(ivzZBT~vB55$!W&cm5AC{zpZq zUcvAvXFp?wWY%B*^5mq%F@z|jJf2bE)K9kceZTAlDA2q(5ygf zbio`*ZIm|m(yRy?{I7z$Iy#R2x@z!Xs;g?=)t;`Zx!02hHlDt+U(XdeIM#m?`1V5R zqb{hqtPQ*rmJDEbJf#t}(e(M%AclajCB`QAe8#kEWMc1?`2IryMf*KTa~U#)ZO&_i z_a|cIPx2<+Evl0n4k@kTUKv=v&O(!b9T_bO&i^WSN@HkaZKyOY_C99M3}6gCBr!I9 z>nsVX9k`l>`Nr#`^(ACTfwued(E=QcK%fewZ|6k{R~v6bVSRD?(FbJ+W9T7~>(gQm zXaS6empqm}#`pW%0kyZagID0Y%wB9X-+nB;HKKz9V{?W{|{nxHBEQTV>u{X{&VJNU|^I$KU1Hr`spe< zC-1{ic{E|iB7ClHZ?Z5upF5VWnT{(lqSa&tUECR`j=$(mIT%6<%twnccu3)-2na+6 z8W4!o-kp*=Wj8MYYSYM_mtm$)ND`KSkkpNRLSowV)kpdZ0f;~m2%=w(vL9r(0(Cdo zW(nHnm&*>a40`_y@)c`nFUBKNnN81Oj!)~}C6v#we3U0rx`7RRljzj+wNvlI#4L;6 zH-GM{3x-20UtL4JGx?cy$zfR2F*d2zP_#mkxAH~vpOQoRP})w9u7Ak-LjMn0?czVl z>J#}%)(7o>_`N~-$?rG*PkvuK41e;wO99AlHVFAw=>H98|APL8kTt+JuRdEEtWEomoGrm|75OEGXVk-+bqrM97l`aQ&gbk|%oCU*kOWlcvc^x27QRkyv|V()~rETy7E zrGZr7_Pf{8IyU&=|GgMIsE+OhQepneLm~`km&M1 zu^5OQki}=8EVeKMviRSv|Bb~n|IT9IIX+oj@}F4jw7hiE-aakX{J>J-cr3Bi63%Tg zm@PMvaffqpVbFo8`%g+Y#E%G%LaUA3FYmZsnguufKA@fg7x_CqVP%=>(_S69zVQTQ(-NheZ>uP{Y$8RLkGQWg9j6gN zt@9`A`wi&X_O`TW>sW{IA`BH~U%Vf9Jrxa_hL$jIeTN2ke z12pLM;#i{N(BiG5pzzM$+S(rN@z+(7D|QfU?x(p&sD_J^H@@@qh~>QH^!SReXzEUThPe|{ zh`t>#Ay@wSco0T=*BN4Iiv#QVy56*%skESp*-j66F_ScOl@R@}D_Ibmv5&}kyNZDX z9-JP(+rhu}=ZA(A(m(G)yAUW{jm}o{2z|D6BD!o&TR$Qcji$OB zIC?RsEWBSY2#Xh+VWO8`k?EH=rrX?K`JQV;N6%50H|X-8Bxn%Y%CY%g-$5|9Gh*GG zZ3r-@`*t9zKs1`KtF0RBdb)ZI#i$NH;>r!9y_P!02$2`OqJ0)S==8-1^%NE8uHcr> z^Gj0K2xyo;m^TTA!ER#BmTVYs0%sg^Tf2G%Jm=$?0hWM!0 zIIBU$Y53Yq(hSjYlGEN{fusC<=`e&}XQC2kyXn$@T%+rwW1D&s%4(ZULCk_teb?f! z)KcjjMiFl1(4kb3!4}>`Pc7EFi@YVfzJ(?ggL1Uifgc6g+|gB!QR35qcSl;O(a;5> zWf0|ZaJaQ}Yb%;0EO4H`@Z)Sl|16tuIs)6K$vl4>`>y5H<|%B@u6b2LpmG5*meHKQ zAbFwdNE-DK#kCcL=_J-vbi>4plbv;2*H=3CnoMCT(Y>y9mlmMj$mWiuID%u?@Eoxl z)07dqXB#RnCvd9A&ufFhXkJS^?!eaeQ7Z^8{!l+%nxYvBf*y88<43>{5=V~D58c}U zB6v<0Z@L-mSF_@^8dz-F2G=4YIDtG)Fg0)B?-+ zotD|aS)T73{yH4R?D@FlOGTmIFQv#Swd!nZnPd1)dgK>dK1*^dsE7s_Py&Oo825Y zfI{T_bO0|3kzF$%d~1h1U3PYUHo+E9g)}&OnhZ%8GljplC?$rtEQ6mP*pdvm&Fuit z#g8X58Ok%Ost*sop&y`I#q*IZdLb6)0LVH-XD1 z>HyvtBAWux_?FDn!gku{n-&$aOlaHQeETf(yyfF)&{aJ-BS%y!egGO3$7_8GGs4Le z=ZEuD;2v?g^u^pks$mhQYP&UzzoQq9Vp5ETZc!)m@F3ZA-)%Kc?zyl1R7EC@9#wLZ zKcPi7nsk-9r$pDO*P=-lpjX31Da+t>#!R4-CnPhb9LpZ^zX%i;#N6Ef>|e?^SdUDnp#>T+bZXEt=tu$HXryQ)L8p7`6I zT}3D`|4i7hS)nS%^uTBgFRBO=Cy2E#i)^@)_T_1&&W2oxFCqLN!D4|8K`^6si0lrC zEFO1vpAa62QrK$ziYbM~Zwp{Q7Grpu3kE{0SXKBZrbWhZo={O6N&mjfk#y$pT57-4 zM;h?=;aQwnxirRZWWJ5i#?nM|%}VEE%pK}?V`aQ1zmGPNTtP{F^Kuizv9m0T*t`J# zx{}HzjR5s!k|O1jB4v^VPGUHN5%xyXcOs~Sqf`Au%&dyYk$FO+wauEoI^NPPuM{ci8)yu=y!8^p0$pQZ4D>m2nl*)-eoiiC=1!>)T2Qn5J7Vo9e~K zCd)9xHV(n3_gtPXQum&>Tq{-cCWqOx(sY@?uFVb^UQaCfJl%E=en(x!Tme@qd-&xW zQj!czK?)}DHU7$HDWC)|pw(MQ+6Ojw_UVS<+29s?-t&R9V&I;(yw4h(j&EZpiqM+B z&O<11pYbra##b{iba>X(Aa6-3tKZ|8!07TatR*RMs{*`GPSJiyeX zojKMV+7q(?4*^ir;a${tbotp^yiP%BidBz)pq-@HZ$N zBR9;m`X(LW7S#$0YnoZ8g9273V>$ zeojhg^xfY~7vi)?#^r=n+DogI<487J2&}7uc`0-3o4JS>D8q}2O1mZRfbfK0fsAkT z{G8{$YnNh#vTL=Nb9bw1IqcbQ5Sx87k()5v**l>o*1eW_w&Ms3E5Q17iDO4%c@mTI z!siTT^S&n%?XGlYtYnwJZ0020DSU7{j}z{lzT;WAq4r~YPO9jPol%<;(K#}Ridv=?_ZYpyStMxUHCjJal0y1ee{np?THRV-@XO7snKFmLx%h&Uxuy?Ga3uB^BiU0F zP=}hO52cNXLSzhgoL9L(AfE7@Z3L(3`l~{3^M9+iyl20?32lC1tul*hibNZLybh2{ z?I$EZ{Qc*LUHJRs4XC^+{{eUkrmY^sTz0+j z`(ZtT_cFg3ehQ}3f*9u7ix2C${0}1>#(l;}Y-9MJ)0@56I0ZOa;fjAD1UUK%$a+A$ zS)Xm*AM0MJK@UO(6{dlAJ75S1a<`4^mdHyjew<~0PJ^DubA33~Y6Y{hO6I5qvHfvuk!nvsmO5ZD&j{tIzdo)hxxs0m#dkUT>7(^)?I>QVzQSbe;!^-GV*U3a)MMYrH}}pJF@dnyclh7Gx^XT^ zCj_Q#8*%6*cZYKRq+_XrT?R_LEswU{28U0(D`q$~>X4d%_&ih^Sv!9@B4f8zu8WkP z^l`j|_=74U?e>MaPd17`sqZ>T(h!~UW&B6O#>8J9w_rk=8-w=D57^1zJBoDQSE#F3 zbI{YE0~emtC5gFjKK$t_4unGeydGLr>I#esmt&^Ue>QKtczpeG2vScJUM4xIe){JR z2~_iY7bi8iEs?w_6b(4bBIX`(M6P9+w@A>{n%e4=%H5oS%Bc~kM>V2)rOB3H?&PSj zLolm#w67dJBJdo|nK$)KWBAXKO#)GHKWS z^$^=7F)3(b)xzFC`I%!`GBuA;XZQT(nDqQBO$^+VnWV*~L8}hzoz7*p5!33FH|-(C z>KB1RiZAFx84slJlY<3G8%0xBl^1Y?c``#XGwLgQeU5jy0jt&7DH)gm?Ur0!Ti<|l z);B2h6_hUkJXUo5``(5xxSQ8kMz@zOnSF)ARlY<@D-B4;baN-TiZWADTyi2o0v)Is zc`s0M8Fl{o4}EUwQxBPlXmj04G9*z`gNd5#lCK2992Osx&0dO74@j?+1-fowI&Atya+KeiIJ^ei_4a zPf?Ln%#w&;j2)P#9fuOs-}CL}5a6@wrNvicS*0PoB{nnv=%CEhn)p$_YJ2^Rtwq0} z_k#SKX1999fOD}>qE8A{B$09cW~Mq6UJt<$QYlV@VC*-TE&{UQD2LJwMPBnA0OGs? zhQm3h^Hx{1y*uCTq|-k8aQK+ep#3p?9_?UiS2&bRQ@m?U?h5X!a}+B3CN_|K7*=Z} zu~`7VCW^N70~XtQd#;J*eAlKz`OZ`^fNm?I3e}PaoWOKMFM=@D1DF+zZMm;o#hkX| zwM9#11N{+p9geRLLv@i)NM%EmjW?@F;gCu@(l>vmyB=OP1abO$>xLp?n#CM7hQQr; zIM|T)3V5S*Gx}bP@G-7S7=UM>{)X``2SIg0O4ZhX0CDj#Rk>P(+oVR=O|3koBMJ-F zm^kJ{V=LvtlyQi>PQ zSSqeNnvGNz6^}`yc)6~WcX%r}7si8PFdN|Y`5Bd1Hm3qz&Z^@ve1q_e2$hPa3T_U} zXwDtP2EU}k4H-CA373H6V_r`dK~sR8A}a+!e?3S-L!Dz`SlN}9VFd|5!2uC6FeiF}q5riH1CK}9*sPfM zYs$VIMlTPWmT@BqZwp<^YggUeaD(6!2HsV6eK^5Ycf9WwLR6khdI|HMn5 zZeCHz`w@)Xc|x4JxrQ9ZZ(&qg??1E+71Nh7^DK9P-H7Nd5}>Dav%Xic=iQ4zJvWEl zlDp7HO1+Gzp_l1YPSMWEPCW4H@?M%JVHkDVcsXnRB=I}!PDhSF9vgFk!1GaxUGSxl(2{?9qE(C;ryr?8x%I_L-ZTkftJ`$nJk1UsJl4}_F zwt;#SJNa0Dfnn1V?sT~G_~oT*o_*_{W7;kiLI$k${JI`YNf|6ORuV}GP$hw_yI|8I zbR8CYz4yglXNd=w*vS$ZN;-+xM& zi!!mag`aI;m8$V{hz;Zi*ob{i5at=2UON*dRGb#s{TN*%J4R$^fB4%fB(SzF_$PeE z?v5yf?&M+E5fQOFa-830Go}0mL3HOt-N7$@A%jVX)0<764tzgFcPtpwf8)w~+HH9oW3C-JeS7!3JwMyT zV7;_v72@W^k9 z!sYIZ?vsqh-T1q=u}=ci>9M=@CjNTa>y=8U`8(I*u9$vcU_C9L-F=)hVONn=ZI?>y-ZQO?tfC`b%CxM{6dXc@Tej%eR=yuT#=?4Q2;1@1 z+^T$kdHFLUT(p@SF;*j~Cv#8JmZ_tYILNSQf>dit6i*l>64z!G^1xbytIe%q`nL7e z^eeB)>)iT52k$AzoIh?uu&Etsra=C3_W-OrHE|X#Kzw4m@CIIO23uRIhVuz?XB%xL zwNg%x;jU<;aai9Ob&E{@3EPxN|1zqCF9ZI?-dE0tOr~Z%qym*4N(zN-u6cNE)#vWA z8XxbOG$D8o{xPa@6T|8ax~@Dg7`2ZU?j!I5$Lcf$<&Bt4CM0gJFx0~#0JUtKVJJ}l zd@IXTvHEJ$l2eGj*Ed*rxa7X^uC@_vU73B^mfz-}Mr(j8uqJ2!(Z)6BNPB-S$nLwy zde0V|ey5VdBf>el9)`3C<8;1`&%gw2_2r-mL8GJ!6KK=oRvXco?7%!@dun4nPUGI? z@iaQ8FGyoeueh2cF_gzHn;HPHfJ)aqpB}N2_`9nqmDX6$Ks+H8y?$Kwq>e4De!pey zFpSa}!LKzO48ZvjoF>-+VhT_>+;?U+fNJa>rzy4T@%O{A#av|l(pRq~V4bQUi2Nv4 zt^9?CVY*Mz8vJ2Fn7S{igjTJ=I-X%Z%@UjxZ!HW-Z84=PBiy%j2qhXoK~>K9<{>pCw2P0Bx^2BVYc8R!x6wXgPv>lNw}{7}x6Wm~|mGw{UL< zcEh7lS3*(iHN}dit`D==>7bXHTPmKD8zK>Wz-8*TzFa=CM|Y}mEt%QuYuln@%dN*H zFi~?EVvin9eANOII1N*5=RQ$WyGB0tLR=xKS)Z2kE$<6k!6-i;JPK(~ri+!iLQ`yZ zw=0{&a2N6uWWa~5v=?%Ed86tKz1en7?ee*8zsSyAh}_$GeIPXas*lgFPw?0E0?X^z zU!ePV^Ri? z^SetzV1Cz_XOnlf54NR@HG=ymLiHTx^*Fw^3|Rw4cdlLb-#R_3Q5_juGKB-F&J?}> zi?FuxnPX;VW`>xV9Wygy%osB>^D)CZ_rLqN-=Z zuhmk|NM~jw_2}#9<2v2y>WH~sF=zRXD1y6q^KLF(GYP2wz3$A{*)AP>;ep}ptvAsv zAlPG~0w+tN5@Nm_S3P^F8MTFvI6VJ)LnQLqg)J9ac1BOoeX)t)+pkAx&LCH^{T|?q zzq%~v8<_~R(q|+1ZpQU(6)x5#@b^|89pG}V3gT;6W)pJe+2#V>w)(5-H5}}Z?<{Dp7WhcSdVoZy*nd0f^C5U}*=Aa90 zUjoflx*LlK%~meQ=gVAA(``lXW?zWE1mCp||5duf&`Pvw8~<0z_VVoD0e_#v+3_X{ zR;3MGyY2cxJzJ+zTD6U6QJSHXPmL6-LQ&P$x+;%2wOFoNPjF=M1-oA3bpI6SWL=d@ z?DxMw7WMxDYjU@Mr95q(?|9m0M^gH{)}BB-?TUXXOV0~DZ7VZxLiY{aGm|q6(+$sk zxqA68`3$Z{d;A)O>(;dXZf$S+I7~sn57moUs!Db@qL`IhI=kgLcBGkt6I-u4{pF=w zvwo%vWwerpCdZ6-oodP@iy!N2rFWFH9egLdjUX|gDN9OtWv%**ct$S(vnabA>KnIJ zySW!+uwmMnzqQX<$@xs=?(9^9R<(7+d7cg)ad`}J_FP~nk1lzgE?1jFhVwuc0Fit4 z1?C%eEsflX@b2AbR2lYcNF?s4X;Es+zq`Nv^ZfH${deh^KO^O0$y=3*I|<;?hF)t6 zXO|^F{%xs;FLC8wxrZqanz@4g-C6>q2ew3tC70UXEiY{Kw!9#mKsW_*_hlK#F;N0= z0jG?`!saI^Q?>ogCD+`kLSeP*7aHezR91)nRLl4LW)O{C2YXL7!6TWY4{HRW(&rSQPxcJU6-| z@gtjcr}?gqcMhs!hr2NHO3O=yq^;fd`Z8Jw&%@Yg~VFE6UF{z51rWkwll!-fF!Ow+k0O$wfss z^_snoMIM45i_DhlHR~OV4mBF}a-6O}tuCvozjY=TkqcJ9>L#@>v#GzjT>>NE=H!|) z;vI{*UUHbQEP1j$dz1I6KC7MJAk@{CtuITNR8|=D1Lve0{)e16n74dJv~#k z*#f%q5k*Icyn4Euo#;d(;Fn^($`mNOn?5uG&e(KLFE2dc;OehZ9JvAeE)Y#vx~>u z;mD-z|B3-+9}jOuD%Sh|W(K?H8Sm*KxGHt~Uvb19Ej-;s^+fgguU!1N-*`W_ysx0i z2sWcBka90cHn(qEj2f2nDK|e~FeA?>TFUD3Tf?;+G$zDQ<$Eeqa6qD}gN1zTj0EGq z3MTO^vAW$!ppwCmn4om*|NRX*(MBdz-H!cP0*Z@Fcc}O7iR_K+EspFh71k*IZ0916 zH%Ac^4q-HuyidVF@H-i!KPX~7Lm||<+=$!KdBE4M>I{#JYcA;jv$6WPXUj{Y9z(&% z%a$9AOIV$7COY=<{d3iQ$LJw^>cS6%W?b_p{8%+>I1$EwU*|GqF>N7q8j4l8t}_ z3%Qtdw`Z3k-HpRPpEP-5&zKVAW2j9<@57K)a z#z7>I3%ZWOUmbF7dTNaJ%q*q6$9fd*0wBMtgI~1X!sVHziqN~>gFI1W`08C0(DN?x zP5Q-goQ-T1B99+iGzbC3ppS>fG5K+QmaQKcRo0#E2U4diM#vLhL2WBZ$js_i`xZ22 z!1Mq1)e9q~44S)1A*Gy0t@WWkN}TG9?iYP4=TqO5XRwZoW$ZxS-*;c>6zZB$DV3Jb zrWrJ#o-V;9`UqylNbFf$rA%e;04Sa-g#{%>F&yu|V!9>#qCS*f z;c0w2Rs<#q3!ewTXE5H$L-obi4(!ZP{6ws>-ld0zq;5uUzovWlk>mC4Z`KfTx)$Pq zMH+tHxe`t^3_zzhtS6t=&5IVsqUNGjuJOE~U7=zx1CEoW>!nLTHAFt%`@(1CJBs%G zh%2{#cy|5gJNDuh>9aK9gtouQY65V!_sTI3o@w|J^$;>`KKP!cC=nJRNoR*;fv(wY z%xEvw%P(>CyC;#R^;JE^QtofTW25o&I7X(E_eu`WyUU+VvmAJ?O}dD-a+OC+H)WAx z8zrS(f@>l&FQW2Zew!a{P3hV*jJcnOvm3bgxal6moO#SQ)ul97mD_{! zHbUtp1-EJYaFjWwj@b)1s<5N`aOI0{6Aal}@B$sR^48UA1Hs_-5p9 z^n5a#oYol&-#(MvHJ9)^avtV&t1T?S(jxfJYR~I{F{hC&`j)5z+h(nr2kcpfq`p?c zG_irT9p~jPf{#LYP{vB&*GCK`v+nlX0AyRQpt3MySPHjCrS8yNR zAYWEZ5yZ?H;=G8d_`Gq_TS7`-zi>eO-&3ghqMW`Rz z$H;N6w^HCK@F*Ct*VC6Tt|8xX!!&dpnw;(;=bHiy zVfzyqi6*Y3gE9_ejx@5Svbtu#>#FbM=2zyOW0Ov-ucHFwJ$bAoie{WK)4B(pW8>_3 zmWEEeDV+6mmpn>O&MkPBl1?h`DoO|!9y(E|*|Mken7yIk=AS2i@+>)(+^v9?IEiLW z@#o*+v`_KMn#s?%CCHd%2MN3vl{UDF!O0#Gu!TNir!_-k{I_Qq zKLit;M-g25X2@THJH6h_#evyG!zwyPA+BArq?V$*Xfq_tV%RBB{m67V*}+`k+kJsGlXF^w@pE8bvLey!1Ui?P$xFi6Z z9!0=$cY*ZLpdsGz{PDAc>>*<0?>rnGw7JFCiqP?}E?AIV(Q3n{t{Wfr1jWY5J76nQ z)WTu?iM--k$rlTn@lS~eEa|2H{-_xeK4~gL ztBE#>Z-TL*uET6XR1CXOutHf|l(nkUbEQ8mqAg6*ilV0#I%b)oz!Oxpbd@<~#?vgzD@2V3Vv z*~HqhF=E`MIR^1au>a$Y3>Al0z%h&B&+@w##{-+zBddXWDTVi6-H~V*D{Rjjzw{`a z55D(6+C@QdQ+UsOze4xID3k#r+Vv#6ZKYInn~Kq-NR+)K>Qpfw+F}{uB-h$wLnk@R zoIyGnSjz!u#X4OUt2mno0S?R-XWzY}VR1FS_)edb)T1EaJ*4PLwh)J~ZcK_f%F0^m zRQV_pvIC2{+6p$upjrw4WH#M?m-3P>ZgKV5E->^69_z_{0fBH3BhP*5r50OFiBl!i z(D()H+r(dh<^ZGM2Rab~LI3P970UY<{5w5l4ML6Oq%XbhmmZEn80dujAASCpKAGsh z`uVeSUC34mvVTr&W%1;F#XqscpS51PrGnm`I8cXTas&xrl z%{2(}Z-3}(=lrge^Z^OvDp0D(u=`Q^%|hEU0oGnHhyJIJLPyX`uXt}!sjs9Dk*6t# z?B@%}zI|HVZk^~jjYupk=+$1j!Xk9jSJl?&GJ&T@1gGHf1BN1Br$!?j3rkolP+MEN z^dJ5IziS+jR2K5?PEPMHz266JVUqm>fuJzE;nD)Y0OjyT`Y-QmYpKqH4*$QelkgqG zDL5`JY-iG;~H$9*Ksf)vV(mzxF| zbQAv;bL;sETP6c5-fah2FF7DZy}g%9radQVs}F1G6{Q2an3((h%?Kc)%kD< zNO*AvMD8FG$apdR0iqD}^Etnt(zhWIW(su&`MAipM$m zF<~`WJg8X-IJ~?%pw8Y21d?lf(?`DU=Wh=jyrx&sSsI@u{`E`msgY-oQZ1{aToMOP z5~&WCpQ&dCm_5YB2P7I(Rq9t%0FwRy;6~@FM63;H3)jK1R}{s8{Ap`tjsu<7uQ<3K z(<_FGFkH|jejG*&pbIHmB(|`TI}s^}pA|rO=aD(apTErKMZo-H6~Xgp1M^7RsyL&3 z&}krmNmV1!NsP{qqbFf@*3tDRYx3YXlyae8*@&UdDRHRKLn{Uu8JUHB-U&KTSmPD6 zDbx-oP!dUqNVkY^N|Iez0^F67KXLBsViCeDlrJ#9%&&`NAeAZ&X}*`28qqMTB$e>c znbJh;NTtISX$+`Ds>lzi6mX@KSfc+Qc}Lh(GgU@|-E+yB2-JeEtS*!*p-v7~&M6sU zpfbmtAT+6}>*zwlZc7k|z*}C(M2*g;_v19ZUAXm@C+L~`{0coUxGXtiGf|j9b>Nf* zRrOo2{o5Y7lTFy>%IJ1jVvC8A?34{O%k=~g8guQGLtN%dUPepay}mZ@{C(oOqC3fe zIzO-msi8N(0Cy%o!~pm$zuMKVz{#6K zTk5=D&3a!)kXP{HvCQ#60yh1w?*e`JDAhRKVo-J1b9& zQC^A$w)JN;hh;KY!TO74;be$cOIgHp!El+SF_HKFvH3DoGe4}i6#@6 zCxXoq%TlXRxe;re!j~xa8Ni&ty)37wLnE;beXCfxFsrc|uF__x( z`WU;)qO8n1rIvBL90322K?vwS}C;Mri3;tBTQ;X!TQzuuFAn zcK)i-r%5(SA}@QV^7l$Q7DCn|9|$SwzlPjS^GV0?6*yDLyY-ttO^rF{?H}J>>VNH+ zFQ*I%L~w{G^7SM)(5n-a>DKHvVv-(6TbyRy;ukfF0*Cm{irAQ;+-ay0Hzb=hG*!qd zYc>-4sE8#VSsn|kHo9~$B;OIIX(dhkebCMd?gvxEu*-I+7d0WBz?cxskEJM|eR zJxgLh{syhWbhKHPC``G{eB;WF?xr^#tuo7(M8OHDc5;2Q>RA(*r4cv6=RN}sh*hRB zNSe`9beC~4M>vAu>3zHoWyu=3t6{}! zmM!#DF($lx3+;Nwp-1J3t4Rcf2zS_md)A3-G8Vf`x$#;@wk@-)H3@;0 zbwzElYr9vjt@=s(xm(Np1<}IB@)fmgi*j@0$-{8u`~~XYAo&*XafY?0Vd=3pY+9EN zKKn|xk~Q2o){W}gf``V}Oj~Gf{KflpTlMEjwj*%4mLE9_zOGyI7jUX!2bZqx_+*ZN zDKi0upI_^g!-wp!V}2{ymWtgp zSI>p&`NglxQ6by%L&m%U`pdNx3?N3ft-6N%$^mHUnpaN_UN-)`F{!;Tgfz`m`=SDS z9v2i~tgzBhYI9xL&UwdY#_vyoE$=eSRd`lNXf0WWa z#t*gcxl27`2xAU~IOxbA;5pn`c5RlV*lTwZyz*s0ATpUUi-ZIL`_0n}G`tG%MHI^4 zUP>c3hS-SnvD044#a*W1_GnmH5$}t-2wAsOTTL^iT*tt0hrP(}4LGAI$_;iAK4-72 zh`dv&jM5ycwcYzaGaGBQED7);d!A~_Yb8Jd8|Hl<&)v^NYhF(f4S&HG376Kpwk*Zr zjP#5(`e>kqsFM;Pc0&f8K>lt$ya`+w@AJmdr%;#TLx5_LcKIbYieRU5h6jri8^^;f z3X7P)1kgkMtmj|TgP7;mb8}bVX;a`jw{Man7#^ z$M^1T{oPI!OFx|M^XATuO?2Lx}PF}VIu2RP#q|(y%3DQ z96#?2@xi`)S?#}Jf^cWCH9Zyr3mx~X12o#3nYL6N2&Symd9#5(T)u#6551y;afCOD z_kP_&w6E&GIO>1GE_b-0)gs>ejr${(YZM-3&`7R*D0)?s8(eM5_HxX8Zh&!^?@Ud6 z`~u^Mg_-pCY4z<@yAcTSM~27wOUyl1dIJ+lK4z}Z7T_DRXgR04T2=CAgpDx8i53~2Bg|4{u`~C z{x*4^+ECUCLpc0PD#EJ|ajQ=BpdAjJpld>(Zt%-_A-t@w#?a^D9bu2+%{(K#Rg27K zdR9pp^g&5Vr^TV{Hn97V_YDS~tZ5_8E&`|XO z!+Ya)6$(}!O1Q&V<7eAO+{lMFRNaG!DOjUM@b6M6038GX&82GIcMF$yH5cR>C6m1( zbe*x(SC`TSE?u|ejla6zjl5vg>lD0rs=>5$22{~kaw01XP%1jcc228F>iB~zG|Kq# z)j{d2cW5H5<%d+6d`_$9G&WSpn#1fd;G0VKX!3^Gb-pKDFzbdavBv1jTTxzk3V8%1 z8C?|GR&5FJ9t4^j{6;N(cA}a_4Gp_}52N=E!o}8=sjfCycjr!@Oyh?tv;y$!L5^Z{ zTkOJRAO*n^S`C`7Bh``auoY?e*C>rknP!trI0RO7C>ElfRZU z5#E+xs&+dL9XP?Yf{t_YQ|Pf)D*(U=aP7p7la|36Usn)E6MWK%R1f>CRtc^uQE zbHS1oD$dqB!uh=Imm$6!#66E+(cuu zc)=b)isTU^c6!|kqw!Tr8qJZ^nfG@yr$@=jCKc$v=m(~|wp8O{x3BM{KWK3v z@6vsd!Y^m1&j>Ssx!YZi*K^X#r&H;RT6HZ1D8p+_dwHPh-?Fm&;BY1nrH+Cy`T-|C zr&(-7KhzK4)PMVu*~Rv$BHdI^iBqP@9Y(Qq+x#_h#W!9!?j^i#A4k&vdzuA&IVe*; z^8+z>?s2n>HO~GNr`-dZ+w5W-{%2!g1aRKZ|(fZ<|(-sYYKthe1aEJ8NOJRH^O* zwOZuwH-$vCGS~1!Fpb=dp=;zs(2#yF&mlY{tIV~+S?c8OQlNPpctSf~bVmKY%B<(Z zdrl-9)I|z`hHfFWCBVklQILN|cySKxvKjhiUbh39M{=cIn0c~V1i0fx#C3qfuaLTT zaxWB)(26GufEV@H5TUjX-{I?KwI2?!AB_ERWj<-*J$at46BqPRY5*8%VZzRyxN)7? z4zvHXIg!Y;L0q+tM-~Wq=7oDCy=ZRybtOF#7z0gXVb>6trF0Wg1H$xO68E8w0SqLp z0lWDHB$VA;Fw#(XiXFi!^13xNWQd|wIPaC({KH$1*Y@+XH6?+c`nKDnpVE(It&XI9 z-UiAbTdO0i(U+U|a^SFHQv%Eal5HbqgmY-+)P?!cktI!+(wNKLlf6|(X1Oc*eB{?F zjL!9zZG)R!8uvw#(3a1Z06D_V7fmtC7AH4?!*~NV0Q|*ZUqFavbj?JZ1i=S*VNo=#)sO{*Svoq=;lQ{L{3m z4b$H`C~KB5^?8G?V?o&~m#B)ojT|O7tShUJH z%y_coi7sJ6CXh9|y9rExt_8JY-?qHknpqVf`s|%>txbbSXmwCr`C%qpEOAq?O4c&v41&EV=zBz$ugFJS{}=n$qdE@A6=D3 zd>MKyi*l0^nwnK{J)2?Na)cQ0s{d*`H**vQoWt5#c38!0P1pw=+4TC3j>2!!c++Jj z9_JW35Z<+O$%N{${K==Z4&HwGMrZj5@PWgpi5|aS(i?{R_@l!zED@WSZS~ zKsX4keX)q0mXTjL>y2sctOb-c_rzdiumekLDLJ6<=lEt`xOB28$I&8n0cRp!IEqCj zO-vuo&)++lJ8mL=3tr7MM@tFL00Moz6y>B6@~6{jp$9oVI0f4h^rRz|A=Dq3n8 z_^Y#z+#wxe3k72uQw%)y9A9!r@=?#YLVE`Mnr4ND(~>#5q5J)n+z|A$T~rJeV8?A**wTXH7|rBobTn$xzrr2yE<} z$F!nDf|bpli`Rvis&0 z2b~>=VeZ_LD2gAkzV7g#4y$L-jCQjb#GC)-`2e(Z-fEvW5`%D7Kr0#_h)W;`c6)PZ zZP;2rm_`TjR3qra$IRNkaXDN4$CAFnrAPk^@wz?t0FsbF(2FcfW<7dQY-4ns4< z5-!A%0Z+DUH$}@jGZyo#nTHpa?KkK$2$CCnSjrMH%0WGUq*%P-ViYU;Xw&D8C?)D; zkUk95HI_V zL0LIFgAID(xpy>4CeiJV%Gvt7Cu&#>_>ca?s3%7usO|M{oYC9%sPmVsgx)11RZ?lX zy^LVgA!c%UlJ)d+jXZz!Yxca$Kj$V}U#0PD8nRW#hip)H{8@2GKc5WH#jQ*H`8LdB z8O6J1?@iDOw?V2EjZjoAA&iicz)GkzVzvWxT}kc*LK%j=QxxC{!#dABz@3zeTRz;e zd7SY!MQ7~kP7T|;XgZ$|lErFxu1^3xIZXMe^D}k=dV`fNrU3 zyW>?J?3?86WilE#voJtAvBV5PQalx2c(^0FzM|aWk7&s~yY&H>vw2up%9$Wr;cCVL z{iI`YOKl@NFku8Rb~qGvf~gj;ZU^-=0wT?x5Ic2+7X`@m+hB0nKT9W6dV@t*eq_2x zFSKh~;V2;_YhXK2fy6Lw!B+rH+=_N%5(7T;?m%alz_q@g*k(%{GfMk4*$3v4eg-gI z6gEVr&0DCK(P*TSG&>O{c)??xYGK@Ic9N|tMLDFtXHfJ0y(BaAuWRgqP=Oz?qaP#O zYD@;YfqV_UQ@0>dR^Xd1-3Z;2;4JNZ8c|I?_E597_8w9+SSvfN$BD%KT#>PO%+6WN zG3do8?H2K3PRzuD5hPLLFE(&40|@On$Kf+F+kev=(p38I4q)_|n}s83^BOQ@pud(4 z9Ku)Lc=b@h&fWWGAwQ$dl4MVn1StAkowG_8{nj^**lb>oMX5unyM0B}xXd^F@j>3OBmma^B{xOm&P4o_ykD#lhKH{p?Eru5n-H zv)aZJj`n04v2_h)_SG<(n@yqEH#3bT2u$B3(y_@1?JO{)X|?RIdCnYjxK6!X<%jTT zNzg?i4bDy)!GJ@ch*{OP6&ujr4BB!<1g7N&1(rc;>nkpt7qlJnOTWd#~G#-2ze8tA9GN=+r_UpwWifL>HLn=^n zB`%*f5hCVXf>tkM8NiW#lb5-sY+U{%Yko;PzCPk{H|?MPJC4^O0b!Z<$|a)|(cQ=v zYcQ^UQZRdKmE@!Dym|IC!AyM-M+HLpufAA@c5ISi|D`8UT7;RtIdWEdsIjtAm17mz zbcmN-iP$4l0y+cO=&S>TZyo^YrLC_lDmLA)k)tQY$3L53_!mjDp zqY^Z_FNEmo04-9gDkRkNQ2wuct#Eg<6oiG7sJ^53N zd{9)zpCsw0+lXA>GVj5wn4Ci?@%=N7`UCp;U+{f)f=y~$mgP)la3ZFA12lL+^l^+r z!Q>7bBU=MJV9hxwi)k{+e>s&G(at#(y?}F)JnI%kZ%OyqftAkq2?_C#N7(l62jcOD z4ITUgyc{my3Qn-hP;yBKK%u&CQ=&+ zX|`)Sl$PG81Xu^N1SbpHZG3J;9tRO1{{zMOt9+L8K;Fldf znwb2X*ar?m z-C)T)qoZV7;XYn8xpF%jD4>qP=-A!bxZ!)JL?R!Q+wgpHEHOSzuQlDo4@>1z88!h( zI`QfjE;qVE#+E=2mhPhL2wB?_hZ(7gGk3hZHyL_F!9-Ms5@0$YjVNY1Xoa(NJBRIT z+ndUjWtZn#`fSHQT%7~J^DPTXH~t5Xkt{sphX79G*L8awQ~`uRQWW5uIKui-%DMRD^a#-Vo9jNXr%=L!;0gCq|F z>v<Y$VP6(K6+8~@Q;$@{Yj>``RI)pjD7nbji}lfd@MF21H5*$o1$2+2a0(jY`s zK4@BNC-$|Ro2=vTtt*Z-!d?X^tTf=S4p5H2(gK37*xH*kM77jiydLs z8@pcd`u-I5m?`Yj~U+86ttm3sW;$%gN4Z;#ygFiwB zf-;9jyf~AKMbKS+CbSP^doprh12fub5U8ZHSuxPob=fuuRO(u{LYi$l8i_itGla4y&ik)D@8j;Af>FI1DdszYTnf>Od^OcHIVg z$WN3AdYaL<{|<;oeaQxKqG?*U<{ozHWHU!Y(-kiMlUT~cJV_R@-p#Y^fm=pGwmqaL zv#L~Zb@slu1@rUv$JNsO%hgydu;aSpDuB9@A0;t=9>rg-`L|_(Z385)SR5}Um(h$p zv+M7~yb303F~rL0b(ZE)fZH1sg>$;3_d<$naDL%yhh!Y+XmhcNh3QioO#rz{xUz=p zoDce4OQ#o1M(ZO+PuJQq%y`G(t7{rL$(&c>C==LUy^)4V&XX-{9`oilSU>alyfN%( zbBsG2$pG1>WZ#41)=+c)NuqpK@Hs00p^(33EU`%4uDK*sdkeURN$zZ!sI&?L-O#W& zWVxnBfx91)^ud@vYoZyVr6SC0AY`aq7b*lY_^mdfn6 z$^#m7;I*?1ptk;zp{#$yX~Cm8qJzbGF3G&b7Yn9AP1K^_vb9S>ATzUOSwG%II+^A7 zaP>%1dYW}Te1NDy(9x+d<}?DnaTh|%vD6}~J3}hj^ugSNaIq3G-`!*H40O@EZ5u=g z+0TtW*2hp4j$$9-tI%Hw3li8Qb=Ir>lI}93hO*)!!3d<;p|cHa`y7R-b4#;f*S`jz#oiv3Z@|jR>YC#7)M;cV;6eK5{=n39wm)uesQQ1 zr(;36l4&P_gh8S2WR??vf9WN{+ zT1lbs`SZE?noR#uVe9>~mB1Reuvs?2+1oXY>JL`vu6>}@{G40yRkMNGt1CfVb6`zs zuGv0vw+n{r{vTBqjpV(gVD%aBlvYh@!&h$#Wm7&3XRsjK#Z&|M0u6!uf=G@JP$*WJlUreaX|ltr7p*@D+s&lVlzkDpY9(963vn-2yO zYv&(x)?#5`QZL5XzrO7onbq1;PSZ-K=fb*eDZiq4-<(OPfEa^w`&;P~)Du!~NOsd8 zigVk46gHFT{f)tDuxlN89Ppkc7-02Yz^kC$8smdSt{Ib~hD2GzlUTBYMeN=&C$JU* zX8geuQG!}fzDfK3Jrt4ie$Jzr8?gXr%THus$T9$$3$Qk>CPH!cmEt0CL92#K+Jx?$ z7z{ujRq|guGVcq)*`9Z90GL8zI^V|8o6RwEW3JE4i?NH24`D}YReTmrp~u|>uvq?7 zy8g}p;sFi6Q&gDE;yk`4cTIQ|I7h)S2=?AcQ-@Sa+bPPO-J2?H2B-w^@Hw+)8_0`) zP+x_lABHyFA;~D`JXePII|n(9neqOyL%_Ead3;BlO;Qgs4&u3n;IaA%NDP@>T~@e+AJ z=yJKeS$1wk*p?jL!5cnor+eo$8R<;|lnTOdPojVD{bQERCOTfwb2TOdi^S~IIW{g>G{@Pw~C|0;5o zAaz&p6~OsdjYF*XjCIH9EX;;q?%XVlrVO9miSOpz#W)*hW%grfQ?WMs{j_%bmE{l4 z7|aUWlSPEvH0}0DjX!Y_0q)ZygM$hO32_m>FCD{129?YSKhgle2GzKT6EMC*=DIt% z!ca!AQ$Id<9-u4hF~?Sm*PwV;-mLZCskm2_r%g45Gst&ju@&hgq2Lj%TXOA6<9;rR+`~Knj2Wq6$ja&S7s8NRcf!0t!_AfHS z#^4;g^Mw9y(;OU(28+RlqAK6kGrd`1T}61j#M_ax4TAc-Ww2a2l3=xA*GgE+oU%lX zk0sq|kW2XFQiHb2d;AF5c&}!{cOHdPKYzEgnDc@qtVui}CuDtSU*So-KSbb17k|*FNS(uie0vX2H|oF8(viy;1|GqKBX}X8XG}ep;LAheF73 zMGv6$*Qb#|f+BU--%Zbxn@h`}Si!^f7CpF$$Ir!aUEs#w>mg09wWs>nD6r0l17e-V-Y88QM$)&d_rO0mscCUnhNQ#z zJw)|~57bzD(K&aJ2~A!=x(#E0_EqiTQoabRKFfJQ=Oa)#!!2Nx!MMjm(nO|9&Iifz zt*GXORJXq-0g^{87SlYV+}VoBEL~Zbe>!o8HvA#R?z{&Z{`XODmVR0FA|^@)H>R=j zQ7=255zyhp?M~6#{^=uuD|fpOJQo4iY2Ml^ddvFC8B4rh{R$?K(NT6O%3zW;fWE4y zh6Cq5`CL)8OT3DYId1N_O~PFKzpRVOy_oulRyK8H9=;Xco3qq#c z=q=84I{t9#koA31&I&i~Cm5@uYXkEz3&P0k=8dPMQQqP?BWT2o<<*zpJH-wEX{EmW#Q* zhp$`JX~1cpUK4gu4<#Y3a!B1f5+o;%C|C-C^5K9o-x`i11;@0>KV6ACVse}Q2wVV<;*Mrfv4yitHAxXZS z(sQAtn=edkmA(AIqO)Er8l!M+|Nba$uhxkEOWF=L&GA4-;dMbxc*wOr54{`lp*(!m z91WE$i{>+;(3l>E?q1A^6v{be)1m9fMgK&8zyVf-hovK=mh&Ac-vHo4rf5FDoEUO2`(G!BlL8E4p8KFN75~;t*%@8l=8)HkHWJC%G>WR@;A=qM6Fsyh9>H9=` zh{CbIZn=p%-FtPf$3&WO@UG)EZ(2v`2NgArOTB{`MVT6w6$7 zS}3{d6gw0|ewh{NQ!l4a^v2i|s@z(2`YT+cKS%M^%L58|IPL_ytX`FW;M;ZpKdBu_ z5<|ca9&+Z)gwA{5iWN`5Y*2B{JP+@gB|_)#WR3AV0_!64oW_+)=SL#^dqQ^0cdbU; z?0bRwlN40N9zG4X61@sAfhcui#6viHYMx7-Pm(*_(1^ac#Qfhf>rFt{P}*8Awv`86WzexnAQDHImNn6we=q-_ zQ{}yYBr4vT;!(UqkNcr95u!o5Lbj!a=~SmD;WV7F*gtfrS~*1KfiqmduNRTlQSUbT zEx8^F9vxxzY_Bnt9}2S;a>qken~9rX8NhhVLa}MrjIs&DA^Ve=te8IgVs^DfxHf;i z_cTITashpVEN4ak884ahzW4FI$L;%8+QikOax}0*m$CVOHTD%yaV*=~Gq?=y4#8c5 zOORl}J-8Fx2^wI~;BLW!yL)gC9^8Uka3{g}C&_u|-IIIYx_{5=)m^*x{`R+b)l{#Z zuAX|=0!~cWR;wIAtOJ1K<7=-8SzJ8v654ruQ=_ta&GA6}{k6 z$O0zcoJRY?5Is?(+1tVS`X&3yNMf)X=eLSt&vjmj)WO^%>)dg7ta{8?x{2O+*uGrQ za00R&RYR!&^%0bs5MK)fcJ_y7yguFg$TfC~243~(8?%S2nxbloWE~V?`>?vfWpzo; zpbQ}Bt#QK}r`#te@_!=YJQJIWO2av(tm@kSOco%6;M98ZR+g^be~S#4=}w*{#{bz8 zB^}{MnRaQ^w^YC!gmyH*E3KFQxZW2#Ug#6XG5qWyq3ME4pht-{oaF0ucrimP(D(M9 zD%#hnkXeKyeLOPgk4(KX>ZJamH$NE0` z-%g(%dVZ0gvxn5~d9LegQtfZo*Pv>Wyi8Inm094Ju8m$sFyb&CA?^tN!Rsm;Z7{Q< zt5Vrcm-u~Bj36iAd_G-W)0Rt?Lc7Y@2m36P@%<+>hh}Nc9cKO;cZK-6F%_pUXJ zdI$gE94KXZBWF-3I6l9eb8y6lC)MNVls^=b)22i-z;xl5$8#RQYP5&oV(dKV-ISyB zR(G-X^>;5A-{Mh)_{=w;h&k{zm zq+LA)(kcO*OU#lePa{p-R#+jLufzf9g`Z``EQk2# zbwsOxjS;{ejjK=t=TG#B2fc!JFv__PvV8mA7L9AtnoY@baVK8LwGItY(mH;ZV)vuVRR9?MU^`wevNwIG$Y+U1t^2Iq! zb`v7}W|hWM@lmEPkj1++GRRIwt4N1T8?#(?y_G^rYphfA1mPXQdAtU(78f)@wNnL8 z)f*)K9VAO(@OLH69zL&d+JTQ3-r3qgnIj4vT{ZL-N2OBp$%!1T%SMb~;kDPdbLO{V zsB!zkn-Y|H<9?qjrKbp{(QcWq(ZHz;Zc_A4+)kXry150h=`Hre}BP>6I-nSqDF z8jp2S&Lg60h~%BOS}_c(zKEU@^~{MV*9@-<=SnRXivZ!AO(bJfzr01dRixaUf_02@ z&OY)4KNEenyvgFE``j%4hX&3UbzG7K%#fR2-WhEZPXiNe8f(TWnN2+%lSs?_v+VNf z{<_H~V5Dk!?A{x3L7DCADiy_g@u<SxgTu9quf%5_*osN4~z|KAQo{ zlD&#@`kGWLPYdg?)`C>-EXxvG#EL>_MaX>hY#Tj>`bj-X7tV@B!eo+2v|l9O{v=5l zJnL0*a-3fte9J|6yhxbi8X5e)A-G5<*9e-hK%2o1OeuEJGylROUmzGNj8gQ1Qe^60 zSxIbCMiop-Y6{l2lo{`-`#jigNjoe$Y&k5eB%lRMEiMQ{gd;=M9x|RsqAzZqaWU+! ziXN{DU@)6U8Wnx{K9#QM>IxTXI-4e8Mn(;+K?0&IN-TnT%PvRUU17Ke-xPkW@l ze2f8d`LV`kOH7@mEfgD|&7T2fmCq=mr*^@=Tv0xSsKh9bXtn3UF}g75q$FDypXFKu z#i=Tjp8->knV7{A{2R>( zZsf@2eS<<_0*!{^R#uWiAy|74NeOSJRl&{Tzy)erM%5p}pbY=Wl&>g%>ecT^X-dt0 zl}a?EU(J-$w7@eGx+;zS1_En87=Zbw6Ta@DLR|Z6hsr47^>}0)kI(K^r9zyc=oG4k zy(^{t$yQaQ+y%BM+)BUDdY(T6P(PUfVL%IS;95gGJ-J6!lu-s4Rg0hbT~cSv%iGt8 zUk<=Q5h&VmZ4NG1h}SsA!lrZy;zgDT>J(cL(OQk_z% z#N9kMn4Yal!w4rc)+4CPw=Wb@gor@i>Ty^FZvwI_j~u%>fi$q5OKRG2-zY=9^Fay>?UtM?F8Smlxoq$pGeDas5& zE!JV+ggy_qfDS1Tk)2RZ1FXl9=6}w}QejX>5kHI%4g4+)8!Cj#AM5f(F?W;ZMz}%c zbQ%Tb)RDr{wFPoz_LazZ-sF^?y^$g&l>W&9T@s8I6{c_hEY_mgaoqy)x{b>RB0uUn zd3qKq+WKR~Q9BumYewWyO3$o(|p3m#ZJgYkUwcJ zderK0Jq(t`gCnkZ^*B|0rP{9JC_^nGr&!KwhDpweLPu`r$BS@<1xsasiy7t!RAcB= zVP?x3Q+(LHyzeD9rpM5{)A-SQDFfWXh6{-q%W%plQN=~=T9OnwTJ-x8x%sl^bN(B|@2yJYK$8#KsPr+^smFIxsyLy?xp$8f2^7^* zQ{G=JhGI;`ryiCp7zi9Cryg1@h8*T|=?@1~vll)G^%Bbe@XjqB3WZpH%_&ykC6WJO zJCOkVl)Kl?oXSyDX3=aPUO+rX`cpg&!!9&~DKC#M^h+5r2Li9d$t61SO9?c9`^&c8 zP4cH$JtU8E8G=EG?wR+sQ9>2YD7xUT!NN-9XBZCRKUKELqac=%1!hR5p#@Tp6KWDU zce}B^oMzI86PE+eQ#q&zCNAlCQe`C5AxG9!4&v_?o?8U+1en&GLg$eM475oWo~Gdi z{Oc~9LNyQ5%1j9;XH})735J8|&D(ON_F)%h~J)sBVr%FNqF9e<|Rf7(a?uPr^ z;xO?a6G^{W*KI@C#YI>w4n-EkVVHB;ZcC^J_mIl#Wd3Xo$*ClJPIbO&@u?){)cwGz zi8{0J0?+`7yv}dZmczL6eCa}|4ZrC9PpW^FCUSpP%A-I3S(yM_$oW~+@`8APkQ1XK z+0*{bx#A~cH^kw;WE$ek30>-^CVgvPgV$_y)Yx{vnAwiCnFtkmw#QR%sZGP(QG3fXBQ`%jI4EY+`8G1 z*eNXUWCm-xF`B=gd|galK8m(EVm$uNtaFFi1UfvX<_MoZM@)@Z)Lt52XtlD|cjXqY z;;Q6Lo6G)GEe1D?>0nqkN2M~(cq12)L{nnllUjvrHt^Ma4ck^NU7csF23}!8vd?3! zU+b)sezA!60B+3n0cLEZNzL-U%u@s5^WNcnQ!w#-9@JYK^&`!}UsJR>(^zvn?#;pP z8P*;)6D|1Dm}rvYF@y|6KX$c9Z2zdqmtU~J(q0UdOpD8xNBmlK@MZgz4oyytTzO{7 z^8Je{?!pO0VpOH*Ren)6I9%v1X-yE!rV%@O0xWS%=2#3Hyd6Gv0XaxU6&67iowaK1#mUt}5@P|w`ZK%`0 zi5f6jgdWcwlt?Pwe32NL3xyLyK_+lhMGiMYmR*aDrB51PeavAla;Ty*i3DwKuH&un z=2?uMGWnOsSLy}asM5xl3K+22pl*f0Bq2Nk1hXx-XLW~#10r-&kyzPgm4UF?)P{LX zTXOJk%@dpo0zl}m`3C@w`H+)jCUnOmbQa|$be30;T@<|=)p)DEQ`VER`UXhwVH9mZ z+LoK#ceQrI(RzwGpQxWX53*CfKf{|azK?(!-Hs<9XDJ*3IC_}Dg?!Z|5V7+z1AIbB z0&X>=04C-7Z3;358$j?ZnD}UGCLBzfOmSydx*(LCF32Ls#P)D?yx%C&g@VtE0(sgt zD>W(>ULf-`x8>{R+S-b+o@cvty)Tz%5XIH!!+_aGfX+dAMt zVN}36c!(_OenMwQlljP0NV*Pfu8@oe#>UzKsFpjvbnnR~s{p*GzCd!o4}1*{c;&KZ zV_zlqs#G`P8eEs z-@vJ2jq#+UI<$992VQ^*KxLY2W+FlU^Z{D5IYw+jPdZRme6(3L8Mt=m+R%(QOsxm- zYQq}nuJxB@>N!dgsKi0U z%z+U`4ONRX3*rel6L^7AM3ZhW!nH04%>d1at3;rb4IVO_4Ykk$*2iHfExbYI@hJC8 ze22So1zlps6XMSRT_!D}9;8d1#c^#6R9}#*)fY*eo*x2$ke{SHVA{RD(nb@tp}w^n*|X6)B0Bu^otWf{JWNaSh~341N?V z^o}KMPH$QFFEK{<_RDe;SQiUfPA{LTvY(KdYuB2{9KF{eh+n!Y5IIU?1sc*#&JLuw z)^lmdCpVHjD>3`RKV>UwH1S^01YmBRUhbT`busB-rkdd43Vg1X-|>R;wK~BL zW5{5^B~(OIpeZ4vSmJF_}eBP7~iuI%(HiV+Ps*sf*Ft1AuON6EyO(qpYDS1 zNxr<<;Cs3&2;|Uy2RKJoP4ZXvMnS;S`0%c>XBM)o8?_@^6&jS>`3E2kcWPlLM{(%# z4xbRJrp*BJpxVTJ(McJJ&K*%SCt^!aA|w+jm($MFd2LB_A7(4B>m!- zf5>WVYBKe}sBdAnUz+d(ZUo<{3tij>(O_Q-(wwx)U zsG=!6VeV#WM$A$Gf-efSxJdZn7wm}*7ky3PedTdU$%GR0HR>kTI6SnPtK+y}Q+f5L8pkj>CRYB30&FJ8t2R#ZGUEMqikVSA7 zQOF4NldZBRbUpP7`#18wsK$zU&@kuI{a}VHImD4uXTsE510v-g-cHnNfQ;aj5Op!8 zVT6KOU9G=WE{zvtMjd)wMgvuCFG&}f`;JIPh<1rLoqG}S7XU;rnDMhp+d4(N9J)Ds zcooe!h&^+h*&=vr30zg!blFDP6wXsX$wCu+_>$=hAOU)O)RZ^)w9<0HjG4Q{Aj&bD zU=$>dDP?ULrNV@S)u$S#H;7%HFsM^P%q=I{Y=olA{+I&xAKX?{KDe%oD|BH7T%p@g z#EjO$=3>k+(;=VPAa;9#8qf!J7W^j=4sa8K+#AG=gb;KPOfPJ@EPCG}%dlpaZy~{a zKW~Hku5vI2-O^q4{IG&_9wj&f8wtiW$jE$NPpFCrLJb??5UJ+}I;7?~)ZH*1<0o?A zvszY5D`cKSl0!xhS)(ObkPf~Zkm!0nsl=^lIc2=7w;;Ooh=FU3?UUv@=q-T*{#v<1 zFawAeR705Vfd4_Tm6(ct|M61Gnan(Q!HNdmG!xD5*C5}J_@Q{gkKlc7_*|f(4-=v*W*x#98$?yG=V)4^xcd|AEt3X zpe&p$^F?qJ;~cR@oMS zm!F5>G!FEj@omZhMC0_e&syJ9sbR^^#mePBWd$OYMV=8rty{da?OvlYv6CACUay^M zZ^v*^+I8A>kALUNa#vqg;oyA6)$}SLm}Pu!=G|Hipy9GfcQ*{o&ADDi1Ui^VZA-b@ z1?5RxNsN3G-{AW2VOD&`EbtxmakGf`VPj*`!*}FGMXjbUhe4@0B+&KKO@sD0U;IYd zi%ruGMzwl3VUXmm-juELRq@T&k6!LDtvf=&(s(}CI3=DZK3v@KaK=65^@EyfB{*pBc2ltD$(e0l$*ith@7zHj-#OxABtm_Xt39Z%f(Q)fAc6zJ--5FL5tRNV zDEdpFWliX?JsXa5&ul+L8Z9P00;`)#z5}Jf6!Hn&{lJC{dGsopAy{{0{TyTxElOXu z6J@bnS(BFBmNxvnvmJd0XlT$h?O|XbvQ3vy8_2tIfSg5obQLtA`2ALlfY!^q>vpG0 z-(JL{qLD461CPGY135q~JYbDL-+<01aIUe<(Q^(0m>{NB3|qC!)N@Mz38^@qU^p3>4lEZIBMj#9e9%%DxW7to%sF_{epd^qpBrt+^jKV3D0YS z&I9t)*o4_Sp)wLhufM@32HN|KhhFc%!>Mx$vsG=}_(9_ipwU2*gfj>^Nd2UB4jphl zhF0d?b)Thl7O@N$*l~hAfCd*R9Qo|VF93T8ZGV(n(!}e2bO5qEM+xbfAf<3w;1}0o z>FTop_8IEmM6$2`m52@u(l-37VnZK8Ff2b~!08t>2E^6-EUdFpG*F3!kD+1T1vETU z44E9dFDpYFCyGkEJ27)w}#5puPeFE9EY*Ix3 z_v^G+vbuxplFYxDB$3_sqb-(dE%EpZ)_aL?8yp|HT-&02gwHh-q*Yv7j00~qo&?+& zvXlEJcAzC)AfHQZ-x=~!KWPjq&NaRgdt9Oh=(%@g!YSAb`5n0dpR^?tw%kO9e9bwp zPt0y0Pl2SJWj;~S#|aaW-2b3nL8>DD5`W+*C?51B7$#GHAxj8PZDm~_=ZI%M8HomI z7+2&TV`Zjig?MP?i={ohY?$z7NzR2^^Bemok25Ypnz@M$?nUSNraoM+?*@gr$}W(f zAzw(nuI(~Y3$^=(H?g&EMaqiMDXZOI^_Jr*E{fw&TTb|m7uJ&)tD>84b9&UqhLe6c z*@gqB#9*7YN*=t<4KqgJB;?l+bd`>6aRf_!pE!Cdy}%!sDt5qAt3B$x-aSl}j&unG z%aw(nHO)V3i2t`nRT5&u6%VO7{aM5FyT%e>a7(S5oJ?Ek)z)M~1@wI^cXnYwP4kn0 z;XsoZn!olz(ZplW^s9P)O9daz;m7fgjX&t8IrpOJ7DBMBP`PTealf?1}y6Y>pO5 z;GVxy>QkhTl(MEX$rGIoA?LRFLRC<1)ggQXUDlNV_UY3?Jxpxk)BhzA&S^VFe|!>%`KPrDqJNrA{V>Nv)rU zDQlJ)Z%Z0wbnh!`s^|(J4a;AZiW@OM-ijN&H~4l%*En%Phh$x`Nfsm@P;k#g)Zl=f z^w5bLG^20K&C=ariI)LqGlF{HuS}44mlhr0WB$AQGR9x!fhmM$eL5>!#}6{~ro$&yhA| zUK={T-j2YAMwjP-EdS>m@H}HfM93uQs5+ZN-8LiY@w4!}iRSA-DF?i6*-SKIZ#B6& zx(DLu^mA6T38`APEZ5T`S5VO6D4Nj)9aiTj&fca%#=`ccaHFxIrC~=!isR9Bw9U*4 zlshNZp@76s$yZ_!QH`IY;_D9YPk75#X2)j2!{0LR&CLr{?LPxM3Q0fKRXQ*~$kR*j z0PkCI-h~D@5~Bt5QKc|{Zn`D`bwt894nn3XOPxA`4W?{D)M~L?TPA4j1?iqX~Nr`9ulK z>MjFZd{dV!ARtVAkv7PLy3&d$Jq*aj52ZyMWK51XBJSN>Pp|WuNsW++I(hyOOPGGU99qctja=Me^)EaN-07$2)@DSvDBg+UD$C{n@~WA-+igU4rCBH%>{q zYq)f+`%E905dE()i`YiMFXK%x6u$+w@VawRa>f(*1q+O<$<*OiVY?Wyv1h_u^6Yy^9xS4YXLSrj*jJ}j>}5jMoa2aVbM zB?VYT*P&I)`f{&vnfN|EW2^1r*%0of+?h686QjE}b9&YKKFR7e(wJ>kQ2+NMLq`uR zd3##tgqubu*p+K8MbE$a-Bl;MMJY)cDY1x-4c{ zpv;jfcZRp$ddq6^jWzTl`NLhZJ0Th_Mq<~wz$od}qT?Mxf#%R@`(Uf&dbVON^hZfH z`IN5~bA`%@+&QrU$LRf>1I94obm?UD-ra`o4w|0@hkd^}KYL1sDMva!p7rhe@vz}c zJ&UNOQ-@=`v_SEJy!}2P54@LP8g?*fif{~L6tT^IZVOlMsbtONF-d7aafG##Uk)a2 ze*`u1PUV0fZlj_stlK{3j4hn8liIEE*y@jLbdhz2$-hfQj_T%L?TJD#=m`FPn5oDw zdWlBbE;~B9CcHwwDl+W8N&7V<14cN8SLV_Cf$(_G=d3%z0kI`8@#)#-`|Ish%Y-}n zh?q zrpz1w1+!l&IAR&EcI!438>v>ayq$b2hAdPuW}^!-g)GzX+T7a2BveV`l_=kpZ~#61 zROd~WX3;6Bi|b;9=Y#fBD?F3Mhab2F@_-Q9AGrCj7s>7q@r$=4a%|u}SA9K{IE>I_ zVDLUn`jeB$z6AQbDT5|e?!jBt-d*?RSD0X0*X0I)U#hH%n@K*H*bD%m+?9yzLvD##ZVl^7}<0=P*9!1O@F!B zXxKsyG9T`}$VZnK_Y7GQDUF>u8|uxr#==1QNiZx2we^qq?h_7Zm1LY7p%aosK29)l zn}>J#q7Y@84H}{m?91=tLar1X-ru1GOQ(5wm?r|bJOY$D;43Yeuf--j zXw=_GMlyIM6);d@S;rOZ(=tAPrcz$()rON}q(xB@$n~mDUsvUgPu?JmS#(SRLt#X6 z8Ei~~aa;wKAqzQv0@TKpHD*$EDtti&CU;$YJ~|-QDs1ITSZFHm^xT%KN4OsDL2Xsw z>thqCes}YJZ{|d>VZqB7^e0O9lE=DBfgtG{w3Qb77jjwGUKF{|QRw>ch=LD1GlhE? z3|cn{@$$lWYUEA0{!g4P{<%xnw_*H>o&gv6yPL)Y3@S@9 zgVnm3CNF&?A1L9CDJ#?K*dHQiNh(oTXNJmH`Mj3rhMgV@ykc6%U|O!bZ@9cew$O#Y z?@(V&@_k=W9NbX!dR0Bw1#yG=o|qhrEPG3!772g72u*tD6Zj*$XOc)^N)sOq&G)Ns zOCbj-CSMsxTtQ2nQ2~Q=?fD6-f_I%{DioK^NWDh2CCYn%Wx0ByE(U3lHZq!?=HwS_ zZ@&VDv{U^wAq4#_#e!J|?#-?TsT9K8NJ|HfYEty_;}U;AxB0gYr#gw;YU+trrpX3_ zHPjxNte$h*!JnkpIBOhV2-z3n;-*$Tii_XyTr!q83(qF8n%k&7P}^)pNfX* zwAp0q_i+v`$UQBlnoJ9C2~2)83N7xJO^lo^>tPb>8ww?yd}~qDndjFrV7rz(D9z#Z zlt4yXuYiR7A%}HbEhKn_HYy6WA{b3yVauu>Nn5?wX|Ep1v(HsaA2q-#{4^~2wF_%y zb5-6)dgJ2msj)~(kCceaiNPIBB967)A#M$0zpv!Ms{2U==;d!#j57@mZI_fMS4n0e?zA zWNB8o+<@3|Xo9+r>FH9-J9k+^!Fb3cNmCLcvQCe-y4!j43-hF2x!?WWpt+^p%UHIDY_i+J+u~=DNd9FLZ}@TLz2l zWZ?eh_+yieuWq$)#Uk0s&}W9P=?8<`SXy0>Wp7C4m52io77TmrC zzB{y&(}|YkV`fqA7~|H}`-D=!v&!;j@Y<8_Ew`$c+lFcY=e;RhnY?W4vNy!dT{0;>GQ2bPdY`^XFA!w#fmab+_&aAe!Z*5!*TsaNc zSWS&wjDD9{Tuf~KgkuWx$cKX1e}(M-gd1!9Z*aDzrhmfWd0u{Kg$4jXC;$N2Z*qUJ zLu>z!aL!I9tnRW34A;s^xupDA=4 z`9JaGjjYYySlXEVnZl}fc@^Q1_V6P76O4T9{{;K1J^s=4C?Q?8yC3p07c)FS2`yp*QzuN3UGXk|HnvBJBIczZvV84 zg&%a;%Z38ToZ49p#D{=Jil@GELdL)v2=4)BN1Gz=Vovxl>(*_;2= zBmxDKv2ck%KoLF4A5DUcjq|t9|1{9hs9M_ELxvQDXw*O03KZl1ZTX8Wq~pOtcmV*| zkPj1N0GKty2e1GnI5kxGl-bQ4ZTU1AIh?tzSvg)iaj_b?u-S0(y>*qewRvf&XrZ9y Lq@l&CF7*EZ^|%+Y literal 0 HcmV?d00001 diff --git a/hls/lab2/hw/exercise_6.xsa b/hls/lab2/hw/exercise_6.xsa new file mode 100644 index 0000000000000000000000000000000000000000..9576fec3b56be7e58abbb4a8651a1b5dac3c3924 GIT binary patch literal 1660334 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ z(RcNI$$57ZfnU~uAFk`8auhMBPNMx5|7TP#4|a;~W2>G_(8dt%qw{zpOgF0QFJQt% z|6u#ACNVet^Xx&|$A?z45m5K|GBWRD`R9#lU~@YnM_^wX?%Tsm;GFP? zu}s2_a$xO@65r{lbh!Cp>h3kLoarf^u5oa_WbV#Wn1Rbk`pk7c_|Zi%eV?*3_x7f=%U#;%cS?#ZurJq~pdX3|w&s6L}zPBbUc!`hc&KN^Q zxa(`*DHpoVqt(q^b+Y#M@G&T3G$`5%T*?btvV5GorM*;-X;C`V{RM|H&2eZ^=3cN) zr?`cm*z~$1L#=-EVBXN)fg{}tSiL+c|AvqviGB`ziu8?E3eoJQ8c^tdNvbx}IS=)b zpI!3`Y~nhMkpEsO8`FG_`5X!rA3}5q8kXgR2BAEu zWk6WVS?bChK>~8kXq@7{-LK<5rS$AyE~&F1ur2w1#R)kEHu@iAZrlb_N27#OQI+qN zOuv_9e$P$&s4|DyAMYEC$2*=oRdoNGJ9DzYgI)x~L>M{^BEZBGm%h*bxfL#y%n1_b?YAVO}hzCSV4T@bE1(%%yxi~&6t?j6}QMLqrl!q|>Q_Uk2 zaVeWkp0J8Cf|yKGy@pg1^C_~dcHO5_*VbVdbC#;NMUnb#GaSya!S*-815>!*{l83} zR}$wD%eDybBPWpMStKU!!8xqCIO;wbwMkL)ZB7j9hdmXFBJ{^)eaMRcGMwdMqDeMk z45u{_NtVe^O~%h2nTHE6g?@)Asu@|Ptn*!*BaHYHdzC*S*DSIu=&FzmrV7>g)K&=O zLMsQTKyZ|j1YxT~>Zl-%<|rAz8AZrNZn7yokr9|Pue2)&ujn}WiDt1cnvflhhs3jW zv>0YA+|;wI&{e_VaZ!PT7(dap&<`P*BoX|$!&^?{F^k9_U8zpz%)}$_XADg6!_YSG z*Q5nP1Y|Z*qRo~BV0dc;qRM}*)0`j^22WxD0x5^AWitR8vy{$u6e4EC0}QYyGGI^S zI<#omvexKPiVRp5c{r79uzmzZvN}!*-ct;s)(o6?X-r7JfSYf~k2V{r$4NBAjw79* zw`O2lgL3ILPRC#n^NIcCSnP7knvi_?qZEgx784Zl_Hc{0ViY0KB^<;p2=EKppv0vD zXIF7UVmM4-fBU^>+f>nxr29?Z1VI)^cHKG6%T~)47pb1fZCJONLitBVy73VYC_u*A zGK#xBbUN^j6L+yMJ|n#P3J&w)QEO=f{NP_V68T;_xG-D%ZV9foa-=J%ni9|ZcExI- z8$1G!E3>wCV?`1M%Q)}C8-gxnjvR!kr3N;mJhAe(r&AFhy-CrbF{$cdxkPvxBxhp9 z+_l({qS$=u!*M=j877nSTQ9M0zR5Y57(W%Szo7)BXB zuZSutUAn~pTOc-Y7`cKbTIm@0wVF;8#ZpQR1ta2IkZvg$FRaCEUhd>G9e|#xxoaA_Zx7rq8MCjPxCke%B;|( z%$|PSSp41iQ%Q{K3(=_yaST~v(J5~B0`n+Q#oqXyZ}{j?Ct{Pyne{UVmoWA&lHR#x zJnMsd+f?p@64&JB#F=c%5@L8ZIrA+fG3>AAmBu?Ak$O!j3&6ZKs=|1K`k%p4Q7|~Y z(UCE&7cW7Wy={;_;GA7v7-u{QW$tiVeMPVau|>YW#CSg{IPl#CMmB~FujYStQm|mr zj8AHOtJ!oq6lfRv-gxR-9E;LwFatresd4y?aR^0JtRxmi6(LQ7ekpu2z22uO5~g;P z?^wHOCsLDKY?{uok@Vc$Hg-Z-gnu%Ho;xK83docO1!>0yeF_|4J6v@ImXF3n%w?S5 z)GJLwOMzClGT6hYL6Kf&4*l_0-4m>lkuyt-!5{SH>dvE;@UyJCCw2IkHE3fKA-VW? z5=94N$#08h<3$JYrP2{`fETf5Vwofczu+JN;3Sm|N3O_d@HNjWGPB=I^$M zFZX>3BD+QUT@Y5tfQ;StYgUzG=e1;y12qSTWJQf6lDZJR!c?ci%~kY zH(!<%qrAORJW%qtg+FpccP6@)7i?qbIz;tmrpJ%H}i2`gX$d@-FFJJ zFRewompv3_gWo9j$$=U%SU&v7!S+S_ifa?<5G-kirYB>YTnMi|*IN%e9qO_?)x zIkqK3ISrM*9ugI4l$_M3!SzlX$yF~!rooY!OeK3jEJIj(*EpB|Nx^}Ac`&rK!FFV# z3srqaP+N|}WPhn2^SOi`YiIbF;)GV~2ijW{cqVNAU)aVqi|<&vAf2YLARKH2#>}1B zWFd%LP+f#9qc>hW&l?{2x+}0|F~i%o3z$z-vcGgPxC!ZL#H+*oB)du)iuzEvr}04k zb2@pq#R1Nv$Akd$=3z`m_rgSbJ|ZF#y|#HI-S(EYfs;96%;XnL;WkDy%UzIAIDA4y zjI2QngH0pp=lpH37#6fP6#LG&APbl z)aZVu@HfW6gd&lN2|BGE5-eo<)U*>3(I;8)o*p9t@a#wXxy+DeN9 zX)Im^Yw(s9lv6f#vYwbf)1js)h8u}Dy?gi+|8t7xHh&*G7b z3!&ROH{z~^re$KpRIr`r->d8|2N$_Y*ou~{!{kFLp0>jxHy)^~_c zVJ&Vw#5}+RgI#R|PKwWR*g)m4GuufVtNECC*}Cw&V| zH}R<|m9o)46R%fcL>WB92)k17oEl8iV=REjJ)!=l0A*0y zv8Y2MFQVSb0KG%dx7J#TafH%6U|8&Ash?XK?3g)1wrQ_=ssEk4ATGON;gijhD8ukl zFea(9@PNts|3%qX$JO;idEzcb9$qM}5BE~s-QC^Y-6`%++}+*1xI2a7P~4$7?Bh4G zJF~kppZSM-xH%{1I(A@&4kUCI+DxDn7%#4mMBOxz=8huC=yowjBTPIx$C zI$+i7bPn~Qkk-46e~@bi5Di;jLfg>^qkB}YkyL#tm;_qGnd~wL1*$w9i*c>_WSv#0 zvVyEbNf}>#DK!wi)i5J!lPB-8CRA|`fNnSPrb%cS%FH^mxYRcQ>_B*_zfqCt%9$}6 z($x+RCM-$c_TWfprkod;agwE%$Y_AOaVk{N5EFCtmHWV0!3GOMASFXcfmGqA$TZA! z0AAuLGya1y(3@OzkgFDp{!hQAD>X)Ey=n!O)piIKcAXjU#2cw{m~3e-MXdbR;6B0p zetq2f(S>hqI_EpBiJjy0Pvq|N0_r!fw;#&V_Lc}RT7gPZ*Z70MTQPmSca*Wh^-ESJ z5@T9{p~bVJ`@)K1sd>a$O02B3jS9btq%S2DAC@8`oW4+NPlObnGSj(}m$@n=^kb_! zqIo6M%Wn31N|R9AJkp4d(Ju?(CMdG7uOuXCCM06g3aUp$jCZmoY0&KAfP(+gRURp? z*m+;d+GRmYiYZ|?pFfvLr&U%VXqBa!lG{mcXpSeNA`6wA7*5P1usA4?F|hDZKMbkh%d$@rjn8H zl^KcX<@g$yZ~@N}qoAzqUXc=?1v;3UMpj5p0{MC%nG;vR0p$;^6`N{8;_(JLbE73M zXIXY)+%{My8HKUAidk$q=$Hn6PWVkjkYZ+VWShNW$PuQotf#wX+}+9=kAlO>qfe`D zCE=gv$)#Qi`55!hf9M&Kz$7&tv*JV~R+SOCB^5bi%#Cb35G5mElrw?kzf4@Hw#^07 z6~8AeBxEM2V|yE=&>mUJ9q^BYCeACMWbAW(Qgjf!Qp{6S&Wz3A|B-GYF{yMnsL0ASWwH zw#<-(-<;TdYB_X2XPR<>Oi^6tFR1}ei}Kl&)UwcsdFB}4;);n4l@OcdIkZ+e=mq4Y zE!eVK2S0&05fWbxxyRVVQT#YHCL(`l4@2>~HG?{QQUY;NDMhT4+{_#oC@IU6keW%% z6Z?G>S94J#={T9vELVw%i@@Ln9&ljK**~a_BBpZSC_X&;pq#`uUl=rHHQ>>!y4j~Q7$)@6Oqtu?fiOG!gkiHZz5Kvy~Xo9@T+J7c9 zqXoJGC<=L2U5by*Cai^ID74Q?$0I<*mD6IR5Tnk;~PUaqU z1fXRPT){m>7>Qhsw2cHR*%Jc9B-Z4hHtstdwi9ta=J5nwJF}@Pzm$8-$6fO z*Cv&2Yc*>LiE-{&FiXN$(#8Vfp>!yfj%_V=&ECo$-LP{Bg5HHGd&{mfGT}I(S=w_(8#cb?k;XxA(H|+^-<;<#b>T&#yIrc^?iVb`2UILxf(DonAc{+J6 zl;*3UXXsXHS0qS|dTZ-J&{E4_JeT{p4PbM0$^`iV3=dQ19v#$UFo9YvmGd?u{E5K< z5lRdrl63((-J#4S7;GnjKzvXK48OM7Pf8Rg8RcQ`Q=o4tr`gT-ZOzCCFIR4vB)K&C z`xNH9b=JDTc?%K-6Tyf1;2+F+IwL&S7LR1r^tU$6ueXhwd0i0W5s~b;jPV;{yP$qg zob1qPUk%S-;0Q^Pt_ZA3RfK4E4mxtw+c%;1$d#{R9KX2`%jjvVXa3NNM<_U$*3YDH z)I$N(g6TSoM8z>NmmZl&5l1oTV5&dqnNw0}n3344qu3g_u&|)9 zlhmCEB-#k}CR8b(^{)K6PUCLTSVad>FA3ShXltsxoxdo5(S-=g4kM58WDss@>E7MP z17`jjsdBXwz_~EN3U^=~cCqm{P5TDxjsI-_4dPuBa?PzA66XUw=lg*}fCrfD3w!$V3+4P$tMQQ?28` zrNE@2zYv|^SCA|YGCuyJr2H5R>tY9wx=IlwbtNYS3e}Y*KHv*EGjRJ9^_W2VewJ1sL48g>hp$xNUmE?_9s>^ny#r4`zPQ4@=77UP@ETn?Zy!06WJI2A=xa()wUkM zUM>106#d%m6ZVe(^h#Kc8nKa^gkIug6(3C`dQcCtO2Wx;`zzy z8SC%%FoNCe6x}aFG53*(LhTy=_;n!@*f}|Fnp}g4Ul7H=ifwyr@k;&G@sGz$Md?`&f)RUdudN*!N z!egTIqqN`r7Xs+-cMTwh!aV{ggmBh?Dp~15pk2MFg2Oa2kjr<%OOU+?1RE|)D98;{R90lP$i zu-Er;7wq7-nw0yI#W-PaWjx^UD)Cizap87$T*R}H8N8x~+(nqcV41Sn^?-Qc@$dCA zPE?NIAHyrwyW{?|8hI_b1GjYJMjIsl)6pEkvOFo+-~`#jKjF5Vra6LtkA!3~p_5`e z41ISD?dkurh0t1g%&Fg8jFYP1h6I9PyfL5?MY|YSv&$@J#?k?{$xKi*bhPT2q&a7= zB|iAt=Y(w`tBzNKL?b(FK~aJvV7Z#}&17^gy9XVr0@R@c?(P*qL1`(dJc@6Hwuo=t z6l0f;R^zYfvPH!f@oIl zwTMnYA#BUWa-dErIWi1B4gJlAa<6G>5?C79ak>Xg`WqqkB6)|^gyso|Z(2+ZrQ1c# z6Zt7Ts*&QRibOQF5oJZriaDV?kz``#YN+O*S7=$R_u>wj;jg4WtjMVgkAN$US~mj3 zlbQPSkn-PgtXF}S8zV)ZmMeKD5lCguFm*!uKqt~NX6Z_8q4p-r3@+Q6tydmAol?%-S&`CM89V|S6a=b9h{Gf~MR0~CZ$s?1v{A|p5{?cE+9>>-Jz-lyf4QF= zx_U{q{fs7YGZJa6oS@Ta<7`T(g1Uyei4#Q?nES@1=nc7hz*5OBq$Yh7%GnxLx{}(F z8n!B9Lw<+=Jt~KiE&F9|yY-X_Xun*_yXvM3x8k_;7gskZh}uOPBu;u>YsiZfHw~^y zRWn$^l-oBn?{)2Q^Qe3mc*7>I1ag;CW!e^N7{v9g|E^%P-Ta9;nJ=ApH!)_2a4wZ{ zBw{Lqo;DR7-4 z!+M}!_r6(?VUEGWhe&kxSZR{p)N6WSc?0Lp4=-Em!cbND!nrPm%xD6J*E4u0;1bH@ znu%e}g=}^!gZ0aiH=;Vx;w^i~GNX2Ddj`hQNi5ial6p}^$jA}27Xocz1qZ^keD4>J zd99bnkWo#vuS_DcFI;el6PSiCk0S6^A{0ukf1s^YalC9f?rD%HIhaH`sFcjti>}iI zt&~~}5o{!^ifbdO7zQvcwOfHorQ|(6kYS8pIW-DDx0G@Y`i+mU{EE?1&RkhyzM|@^ zdsI{X%hE`9~uWXWXFe~Vl6|LV>o3hhBPgqeL$!I{{gwM0)l3rTgDxiB2VXHBNKXFpe}5`wK0f~F~g zu3irSpu17f&@Wd=2%#I&@gQ21?EF-B4&u69 z`&X^b?|>)q?g{M1$SZ65)`s@w5|??f&tuxyRUH_BK2g5`+MykMV}OZPmHqh$e%p!T z0E%Mfvg82uvjqyERC2lj!QKRTs6&IYV7F89V@%n+%Hs^8ecW7^jc!f#rkuRTAqaf2 zdvp$LKk^BRR=LuD_9`+W!|c#XIaoO{IW5D8w6s-l3H**XOp;~&SbbusUh=orgzI#q zLvAuggAW)v{gCy2Bpz&VIMn6>4)=j_Llr_$vz{wa@GI;SvzLdrZu}$y09NYs>nw zmlJ3gi~FLMm$nn1H@p0)vc?yaJ)ki6uipmi+GdhEj!$Jlve=uCWK%JPTcH{ZO616H zSL_$wlFlaQI-Sq7j!hce?qk1b*&%!trzr9SE14zYD{CQLa%4aw>Vf7~VQX$Wa9Z4P z5^%;1+B7CA?Jc#3-AAF_OU?>MTn4jW=xQag2lAgq><(pUvZ(PvgV$9EM)}BiK6R_t zYx1rtpY!-gG%6-n>67rweI{1dwLUdSbV$W;qpa!xEm~#yZfQ-M# z$~emvfkDtw*t?Ynjmx{HpXtd%O{fjZ8sU#Jey6Farg|YtoO5&?UT4PbK^{6Xk+tdF z(tlG+P0Z9pY47ZhGY+EP?9bR-nM+Fy33WS^*D?&+3(+u2ob$Tg;4H(jB2AjIxnN54 zZ*e!mfESl#K_SZp^{Cn5;kR1a|0Mc*TP3y))F?PmqmQ&QPD}68*j|m7IEH{GG`%tG z&R%O;!t1-omtRF1TKmapD=xYQ0rxU)$F@(r4Aq>S-PpSk&mtEKPIp~aSj(y*0fR6; zJ#Xpm%v)X0!^4x<=kUTyKqixOz5z zkLL|Oov0=zzv{IRW}+yr)BXS{#<0EXon8Xa>ks%(NrKTk-{Okbue|rnT_(!hvmL8^ zHK2*f2lO01Wn;0`$gutCC1Nj+N1yb4#QNFOJH}AY^JT!l>AA01ar|g@$S_eg%P9=OQ{g z*_ptkUcAgN`r?~Yv|?G&_mkJg;o`8r?gsUYKWq@CGq=qZsOG7q=jxNTfn@G8w}QA_ z#C@>2NK9nz^8J;)jr{#MCd^sQG*R&EWiRV*TwI=RZsrje@rLVm`TL$|HqFLQ)_U3Z z#`m`lZIcmihh2b4kPf5v{oX-xj}XOo04`N?aMx#K6RAk>dp@v z)Cko0Lt!#2Pc2H4Lm*AekLt&H>H-$cn++a)gd>)H6)lSsXv)u)g@n6-oY%B116yHGd4Y!b^mt6#IKyJeaX4ekFu*X5{fOCHry}-$Y{q zch4D+`@a5<&_Rn+z7uNh&EVnhadg!H>8y)%+eRIOxazE_;S7LVR?deLI2o!ET;HV3)2se79zw1Gb`)7Dru{o2t=y`?wu3zrOWhBE#;_`1t{*W}2 z-iG!p2=WdZQ2}z!Q&9@Mm^ep5dQr2t{Wx5Cy|DU7OqdUI4GOvT*)y&W{QBWcmxRMv zO#cGylYDO?J-f6QP-qEG3z?vW4(ZS_KLbxb* zmL}fD&ZaTf4ih$Z4il-mbf3-&B8_Yj9VQ&AN}&bqZG-H}W6Pb=^IV$(Ci;(XeTdV0 z%+rZWEmdgr5_Qt|6O0l$vJ_;CU=S5cc_g`1gQ9ID1c0M<8R}?`>!5MKgh220BnQ{r z9eZ4uBpZVfB$eD9W67D!&%wK}e<>F|$rKzk-Bh##ml&xN0Cl~^is19XQxts^839Nm z7BgwcV`5w_J|bMCB1a*}G4x|?Kw+-oru=4j4E)Ox_GKiIGs}WZ7vn8bAvEOB0MT_09^0W7b~CWM07w2 z8;@}qsrfXFbY{kWpF3Udj{hfw5bgnQIw`nr!L0b|TR}K6?Bm~9f?2zo3iCqr#I40# zmTLINm84K7tYSOG;i>d#f8bW}LnSQB)R5#It`Q+`4-zWXkUsSr*f{TIjqR2iu@S7M zxPh2FMzft|H&Sb0oRuVn33_dlWrk1%N2?7c(5t94!pr?ZCYdhj^dDP44J%hgsRG!JLV?F+19AEG_p6MA-`{8rm*_)GyD)u z3-igIK)!SHubEbC^q5w}rM&X;3nKe$5t&vTPS?o#%SPC`lsZ;%tUm)ZO5DbHZZM@U zpw5tGv>g<7`q%W@#Bq1Zd2o1CjoNL(r9e}AYwGcKt7HXk2l+e7#msF^9?z@1qukfjqBs?2b=?mS4S%i)M!6F_vkxUn5G_`-%l;0Gm^dn6 zE-Tf4qB6HLrzyuSBJuv29Jzo2o$Oga)rrsQ!DMlcFHv<=aXoUUj?CXu#Lz@m!hmpB zwHAR%$ugM7U-&gKHBG+B`BYMQeY{Y{jD~z}Jz{VythL1_q?Hu5i( ziZYasG83Ro;Idg6G$gL(4-fDW`a^1P67ZVZ)NS+IFADS1kI0lq+Pb%EfY z@+Zeg*l`srvWQmD2;lOh#Y`@4646+H)0nQW*WRa%AS!cU&~|ZFc==2m!B?HiNNeJl zY*k$&+obS!eaarM9hw4C;ESfihFoE&^IiswA6zDXs8;qHB{> zO3-_%BiT%u91~a0FCoNt4=;1K_Al5DkD%@6-*13&_BMg%ANz#}`B^8$KPHa+3&ggo7tENUZj>(Uuk8)9;KwKau|!K1$C+6E3PLH zUD*5rfd*ydk9WF)>YLRLk{A02DUCp%ILYH5>Y1gS3`xqoLW09up~3A$k@K@A;)maH z(T}r%vPH~QF8!1ewNs5L5>n7CRRUhLMMbOw-nmn7*2w1C=>Dc;zGy)f`#;oQSOJs` z(x!}6Y#qwkb$Qi)bZSkoL2Wj+>Rtv1A+@i&a(YT^qpdqa-=ztRC}`@`+dyrvxY~O) zB&MYi(S@%$zd)*E25p|672#LJDNI8@55f|lR(?kjnjndDc`$bXL(UA;C)rLbbC&o@ zDJ#zTh?gw7+}`9_%~L0!BO|9@k-eDk(kv-IJ*>~*5ts+StM@LS%*H~^rF#~lIj47^ zADBk$pS^Lo=JBf)A;k1DfBYFkk$$kY=fSlq=rf}^oifcmbCu$ftH5&fD?KuMa-3Tp zvD$2~5;9s43$3HCk}=xf1-g8$!5cOI)K86$(j(KDlC;BANSE1aQNu&qPbYe+MJ3Bp zqMDm}Azu4dX)-NSSim8_c?)tJ830?3NZ-ut45Sgv`7vlgn|;nOM=Fh_mLYSjnJB66jJkDAEYJR0w?e@wJ(#2@8AHs*b1&hCXX* z#f8taN>{jM@%6CD6Rk`2zF_%Sn*U*n8@0d&M!7}nO` zvCm%xXd^Fl)Lf%2!)nzh5O|B{Yp+sI$XV$nyq7L7&KOr&YvJ`2%jYdRPB ztr?_gEu}d!K%c*y?t81*0E+Bs)@qW(v+78!h7DAbVxq1ky8kMXCVyEIWLW{Se4Mqa z0$C=PEmyWY{;PCa2g)P`l*xzQzrisct7`?AwE}{`RS~XfdO2)TMeAC+E?8a#VYLQI z1VL&8O4I=*f*=LeUDwjof)#x8<5T{+`@DWNx9UAMXB>r#pF)L>JP|y}@cCOHJmqKSn{Th|qTOUU^%{mJFDk0%upqLW7qu zP1pz{cQqU)R&e6r;~j2az%BY>oLjT&tjq-Z8e z5esK_EtrEl=;p`zuvmBB7d5Is50sn_GfwW4yKso&9Qb7^DP5cPut6XBq!WHTRl`Djg zrFi?Mk&u^VXfYEvJder8v`|lbD$2r-^k`yaFNBvR!j9iU)$Mimhm5D4UFiH#rJEB+ z+WL+_@}h*kyG9mNXzKqha3}<9@5?CbyL(^&aCA3>p+i%rWAe7io3Qb86}|pD0Y{hj zYv@Oii62I&6?c0LM&|B`OQhj;ZnKU}?@=)#iDA>16#j5|0v6ZJxG?7jRPY9e*9r-~ znK213gU0CvWU1IsRMg!Wm80_^odF+z=U6lU$ z>A|>L^l&_D>LQQ;WCp;rtVf=JXT#L*GnYG3lwX3b2#5??^aZv51F`qAd=(L)ro1cn zzY*X+a_+qhTlDk(d1Rw*|8UDr$Lalai%ZB`^tXSYWI@;cA!!v6HAm5Fdt1qp zfyZ0&EF?^>tn2cUx(WM336z6e&i2P+G*>cx`B8wQc{6wSuB8kf`W|5|@pVm+S`#G< zYmJ{m%~=lCJpN(Um1Hh9fV;S=78V%Rp=h}xEybFek&;7^P}*)!KM~%%%SA-GYxt0w z4gGjID(^dlNN>UI3ODsV3Tx6nBAUUav&2nRjC*FP&;}5 zzDr~TMx1T|aF_uOs$TsE7-$@%&0MgcZG239M(-d9qz@&K{@)LMKmFH|I{h6v#uvyF zzG!3&zrgK-qn;?|nmXrn>p{CuJU}z2%;00e2Co)1t@}5GEf8=Py-z1iTV$r>&lGY1GY3c-3A;0q|Mq4 zgit^KU1PleE2{rb=tA2>TbyY_e6??1dmWggK{301nDfcKn-~WI{W9s!7REH4gNG%U z0M-?yN)?0lmWiyRnnk5e9aPyn8%-rCB%KT3c4y!8j^>dp|vG;(?*=9mGxnuk~9Knw!CIp)6qC~PX#uk=4; z*Mp9Ky-%WVX6!EUt_!*PMji!>$x-#+zM4m1vJ~|H2co&R3V7(C8bDwDzZPHyKXNwz z2n^&WC-e#9uEsBQQ@eimPpRYhxI_EkizQDquumfO~w<}A^(M}$|zj!XM$@fr9J zf9?L^ukSznz1RAOzndf<{C(y9;P1u#Km6_a;P2wI&xZ*UXe0H1XX*ck5C5CW|Em8F zc>_MkOQim8ft2}xf%HL+!mKK(;ZfNGzKr>IoXCvkw3e8;7Cb(oYcixXP7SO zO*m7^tCT_PWsclM^VLNLkDvzS--!!jgAQssWCFMGU6nwwbd>!cTz&(ONwoO4=H$N* z^dG{%_dZ>K4Ue*dK;8T>f8lvejdyK+aj0+Xp|zStBcvQ`Y{<%gtHv5AlX)hyN=B$E z(Dc@*2p&ppk~IHMf}2X-)xM63xwnTJ08ej2C1fZyHW|bzXdD7PMgRXKY$~n(0+DNO z>VsUaALMFm5V_hnGO_=_?ol0=02G@XuPV$i#}VIsW5d2&T9J>whR|fmM9^bz#79Nz z*%~s9JvGWDq?BFG3C1#5q=8zA6!@6`DEvnkA8gD5MqN;!fvDIBffW1yV6rbLDA2>| z`th(fHVj_97XG`%2YD^bB6mTx>LK|R^mOOGD_WSH5YA7f@I_f}1StO8^DwqB8#Pdt z{_3T=og9?@SEAWXG+9;@pa;4JT$y;8VdDG`L_9qee}gL(XdJBnS`hdrXS@&0Kz{PB zP%Gb!L9X!lgx>cHv&e_%(JjoRawMjCL|h0pRy7BBmquNL*qkM)?SD!ib3qBh%bV|`=+6=#<(6Chh5r8{aE_usZ0~)7Yco`LY9olG zT_EfNF3A7YT51af+#@Ih2vDHY|K#EMnwkZA;KCI#Ry2O@|DCZgtGPHA#a`c-t^^&I z6tYWkT!`z%&Ske`)!7qvr|aDHi^uN=-wW+=e6>$B%!A#fN%Yk71N`Z0XXGDL)QmHT zNoaN|IrEg&1*GKi zZM#c`yLwvmKdLoe8S|>{{cTn9rC2gO{Xv%(oOpiZGGv5f zg`7^S!9=50m=($scp*|nqMzQ$zXjjQT??_%MDsjxQJ zx)O#(-5D)G^cn6|YE7au(*54sTZ8XZ4eol}^4+5;lrT3|-CV!W6N>z(GC(O=u1uez zRub^?>bAE3X3`O}^ZxYa*W;&gp_;QaE^^x{ptS9A&+MgZt2S*O_b0aF*NrQeR+ZZG zFT?Jf_sccYriZKN_r9}TPtWW7(aCk2g^q5aF%MS4+#%uluRrSxPEJZARaGlgBW*X{ zNZScE*M$ornO;2SUp+p#*ikgDyxREj4@MU_-2aX6Wl@5l`HGK9&lIg7X^w2^5N!rw zZuF*C>8k}y`8^8sR z%FiO4<6wKp8MF+`n#m<^1+=jp>b(CxlbMg33yb}F9tX?_bcSppRSi44{%7yJLeQE; z__R9rs^RGIA(JX0RtfFMlW5KLN{L1r32O9zI+iFU;*Lq;7w2dCJgsN1SxuaGC;O#D z27~#pDl-U1jbFu3r;FW4^D&}^>TLOBaDTmR(cmr+iEI&5G5Z<|O~crp6D`^_!3|Z)Z>eBg!-*88o{k2dADz<^S zrr|JsI_}_F@$eN+#{ox|ri^K>cA~3#;9vl0kdN(Zzp9f z*ta&`FGiVneIKqTR|j&nc5A6NNOY>P1X7ZMQWJua%ci8OIC5^ykA~s*gjxyxf$W?- z;VsV)W}Ehfnt2p&;P}s*KZrDKD?F2GCkxavwp5jN>Ic7A1bB*wWuP&CP-4Dih$W9g zJ^S1@3aou%#dS1e_@nP#JBkj3BVw2}POr{RaW1e7VaztI;d!tRK0h3irSY86J^u9h zXH{W7>{*dvxOH_Dno~kq{pz=TAu+-^9P>xZxNr($8^Y}C!i_ruPjWr%J|yz??^tzn zcx2o~t{aEM5wxXj#`T5$fn`yBRR%{~@6V1fUkxkE@NTH}9MOhJ zj^>zk8o%e?_@5@01luX_yl43svJIfmNdqUj3>>$uQm?iUkTnfcEPswZ+~(n@a&UY* zc15_KJbb@IimD@6E+gG(mu9tfT1GVHKt_n6xHs`_ZFM&<@iv=c+sN>)+oUCP||T21#e1Tc&v$eE(w-UP>PXV z!&~c9lD$gSo3YS>i}XVDkOsyZANeuML<5#EP(^dkl0Lzn4MT%it>71djx!~sVUeke z+&9B~r)?Xv=pQ*s44-;t5%b5-t~VLR?*=Z^D+F^AZMa!F3}N=BXLKHx7d`)8j!b*t z?tb1af=j;8c}J3?%~@TB^@StZeXWO<XGQsVRs3 zLQwbY9>(Qc@ix8-q?pv35ioeKhe1s&nd}#ANaU8gunSY`>Uh?Q_O0=$y5Y7ergqY< zODksLdv~R0fc574W!s!tQg-VLMUgN{NkW@he8jcV(~Z?dl3NAbu&|Ca$`q))MUu_k z)r0lXIY)d#V;#DrUp+f`PW{P$&WH(gWez5vlndR9T$I0*l-lJNE(})VLJ=Q$i(eG+ zrgAaR>B%hzUt-LOtqnapD3D;YkN?7lrm>w=smvB|S z%`mtt`Yw2SPY_du%duOc?xzjM`O=$9O^4Z_NsGwh=kfH+>7ntQ;$Y`dhNGVKFC;OB zt^HP=F{M>sHP7!CkQ*OUQQ7{8G$o33#aQOdQa>VO&8u0F{k4d>i1*c+3|FE|ZeHuO z-qwELdcqf61ro8J4APemEOWoF`q#+3HNopmKP>0?MyxD;qPZP-DtQpQYC)uHSCt#n z6CCusG<#<8hP+@O$(6Pny6n6y>%z9HHjbXN|1oq&kz)~^eYRdwwmK#a6W@1UB7F>OSjrER%uacaw;tK_wVv4OUhM&LKBsp{lLsPEgQYfkZ9 z)U0cK{sX^m?NP!*0aO;Y$2oA8$WOO-bmE}1_qu-)F=$z6a2`TXm###F_-M0}ndUs8 zAj?@@w^o89i!iX@lVwOEibPAcb4cMbZSqEK@*AuUV-`z~Cf+z=v;LRDL=}!Zp(a`w zeWw)Za1Gcwr<4gIpQSvxwS&rm>%gh@!+fvJ*r9a`Tj|}w7ZawSN^llDZB8L0QaR zj=)&6OmnP_=)HC#ZjAm+-=cyi7{TQcogvt`)(pOHe1->z*E|z}pXEy5x9<-gZLwd! z@IG-|wnJF;#&W(3cPv^qeu*dYBe62nM(#x=yt86BnZu?KJrJ;&TXc+00)JRG?TYm0O#yr@M)ulStr?NRz{8`t?4S=6+RdRwlkT@Jo<5cgHj<#}o3j^iUr+67 zzB9hvTz!}b!uQUn+cd?w9h1mgzGSRrrf>emn{=)<1>1ymKhxVB^4KR^5LrPJbWBUK zm!Pkgbff%af8mU%-<{i*?0!8hRLhVlCcVYvNxTv;O1TBh#HyHW!*UqnTkr|M)>#T9 zdn}*khozpmwr%je5q^VAuG(Jx#OK7-*-5Gs+HD`-FlZraNXb0!m1y=-~iKH$}KKeV} z>1C_Nuz->oRZq|yP;ocyC3YvSXDG0|)+?~MJI2zT+a_m5p&6?uZ?3liSvnMT_Imq< zB4U=s93zI%!+12rkmo9!-TY?!tr+EfQimvzz(DO4>rDoR>V%Z4{pSJ9#rsUQ5W=v&izQEg{pY{Q2_IX<_f zNd}>h1{KSKg+3!Y!1~m~yw+;if7i@>Xd@lG1ycr3vpAgQJIy{o9Va4AjeYQ%@bgQz zo6V+wdjeE2KG0UIUua};93M+}gSO~a(MCP8>8XZI#0?%sxA91|2mZVtl*ngXAk4%J zp9n&EG(%?FMS5qcxbA8(Qd*HeCXM0&t+3kVso-3i435EWMAqYFP+-}b335H-BL=>~ zaSie2OXi6kOiwHS-i?TYWW|jc*wYM=1s7)6%Q|AEMzO_y$D|U!34YNX;4~GFaMNLgnYNp*hnw(+|21U*a7T7<-{}-UC zJqf_$l(n?W6V%Dub_H|_vZ(5IQ*-sxHa?8h%>3;BwgSLAFAP*OUxgXL*e$J|F)W2R z>ET-hXwq%oXI9UQ>E==EJe_IhNyvOX1*9vd@l65J6&+eCvMj4-_VQd#CyhDE?xJ-G_AuO3A&>1JZw!6W7etrqhA6RiEP2%+(6EKUbI?!v+x1*vCSxXcWKi z5UmH)!3Q182E>nGRBxAOVaN4yq`#5cS)LLSH8(u&SjZlT+(1mOkd4?q*RQ=po=bYh z-mKf+Io$F8g=e()|1yPP&KVBCzdav@ytc~}bALj0pST5Ahk?Tt!;($l99V{xDf@jyM31IN|s2OKic@UYnieSYsibwPteL( zbhmx<$31B0mML7AaA8E}mV}t+!wVJ&Hd6UhttCWe5&>kSZj$gg96ApJsphRpH&5Zf zt@p2Ix*~f3Jm*L=@{LSFNWX;1B^OrQ-=s|q`)(7z0vFYMOL(;zJ4H-_7~)bGsmz7r zVxaPU`%e%jC23ntH9KGGLQZ1NtF{)fJxh40TQ}Kby~N*Aa$it z!|0REwDSyuD!f?c>(BS9;z!GyG&ux?zJ5HOQk$*ukV(GNRoA27cru}G4_Vs^XEj%P zC#v6%IM!&0tbU5#4j8t94Fv>ESauaWeMRNfvMIf^c%j9!P6$h=`o=kid7{-S@4Hbs zt7;kuV0dMUo%wEP>Ws10!z5qj>KPd!0=*UiM;785RnV~(&YPPbHu9d@A+bQD?Rrt; z6y)396%dC}w0SJRuCa8HxKBvvkDcMO+6z><|NMPuxn>89w2H$h&~y*CA{HmLhCdpZ zd�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

{Py}=@yTm)RZNU5_W(D!&4JOLKa>R6J%pl7lzWU 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 z

-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


ca-@c;TWuuQn0{cWfhy!4Y^`mTNgW_s#pE%Zvup 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

LG;6iO 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

32!P`iH0B{P}VsmEX}MUlBEoh z9vd21#-4tw2Q3p!wKyl8#4g)f>VU}x^!Cf>x5RTCOlx^>(!HZ`1{kq$|Hh2DR^aih7`+7do{h!5IQ|kVB zp@9Mc?LqxhMfg88gDsuxY@1bOnLABj$%kgS}m0tml#D09w z^|XMNh@EDX8t!L)-HG%lYm6%e-(iJw3Ji-;?SfP$W_0*Y^avl2iC zPNc~3fDf)>S;zy4b{dIXzyE*~E=7*wp(d_7HVV%MQMDte{U|*~BgMsNWBEc~`2z%H z#PY|Jf%Pi9s^#@|G(ZIdMY8O^h*15*Ny>#mM;{I2_%F$ari5ACmhr2t3B+dt8VAgB zlaoG@pAE)|TK2e(F}`bIXVs0FG^9LZ5@!36dj88+IBI=OL<*2V3}kg)Qmluq4FK;*Px%cY9VaLqUwr< zv?Fv_c}CVsUkRggGe-Oxt#2AX=dMIQ-b1?q+!POav>atp2yec1ZpzI(os@7OfmLO~ zgs=t)8*SN0q1q}d53fiOps$5f3sss61gbO0g;v1v1b;q-up=m1lT_W#YnO-LoFq(t z9{V|SPX7(!71$kRbsNWL1jzB zED?^e`qDDSObI=4k_?j6U| zE=r`J5oKyI6p>$f<)0weK>?s!Fu3F-b7+cJ{E`8YifZez^%byN1XsaxcCXjYj_r`@ zshB@0pa1NgUi5-Zqk9V3%{6_cFz5nDIfzcLxrLqX+`W%&m}w~W%s%>fC8a!zD@~CU zZ868>&0w>}@;QDq_VFQhbe0$Lo@&2Fx)`@(x75F&f0)itoao9yg10jP2y8(4|LFg%|9 zzrKx5(hUp8|DuwLZ}{nx`PwK6cnj<4US zcC@fY0p7UJwc>@!6scUR;EL*NE%Vf=x3{-a&rb=qGn0n~9%~jq(*s3|t=CHk*Gbk> zU{7yl+f`MTPRzh7?m?B4_Gc3|2n{MCeqQXw60rQ)Rmf|(BZ&f*|XIf@^{-~g+vSXe2mMeQ^T$#

vpxWoN5fMW%A+MJ+uc8BXp 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

s@=ekuy%@Xr6V)t9> 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ΞdAI8 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 z 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ªZ*iQi^!6~ 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

-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%0D|l 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 literal 0 HcmV?d00001 diff --git a/hls/lab2/hw/exercise_7.xsa b/hls/lab2/hw/exercise_7.xsa new file mode 100644 index 0000000000000000000000000000000000000000..4519b0b662a63c44a19a9bb9f35bfe7cf15f6796 GIT binary patch literal 1672595 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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≫X}PrdDCw)x=dfa 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

$$4i(28vzVz)yap>nn^KWLI?5^L8x+Fi4%>Z0 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 m(HsxuL{; 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 z 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 z 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

Cg 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

WZ{67FKKE;0=B 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¬-V!}Qhbi~>CeG-B z9fKpR@*!O#eaJN zQpq-+wGrzZ*rZZ55H3^~D2|;189n6^d-X`mO-nv{HYtDXj6BL&uQ7-g@z0X``zrc3 zbe?t$!O4*>EH*9Z?^})AaF4TL%E|`lr{>&?Q46x8Nc$Bg*H;&ILA7&|4U$>#gYREY zJ-xtffF@oDZ`XAlWVph5QU#t7X7@MI^;0ZST9Sz%fh)$)7W^g7b&C%20%*%1VxsrR zRj)@Dzg#a4%f~!YyUJH*f&J!zZ%bM=mH>+vf`vWK5#BD&Ds|~v5V2>9zkYHS#xNi6 zg|Xi=RDENkvM3(u0Ve)57I;nCv1q+WMC_&0D09U-1N)6APBBe!>KO>OZbh1yfl-aV z`}%rNH>lsTcTLJ@jU{7NG~~ZZbOe-of=#IVB`xJaCu=yqXMq^%u?GhH%T~Hb}i==AYEpe~tAjOGM=KmypPX*L6os3{S=>KtIM2Hy&Z&A7$#zvbr z0IB)B96VM3dh$&Kgv~0Y`7q4?mMQ4kOiI%;L2BGLH=hbpg_(&l-4N9vHeiBpIYORG z>%G5L_#*F1pRI!iV+3TeYNg($EMTz}{2;U3;&!Dk-wc_&amH}}*3PSQeJ==syKZYW zWwML*)PZm?l!&PzC>vO#`q9GU!oy0LEUP%>RBJ~3$fr9M<^mD^Bq!kAQVKAwgSB~v zJVY?8I2xZI)MLd;bOf9lMUjtp{~lR3w_5yt{#0UL$E>L`Ga{0R%-c3qq4bhN_z?-~ z5JF1DYWp_AIZn21Gcrz*CFLV7n+_w1mLU-TMuRPCe8?F*@D@H4kVXbT9Ykq<<6K;~ zQz_e*N;xIpFo{Fc0{Lxcp6&PSef_ozP4ZO-I?|MBvsAOL61D({g6a-I!thA)D zyKU7JF}YdO=^luTMlTrnvP7%cBjXH_kx!?v9*XYk3 zT9M*y%Z~POS9N=!Zn{^~mkt*T6M2rsj5*n5mxtVWXM3w;82X)vW>|uEs0;VyRi>yp z)u^z($&P$WV%Htb&1JW*^20OQQ*nvr4uY=k=Fse-eEBidq1W zaPzN-+~erVieutAUm81kQ;J#G=W0nm2&z4gym)+%)C7bW6nekue44 zL9l{CvHio>CRjV_TKJWR6}$f>jK`v+*Kb(@9p5rT&vwU>VBhe^Dk6X&jgCZwO>!Ce z%fIjMV4&E2PmJ4h$E7KI$rw4!@nfD8bFr-XL?>DZ zX84mqPiX|o2!1di=i>yNwv_gIJI2&&yy^jrtg8YFDns6b-6|-H&#_T?5YAV9YJVUC z;Tqk^N;p7q{GT!OKQ)j>5u+WO>t1vv(gpLlb+Ni69AInPX2Rr=Z{vPq-HZ?_;tSAr zv`u!u$)p`jCYC{Ozn~*L!t1gLfVkWAjmD4x8 ztR6Qpo(`7J0$t{dVP|k5Jd4d%G)koKjB^6p%K!)(V8i@we7z{fq+L~C?%Rn zO&JruW`+XS@T4Dcp;{hhh#L;ZD{~1ooJka*T_YOWczkm3Pp7 z*u-MaQxs{J`|&6)hB`*J$l(4fsS&X=Ek2Yo{QN1dvG96o*J1t?eYj{ZoyCINzJmVL zk@w|Gy&qf7`Us?$pvW3E%!BSB5F2?jB)0*4N(CdhJb6?8~=}3_TSpPQ6v(fta76%=~)}6pLlc zPkanD(CRunu8MOaUhGO5YG40%dWYCsgdpz7go?fg-%R-Rq_4INloAem%d6`#?EqR6 zBLacW8e*M!|EhY^Q9xJqWCMSmQcuCu83(ma%tq}`n9Lde$B(m-Q*qEO=M%RUoby7g zh9N=on!#&Oc~c&o<3U%9%=?e%V8v5(3-g;*0d|Ta)#sBpAQ!>@kRA;Ky(bghEdC&+ zvR#%d{_4tQUyx@2M!C~aO20a(kkR995;z3UcP3so0dbfE2&Absg6`CWWzP#J$6sLgV-B9Dt7YImWL8IL&=NKr2ol#4k;itrvukeaEEk2 zooE%W`=}kr*H-`%hHxNZEYLJa^B$7LE2$O=$zrY~sc-wVbhqI{%Fol?t42=m4n_IG zRE1rLMv59`J68JZfzUfRN9vSqt4NI;Kxofg@;c_$0}<`@qpghLdHA+JB)=^``ae3p zvjM!}_x|zkmEDD$b6?38s6v;7JG^Pcm8FD1@&;I&Z)N`yeWaZURp3T-yEdP zm1pwjuQ6I~>?YOJ@W!qdqS*aW*0G0vkOOOEyNX=8YK_(Dh(-qWpB|v{oil6NrNG6T z^dMUGPa)uTHfXsca7JH>UI0%K)py7T4+U|lv+)AG5|Gq~oX(wMxzdH~>?6!Te3csk2xIK5x z5rDQ7_qEHYHvzvN$kp$5KhE|A^^+JiWZbt(zeY=e_`eOLwn_Uxbju%l5AE7avG!D2 zvR5;e&Pu~BN$Pxximd66C4y*ZDVd1SwmgQhJAtpMoBvhdnl<1}2~Ss{29IdBqhDdJ z102(hjB4FAmwN&*##0sZe}J@;eyO?Qt76Yy=&o$!ipMJm|xbf@%0Hhh(_Pt^YZzkK&UZw^$# z_vC|W(b{81Bc4*8owj4dA8Ai$|2?A`=;oK^+s}%}OsQwYp~C+tgNpxs3k3_*Dip3R zze#BSsEGeFUPXQ3$p0ejouea(-hSWMnApk0b|$uMOxUq)+qRu_Y-3_;V%x^V&dKjR z?>*~1cdfhbU$we+Rd;oD_1@3(-Jkt@t06GGLcU0`bQDjfd1~X=S9wRYY69p*Z0}0> zn-z22^oXIMq)?Ht5Fkr8lB~&yZN=xa(I9J~q{=c_1bq|wcYl*F?^43lXY)9Y3DnjJND96-5K~B@85by( z*|R>~9AyG}d+TBzw`v)Dz;@7(9R%amGqHsOe2?3s>{DY^slas8aR}A}?q-d+2<-Ga?Vp(ZXIbl*$uc?qWe_JL%luJtmM0q|mvt%g}89UP9 z83JM@^%~lXtyA~$Go9^(Td&@63sG+KHKAYgxp=xqn5o@$4ZZAWe8lo;1Jl;(NCJ+M zkfK2^D!obT@u6}0ILS*M=_J!yoscqIYYqirj}0T{XwT7)u6ze1KnV@GfTr}sW9o9n zaWB+ZiVSnJ(4NBBSR{J4FC!p-o>TDC3&qf_f=bZW%2hPsG|+gos^fD>6oqeD3e>%v z?VND+rP^j09=+pZ<^MHIodv|A55$0np>|yDxn_$QJ&IqtR-W~F=WD30Nl*0Hl=mpw z=1tL4gWJFW`ilEomhLp-y76|ts<;zuAq3zdPx^tPtG008w z?Hs2Kg4t~GLCu?+q=9<0SXuy*#Vv9<3(}#l^ADw;5*Wf(wMEzRG;7`p`EUs`-F*ve ztxjSMOdaVW7*s;==F{Xev|wMc8>^g|J*=gSfdZP0)jV2-?^PjGqMO+%h&8v4X^2ou zV>$JLe%)@1%i4x^yn3@kP#r=HLO8GzKZOU~K=5-~W|vC1rC{Z+gEzc&Z1UkNy|mp{ zw(ZN6Wlt!-L%jbP$&o(N4rRp^TH8`f)o=%%k=9dRsN2dC6WMLdefNpI`8PgO>N}z| ze&6RHAT3W=W2}muug$lWuRp}q{EzU^hxi7-z=3;@($l6Sx{fVzCWhpk|K8?aDb_P` znAe+PKYvdG&5a_&Y!a*Qob2mH7{d)KD@*)90^LC@n&elNRifc@H_{Dxb6EL-9{j^I zr-b_`HOZ)dbjH9l}(0LzbiP%B8|C>%uq;|$erRS>dg3{0k;)Sz~txOuG zDuPHHgHT40kh?n@5`^{Cj(TiMU?)SGav)3e{x)YmuLk)VqQN@DHA){|sPDH?xw9pS zup&-tyDZubD({>v7Q-#gK)t&_nyKOV+;!7|o8fFsRy_4pzOl2{kR;19^j3k3QZ8&A z@!lasF!Cub|3XUi2XEOnSB~0n{@Pi?;|IGbDa|_Z-YLD8PTp+aLw>)+EXxZBpPGa} zErvb71~)(p5gjuAb@p2F^}%)R3*C!G=$eE&?@TC}*Z^Tl8t^DTDE4!nt{-P+7v0Lx zqmV1e=y70Wc%*9B0`Fcn6UYHfTXHO?}?I3k(Eh!eH zf@Rj%xcsx=dTvD7{`ZMmK7n;YXFG=~9OdnMV9!%F+j|^Hj}*mU<_~hul&Ai>e$d!{ z6%uiqY%vw8S}`f!W`yLaeRB&P<@EU18GlmHl)uBA=*cgo>H@cO%OBsoek}tK$l0I| z7e*;4l_Gu4MHUXDj&^}kh=NOz2;I>5wWD1TKH|ZIIzYHziMG=E6t<0g!|0_ObgGUw zyTX!mQvRe!E}0oc0V^*=8jvEsSO+s3i+vP^xpE&MUnfUtKFNn*_f`scXZDAmj=Q== z&5#a9<+CpkiX;iZx(CIAWkQ1vn*)!;q`lxIdx#YHob`J~ZhDF4Az>?yGIkS+qTBh#Cut9)q`aJp@|NRsoq#v2q&dZbdQ#x(!vQ^ zA#UO8kUL%v9~5<_i~ zADnaeJIPdd#!{>IC2pD!*}l&&Sp{P-U%(~705SX?y(%0k^qFw@jD)P;7#r8~*8-&J z0z+22bieVfh#iFcW|Sj_u10AtdbM<@tbgfO8+rQ={Q6SMScM;%X;&FqtnV<*-2B`(&sYNQ?G~K1|7^#T|Y-o{?D2)tfsY=)$%5gyXRx zO7E}2k|$9C)4B^uvXE4YZ1dOS>mk}sD@G+1Cvmo6n3#2$FSCm+kbW`?Gw4irya`0&QQz(tRvNd zAjQH%RfopnA6U`wzrs0fI{B4{ck_{0Ts?3+)_Ka&KK(A$H^!7AB3;gD|-I0&y(>M5XLAx z8IabG(_f$P3}f3v)lJj07Y(GsqnA?Cs1d5j_AKiw50c6g0j|$pc`Dv_V9!bz?(3gD zueSb9@{DsZdeY7p#?C_EF4)WtE5oaw$)UEI=0*}n|6-^NDWqlpb@CK@NpI?hSPEuIpaOA(KO z=Z51waV|?i6sZlTbsK6M;nz0p2JKI2vgs$K6sJ7yN#%;RK97oKOk?ls|L6>oTr&<4 zL9W>pdxkrB#fqf%pRWmH2at^Su^UsPzeVDo(zft%5N7!B_3~U%w0pt3s8H!i*BwJ< zc9k_VQ93HBGZFcEUP6y3x*tJTb>tU96|z^`X$ov`j5z+eIZ^(7HZ*dFb`AvS8(P3R@^QY5Pj z(e2NNjrny^VX^9;Xc=yqLy(Y~2uN-c_c8Xji_au}(3_AjSy@|No-_5IV!MJTG|_@N z%wvwS+`V?AcKHE!U4PVqG~ND8CqAhos*A5-wII9kzAzZe8;EMayaLo{Dz z?l5D>n52q$pa%&ZBjhoHJz8M7v$hC6I0O}a7 zaYT+R-VgaNp7y|&N2s(y{3<+8D9azb?=va4-A+A^n;=g_k1-WyyyJ^?Iq*hCaZJe* z?d&r-A|hd!_U(#BEr~4`P8IUSf{ayN4}C!(wSalzQ*jg%fn-K7zCDHMm(zT}>tp>f zxc5C~QIfIoW-fDkG2W7v-JTW9RTokB^V7BiPp=!VsG|}!^T#a^tY;03FW=l?Gib19 z+51T#5Amj6O?_q>)R{~SXOBW#>#2jKgr{IJXiShmB@%JkG>H?L&-vf<&IUlBgVBbh zp_aW$v2Ii#l0p*Wcse_2n|XQA&_Wpke~s6+Vq`syxWM{}(0Da{o@!?gd#;{10 z$8|RUcqV2H&!g%)y7!NIM1TI8e3mN(p_4mej!e716{XjNa32_$Y(K__ifxVAz zNvEUrd&xugf!$#wWU!)@yij{kJ?KcRg}oo=VNkq=c;2Z%l+hAh^DFjPwo9J+ur+DrM^W)+4)Jy#kpb|0J1f_UTb ze(w(Ov>?zXHKS|uzgb+lfC;|qbpncobNscRvyI;~Ts$qvQzsY*{f|xF=d4WTxgQsd zQyBYBd`(g_XTr3}dKMMV0eU}de}0y-*6@SeY=lWmccJQ!9Li`F05pr8K`iC71vNe& z_G@_-|ItVH3uMfI>Fd?O0mB!J-N(**J6@LdbMMeVwvShIs9Ij(stM>Bmvz+ib1v4M zcEdpRPNqIa4wR*h(7*Q7HcDXc6`Z9*h+k|J9`_jJ z^>{;BZq8X6&|&-S|9MUOyp{In0GJKDELNhs-nyeiq%>(cvxVUQCejeq@Wt1k27^}a z&L;_A(3|3pXc9{BKi*hyu_qlD3%lpy>`5N4JGI3_RREij##}?JfhU}k(em$5| z*rchaOu>&Y0j0&8Xw9HTAEpIAxIIpH)k*nW}EDO`Qu zfi60EJ(u#ma_V`gHe8<)Y=>$=hIyXi+uiWZHZ%5$`Xv6>+ zX;pm2+pc3y1Lz%o(LXScU@d=Yhl^P`?S1c6o}B|9Ni96Y=RG+CABn9tbNa881jsOD zn);u_Mi4)K%-naHWQ<5j_U9Op`oY_r>G-tcck+^bvZA!FzW3jm4BYmzHKcs;?SE37 z9s90H^#t9sIcrmobK<==&>!%-6913d^xvY>|Jn2<(!Ak(J5}isR=_dOK*vCJ)sbL! zchkP|VFf(=jAaM8DziE7*D&{v3ez}#1Z8*XzP>(RN9iW1vpvy-|5%EA_~|W{4;?ra zCs4gW5MWN-cHA2=ROb6xo5sO!Gg}JIK@|2#7Y%lC{XpQm#pvi&Ug1AY0Pr~R^*5{a zJiC3?R*(E)TBs}4L~c@E-R*EZ=L3SgaelUTx>ow?R4fS1@`zltCZ+0SU0oduUln9Z zlGT>n-Hm%n3$|J2PC4YkgKS9j+O_=h%HoX+@x}bJ#)8cO$#bf(mQhJb!vJcHQ7nm1 zESnYFzQi}d9I-D28C!ERlHRxYzCYk|jKmYK2B#H$&9SamJh-F>RL@~<(gdWo!KciA ze_S!DwmM2sV%({a3fBe`l(H~i3-7mp)V$lOZhZT~ap-!2G#a^xrs^xZ1IB@}uocnI zh~nWZD=%OJ33!0q@Cnss^T}zh7|;2-WmeHon^`9v`ood$-=SB0W*=#_q`Xwy`)3_B z)vpDLZPLUVnx+HL{q@GN$C4f}0Xh9Twk+qV%H_8L8%Y2PjJ0@iu}OIj^fKyyKsu0Z zO#s0(tbb*2<@zZU{t0Z%jlR;)A15IiI(}<1pz@Bn8Vd?%OE2+c8)Yj@4N}`{C0>QT z!L=|5aKMv*Pt|rB2_%T`LXwCV9YJ~xbq6O9vRDDAx_-Ogd>HWw#|)y>06jKA@Ri__?eDES~AL;)yqyKL6 zG-nf))tL49!2BLfss$^7=zI>l=dDoMcT-YDMfda*<_pVqi2cy3U;$IoP(}ABvp0@2 zy|6JL_!PtSHxB_u5;ye!trCnxMAx(%JGW2#`IFXzSTJI6KY`Ls7SxX~N)yN#;EX#D zmy?===BZ6@=6qTu#=Uea^Kuy#peD^oLo{qZY+>F5Pr%R7=YgY4YAW!M>y`t3Q>frH z`sNZvH)uEk6dr?4wj;HnVaVGArO5x7OTc1eGv(2TYXG}ReKk}w_LXIqjZ%|ljm``g z;QKLP&#j9d6vsgkb#6YoM<&B05i7PY?*0cw7QrYN6~6o^)Bx8w@j`ZbI2%HCP^U!o zIwRJQVXF2Xm`!gFS&|?n!h^*gLf4hA$<+W&1W#IZ^G*ry#NHtY<5cVcQiVi%(|O7W zS(Tq3TDQdM$vV>ca2h3}FR0$4r|V?~JMTnR<=>U^PE&YjP4pXUFaTu->2N$)EQGkD z9HJ7!6{A)Q%3V)HBjU~c2esrI(XYPU)nQab!GgzGGwX0@!!=@}s|yPZxd{h0x&+C0 z17YSA_PR-x$f%NT`j{R6roP+N`t|GiBloNgCnHfI>wB)}s?a5}IYy5pmi8wm@*k== z*!(RiAUdo*WQiUUZpD>Fo7N2TFRkZFGUCRCUHW5XPMr)Ha{TPhrA8WSvs!}cfV|2( zr#-2-D0(wUmJ3=H#X4JRZmz-nYvb21nO)W-Y?ADdbMLnCA>4`I-EGW`qJ^@mbKyWk zpA5;J{$!GJCkC8JDcTXiVG`euIHIpS5P=6Nq~f1OeN)Sop6BRY?owplbVUOhQxF0OUf!3e(zHn`HX%C=iJ3r+=W3+ z^3~Cf#y;sDG(Pb=C1Yy(nN(Winc1`wZPcjq-8RK~N-`Sl9ofgXOt}0q!_=F*25g|? zW6urDQ0%@aV^n=?7Bpqr%qA%j@=CwOw6cy3kgH(UD*Rh?oe$tDF2Z770I34tH_bdQ zWuvT%0wjl!O4ikm<-N?w#XuV81GQ@2J~(Mo7vB>$(bJRYY-!zNy1S*v{38qEhd_1M zk31;|ib%Bkty9^+tx!5?BnxO8Pe!sNsmK&iXIsS~BbC0$y!{XD)O%l;eWUPS65Y#$ zo+VkxOT_B+e+?-V)P#Tcxyw&AGQ8DtfOy|pg@o3HDsp473h*S+jrgN@#Hsk=0uKJ7O@Q|6d$qZ zT(L8;ibYb7GP1A|i>rFv#dSH;^{GBn6_dBubFSKb?cW zd=6`ZF!CsbC9B<;bIf(p!3|WQlPn6PZOHUn+}_dDRx>v;ME^}>Dq%4}EtM+f$(HTB zR)nEi!%ZOxs29q#B25F)QQm}x=up}u>+I9cp}M9nWN>0FlrHFsWSDJ^O-)8B{ILnn zQgk)t8QnFY8#;8EN~7}|?}2$S{hrY_+mj(SLr*dGB6bw$>#D=u&+=ica_06{(gbAH zph@pVnOscjt6j+O->8=O?m6CYd78BcPAdudmX@ zwJT(U-FwfwvZC$ii!mC>!V=%?vjBqql8)3W=pn5ZUh_SkLq`mVUIn~; zV(&2)SG0a_4^0L9oa}faI`6fvJP!r_bVjz{q>3D|06Z5%rlC16RRMOZU^ZU< zHS({K52QX~LaYf5(_FK#e}`%6(yGzAeYeWh*UBcedZT1g4EonKm@AQ`%U> zISpqDi#g7OtBBliDu7Y|&6rqOyl0Y^&~aW%n~YV8(HhXPEPlMrq((wb^0Ou6;_Q6R zn*K!2FW;}Xi}3Yf`lI9;^puu;keN!KXDlEH1p4XOl2g8O8y&&(ehmn@ZBOKqCtwe( z6+j~EHr!NgMcSpM`9a2*-vdJR3d&^$84yq zl~D=1!QfNT4Flg#PWMG{{##rtU<&hnl{XmCHyBwN@{5>#R9)^hDv6gPuT>~&k}1YG zF`D9?#cOcRr!W(<73gO;hqOy#v}*V3m_QLzNM97)iTRt*Y9-N4dOCE~ooR z=8Y3{z&7YE?V7#a9)Xo;*o>)|z}l`=D{>HC{iCePoYM@RC#KeGB;o2PzmqDk>cWnR zKr9QIO-SSX)3luqYhf&fN`NR)`yC3=XLe|@b!>c7M9d+kkUpjna5%DXSxKb1#>BJ8 zyC6Px%qGi=#Q$|o zeTH>NTXE9ycBydDa#s1}HTPr$i;y<rKJT0Y-c@B=3NA0}DsQ_iIfgt#Hu$aY-+?p}RaF?Z7al;PgujIKeDg2#Gcny8 zek#$ryjg8+`H~j*$fL~v=CR0X(*BufS*}Xw%%SI2=+?*px&Rss$3{2r?P_lgh!*8( z@0AaS-s}wj;T8UC8gKDr_IT<4C#~iB->azp>-hgZ?Y}no$WSkiCQ9LW)9TNWf#OBP zo_>tZabqpK_chO8hfp2!4>@^m!fRlhYn{xMPS*1+)Ug7(apjWwWC^sMD;d`ysC=tKB;G?H<`;a4iDCa9_==KiiRT_!mECti>sKwCutu9f{Fo?b zj=Azr{gToJi1vI%igR;O`EaQ?dap6vFdkq4v&iEb_tD{LGszM%pWYv;ISdD;758xr z{Tlbv9mvwXO81AIsoo!{q+c(8^i&1ZHL7h$zXmaYwIAH-d?+@mJ+*XFNT6hIK0bJd zbZc-VK4N$eCM&Mrr3T(E1r91XWQC(7#{Tj-^U?rL)K7&0g(Ok0>!7Cm9jmN4AshZ=*_H|+!tX;rf*`z{)r=~a&Hn|~a;8!N zW@%sAbKEzDDyFJ*ba@)k&*nh7H#Qzn{oQ;gm)%5Og*^nuMdMq-PnA<8&<>%DInXqU z+*c1(zpJ4}Pl)KEiMKnXAaxL{M{B2urv!~8D-Tr7HWiuIq^5S(hLWP4PmPo&D;P!8 z?i{Mi%W= zpoji_XfUv@G^(t6@{FSPxuT}>5nz=So-@@f9ezIDU4#Z9%(!_F9rLwyc&HLGLj7ex ztf7X+^;Sza{)+v}>X2srJ&)QXt9z1Ro7pOF2H4bquWG8)#Tekn%DDbC0`m1D3a3%p zZ`{vjcsgWFh|W2}P&HHS2-HkdIgMYi+8w?Z`G7^9I&36_zd0xE-WoxdNe_y8C!Ep-kgGK`#NJ{Ok?c!b zYkFLi^-o-8OUuZak9>BP!ORZjF)sF4dcPn?X$L4IxF$aJv6g&i(tLfNaC;r+muunGn!~^j+h$`N>AX`Iyf#<#=1-sLHs|zt zj#Fyw2Begd%$|5-!SSdd2vVIfEi|UjQVvYC#agHx zH?WT@Gy^7qAIgPYPw9LvLaA8feFfe6BcbCWIz*bft0vS7dTLNCrqo)PhBcfZ&<-5% zUhidBCv#&Bx3eWBm8UV>UK%7^KFSx0N2sFhI+|Qzp_wQi*nsU=uWs9u8K~%DWvN8R ztOswP5H8?grlovRL+sNdDoI(!Mmr$3tm)-*_G4uji+kk{UndwxY~1D&6d+>DGktC% zu>tOsR;PpDwV$d3Yi0W@=4&d9?%lW`{O<@^Ff_?q0L`#~6CX3NPVyk~13&x+- zZF1+2-vz!vMdBlir6@7Clqj()r|T{)d*C=$m!emU;%g)~$yU~wgr*I{g8laHa$bPm zhbiE?sDlQfLfFtU&Ynq>w!4H9Lbtzps)ZY#;GE5-JDgcI;(>VxeSLk`A&K``&g&Y) zUEyKt)$I3krjddcAuXK5)sg196v>D?DphB2G_F;K;!EK2C%@{&Xo>;@;kVhl6-cdj zV{L68x@3B1A8*M(iEpXnc6UeUYJ#x3Um&<9|@UN z!qC)2UA@p5mUm$Abi0RcQmV}&z{6L_FQ=A|>3}+=rP<*-?yQ{@z{wFKN+P&_@Yy3O zTBsb?MfzS%7>IeuhuKqIO&38GLdNKJs|=b`(-h1ZViK<+2G`Xz%4^2Eh_*Jop3)H5 z)Nf|{Vyn~g*%x}A&=I}V!EI(D+&)#^zwU5>^^mS?3EJgi8x8VQVy*{RxJwDOmjC=z ztkF(KCu-yA!sEG+25iF`EZKM*!89HfVjXS|QUU7qL_-ej@Bf}+_9j>WwiDccRO9D?nd1-3agyM4u+O>wKg=@T{0$w$V;2;aC+rU9Qx)E{S>N zeM^BBJCIy-g4<&$>uFP1F28Z4+?OlXdYh1-~rTWFw#D?;ERsa1Z;wHTtf< z12H0`c7Fi8PM^Tv`xm>rBOkq?R6=8V<(ab})BERkEV8J$qlRzG`amPjFj|U zAC*3>{FS5fAFu(a{Z!6?)1u`D@yU~r&um*=q_Z52M$C_nEfADtl$mI*^&FX;uI>N$ z0_96iXaPEollw2i=C^*(Zb*}v@3Gn8Dqj`0HknFL{*=juddxaw_mn@SXIZ$f8>!Ln zRw`6x3DEg290VH&nm&z6&aCWm#c2$|qO|5&X?_z8$0e};TYJVZ5)I}TUu;&qB>Y+} zdlBjz)}C=lH){MALOmUl6#{uhrzATW<)SE{>x~pdKyKUS)EqQ6yEJFi_~a)DJ5<77 z*<0<)iv+RvTU>-Hewa>eRYfilJf+pTa3dYjg87P94V=dzx@)F@6Q*8ASyR~&=DUFp zW5P?xf{1m~Q?-@Yz12t?qgTDq?1v^40)k%L&#WNbT9H}XN^@f3*s>aHM>()=(z!$oIMHU`aHLEsWu!1{0&!6{=*W}?0Bd8o@TFS8IaCTvzjs?kW1DW z^h|HL>=1E4(7Kt1#7T%t`ac~jTmBMs()xXthLX9z2!Zy)+3DL1X}|?)3=4Ahvhw_bc|%7-jY?ZN+I0!#%a2xsW~AxWr@3jyk%g%h{LdlpSxV3))1CpTq=Ag z=cpfS%$Pf6c0?^8irHsVvXs`&R5`^bE0uIE$)x&X)rCn%V9bMf>Y{eYz#Vr2p(HJ!166r!mJDG+#2UDBuZ{RFNQ#y>hb>{W zPin}^CxcJi-izTg=G(<}l5Rp*(CU6tpp<}%{0Fbl<+dPx=oA0c9L>=x|eej%y` zyzR0cv`%+A616<0wRK3d1nAN4+cCu`h?MM6ukDj?rzaz1{cD2u%6Ilu)xU-E`)8gV zswuoBTicGh#zsvT@4JpizRn4o%VTaDvc(`)N=QkKWL{)4=>un!_Gf`B5K|>y-qORA zY)rIjP=p=sRz;hmsbsLL7u7Xt!BGVl>_#!cvm8BDBKE}1kGk6%pa6B!X4e~*+@@AM^#P7Ul_3GxN|_+(aCR{`dI4}Bmx#oV)u(WBL=Z*^mP0Y z4(R|sOd()=HmL|RUVh({lw#MurNy%~wt`U8sG??TH;LaS4x;uVD&|MNY68f*#9{m_ z<8Ti!Do@f2^p$&wVaG1bfhNP)c_*-{cRe?*NTLOL5MFQ#BPR85%W}JW`h%`lX4`5Y zN74d|?HeD%3umz=X?1u5)Wgm&!_f^27d}#PVjDo#CS-=vpx#sN;wq7GR;zkuAtrA0 zx!?dwe@^TfBf+ z5HY|XYgGv!PH58RCSc3xKi$P$6cKt%HK~fw_;i-i49JI^x|{7yir}p}arrZS1Xg%i zk7|Q*8Z9H{*u&rYyK`6s+?k3sURE+Ymxd5qQHXOr=I6^!k+rDw#xnfEGo0%(hvHGP z&&zM0;z=rS{Gq=SY~068rsPMEGZ}%Khl<_x{tjJu`HhAQdcABER?Jd?-1xOqC615w z!vGJxfR7(?W9gaZXctzx7_DAw7v}=3&MYm{Ruh{c{q zrwHt0Ylp#fQI>(Fz{NUv9xQh{EiD5JG|+p*UaG8PC#PRuEC8%ZXJ}+HIpuKxQ3ex( zOzj`LCv|m)K%FVO zWn*9Jj37TqGF#(C#Sd@u`-MISHDiN#uSygpYleZL%I3|gA{@kI6(J$gAi9W@NG2gK zH^*&<&yCopDZAG$$|EF_`=!_+?4%5FT*QQy5iD#k9iVOKm8_+C@x=+zD) zcH#0z+fT66$(u+8>G^+(V3$<(=-=~(Bw`~%%k0Likhz4+foYxQleLoNxs&TrsfwJ3 z6z%mg;*o2(;;lD=l&Z3}*d;4dY&XFJ^2lyB7vbgn|IB)B5&Zo=dy%TOW$K(dQjmNl{^PpAH-&JJBl#_D{PVfhcc~EsYb6FO{#K%7i zc*$i}AnKqBHUEa=<^9q`J#NAG(B2;~QDi6STbRJ_0)| zBiikjHLddeOX7MS5Q7xhfdEkwYxrHIBhpZ+X#7`J@DD|@O%NSv{K43`*+^;(?#s!bSn6IO_Jm5kiyS-+0>=3iH|Rr$OlP5%HaTvKjySS`*Kk)JSL z*u1blzqZ_2Gq1L=GVWdbPF>)X2GebwG9D9J+z%8=6UYuxy~a~zN9V~{UsvRsX9#VM z%U4#F$cECSPJOIDNGt+G%s0}onbicNT2wk@h4r+Q8X&s5C+~Tz%d1TfP*`z&4ROi^ zJN^NA8MRDA=w=D+P?*Yh*dyhVm|xpOyq&CHoqtu#oEowMB;Ab)%6Nsd{@qXOHRA1@ zf#c7A2lJe|nM-qd;Fnq&bS-<-xRe*l8>^NOe&bpV^=9S1BtF$s3v2mGY~lM8R!i7C zb?_$bLbGDyuFerNOrEhzy}n4THT{2d+r*xJna;pR5S(Go(ap+9mT14$jeFa$wB6M^_qoM}w2as)1)EN2lnc?O~&g%uYB&m2T^RSvFl!a7F!FV6%-n zEF@?5S;H)GlPyi=kFB%Xxf9xJX9{inA&uTVr=$Z|Dcl?!p#6Pl#D?MB$JTyx`n-jm zOHm_NK0LgG%1KZ*F=eg?_EPSade_E}}t`S`F!5O-Xc4vF}h=uKUB8*aAWM^M3k= z7_R5|N<#y@ptb~`cf zK6DCY+~eZ+2kd|Ff6$U@HI?u%OjCIu0gS_-+t9H`D6Wa+B9MU`vB88GyAFSM5)_#q zp#CID5(Vz~dE3r=q63{MUD!lUr?^|T5-qYu?m;r;=YRT+6^Wo!mO?nKy^ZivL-YzB7B6)9ixL^(@o+>SvZmxN(wkrJ^zbfj|=d<72WN!30h z|7%Lv=DFfo->S;{BX@L6QzZhKaq=PeNvYG864Zx-&QuWJJ8!t5C4_btbNEE8R0lUs zV4(y5=}%1~0|(8lYN1yP2cAP3>a=v!A*M7x8ROE#S$EX0dXf-VMs7x?HkB8EQ?<_;L3o!FTw*H2zu8AtOlB^lp>b&7;^)&YNjj*X!H@0 zJt4jl7ME^~u!fPIM7SHo;dmhrapSTaRgio8wr4c{LmzkdG~L`i~ZCP5!j~ zn~(X#gJdY54OxwFWUS(5DxAgTWY<>Yd|58=&gO6TX;~BWM|hZ=p4GB~rBEA$HO(=) z|7H57y;1HrrjrOy-OP!RY3jV{Uc0234ScJNIn8Gifn&Dzz;_)%b6h(62@KrE`P?YO z8NCfbz&pPpWg`0nxUe}z2NXk7go&`s;?~>?XK@Q3C9r>HNK8!Q6; z7SJtgTOeOAmGq5*%qGj8>3GEH$I8!PbM( zQCYhR2DPj>w0Dd~M7^;f4QYBJbjH!>&r>#&nwB(?HD?V@3#HNOO_w09$FBbJ%%a}$ zxdvS7#Rg{YalaOWj5kC2NiL)HUIaIouOU9TheO@%^XijR*_GFInKlVPa;(`{P)6+W z0sVZ>LTW+X4@^w)C|Dqm5u#&+v@HWf?y`wyAPjYgBJhDq{RS3U{U^BF!-q!$aJZny zm!fgyGKfClgU_X&wrPwv!@(-gh4;GE#V}`C?XY0I?+T?7b3VchK zyy-S%L3|X>ups$Jpn~m?8**2MACiW4cz;bQL+l8(Sa9)22VQx1+Uq1rhuq?V9%*8r(-Lg$OZPIB z|CbZ7iNwiykUVUi3Q3*>xTX{e1r4fGShJ{xs|2Z|%|(BGnrt=?O*-$cUTFP@xJ;7L zm3>vW048Sgsx_vw%XtM*_#C|{u{fTo^cN0bZ}L9ILB&5<3v0kC)__k3qA za?3sZFXY0R5d)#gu0ew_d6-}tsLJ~VE5Mz;_s(x#bgFV;gAQ_~tG{yZF0;d(M%U;? zaO^2LuYZhrq+r4t{0Qb=IZ2`#ddzhOn5>R7>z753wXsyAo@haiCw|2D{3GO^PcdeI@$(Z(jJLNLosu znEKxZ8*|Lf40%IW{K_hBLmyb0>%N2n4)8z!T=6Kr;D%hN^hOd>UsY8%@+H<|r&{2( zXi?Dt`}En9%p~-#)zoVS*PL84M{7M`&5@cjX-aa6c%oV%YQ{u!i4_1nB2K z1ElnVuBH-JT4Y_KiYgrdI3C2SAs1^mYfnGS8vH29@0j&A!;a(3?^kw zoGVL4-a?B3PtgyQ7$^N5DN5X1d&-V+UBr>8vyL>jG>TghFagnnm5Y6_QJXGn` zNT;!<(V7!(*64Enn_`{}rZYZ=-;BsVC@O`tQRR}|?XEgUSlLwYr2CL30DY4rkX2e1 z*g9_AciK@vkZ+#5 zR$;PNHo;7GA^O;0HI-qt6sJ;~I%s-Du`t~`n+ocs5*Dw}?Ci$bcAe6Rh){jT)I5U~<+PH8v^5(Hq5RfMRXdKC7 zIX(R+CiFV^+ul3T)w(7|5iEx(0PsG?_`%Sd_c5z-O9kB>d!8nE1jis~qUNb35Cxia zZSC`h;)yYjrYp{VOym(7ENAk7YScgesI0yasp%se6gK;R0G5nifj#3R|89?rvpU+1s0frb?DaIv$qW>db5u5-%((mT;;q%-n9K3}iU7eX)K_Ps7MjyigEWC!Jird6RK_nOBo zj#7ES3?KV(25eXbFS*AX{*yFfug%ws6$fbc{V$0{C^zs|9DWHIla(KM8@v(?LuwA2 zS-3@M!@SY8ZW-o6ne0O?yQEn~my#A!Lt05aPWNmb_G|gYke9Q6b;wE>=)Mgar*vZO zZzIio|FQc&>1CFN7f+fDyQ0cBXNrv~A+J9-GBwqS3k5aRD7F(^;{yaJTwN@DW z`-om=dvQjK^W#Y%n%U0Rv1YEg=^DclQR<~;ohg+*;(l|FvzuEFrJjxcXN$mN@8cX( zPfF6e6PI+MLDuM5Va;`bZVKF$0U4j1B!`YFp%@QsD28jEj`{|}7;3YIl|}$6`*E*) zL8>!u6*?&WWKsk3dO*z|Db)W3X+W00mT6QxrF%!?O3u{h5+#{oHI;`#)ZQDshQHc* z$Lj%Ju78uuajQClNLD2^n}qIVORZ9ou(1Nn*ox;!Eqin^m9gcP5fV|zx!#E%92q@X z=-yfEiZah4f}TL>pC(8tu`+ffbf+}I!zUwf?a*HdXI~l0?C{MHn-=sGv^kfBvI)i0 zAAUQ)Yrca6lE<;;vKb>NF#Wr=C&5Q}zz3Odg{w*tgHFv}9es;sysr~{r0Fv|B zEft?cJ|==om9Q7m1=I=Wq=FIbw3Y>h=n*$cPF4r~R2m~$Yky2EQ`1ElJ>NRXib}~1 zAgwV;mb|)leg>m2wVUgubjnFsOBJsPV6ZXYqTMJ(6&KQSB$%C(V0BIz1_0Ni&`*); zCd#KPU0%rYBNryIHlsyw;u#Us!oC|non$qvX(uhXiQOW&LIws-sJti?G zM@lcQIh-bk^&`AWKd@FT;Ly&as{rR-#{u2<^G*oPB{#Tf8LW)xw~9Ij7gXvD==n4p zywk(h)aWwud71t>py0eB5oyO|ETOaCAdA$spzms6ZgQ1uA`*H)RWx=9lSIH2*K=`> znV3Z?dU6qEz*k7=l`qMz|Ht0f0M>C-=bl}yl(kUey^f5XLdZx_g5uJk#N>zKHY0Hp zL>^EXED~JOC?OFzgf{$!{$?Zu5g`Eoo`tL7`8HQ%Z^{;kD(_lJo(k zE$u7BkfwQ$(CD3WW@dMG?vL)DWL^7y(%n6C=Ksu@Gqbb1vqB7Dg?jBXy+b;@90Phb zj}zkDt|A*6_KblT2uME#wSfR3uw|Ylscr+}yXN63ZoqD>7o2+p;A!R=QQKA+ z8ADNpH0V)|K}zv-LDm~n5>Mjv5#ON*;nW~qS`3m`gp$SL4aU0eC&A+?wuRfafR^@l_4y{AXFmMp>*mo zEC_l{oLqytH0(nmxZP&V;D?82{sS$YAHJR=rd*p21F!UZBPhYHN_Q(jfo96WFRzrXCxtO~SSMt_ISBr<(P*@@^b=QKh!cT@oJcuRRV9r=CGc1cK!8~}ru4Kl`8@;cm#c@8DXIDT z-D0M#SA~wi`URXOnH#4?n2wneyon4!>7U~w#PrN)2yZ#@`cDD;-Vd3_DP^TpG&9lQ zbzlX<_tH_BWed{=8p0AW#v<=DuJtKvSe4JH6N-1)0K0Xei5E3dbm> zL<)|v=yUy$vuRGLc-j5vm2Z6n*5};OrT243#)r&lm|PeabyJ?`!WYAA4gb-%IbC zI}hL)ms)pK=r>$-Y?5@AzLS&E3w$b5L1h^gpv<`uHMdG3g0u)zBD>#{m5d7El}m&B z#RA!JoaRp9H5*IY++ZgP=p7ynBXz~cn1m3hh}`IbakH^oVKh!h3(9QeW3c@tPuvag znX81u11_m9Ak9zUR`TtaFsn?<^5eOR^DZx_^4wK|$hpG&O=$z+GYs$&M&EuDF(vOh?wx6Jt9v_-lVWeMkNOSKuFaugC z6qJ^hst~C07pJawrxkT&Qc*tW!Acy^8wSEpouGhoWi@2~-#q)e3jw}zxo`rNfIFKE zXgdK1iPD{}=rWHsLi=9$sI`<)y6yhB2w0 za9E*aT4-*h^ody05C7YnAoMQ1*4vx4~bduQS0ll z^g}q1J_Bs8p;>6YXYgp5($a0thtK;k%Iv(qa#*F1d@Sv+$*p)0dgMAv5E-e)=$JlP zRwGnOM1jy}%WJs#2^YPMQmZU|y1o>j#016-fFr zd+>GngF(C+eaO092z^Ra!O(jDNHEP6>t{XPmB+P*OsUz7Sw-kR6dxBT9kLGsul-YH ztu+;GjG_T=EjqKg3t$5=Z|g7I@QX0~{rgjYA41KChCj5Axa)TdLSeq*|4O=fUXSv>IC<(s9aQKnM$7s_h0w@ zYXBZHlhX1C$7gll^T$y|Zk1!LIkFL4QXvDnXIO;3XnfjbN0}`f0^=MVg5#dEQ z0pOyGgrS3Aa?(1hm zQhjIZGv#7SMy@BGcnpE%+D`7Br}yju_zYe7dZn>=wTna~z%KjW<5} z=<>2Hbv>w*QzOVUZ)C)=rWN*!+`irCOmIK>!4HyTaPWE0Bl^7aGT;4IW^`X)w|>a0 z1gD*5sg33Kz(xGzC)>AAP6AAF{*z~jy8!;FLTZHNWeTlJ;-)z{xx7rJAm8Q?lDIN27Q4HD{9~&rM<2DwycC(ntSs}!_1r?|aIhB+;`F`hgZyM2 zOJ#0Ldvx{Ow>4PO^NKh6yz0=YEH6LhDZWoN_<3&!cO>wkE%4)y(-EepmT>mM&!6W* zxj6USM;`gy=Uk2s{nf7q!Gy8r)#9%nye2?wKd&(@_{mS6lH0|mUToaxjs!lmRzLnY zJEo@=0X}NiYAfJ^3znD5Su^4_R>Rc;>ABCV1zlY$S%&J^xUqDE&Y;saIx;==7J$!I zea`~m+;h9Sa$7nYbakOUcgFVhfJXIvWouj=b;PFTApI@1t<75xYTwsKclSvr`8b);d$b?m;!(%n2Zfi(C`aJxy_m%1WszU_I5UN?|BBN?(UEAxcs$t-<8M!&tV17+PA$+Z$HTCnv4U zVYwcekOU?tt<0-mr#B~a((}p5V?pLt&)2`qNzadl%rh&Kw>i})ANerLundO}A33sn z_mLw+Eu&;M9-)g&H%=vJnQuHoWjl=aeB+T)%L+&MAL!=F^mMuOS1PqG=k~*g4{tnD zZ(LmppI19f9a@WJSLWNd!!pUF_IpoS=Ct~KIF-JKROYa3WnO#wDVD9w8;HBkuuQet zzH#I3-5WQ;va9E{A(J_+?pBvM>A7yx+S9inJ;!nyJ#TX?yE1Q7&zV|L=A`HKrk`Tj z%DjQNO~JJ?)`GcyrD0a4X`Z-yH;!uLLQS8Z-o2Y>^546+G`yQH9+!gv!y|d{AW?q! zLJ~aeJS~9f@7R&0pQTfY&hjEFxO+E__sq+c!J*5?&GYM{R|Pm{VVN_%eLKtCV9%a3 zR3)I+>F_i+&th79>!g!51H9;4cWEc4&oXZW*dtly#{#ULGi~(TVDH{ER3)S`r+H#o zX}Y$+>UkrudVVaRMS5PF%sYDCK?falusRs!`*cx)r^u!KaFxLK_)J`TpCSiItO+I? zN#CNGxa$iEERKXSM3F>MEEbaxdPBMcRN-9$4Qh)D2fE;;=8 zdBukSPWmR%qcIH~VHhsZ8|?KVh$$x&yXvYt?s@{rDgrSPkf`^_grB;X_?s&C{C#;u zw8!XFl=Sdc@4V$y3QGTlbAP-9@T>fMdBQtc#aDqW)|@_p(!pHB&^VS;O5eNv(5FYi zAPOV6RntXnF{B%;I?NQVj68n&Gf&6yGv+-lqdB1swABe?*bAS!HVjy${Lbni<@DJomt%zXRC!VRnQtB_y|Nh0s+Hf;5(^{S>7nv`Y%Y6NAY zwqj0^%6qgKs2*`RL$a6)L!5YolGqA=W3`T=k`8lpC98;H+vK8W`FWQD{ODGq(?{i1 z{lj3dPJd3H)*4RN5=7J9D+r7d2q%dwS!D^sa>`2jKZ{)ttx#7p8z_IZZ1+^96@c7{to@D66{W#~6p6T#Hz+FkFcUhi)~L&uA3flR9^|gD~g3U=}`e``-h6o_C8$Kj|a9Km-9~z(Py%`4t&KaS_4*>Gl&_;%jsZ1Szr z)XBr-B^0?LBF&n(IVfEoP6)nw_Psb~`T9lV<+f=qO&ydl8&XTB6%*!6;GFbHL9S`D z%u}Z_grPIfX3$KNa$Mmt3GPh+Y0kog6ckUBF65%-3mkvJewW0-Z}j}kTOj(Me`np& z@k=2xvYK?HIhVW=t9(Z5&>Lt01Q1F#p{d|;yx-*CsmagWHU+wB7}sv4b`On-5ou08 zBzlKR{mF2;nd5@9(HT+}{JjrKhchhb6ULOL1Oa`MPe35ZapY>ovyeW+K=}+Py+%|i zMKy8Y7tD2=#(~o0=qtwvl`6ZW{VjtH4?PHQ#S#ZF0iEPOhQ=OUNMLKM7)Qv&`=~%jj@gl%K{PQPqZr*)u8pvQl?>L%AD80KSN}o{L z6H!(zYrpLW4&5?m5I%#8t|Gx7t`NYzV~z^W-(h;L5fGi0V4T9T zaA7_zbR26Ns`;8?yqF3kwMptiH?6zNoGSgnn_hP%z|NbkJDE3Q8;#uxtXMgYiqbg( zRyLUzc)FBYT{4GSNyIAPKvobG21ZCUXwB$kYO`8MX#d_M?Q~vl!jwz%z4fNB|Bon&ykC45Gr~U zDqXUW^O8Em<^TNDccM|SG7(wo${v((eeCDXO^i7h1EnM_ecB3*0e`4iD#Hk~^5ccV zu+jx)PeTzc`0P}zRwP4?gVJ%7#U|$>mo$Z+CqmL59aB7I)E7RA;>x-7`|>oUnq?n) zwt=KblM(6y)CP3Rnqo>k3W*LWi3GZ5BvBI;cK~CaF5h~kjmQP^o##uFOH%7keF1O=ZcS6OT%=H zoZk3gO)}TBOnGUpEtEM&R1$64ENcZ&P<$`v=X)dzT zk1=yPdQ(^dYDqJDwd#_ejtEAL0cQSX;Y@%}OR1n!`$cvT8CxQgn5u3KXr01FbMic1t=(fi%}=RKF-P7mGSXb}DMZ zU;xZFo3Y@6=PSk)(%sHGfuFsjM76ShWAB&$2f#aR9qn1^FezA*=`*nAX=>qmQYEF{ zFNWij^`evQT2+wLA>L{bbTHkG>4sq&tnyA!<>4%UQNKwwvWyM*!S6m9Wq!dItXnvK zIh2XZ&>|}lTzOrW_0^*$$efFpq!RlKRdwVFos5!ul&I8)E3tBs({vOaN@}jsG75d# zwC(+9&o8^i_`8sna7$oLHevHkceh|VbV<$zmH15}F;iEXUa-spT@XJz?N+2h0m(qO zkgXZTMbpSjRQh5c?Yc1&Kuo(HL=zU%GJS#Z}C_ zlCt=+W-t_onQ-Wo=uQJyvNS0-VW~Sc42VY~vc7^zjLZoq@7TKt@Go1eo1k2WgWN|V z&9k71Ze=jv7PaZ8w2O3Wc5rL%(53~~29=B@utHOz0@fqNV=Hs(fwDwtw67%hVH5W~ zzz)nS(h8anDD|oAhdB+B00kz=Cd$%GAlHuhR9ZXdBu$q39jOvXpJ6~3`W7;!NZgJK zk(-aXkql%7ZIeFz*^__zSpY9ubognUi2u`^G$DgKhn?`coq+X1`CIGXn6ApYr*Y(adelX5t<@_}0}gm;(6dt6ZK|^NP|@KBF!u zpV1^zZL;rS3gfP!eJjRw5OFfX;b>aNAUbbya!&3h!n$mEx^5Vu=jN_r2hQuubS6%O zR^NeoKfCC`>=eSDbzIjR5fZQN7}qc|{)*D647wH(ST4b;qH=8-@!B=nu{pz$nJ4JD z*vs)qGXRy7EXGx|*aES_gq3n0ozni%P#S(bA2*^1(!8va3N%ujJ&t-OEqom-{KzYr zO_$B&r3FfLu@Edr3A!H2l-(5-(~9`?{Ec4a%rF$_*rsd(M}tVEzI5YC;q|o6w=Sen zNHS@`B->-*%2=dS2_#+*Nua%K@XAO=X0k~mD3bi$Myfo{5uQ)D>W0i|j$PRIqXKlkB{0B8P@39Ij-Qu>0EM}Yv9J^ui zaLR_|Ora`EWkoEKo{+R;;CnHmtem-VhQM((#whlLo!V2|nb3m&m35>wVDY3fGAB(6 z$nN0l=eZn7MR0ELnoj}zFMgj0bebArE*(cDl|JdA(JdPSj5RS~G%`n)v#$ddmH0Iw zfMS0rp=gS#q;h?^zcETg&)`@Rs0@;xC~~~atxpNza}9$QG`NXJ;S}}(DJcORFpWWZ z1=>Pj%@T#7Fx@ks@%aM)lP@wsGST`_<}5)M+61IDZT@^RWu<}}X2K7(a~mb}D1y{% z$!Y3jJn7U0-AsXAsUnB1La!`&Zp|BB5{_WQgi91NeyY?Gf^;dG6AUN|GX66Ad?v@_ z3Wp(`NT3>~43rGL_ZbI#+mx=f(N%o^|9v*V2mjs%&Y;UQEnn#$Qhiot9TY;DI3Qk5I{yJ z36iVHc@ME1Z+P0D-SI(y9mY-#sYtn(I~igH^yrcZO7h?`1oRl1AZIRh?cnX~whzQ4&4dx;CQ5!JX{D#+k2;j024y^d0_AkNPeYqM<;ZW4%!0%1x zAbRM=_iQ}Rbyu#}jDiIDiZlcBAn_)-#zC1N<96OXq9JU64Jwp)+8X8V5GjXtU@e!H zBzCe5L?-Vh9?H0DYA6^AsozpsQ4gqb^DqTNKf%aR`H;UQMQP_&+vAw_Xvo|EuYJdF z{5rr7pGvf{%t(=9EBkyO%Sqi(L1p1N5Mr($%N-%+|eu z<_^3jT_x!v9VD>5Q=72DK@f@oQ1i(WcWZjJB!-g!UV!yf=3z}5xF}6)Gp&{zkmAFf zqNAE8Q4q;aJ_~?9>3WIzf2nyjS=iFkO+VX2 zx*T1?_}JyJ45kc&FwEJP_}f&2EdAOcZ2EynpGZlC@3umj7Woo3R)q78*F*|*HytIm zNhj%#gZWHFBh!(oGvGsIA$1$ zQ_l9sUNkNYvfS8dperLn6e^ZM1;ViCz=WVfrXlPsMPv6%V_DP|VvIYBpwxT0kTm@g zMo!rwgTSAXsT1c1Xgk85Se~gAdIsItn9);s7*&vj$v_&ED~rj|{5edYvB*lF6sRsi zS63H3&ql)LwVV`Be%FKl4d4%UIxK>DNH25KK}gamNo0|9E2Klf{~;ODLc1GE z=kKY31m%doK?X=*O@+PH;VT|x_ODmK}k)5Zb6|3w7@uPQ|%xA zN#C6xp1Q9Lric}5;?8 z=UW?u5IC^t-P?4032DEom|)uPf+=jTo;0K+KcPm5#*v96hh8IOQXqY%Kx(xSi3|cs zJDrIvatfvM2$D!jr<+6n_a6D#-v)T~SIHrjW=7PTbXV82Q73{<-Mc$W0SrHMpB9zc zi+xDENN?z84MSr|!OBR)&8r6378D{xLCjiJLfV28^z4d8tW1p+#UfGwEhF;C%1HRS zB!ihT;!J@?Zh?UZUlCFzc9aaH7#D}+xJzHnGL$)gd-{$006wYrZ^6u!(LBHRYea&4 zLrO>4w#B?d;!j~WVx9#1Zb3+Ox6=kKOl#T5MO77LrBOSCIZ`QvZURb?E5U`;$fz91 zAk#Tvfneo_!dT4ecnbf9=wzN!XNHNCsDxvdPnKrXfGgQVVP_xnlc`h&@URU(!gcazu=A1NzIdfn2(4^R@k&9HSRHFqEd_aVu(;XKlPljfVU$rlxG58WUwO0_uR}k~-vAwh z0eXvB&^0CHW$(;#%38`eyofO(*d^&u(o*^v)tn%S5la2uD5_(cFhS}X5Cn}5~ zCMkmLvQz=0B8`M485}Jdpb8 zu0bG-a)uJk$gE{+7AtE&PovTd$6TAwl6={Y&a;VD8|bxo z3Mq_{qkKbpf8*4L{^*$iQ>W>OsbWhCWi7C_7?eeqsY6#Pcct_hLt){1fmX4&4!5|^ z#-e&~IJGG36*MOh(AdYce)P^tsCFniY^B!*Rb)$SFS_&|W-Eg9gKKD>;RewQ1457r z2%f>?9CEACloTqPgXt!-2z4m}A>sj=i(p%KxfR2lUj6i&@!J2|+sG->)j2_-_yDF_ z$*_^W1f2^fY<^CfNa!~HlC3`T^IGdJ1jBTo z*Fdl`GenDC6iPTQq#S!H+%aHBmxzSr7>z^8J4SxabcldZIg!3?q7*CJ_A)c6VKjmUNsEGkn6mjow27qh z9&*$Sfi^Yf*Kh&u3+~=IL#yeqaVi;vo>4*Ekk_xYxVf5XRFZOR9ylrn5A0O5*Md3| z<%QLcMyQ zslp+;vZdh3ZQJhr1i;CPo!rc{=!4R@1QzLe_fX;i8?*=Fscy^#;EfP14p2LWl#YI< z5Bdd-wK41PH4qjTu*`pOhOj1F+cQH>k#@3NhK)O89-w$sk0zK1n3IT4!dO^m92+NyVAAd@}U@lp>fzcoZOGCn?QGwxN~GMkdm<~ z(o(3xI?hHU39P#spvTs*+;h785WMXw^yw#W39y8}2>a=HIG4=P1Tv1tsk92Sj;JP~ zwanF##3zo9(mYt90|i8>$HA>=-H35jOl2QI1vT%)bE>2#L(mr{!@;P;DV#A&SSU1v zff~RW7Y3!c^2L;Dpx+oo$#3F(B9g64g3(_6c%EW!o{pnUjW$S*dre5TJffv{DxPGO zm3=V#_5b++fSz)i?87}|JJF#+@`VtxVr3rrNQqom3YT>BPmuLiDR3(_w$}*oo zbM)2?Ndm>Ki)R*wMvGLg30@WC-XcS+>N$PSN7W382C?bH(A{9gf@*1i_uf{;7N56ST8KkPykyO zheCL&7<#^tm-N8M9+Z8&FpR-4Gx$R9?L~lPZf7ddxuX&d%GAJ_o1qZFNytiQ&=!;` z^n3?Cn9%d2#h&o0B8*a`B*1x36!xH|E(QXVj0bTVFd~<5K8|${#w67p3nL*pXDivc z@PzSXUPeU`Yz;Pqk}a0#J4+72Ceej7Y&sFkFpE4OeKaam0TGNwQ}L#7V(f)llYJ;kXTqz)hjWxX{~GjIiJKkB7aQ{)l$(2NuN1D52(L~IqwD2fv;5K0CU3Bm%v zD|&9a7WLJ<^gJG2e_?X3yd=Ru*iHMn&RBX0l;9>z?Zln16-5c*4P-~jBBD+P{N50D zqVuJM=VKq{{WEmkLw!*t?xnh)v};p;D91Q2h%TeJ1$yKuj^?+*Sns{G^>q@VR5%Em zg%vO)#?BhM7-Rwaag6;3ix!D)dW>#tPU6%gk~BgokUcnX;MkH7wZ8+4;M z;-y}Ce<+H(q9HWqsKT*$mZY`s2nwnoN$~;3V+n7M(Cm&SH0+MCmJtspU9`11`>?;=G*o6{%f#-Q(X+V1?pUBCUWcu~Q7&Z7*w(GJQ1nM}YE#@UZ$ zz;q%p7K~vTc9F_XLHC5hnK#;*5tx{R=ztu?bOf4VnoR{#1btJ$bqA_@GDqzzu;j>? zi{N5ZiYP**g6`>}ki6wO=F2K4NybuXy^7M?vDHw(Ryvtqx)~Vd{XPVoJOHwv9+<+; z6_UNB!91DOw=cEC^^GuzJ$%bZH!9WuPC?=rmA6a6bB6*_6WNQcIMh!~6Qe!Aiw!h5 ziQ0q{$$45SdHHdqMbgvt;pTAZfkZ<0zfOS+Xwr#b?=Pgr6s#_sUbe1)TMK;Igki9wY@A8u-~m7XDvsUJ(YuW(H;HnsI~3=pYd zH9j6uvBxpk{1jXs3W?<_ZlX>-&g}VEkdB0SiSSW)8}!{hh2_5U(qMR-lJwlxr3qzv zD_*ZGMv0vND9prXMVF6bgr#%-<&RN-T<#G0D5b5iCqza2l3bcWtrl?SEEXOo6*x@B zi!`4>TN^F{d^E!F^Vp(T0MwEBn8wEmY-Kel-+N6Qa@`jx;dzX^JN&3r5v|*7#ZEC8 z{}BubH6p1_lrI{XtrKw%gl7&)Eb3ORbyqzC>pmXIt(ZF23uYEh!8C`87#BttS&t;<%Uy{i zF~mc&{-yyddv%i@y)?WB2kQvVo$Kp|q!*HLEJmz`7EmIg-uZyLQ#7R`aQ7iDn&?fl z_uwQ42fVqH`f0@{84u8VD#DgP5diFh`AzRuG_ZtI_w=hFEMd4fjGFo#lxlcSjEyN4 z?!B}N0+N5Q4XD43EhTXn#uLeGk*XA&b+;be&WOVM2C+JW>ZUJmzYgu0sTeH?kH8H; ziw{X}AYKdGkP}UXOW`4E+^(K`@xm<_6nFEGnFK?FYB&g!!TJ78o9=-KXKp(u#>qHG z$*Z{Tee_N@mVXhb?o{2Y!y5uxE2CvLGFwAz*T{G)N5F!H2J5JXBKDCO-X1&|h9<(1 z3FN2+OdZXf;z5T787U|vU&sKCF2k(pD#HFoar+aB8;oF(LP^7N zRu~jYt3-Imlw1I{`8tp@DD#1-ennH_VZ4k9t|rSJj?DpU+; zGfDD+NJYbxaM}(XtP==_%4ipr_-h$AqY&XB8Lm+CGM|jfqhdPEl%XQO2Jld8sEl?| ziNBU{^C9ASy0fkCZdVGEp-MUqRX%oYaqC6kP#Nu_5`Qh@=0gMpehQ9lW~DG0s-)vk zHJF{=`D>ZC@xnJ3&S-GPYhqjL*Mh1Q`px1$qwliALiV zp1u7E4EhBOdO!LUD#Y!@pd&HHjkCCYe%$zfKmIL%i$A2xuoctky$z$4l%Z@o7~-kb z%TQzavwQ&=u3T2ac1-LAhiB!>r|)>r=^q>idG1+r??DD2xyNl9JfmO0U7mROwlnY zT6fVftUEA_a;PV+_9>28cQbL9pV)E);D#eaH@@j12Y1%^1zZ zedwVL4*)DYKy)+dv@&iz*s)_7wjVx-IKp~E7n1a&V;wm_G~#4oP65!1-r=(T(-jx+YF)){NYbK zH|g6BTF)mDM~;}QjD~T+ZY}c*c3-xGWPZU-C+s_UKgoRaAwO(02tV|VPtu}zyF%+Z z$-H?z4|bDnfjz-}w$eAFnI6C#I)&@18uk{qS-{ zTUMU-LH0ZduG~)aP5UpJymI?Zhko;aT{L;<5V`%(F0>WRY^|S*Z)H#XXz!=YONd_B zEDistsq*3d^fTn^o_Cd}Yr*oel{uL2D>n|Z=UWaFg;xCFmcyG-=35RPI;5>m>+qT$ zz%(!E@%in7Oy*6CoF%Jej#eCHe%X%x(JcqjdU0#C4zKQkpKWKEXSStzJtuqKy8IWENM)^y6ke);?z8efm?E{l!H9zh>4r+;rR={J7R93sK5nD>{{V)42bF%%0Qy zkYtM%QE(s(Czk_MhDg@P!k7ep{lU6`KsnD9}?Gk&Kej1P?@y(vyS4Z6PLP zf4{ZV9dyva`ot*Nfl;ypqfJ_tHN+&Ds+O9oH3gSkDNsO*H zfuN_3lZNi6RKj!K`STxG1VN*9_G)1}A(HlrZcv|^8=B-RVt6+_e6k^cco8r$S}%(EG0Y zA_TwB`*F1=nldRl%o(i<7kbdnY&ZdX&LZ^9<^#0=zw(|B<0a_FPVo8dgZG3nz3irl z7J08au`S{$zKZUm*N}$$VT>NEh1_SjTY>p+UU)6QU-SLYw#4jktmaYd^fa<;&J;-e zb;t2ANPdAY4u=62<)VPW*514P>T7;@6~qtD`TTZ)WaC16ISu$;b%TWvTsjfb?j1ug z5AjSG3Wef-YjXp$hx4BL@D6}?w(YflG!aQbQx|@ntT_zEgCP2Xw~20)cZB*K_syZr z8ii(!mWP+0y7v@-zdFh1w-Lkxg*bsz;H035iK3nKB=puIzgG<^xI0XOA}w<_KP7VU z{&R+J0{D1)&dnJ-!HZ&k*Uk591XB|*EMnT#K)_boBS%1sh5pjhM)6wWing^aK%3dN z2omUZz(t%ZE-BGNa~RTgo)I-QHv9Ncc;Z<&OK)45_l9WB1yMX>Yzp+c(SV{iDrGk+ zda^mXFAgLn8tn4JHiKsmJo_a$Lu$)wPz~z#k_bWjutAM44k$i4L6zA@N(u$D0_Q>s zFG5FXi%y8eojo{#0l_b!X~i#-4Zk>nu_=@Q&O(18S_jo}3E%tmSAP>=!zb8bd>Go> zo-CC)oq&p7i&N%3ijtzF5V=#!ATv^g(xhMUPz?&mh>V8xAwg5oQm(HJDy zRwk-3C_drE5z#?O6~R-5zFiqgNMyx9q8zUVh!4!pUxFj)M|_WJP#M`^wk?EUGpmO` z!*Ea4U<;r2NwOdcU@<_e5N^P+b0J1GUjlj~UL)iH99mheE319V9+=4E{h#{t2LSfJ z)8{ves*Rw0MoSQrfGJ;XbXi-=%3%d4YNr^)rFs{m`FM^$?-A2Wg%_5zp|M4c;O9R5 z^Jf73NBX>?uxGc_c61gssgH|B>RvabB~-?11XFy}`@V&gEOnp-+ADN~Y3(g^p!%UK zF?ZRGPX+jgw>f@QA$-O<0^PZ+3r=`RhmcrtfTtJ@I$5otSGRj+mS;}(RWuVeD zEw_wx8bBjTu#j_wn-pFB2i$r|?*xAbCQgFhi8#bU&2yk6j+IgrnpIzN{}>`4sz#(! zA`qXE@-lN2{_NfN0sP6eOv|js_H02LrmL~obtQu48mtLhCWzI1Rh|i&zcywgeys&{Ijjnsk8|u1(@hk z2z_{1dbx`E(?{F`N?_Bs=hAzex;#3r33bPFx~BoY{Ol}HHL%Uh*F@9AE$`#I%9Xr1 z=r4g$({JV7*|Z#2fYB&r-7*Fx1W{oe$LG+lV~8F~NuZhwdSVRN9Pt*gl)f@iL75&J z=S;4lsL9fxI@b@}{`x;ei?rD=jW_AKE_T|X^2!fxI>tw7mgTPv61(?|b&5c+a%nCd zO)K*$*WwBJ(=LlfGCeRV(3P%R1x5%_G6uBwp6(A__TeSu=~jZkoM>Y$LLwy42L$N7 zTUs1rPy7iwEWj-_$r{*Y1x)Krnt zaDBo^I0v0pknHC%R&2x zNm#kT1Rv9W=|e)2=+EIvCHd=mbdZ(WZyx0sVmiaLVm?SWO@!kcr_H3u#eYNryy>EU z!u4iav3q z(*7kgZ)M1ga3}+>Z2mZ$!|Jq1olrStDpi{mP|_9|xZ2#l&;8Q}6~Lvxne$#TFXc08 z0-45D#Y)Al0+~fNZLf?=(2@3At|rhtCVWO7ulObLI)KmVFIY1wq+CfmGgJ)09{f35 zXi6?CLGpx-Z>MuEl!lMI>d4l3IS6Q*4JiV3eSFh?^lX7MUR3NW8oB|pgl zsBF3NF;{<6l=yC)O=BqIWq1zt@CSeLEPzXR-?<8K(o4xS4Z~r#9gNlz(oPdw+Gc4| zQtP|l_bYa3hN43jL{r%(!QjfzUh}tjHF`%HqAGNBm1i25@v%~ID)HA51WCnwyh}?t zp)3EEUCv5f7#Z^_qfz09cE2Pw4rG+CQq2!j(zEsIi}3HJRA)RvSzS$U{x`E zkTS@v6J@9>UY_2sGgKPBD?#L30}6~$G4^~2crsKL(r46;Pye4&o&@kqwLX9D4<_x3 zDve|2DM27+Xfh-1VqP;+&f|Z)>^HuNvzK4+`KyCfX)@lZ-bDq?EDIBrC*pHRNJ$3( zz9}DAK`S~?P)W?P4d!R+yDc#CW2gS;-vM6qG~a8jP^oAQpsXk=Aq_0`zZ``qxqQ@k zsPQm{`*Z*mV*o`|V0`&{y39p&t##RU>ghM2ZFa6hJ7AcP{gvrPP2=L1UeE=wIlE7^ z7N|=j>qRYzR|CV%&QjZmq=%^^#*cD1B0 z@@Vr+NBUeP4w+MdAU}RaWdvSJ;x-dBO4uguRHDSB7)A--V#80~DgmygucwtDOE-;P zF`c6YDx)rELQ5o6zO;jLKn7yj9KyFQvQylG|A`;1O1Y8 zmP8p?-<%%2?%_+%19;@6F0UL`E_5#Qm4mNCa2sJY0=X&ZCz>U-iTxU@Q2AKJ6W%xp z&|Ox~+XFPlMfF&eiXeqv3SkLU0DUkMjSxLWTOr6$Hg|EFD_w7R$NiAqoVMo%AbrNV zMrjjCIutd{@(o$(N%`r%1>1ePTUSYYYsW)FLw5qa;8dUAhA0(d6)1-$$%=#$NCbU^ z5_klafdZ9;^tmw!<_)2kKgLZ?7ekhi4zmir{)%5igZ0Fleg5j8Sq&)%`UoRR$4)LB z)G~(BV-iv^*$2InLxzHa3%!TPyjmbv0R1#dldf|kVQ#@~M2t|>mF%7GYv#&lgtk;7&u=YKg{ucT5dchR#kw=ok}tF%s0Os;QS$)8vJ`%? zXwF-wp(tp2a&;T>42Nb=>Qe~*{D_n{GAQq`_Hl-yASVFAnqwlJe8heNpDu3Vy`Ks* z!7aY!6mL^*5=U*t0ksaDQVUbzuS&wru7@Y0&-7_$(twRRcZHqY@`kv|ig z?*HW1BefVOX`4%ccX-gxfV9QMBne|!`<@K~EPh>RKR6-nwXOu1MZV|u;iBsQI2lod z6<_GraO@`C5+LqxG!XS?>j5@D`2}ASoe+&$&jorHsWp#;^nWM+imX>~q(@O!66mz` zO*l~-!>A1NJxyTi1Yoef2Z5C0wgahzf>r%~mq=2{o3d%Y6Ld9DNrdT}iWc?pL<2!x z_L$@=UK{)jZs~Q@3ds?KMx|T9h0MVmP#&QZ;lR>1>2Un*y0U&DPMXYR=TFp{@V8fc zP=Js`7+m~K_-kHpq#_%xbIECFS5Ue?Col7_{M*fou2%{W+`}lBomTueVurOO@wF99 zBNUd9hV?~{A;OqEnR`Z2dmOLrUy98z9Ti6xV&pjS7GG?BxuTGbz`~cCIO55Wc^kB* zZdQj=3^~@fS3CWpsQ6vf?9c}YYgh02h85QbgViy{3pUobGJe~ClcntmU;d#wrcM3W z5=if0fSg2Vh0yUKcsH4S8c*ZlLz$CQGcuU}LfHTyqS40NhzO#yF z^Jzlu$%mrdT8btj!&|`s4%AEV(Yo3YSMVoJ>c4B^-N9Wb5t@X^+&pOFwf8VKKGusL z48kxrD{sP|Tu=Cry6&$kJ<`N`Iv~c%B zQqXIHL-q09?Iiuy?bgvRtITB&84NquBJMj6%Qzd) zi=QE^V|3z}^q2@7)flvrKeq#6Tg!Ct`pxf*9_BX}0v=eh=pAiWE^wA=aGPPD?-Bpz zku{sBc6YYlt6XG?G<>^=&4lKfu&VWMSF0V`fztT zw6XpS-l)HSTDiYiYxcx^C40J?<)K)vC)gYW`aj61cRXJy0@i0gADCMDzn-z&zxv)K zjANbwAron5l<5S;ub02fFN5Bn=z1tTQt`0c?*XTL?r*O*E1lLp;F~V8@E@n%%gsN@ zprxl6A-&Bx4?N@s%d!g}yQ*vvc_(-94sLvFR@$HUd1qZN)`7FW_vFh#tDXLfR?ZgQ z-ZVggj(>Y5%>VsY$1EghWA(QC^QHIw%%kBuKlUZOr$&tG@iV9`jpwtH zX%{?8|3Vr!^u))ToHTzw-eqTjbMfddYjCV214I})^3)sW0=|p^(Zcqe>MYBPt<#{L zn$Y=@@7t}fXQ^0TC}wav>s~Lf!aL;Gh~5(K+i1AnhWkk^rZwG07ZG(t7Z9>8e816k zfHm#wJbB$o1dVrjy{K+Q14dk>TBBoa`Uvy^bR>_b3n^2 zcg3AwhBVTAgA`uq<7~agu(X`x8UJ z2B*P&uL)Orvd5pI7J7a7-DVgalz8mVzSr3mtIREE2 z#0noHc;oo6H9T**8NHH1dRd;V z`e=AH@Kfh^ZRwq!O&%APaWDe+-JE6d#1B!R8P1H3Ooq0Kq>Ty=;ptkKPgkj*Kbe}y z&S5UmUgbxfhY#pmT*p1x$CJ`?5O2^1)_ndqZE-IC5|`ToFm;%B`7ciLr&9Y|+@h>e zwbY1z9KiZd9?h^5bDes~plJbQ&{l3WjHh#aSGO>O-`mxP6eje@IyM&{1`6H}13^0m z`=fbhZtig8dj1dOn!k_jA61-RB)rdM zQvTR?c;!53gX0jSL<(f4Ae)KEwg>}k2YOf9TYsm!L`CP<>uqEtZjP;%k92H9pO1~w zjNmSBn$|ogd$LWr%MU*sO-VA`QXvIQp?_NLG|I>x{dC{uFETJFn);Q^#(Lh_vD2iy(slx3_@JckC= z5WkjVS{^f$1HKFehepwPxCh>qHFad@gBx?pS7OZe1u|G%ZUeoKK%mc zOVUU2hnPmh$n54=aJ@p_gPKn|+oP_zgzf;pOZdp2rMu+fZwY(VjG^y3LVQs~etnmC zXM4H!H%~J{Pg9BC?QQB@Mq(BHDNPLUM5OK43OI4zHB>AM&3K^|cH#+UdGidyKCp6>%d%Km&VmTEPNMUy)Qae`+vemfg*ul^pj?wOyU=s;(WwDR*e;s^sV zXt5e z%6$tdrm?7YM`!bdWN85(e}~An4-$>cz9U1+7uo+Z{v2Vi5yWkK*felmEUB1orTY%t z_C;FHQ2y0*^nWRvS7OsQGIO0%4zv{{PS|6eh{#by0oHYCyQrfN+{P%3-XcwY`WS6WARNEhCCP~QY zUkZP>bi@j6`|ubHu6@Y-Y8){l^gso2%JUmkU}&eSAGPtC*FcO49Y-NXm&YMUy;Rq^ zgAuyEvd4n-Z z`!v!TF&q0mmZc$5@z;wneHXyLuK;#%Why5q;wsNihDbB2y&Q|uCKpGfTLrm6Eg3^a zQv$2^@}|{e6A_oj=m3zlvggYK3oZSkD;Y9m=ww<|@Y9(!JiSTNoj1hIry7XRGs2qi zI4zc9VERQY-R*Q(qt*TPd`&Jj;!!W}a2G-{6osHZsaV4rD2K@^iQs@=HA=sGp9^%X zl2g>l`+WxY6~--NLWpqGZ6P`<(P0OPxcSkWbfI((Ed@&JeDN>6ZgoJ~%n|=gaAevw@f_XhR%H7TruBu<66Bu+Gj^;^cZ&3YDKsJ>jliLOPs>TGZgVil#JG zZYNmq8RS{(kEJMb^evj>J-CkvDB1wEcznjwt|S~_Rj|9gB2r_Yf00*XuA2=v==$pA zIt^1R{USe=qbkhc4I>u4viB3V5e}Z5D9|4Xv4ZmEM>oc;!^D%MEm4qx25<4j0>*H& z7?egoC0?#rHz5z zI%B=oib2)e4;)W&-7Eyc^?it4$R!b!6TPKq2pjh8kJndxHklR+B# zq^aL`zyJQ<4$1q5_Sd^COpx zRZfyWnHyX*5qDWnYYrJ%CSwSlkO_5@*>}5=z~310`Gi%ccRGv?7!5S@dg9Tc0g^ld zGWo&_-c~o&*~NgH;EzogBGOfV5nmLQW~o?XwiW5+(5|k*PDd~gNhQxOOu9NhhVc;v z?c8><8>F6uw<%?t)tH|*E|+lt)oqIhX{LB*1`wNkXAO!=TDZs~csY80bSLBGLLaM9`km9TrZL^ELbscf$V{caW_eI#~ z7>~L5hVO%iyh%5!RTA&4e>VVrr+y&J+mkzmowCtv{SY5CJs7X-vahI|b~%-)bL{J+ zo3~T@j-UA0nUg7I5w3f-K$DEypV);bmx4KF z@}MPgq!VmuP=YMct(E3>4FLn_&uFQ&VPq2U`BK2W0(_Bc3#G}4+r@Y#i**0|*EhGh z$*lqj^AmyM2qp&|lKEz7{fe0p>Z6CNdXs7s^&_>#onKr#)u>T*UZ=wyISKX%a!^Ev zi#9Of5THCqSP15@G3!eilH#1koZ7g6oD7u{c%X}&@W@k6G+KK`UkDp0ofZ=LT(zWn zOS~Jtz&i+_Ey)RRG`|`|7pnd4Z_uGR`Vm63(6BnI#g0@pRhgZXtZ;v20~XW`cjoTE zJI)Sb)fS5r{}MTmUqLPh`m;`TL_(VR?v||F)%i|H|FdHYw zRYAhk&P!a{pG|>S@wrpi>p7rW|UJ8-0`VV^2{cl z^Qh4{z)m`^7B$=2flA+U6g?T-!x93vMLeF|GB}iG1DPP$F8WYc;Y*s=}8#3RTfi zoyhdiR801Nt2YnlDy8-*Hl|QLu>1dLxc~Ez9G=a!y!5TJ#fAN~dewJ&o#e_1O(O%b z#kGc_No%owtIal${mx>~iT%Mrja{yd_xx;qwsC0GaF*6h)V_k_6+{bxK#QKxp!y!l zwizvcU97iMZO(&fyMHh<2t9i5_<_1vFw{CO-&{5Rr89$bqdv&uZKf%u)yeL7K-#8J zz24KX;al{deO?u(B}HxjjRxqnhfAIAAA8nV8Q-S^7vMd1sGC-e!rL(P(g~mrHO!sz zGj!;jHG=Hga;WuobN_?adN?H=-b6U&y3@sKZ%};y_}>k$Cg_zp6me6W7t7O)eWM*5 zoll$;kt+sZBj&H7z&-zlBS9$^9+nH^^-jx+JTmj2i(+n&l^S+}F1#Di07U@lCZj5~ zBh-D%bi`O|pDw1L{=W0}3!3+_^p|@=uew{9qRxZw0Xy-rs8i(K>u<{Qbe9FEtgtm( zY~Fp^bG3pZ$K!RHFyiIB&mE&cv6#>LfNR)V?aDt0ncW*x#EI5Ihbi7pggFU{p5YegM1<{^6r$*t zIa(y_^Mbf!KB=ZC_&d@l!Y<&%4ppY)PUoMExM{!}>MR0bpVi~mm_x;x&r+YK^A3p+ z4^KYf8FucSJv(O0_<8{go|(ykQp%1h@Z6Lg((5dr$=Zlj9gR^X_y#a%75q#O?Gzne z*HT-?2Q59sww%tP9W!!@Sf}<;ov-;`KDmVNz_8nlT~<>FwB<$N!c<7XHxt}apLfV<@r-~h<}h9KN# zFpi&pyV&v9zE|#8B+D8LSGe&WIlj=kxJ>~3R{2sYC}4Txog#4Wmq_=osoD-!i3qK% zkdGs!p3eSM#$V7Eyzc0SKq!~d`#A$w;klV_;d_@_TtUa@h(!?wzk@h*zxb}-X2f-n zm`+<$@aEPqO1YID8@&pv<1$e;V&dqB>Nlp8CWZ4N2L}BxcEWb&unY1iFiNsZ0goAIY0VTy-ze+1$qKG zDFe6@HW5YcNfstd?yjL}Q8;j!EP`9i&ZE6qUe(r9BA0(PQ^*sspBg&~th-%`uJ_&~KbyB#Oy4dr!h{PdT0+jIQJ z(2*a7Z$3pq9gQ3BAFb7ifR5?(R^bcdf8rq04L@pKNfM6^g{9Yfwg_EHp-Q}m+IZ9V z^v*ASz?I|HN3YsZH#?*nhiRYMWreZc&pF9&`xF|i(pJ@pUxU8__H{gd`L9Xr8}9o? zEtxfPEN`rBtZ!ge!9x+cluW(_+z7BJ9v7BK&L>9>zi_YmqsXnQjz4r=dm4Bag=SyZ z=iCNXhlJ>Wr6idN$!LIN{V{e7=owtWZ%;gBov*1j4rMwTh9*DU0^Xxu0q(Eh_;gjr zN^E0MA*blMT3k+-FE;x9Zv^*U481W@){D@NT20= zY#bxg@D#P`iyqE(-ZyLkAm1qP{ZkT)Vl}2xx|VcNcHe)LUT3bFqvpzh4;WsXc{FKDwhu#Mg zC#cdI^n_;NgkKZkiS>PoOTP0YxX%Z3VY3Ai8zbrbkzzgm z6+Hdza_L2;s>YdYy-jwja#&qFW3Kn53YfQ3Pat@d!6enyr}2j_o`*d$G_|GgMWo>X zGHTt7w#umJ_*C~XCNVjt#4gbH=VLaY+q)cGL%~Y%J(foar=iQ3fWE-%bmJ6)QU!K+ z4FV~_YdlMd7L}Ipd~r{9<*+hRR1qNOe>o3x>cFdsga(p-@{wnhndxr9hvo*>ukILX zPYQxRY8$yl6%Z7R)1-4U?dq5ri}9$YcIW7lSPWFD^|oPOeU*`ymgkNJSk&Sm%qz=u z()|{U8&Sutk3)2*iR)=SRK1}cY|)3&G5nk4B<2m`->-#szZmVX52tidq%JfTN@GoG z*)3p(M4NEVpkI#C3$hS2-m-ghSB+&@7-f=vmolsGzlnMk>Gp4E(EU=-*m}$sKgrG+ zw@*0>_ibTvgnAN;E~!07JQChvZNa|I)PIyqt+uZ|Z9R{1#I=lSm(ND6s+x5_qXWoN zb2Jgu?{RLgW}sr?oX4=Et`Cc^eqwwX6K7-8-)W1p32>-w5TS$5P976ojz7xNGHq{F z;In>aMuKUR`475&AYdgi&G^|x#MJwgqdT4(b62?XZJ6+@xqf3^lp`D)IiVh+*8~?? zD$Ku6KX?1ezr3nT(-{=&Gk!N6k$2IH^PU6|A9yqfvbghLMUpQA%a&{AAf+lwDAJ!beJ;8XEF(J*SUtS0aHeoTq=d~O?i6Rw%o9D zc`;-Uba4#lb=aR}{iQT@97n*$35sTM^;hghsresC8-|S>+H0hd$VlmR;q0c&FUc_+ zUeObvT?}ErD^f*E3(d55lW{;{t?=B7(B$*sf;iF_$)^~PxOedSGvH7?Is6@ben#ed zMd`aGk^kay?K%we9kaI^v~RFK2`8y|+ar~1&d;DM%*?t?QL3LVsKQ4*03eqC=Y+{k zoG)$gt~tTSQ8cGAg`#IE9HHZ8ExoI9xl$Kr6{^uo%JGI=kWGRe&JKZ4;3|EAdYr8E@Km?1B} zr?U8|*@4Y)8sPbTm$29yLp_6J8Q8-w3Urn6H{dm#M!tVt2l#mBbgvteF^}yeZp@?W zjE7=9*;%`+-cIp4caF3ob)xv(un>ek&t%$Da`I=n+G~V{=Z6MbVlg5&X81pDBGAKj zq<2&G)*wzBR==L+@;8sgj|4Gh^|6-ZW1yPS5t73`CAVE6fq*Nw3*$W%B^=X}L5>@v zoKEu$ILdiQ-E%R$mLOt}J(ZT;L&^RQjgeexnD5-E0oQY8I&d#n?Hr2Mm5ZRbRO6M#ceNciEwp*yK%nt}V> zOuuRczHR)umxoa_#orC#&MpBJP{Xl$*Tr$;dM5pN7JoamwDtrT7IgRF$wvOx7_`|D zG}4l3p3z|3IpRf^=J1#+XN-8B0*_hh4Mw$v_|*qkI_r253PiF4Y18E9nLjm!Vb3_( zgRbk42|tLt_y0{K8nE4lRRu3mP}W7Akv0xjz)LC3<+DYRrCN{Q4wQaJNg{;Nz*arCEf^)#2&`L2|MPOrk6pV zn#dmT+Fgy{b%K#3O&^xUT_AZw0E$o`$WkDnNa1mxI?uL~b56F4esgzcCpip~H2tFZ zgR!9Nw&j@QbEJkVs`XSWizE+aHm=?B3@VetZ#o2*fS_XX@Z-s6{~edW=TG!ZPwS;o zdmpbQTd{M0FFg(4;2g-6`u^euc)zBhPt(w( zS4d~&bhZ#tI+5F=jx`fd%SDtkfA)K-U=X7z&=m|Pf^qJrczGDSId|nGDp=STIB&v` zTxi+8xMh=f_L6VDR9nEhGMb+M2Ge$Z`t8{FN7R|a09h8%#x{-#{d}rgI1PJVs++}5vGZZqh2#%B-p>qRHwI6 z4m&AD&%<&ueDSeIwzw#MLkwowY`(K71^{Syd^BW#hHF(issu&}tAcTjIm(RG6P#N^ z<(nAHv%~4Y4qoeHDpw{`?c93HTW#9^#Yo5O5HyOgh9PK*Z-sDFfAB7Jd8GxA^$(l% zvQm5{H81>^{Tc001Acrx#B~;oajeDQn$s=OhoL%Cj<}0&bN(2Czx_K+=n^(iwKIz| z*AMIIvx{!FgbQ)`Wm7_kng)!cc*apgr>Ek@Zk^8?u`tNZZz*h+9}0QBI$I5b(MN#@H)(A{x&5g`h$VN!%&z(oGIpj#TbnKG*)( z7dCP8wGIEeb6D7S8}0#yP9}dvbJa2vj1pwk-xp}O?CxY0SpF{aDJF5MS>&X{UqlrG;zi3a zC_0ae1uyMyI44ss(FN};I)&ocrjW|ub}Yu}-^M$s*ZO3hyck;+37c&je*4qAyzQ1p zQTH+|gm@>^sG0$r-~vWh%43BixEW1a_rP5UmjoM}>aUwyrIDW-60GG05#(hpdbM#~ zdIs-UAN%fKcF4tl=@NV`L3r$z?@!ls`Vuw-$}R~L!m`dmsA)ymbfU=TcpWE1zzu)2 zH&L{PWGDFQ7HdvY9J9K_r7_S)OGXN_Fmcn?4zm#IzeXyh=Fg}d%8=?#hL2`w^xUU^ z&G8t6xOjCw4x~$^o7BBcGDt6(58K+suKS%Q z0phaLEopEG+37Tp2Ei-x*_8qPGB?;r4IEpqa`Vo7yA3ocY@=lhyDzS&{J?JN4nB1- z2EuuQ-+|(wBP`!JitPDCOz`%F7+dC1?F%}vrWA-1dC^%>vWRo z!3#dlu|8Xrb}O8E@1v7qo@8E*#FcWR7D)UZm51aEcH1Jo2JRkkB{QxQezQn*-_;`X zdZbI;sgT;zQDZ3iW5(96E7`L+J7zRX-lnX|4lJ3$^&4NnP&XSMHoB8|$edlGI{iM% zZ=Wu^gi_v)3Q%p_$ZK_f_q4GOW`;y7yjwLFL6zzDvm3=|ig`>d&IIqpT6RADJ~iYe zO2rSy5a3+og5x#GpNwyRmex#QY8Qq|8HY)I$lFTo@G$+RC1!wiosC4D3wZztz??r- z2wuo!*Zb4FexR9Zhtc11M-QDQqd~n5jR<)kl6WS}E)q`YG8IP|M{~9)d5LJHUHU0I zd+=J^Pz}*$atNFoE4CLM##ruf*x}IgR^LkW@Hp>zc9pcEGrpZc(MjGSI&L$Vhq8}KF!zh#tyw*U(rF+Iu)@pQ%Z6iuc`WxjCbxtlxR@Ye7X zm>#q%Ctult4WIG&&7{dt=@|apjr6!o+`H~3l;pfo04}!N0zM{^nik>ghkoNE)ojh+ zE&Cgsp)E+|)jHDeH5rfVj^;&WtU4z5;{ zsRI=@#QQEk=_d#umuvp*3Sy@lq)d(+Qdf$jjLK9k^nFWnaI4dpgfT?c7M3Z@*AlW% zx+-k2f@qH`|DbP>oZ{r)>f~w}@8=ib>z;9t-TNAqhe{!j>7jr#od)wHmh%*PPv&H0 z@mWq@(UEa(*kV6RBI)lD{aqEhYa-orVCC`^kYO+bn$*htzlJ(j}M|Se*?zhAW zxAGMAYgHDQ422-<=WmLEn2QGn+~UmhfMgx(c z_e>LL-dK9C#8C&1J6qwQ{Ly)Xon|dlF}lOt@J{NXkOA2Yw{Vi>DuglI(+J&pSj#b0 zGg?A4D)X0?Ur25!y`lZ6&x5qgcc&fYL8SX+=z|<|{s(AWCa@3d4VxdhGx^)I_#EQK_K*zY{}mw5!$FK=xigXjWDdtCx<~F z7te^u-Loy&{t!@kNR#M8jQ`w>W@iA4hawGQ%gY0QigI`vv& z`y{+S()P434+mwH-3jo5f{IB$KNTi;^C-CF-Y6XWQhOi>Ey(ltOz^l(>~jo2>lvtb zJAHXNt)6PKoGdqhpa#r3~^NQD3}8ZW|AbGB#uTYd*jrJbbG0L?;G;|~qy_CFtB zdr9;5JfC~i7ycBTYiO;;vw$$~e=k~>oniWr^gs~n;@lexh@ATEvFF!4qrO-t(m zB{N38U7ntt58}+Rd-H!{|AyjDB_sbD+cY{uR0VOLOqQmyahVigM*eZpbzHvI&e-Hb zz{>mnK?L)%_|MB5=tl;+`uemwYE?I%q9^2d1|O{k6dPp?5?e+<1c>NHM{; zG{YUt-Ih}v8+Kcu*B1S@ZYRyJeK0s#HEBKdWSwPin^E*%PcB-YCP&6(brz*j8)k_6_#eGanXFI+HyOx zo;hm_JU9l$!gT!LN!jm7m}Db4f3U?zoD!h-;?|r7TpwgablzlSlVuN_9N^DcXHZD$ zElxisDstKmkk%sV)SSz4ZfwuSOfm~Pg|udao@qCxrd);M49`IqnrR=HmosT!3-L2w z)!0|uU$MogmCdJbij33uzq-_#%Kkd*4{CV-U*U=iyX7D_+xP!M5BL}hV-1RnMaDVW z7&@B&pF%o^Y$66Kw#ZxLg=jf>dVL zOwK0d4IQ(t_S|NMcUOY91#QXeB84EKpgR(M6$DSKBsZN?#!9f&p>nWA^#Xb(o4w27 zJwmi>d0DVT5zbr5ulGjSO^P@dsfoV>s{e>~S@1^*#^oi35(;PY@ZB5Pe|NC)e>Anq zpc!RRa#90ZqM1yw$(hvhu}~Zt!~zk(QQC1~DH{s0)&XZ@t40;=^fNW5>-9Kuo(F0w zr70{2Y;CXDbHAm1fGRDv&r$1^^nUQBPco=(d)##?AAjng^De$~3(Kv)BSXYXF0V3E z-{3c6-mkbGrV8JEx&nsvBooQ$0=jJ83(Qwx@R&1Zv*|15xwH+AZ{;CHk**o!PVWy+ z3(9~Pr|UhpkBtq=XR?LpHab}{Ur8@=fxWM?Yi|m3IolD&^CiE?gjSH6Ls{A`3sDne zr$SS@$_};-0OZd1;sR#HUFC|TFMq{;vMD{m-t~J6lf7+kv;#I5zq&~%*Q2I%`!L+bnK7}?qo_o{yiOaM=pbw{TEDa2WtN27vs~3HP;2X7YuoTU*BMf?l6}tyR zX0|Z4-Dsm=MOv4d(zi!q) z%n*?FpDG_rH)8-5mpolFC7yz{EuAzQ;^Wcgn>#9;Y*~?K7EO271*mj4oIht6*7ozL`S+Yrm8% zzmKxfh?R3mX(8h21kZj@FP+f2(w3iZ?%yCAU2&B!eAhTIoNTo|D@Tx@tExlUA4#~@ zGJ&1)m0_SZE{CbQbdgI+o1RexjFAfdRg)&2JZ0yuYD+C|{xmyEIi6g{aa0r8`US7F{xC>b-<>9!ZMTnvYqp|zMZ5EDdGl=98wx z4VG_$8PBDd@o^EH4|+a4K{76rj(h)637Pr+S;Q||9NZaL{{@s-L&^F1B(KC{0Hgvb zNoLVc*wjAik@F`V|5$!`SOLORA{{Dr{}^EuQf$yMY->!l7EFQ{@Do#FJv(s*+XMmtSzOpR>Y9ZHe-D&Ku|EEk;7IE#chF;@Q!| zC=v4^U8t9f_Z|xUPJlxMZ)_&jO)tSD#?n`>dWiT zLiC(Kh7%mO5b9)!=nrOc2BFvol&l5i%6svYY0bY}MCS@IN3mIO8xwRk;A^icx;j2{ zqL*>cP0FzwU-qIS*9w37)ja%#4@FY`!u96Z!?>OSvS19u8gq$|!B1kj^x&9B`K!9) z#El)Eki}4Ej=_XO6vyUE2s?uqQ+mBhu78f1iP|8e&O#d?mgIWxEQH%`>lgUsw`@p; zGQPPV)L+vkIHf$k-I_j(+8F3GIvZO-NkPbTMe8LPCyI|AzSN7)QCj8Pre_lcf;Xtq1|C^4Rjjs_Y2Bn zZKS7ZkHg)E*u*B$D4$ty-s~Ufmhy5qpx_rq;wKmT1t|uPjD|2UhaPn_U|)3a8QH;L z07KbDDH&tnP=f{JOnMfpUd!iQRGI2cxtAA^oPU_mQRSh_$?A&ns5k~R5Fanu3wuXh zBBY{)KY?Mq9&NiiNNwjQmWP5A&L2kZ3YmW=9iG;IHJZHrAYniW6rY7!K%Kefv0Iq6 zGy~D&F`#}cr(Zx@3E!SgXhQB*5L98}x_VQ>gw5}Txcw7*WwJNIFE=MPtth$tnv=_$ zi}tCAkZ>@Mzdu`IIKj#pcP`5998bJdP? zAT5P`Y&(yB{E!%r9?re;de1>IU4seC2hdy=7*JC+hC$rl$<0dx(Aw(!>fSL zUm_rP)qEJo?7-Av@r_ z(`YD*Ew_O;LZhnWAKh|3^&RXM8fUU{3?2h^q8N-4YBgYJSD8&w^`96(G>zi4{*~!R@PjLbbTq

^eT^E?4^)wOkmzTx+fEVy~!z4RLTaIPp3H1VHBZw!`z6z?f_r6A4BVeq5 z^(L|Y?z2uBd(>b2^24tu?&E!gl^>xhjk$-hI#i}-_!b(XrZPeQ;m`ksHMl&0zMI7H z0dgYB7E7vg{WZ}_MSV=Pu)_c~*HpUkK*z{a0yl1hsDSS2ABD#$R9 zCmt7RvLC$fMyylvI6M}7^tw#Y}+{Q_z!*@E{; zh2u*~S1}okc`gjC76t(a6HnVwQBkOvTWG}8Hex2fz|8ugJ~)~J2id`@PZQqV!@GOP z`u1@;K+-fg;|%d+&^&6rBVV)riH2$tLdGPYXllQ6N%md7QYU{1yN$~=lIHy-^dxpF zyRK$X(($E)Z@?mOg!^Y-WD*IZ+uCcH4Qk3)QyK@$G>7$wXp#FfwyxkFNNCbV=Z(YWhvhv)#)kjw4zQ?F2?RU@qY~VE`9+xa0ZCpjfO2!Wu6W{E&bKqL!HLap&Pcags?g-zo z_2;UVJf;?+MeA0jGS@18CK*02@X)!(i=l^e{_>DC(s4gkJon=1x$Wa|Og1)_d?aQB z&xR$VYogi!$K3z^5Ry&B%G%-mCA_u4Mk^NLiv|uo)yK`Q|Z+ zRK-U~&!GH;t;Y|6_4U)=Ww?i%b|+E1%?6}OLwY?S*6Ry79doV*jev}^hT)Ky>uof6 z#(z$TzXbNTz%S3A0TtuC1`|y_8fkEdM`)zP8SOU+7(S9W%r;KqVyag1>y%DFY62Ry zzhlNtFIa&Dc(eObR)4kYTnRSjQ3rLyZ@gY$4f8Ac$l~cFK0oV>dOEe;8wRQiI!-^D z%c(MP399)sLQA|WNJU57AfN@`AmnP%%HJIRHnYzX|6(}#!I)y+ zPpq!^gs$9Ai_C7;wCvG)b5$x;6zOT+t1WpyxO%8cTtgHSdE}P>?+k<6j!*HzXJUq{ z(NR&wQ%1X_EG<9>gM9d&!B1Ts=6Ug5fTvWA2D~V8(I3#Cc8u4Iky?Iha?rPB*K*k%O08Lzs11UNyjS*?gec>y^ zBU3|M8Z-NVvGn5q#Z)Mv-~>+Sf`ZItcLpVm3MkH;z%(SPud@cdq6Ug9?9K)6+6AGc zOu)GiD!7f5iryoPcDn`=W@v43F6Xo__0cmqvNw^E#xW>-DO(z3e|n3411o$y4BGlf8VS(XHshR)gWEiZNa$;zWF(2(@Ovf2pfqdxMEf1ChaEHnTTbUl|cmqtf7u? zZeGEsCHIF|r>sYfgMSZA1KK2{nl703;80kg`E`gNaL_TC*33HJ1MKb^K`CJ>3P%Mt zC|R>Nr3N-zMH3Ku6;tZv%I;T8sk--7{jDO*44m7*Lw)SW13wY>7+3=zNgrhAj&Y&5 z&?r#O(lJ2ZK$@eNh8j;X^P|QrWov_|m`~ok1bC`UN}c1Dm+?N})kGBe5<=tW%{bwS zR~7#6Q}n7_rsUcx8Wa?yG5%ud?u$4Q?xy<5QATi3llwe(4ozh6E8ya>5og`SW^+~`Y3bThf(T` z;bxPqAc?TZFSf6v1i7@;6{rJax^dUvZV0EB9zS?AhX^(Uzhi+Vy_Pi4Y39yX1NTzHghkQ3ZeJ{24~&B@U>{a3*s92b@k0|a zOha(ARrn;2v|#0PFQtYl3M0&gLL4%!Fow8F!QQrb%Dwn<(TsbwKi3t zl{@4L^MpnT#MXn&_YVI2`R%KNBb8tFTjgGzMVT#z8QOciSm_6l!o$BL{hOITgNgHI zp6ll=nPhEVCKsk2asJzg8(S>>^ll&ffU66Cfa$^yS*d-NEUy7WXE2d+u>ZV7n|zVq zbu0w1e(hpnI4$&*@)0J89NF?K*(%QQ=fIk?>j6ASprJwoc9n3a=*;i%>UG3RUQ8$$ z_&)$}K##xX;Bm#pCUPc>I7#(6LDcd$Q7Yy~WP92Gq5+Xhs>drXM&ELBb8Vuc1ant4 z3I;LUXjq={jUS*lI&Rb#S2WK#(4|=KTKjWz@8LLZ`TVReu4o?daT==#93&3;N#(41 z-g^P=6TY}&Zj=p7ry`Mt8gXKbXHZLKd~rqdOw(CW=fHH+C+4sI)kgq6J?4umnkNFW zMCp?u=_Qpj)$=&kl=8(D&7*?rahVK5v(Fr^|C2WWe4&lUE%qzL+4qXe;`whH=i|k^ z<>6v}9o{{@d;Hq1yT^mz>ZO@9|7#Xbxpw+GfEQos?@_zpYJag%OpJUUaOdzvk_Ha94Zl-1Rbh7uNBjJPX^HFTZvR{_Pm$dl#d7k#RY&qG^*L(tAIT%+y0310g!dZFix`QnQC z5TKn0Ynrz6U5|7E{9SYBPZg!eC>culg=e}s+5{s*=oKUBiz_PHf#!@H86g|z*#asm zD%t_zgtD-UE6+mtSU!&%cFAJ%{;k>p^cZgTbSAx~S%xdm=P2KHzWH71Z#&I#m6NqA zffLHYF0MSEqkP->=69*TZ7;{0yLH+Q2%*<;JW^*EA%spT&iU(an_g{=dd#&EpG{y= z3cuB8Tk+(3p9c8*E??e`2yC#CqL$1P*p$4ABQPaW5Ej&3y6uo&CAe)r=Wx&|Lts)= zE)g1U`}BwZ@MeHF)|u3D$&q=3me^%s?y^hYDs1^bR$@`!6_=Dy8Nm(;F1A zv@vD81^pm~!TCZ?j!4lm;0Z6CdUK}>ZI#ly|3RE!A*)>f z{XcJg@45J6--UM7xl0IA46&N%SfrbzXwf$t@&rO9C?J)q(uw^}fpc{mO4X*7s_-uk z+=)X%_bV4tuUM@jGxG@UiY^&P-|{{qXj|yT!amYWEN3Ym$)F!~Ae|iCN8SXY`?w^8 zp-5yYinbk$RUFK+K7+OWBe$Ziq>`MWWQY+@1|U?_3CY0FECgeYbu&>kO{=h*CPCu~ zFfx-?r$2lrz;pg56|^x+BpcMKZgLTP$a$znX!Z%vMn`|CA0|5%CZu0~bC`sf1{p#6 zQa@FKpa8cEJ)eeFd9He}(Bv5+?9U}6aOvcsF9o>b%~{4aMbRN9AiH}=+apjIp-BkT z^$<#{FaA5=B9^O6OmKzZJ5QDIcZ?bl6I#Y0~*H z1gKyWR+`LG;IQ|;`CR~it-oi{_Gm4YbxmxAg3bZu0Oldz>*eUzo2o#OP6=VM1iWQr z+JQr8UYX;`8ZlSwJ?y> zsxZHlu`V^{85t#~1YD?CVjiTRa%e_C9#9$-z)^p7;^6>~l=L|5g>}wnCkd%a=^6Ku zoC6WO>`b_CqYok&^tRm)JbEg<5u~%Bv5ukBNTxX&!xS#f$xVhZ>)FD~xU-l$k~A5E z(gJDv5#*`|Yc+sx|EG<&Es7R`w4+d`Ya`ZndYD=}L&iiYBDA?PiWUOLitImz!f9z! zbU=~0I{7p3+%%d2co2*eF{&5T-pr3i=$Y6KQqH;TT>PDF&vZm>328TkLB-B|f<}7^ z|5&?>5Fn}LYo*AygMCOdML?fg3vgXxX7|T&4(1*Xl0aZ$4^@isMXcQ}JiWAM_0T_I z+zL-@kx0rh*q@-cqHRshr`x{edC46BFZjL|w>?6y=&ryrI(`$^gmel{GsH1S*Ncms7kJ&}AJ_u$uH`1B-LW^sZ0Dw9=758AUTl>= zSl{*V#tQ%N%w{%o#yQeFU>ZrpJ}M7xpKhF`o&L5Dk6^`qCKWVBn04NW78&J)=^7!h zZxwtSM? z00V#M%i9GqBe(OSarFI4Qfw_PVq<9Wj5P1%N9=wmWKwvkCA77qAa{uhb0|`vC{bJ( zQ~A@A32mxk5PWBY3rkB}J3wopBN>CQ>OtS~qE(LQK)~2)rmW1MB@WavJ=9j6q2K|~ zwtfVjMxtMq(ex%*(k(`SMuZA;gmiTv=F^>FDv}2}!1Mi6a$1y@1|Sv9_s=;ak$IVk z@gpw)xZ>B+ylsx4R!xDB?q|we8r|ITZILs#!lXNPo;%RIgVgM#Ouma9psQ_-} zJEb|$u+fOaRRQ%K0r#hooq$_()6Y}Ys4nB}xGotyUHkAUzx{lGZw^{fT}tj!8)IrI zq5(4C$#5DwzX;+97RoGrGE|dl2F-lp)hqQ8&>z(Vp4yQ1*fXf-K@v)s80f%ljjJH7 z@eBQUdWk2vU2OLdi(2~m7a+$ZaY(!+BAl@895pJQ z0qs`=MSHX3PSSVW*yjeYNp#DV6DtGg?Lf_o+dEL9FW?h;(`*nN7OFsO44@;>KXixf zFM6e-<`oWxG}7eE-69C-X9J9$EJX)NRd59afH9r}WQ)=usS` zI?Cy!XSRa|e>cHSH0W8Zw0O2hJQov0Pv&3j1;)#a`S-y6z?W``MCvtps6jD1i}FGG zEpj*+$NcAe{vF^g+`#sn7E!xIC5S2PM57uE#Qk8}vPt4Q{ZUs}M7NM|L@}VH?8*}w zWM*4A(A)_AX?;Qh}k~sJPdQc^y8>N!Apo)q%VPla~C&)0QOOAP{7ZKEjQc6;s zi|%JjKYu&G`qO@jo#bu0g28lvz=rUVTKN?aX2xRgI4jv>G zN(IRg5>M$;vCAa`59M%oKmC@Z|LAupLCT&X3ZO4iT(Vv=H4uMU+j<(n*Ph4mECmXc zQxK%0urzT$AtCKU73du?e!zijnFEr}#!;*E<>ml2->372imsg7tP0c-_Pj~pz%R2s z8cOQ#;bOgvj%pdua{!oECFWup{Z>a1$5XVS-8j&f)@lEuH?HgYZ(Q;97AtfXC1@23 z4%1TDV{Rkr9ozn*CeR7id}-UkU5aA6V%th`rxYY2H=MB?&z=)XU@X0LPj7wh*4glIu4g1Eh!Lf}|Is(FA`kk&&d0rPL)@BEAQ!5#jJV zKfeTm@BNsgSu1Kc_=t?EQryEiP68>AmYiEcD0MXuG9o=D>?!(jR2}rkGU+ClY&;94 zDqi6x(FIYYpWveHB~`BEib&{=Yg(wTG=j(HS=+kh(obQ&n~qKeO(T85qM>XcZ!^-3 zxJkLXaox<^E+;k`r6TA7mr)Zgxz*=efJ{RV$H&}+KXx*OvkGFoXiLKfD6->{!iET| z@Id<;Np{JhQGLrS>vaP~OZ5sH4-0D04l8n`R=KhuQK=+X$|tXQ>e~R%{<0&o`;hPd zX(N@Bcoc^Vi$~zMLdlB9VW2tXPt880s$z^*=rK4*6&P#d&z^ zStu_Jjwn}QJN>&~|I~lp53uWMFRdOp25m2d8*z;-vgeL|7HI<(nYjrT;<#ICODNzO0r0Fp$*0#vn6);BmPYvk%O3B0`Wn(6m!J`R9k_gs z;#Tq&jp5s%jYeIuNw)7%=qDqxmhWtEU_^IFh zEWmyL>WSNldZyue5=f6+`tm%A7DD8O^)YqjR0~nqqr5rXH1URy0=$ZzB|E_ItjqNW zzTu@fPbHFDrnO8B+e0h1W}~WJKFB<>VPxvL4+E_F{k*j82>IgPvb04P{Y(SvX6-H0 z*LoqRcpENv;PywNmD53w`30qg!X&vJaLT%W`N`t|&;OJ!Z%c$PC`a&8>%!59G%le* z?GPrJEKNtpxv{#P_=$LK<8mqW$bANtB8 zEB*lBm-+81&W%iey}T+Hj~KN{2bY;+;xqtK$y(GxXL3G}3Z*t!QXS~KaZ(=_@SuJO;r<T*csraU@!ax)Q*Q~LN_^jHKU z=!&>nVj%@*i(o|OPxYVCCtrX63Eu(u^-sD|{ypQeQYhAI3!ofY^{r3=eAmlG=~dt! zFNM;bm1a#Zg>%^E(|0pCK%do?BWX(3TBMC~pbOpgIv7EnA0p48%&6@kpkifu?IswZ z4Jg8b-G6@T8vy<>d;Yv!i82>6tt;1Pz1my^Xb&W>!jioi=A{{Llf%f7<@Zzcv9na> z^&p4I%U{+5{5(L6V?<7ste?PWGAt=^#l$I}0Qkihd^u6B{vtWuFCy4sIZu8T)y{`s zCT;}frvuanN%}K~8-&AX(5eR}Bz+DVR4jV1l}ylJW;X6so~j)sz2-NDt^;_2C+7h( zZfcG+YpbYS8&pC*!A~(LV}&#!mfmYKokDR~B8@l5G$)-fKZ+~auIUf-%~5j!&FDiL zy9x1syIT)@_1@nC`0@8B?Cxr|MVp}jW>pqZTAg~ya-qZ7s5#b}?dK?lO+QGv(Ue0P zfyNMrN?aOVC)>B7OJjNmW{H=*Eipl4bXWl&TQ|F<=J&Tqc^9k~1w zh27d#PMG1^>khip8>_7Y9hs!Sd3q&iF_!kBx3fxP?A*wTB9hCsl!Zdwm>V~WrYA{5 zN{exWNMd`5M*S)U-IQ1b43tCK&z8jc0y(_GAux=Y(1ZeESuN-2iFpeQe`zakV7jr_zZ595} zljyX{W+-`pALymZWMxS!ClXGHouXvAAfBH3mp{j`;vF_#2dRHl%92hf@qTh~VXF*y zkEITAyHrWsOZrnfhuc;;%;rNWQVYp62}Kqvb#bmAAPbe$VkE!3Yi_{ODhUJ!c?lDV z-YSAXS${qI#djPFaO-C|0ov7xYxs$Lp~HNn(j*M9rA+g&g)~s)Oq6BR3T(vPn7s#fi4`{f^Wt-m^%neN`=lP=)$Hj-y>AW#P^WiRX+{ zm>`bDQ+5gDx2XfgWI0v~=>7DW8ogR8poZ3cGK9kPuY%R1WD*XGko@_xqS|?JSeud2 zGA#1WN!)=5&rM|*z%v8{gU1RQ4)Q(-qf@Sk%YXFHH2_C{o%c=fvOcz|Xcyc$c?cSP zEn@GQkUg;>PtcJmGG}3qD3oOCDhY5ADi*FWwO}AAp$~zTlqS;a05nRW{5|vwvC)$f z!?+x)VKt9!>JC?486^CqSkiA4q1%(1(IpPBj9BydPqqX6_hy|ZgRH`dYJ^!kDOLn! z`S&|(dC9{Fa9eX3{Q8@&CWb?^xG^CFcgfUvwI-C##7-uWpn@o-CZhOJmsOCg)m^6S zN1dM&$>8L0xF)nt?4Jf5(;+|qJSKgg#*_twFHmkoxRFIi@p6I|o~rq9-QyNO)j}w9 z6jERCq3z)QnGV2lH2=&D)!F!sog^<*eJA#PJZp$EgPF2EwduZY`h2KN^IX&*BP^ z3<1qN2eJd55LQ6YufW!8x^0*i_wAYg-39Q-7LzbH!u5l#Lli+I$h7*|ub|$1NMDk6 zeK03>&2eTLdLl*Vu8N}C%&9z`$&5uHUJ3E4C<#|ZaRld2_C|pi!mhKkx4%o$WkpGo zLh*K-o6d@IPmsQJ=;ALz^3~sVWpkp^MJvJwtJoy9U1nXo8MuX%qI0C^n6Ua)nSm;^ z29rr?ky43@29F1^L<~pWQ4l8`v<Q>pPLC=zd(uB+~A%QSSdYGr%;IzS4@I^ zKr)sdoS;)3-7>GK<%i1G@w^oHbFSq zlaP+(+OF%ua27W4MaOzO0r2+IdR_zYjJNvocI1di(wGGGFy$vP;RG%1UHuH!^GY+* zi1fAm|5{f(Q`fi1lFz~DU~ez zGXLc#LwG*)z4RJaTViz4&UY+1ccG?+o80VTvY)rHS zQKnNQ7E%Xe`3iDdD9jHYW50cl2{cbQ-u&-$_dQ@qM zw4SCJ1eh(uIP*@EHNKoKMF467R(`L$Dz6JI_ZJX;UIZnobK!OK_L0EZAAY~Mzr)v6VkluQ%k=K@U7DOMD0M}5Xpe% z1_>@)=SnjG&N@qncJI!o1mP1;=)nIzoli()7QXuGBagJg)VFC;buj%TK=Fm$x%b=)68n>O5EzTy)Ge7jtFI;te&4$*$*p)9mD+}*_G7D$e_Hq32nQX)h(v)p;-amf)fd<7>t*(tqg5$)_K4O|XG{dY04Yl6SxI%>ZAX?|aZKgz+&v`ipRM z4ck|Pm| zeDlk3l&%65+;B}0JhtLmwsXpR{PC;#sfw)32XB}fz@BuNf41;j?GV;PbxpNy_9{$$ro=YmDZ!qBTsFE9W~a2a?s!Eoj5ArwPwxIUF)~whuptO` z?b;1%*6hSBw{Q2;3A(1Tdgs#83CxumK10yI}X4HFWMt$6JKP z;5%1ao$uaFI=^tuvvJGq-blsc|7^Gp;7?iSjc|2dZy#EjJ<<8nrP|K(W5f&^gYR5@ zQKzf(RkJlU`?=L&hr1i z(Zd1W(Y8AGeN7RaYt0(cIfcnT(_iDQ=_tvc@7hJabj=#yds6Hy^xErp2f=PEbLY;b zoEw1r`IZfS{@k`xH{A&^BJ)R(-y4c?y<@3VKJ`X^IazrBqW61lw9a=USQJppT2X~*#%gkcFd|!l{WVf~(9csd6 zc57SLZK8Y}QmcVIu}52Eou^4@sElajP=IeqUtA#F2d#52we?AL-sJwL$IIjMQk_$6 zcy?|`pOz^n8o31EgVGllNcW*hJ83ocft_=&P;TdqiAK=xKPi22fp*vVKEPap%wIN~ z`x-uONK@sG`qGMu)`a_T=?Mw{ig})>ldhllCcgYYgYK%CdpR8P(|zWXpYmW;-SJ_7GnFs*;h#ne5A{AYy!X_Spc3UKQj79a%Hgjy zlgiDcl=X;WGRar#>CFSwjBX)~h}O@30P~*W%L_be19R*{i=v$&`d!KGG@n=oZh%=u zbe^A(LDNvhN(Ht#NE|(eM^MU4KBLE)*$eIlxcZ&G+(+6#em=FfL4Sa}H|&+2!O#+$6yC8{% z8oh_tswiG|ostN?ML*{OWZpAb0(z>&a!}9H;S|p(6~hrCloDmx17l^J{!cxadqval zDke08QlounQS=UnG-&C926k%^W??6Gst0OfR+xz$Lskttu3A1$ z3m;d0t|I?d&KjfH-g`@775m57yZ8U)7t|{HfXGY}>@@l9MmRtQJ3t{n$%pi)KZaHx ziGLBj!X()NIgP*Zb~}IYlWzjt`bJ;wW9o7Vgze{7m{DL&D|dqCxroRSac^2`v#Y1+ zm38x3zuTdc2Rj3E7k~QoV;@3){!L$AfPPu=OptUUSGo@^jWIoA;8R&beT1UrB$*qB z3Pf01c$kWLETnTs!y|K!LtnS)JnVBn_;&Zlv>LpN$_zcgs5u-Av56)k zsf8%NBg~R*4n0b-@>tNkz+zHoNay*=1~l{&sNG2(>nDS3geygOGW4vXxl2vm3dfCc zn3~#!Z@7C1;PLBOnk5$|BBnjXMXYe2DM&>K8c6Ag7PKgm7Ea3~!xeOV+;&-%=~U4a zA&QQdQkKD{wUpm+&~aL;sBCqCo_|`G9?~}&mT^R|0zD-fE_m(hvB+1w*~SGg^Lb@z z)`FJ}PqJDEW#_!jEQlsT3!E&J$VVG;9pGrYwD)6|oPbi2n8h$!kz zZ(0YF8U6+r>YmPUh0Z8yT#xi;B$g9DyyD9M%TK2;|5Qny9D+{c1c!3+)*){k8FB7w zRw4_kRG>r51TCn041$8~n#zj?X*t+K4ZkM{SBAPC&FtxfpoPgTY(U-l(QiEna7o=c z7*YiO?*Sncd#h*o$y9V{yWHO>UfNyJG0+ZI*oYxBNn>b=W3;Uf>5rH3nRjVb&hm*q zb+Dl>o$}BoR0{#eO16TV!teYP;9tJy%j+QZj+T^U<)SQcabU$8?bB+KZsI6#u5ht> z3-!aAlRz__OKF8Vm$IL|5aiHJHO>Hx!3=t#u23Xc4+CI&66NfJq5yr_NWddkA9*#v zLoXnSu~loZ!sO=NvODIJ%9SH*L4tG-B`rkG=#>+01~ZX8yD9;6dJ9r5iThz{zzi?~ zE}#C2%?o}s@{X?pyzkw4FbSiej22{GBmHv%&qjdL4eb;2MiN%l;=0F* zgzBGy#B|3g)H!HFH57#R3V_-qoNo_232Ev@Y4kE>q+lKU^Pm0RNr0E!m&sF~fP(k5m+^dLW>hRl1GQ_dgwee%tLo1Gp`nH7Qkfx-a_12P>R*HKyx| zoY;!yoZ=hmED65VgX8Gg9t_=I$AWZqA&S(;x~7m6X%3)D(IkS#iLxUcIyF}2+oEyD zU`f&WXBeOO(3YD4zE(2c_MmTx3tw0u-RBlS^3GW0J74D}8ty11k|pc0cZNKhWwfBR z9&}CveJKanz+-!6N)i_8pU+pqXM5yU?CbwFCnQos(E-IjPT$4jkg}<*Mq)lMM9_|g z)VODF8bEuQPJN5e3PlEDn4H!@T?>*fpZo^;r@-V6(VE3%G|b`NqzA~gU~f1X#~V3A zpdcNrNZf&GIUNu2ora_X%c@EHYxj_@&()mdY%`Vcz%Dm*9y-EFG;= zjuc8+R3gEv;gTH*VMqt)Bh7rkYC4#Rp;yF0ae@FkN>pkO>QKhmP=+ZXrcc3SN33*^ ze<4;{q0yvHL!aIYy?1~%ZM6~;WgvBR@>HcLKH=(jz6Sg1|L0h}iO~C^uiWO5plb@V zEThhX?s4aw&15`DJJT9o-m#%QC(@lFQu^g<#b!t;2|a$41d;uM{T#e;$;A7x^tPS9 zMWh!^JoM2^ZDXVuMK$4^wqNj3HtaF zBhYr*yo(GixpEi4pWVk1nNQmTq%T-3%9()=U@;{rla%-qGHn_K+h6jlf4&CKMsH39x~H6U5{@cCF>jo%?{Gw3wPs5`GR64K=o9mplk6G?u?IGU7Z zOAO9mk2+sRFBP>tG9RTUPh3kkcAo@-oJdrdIyKOKS!+&T+u}U=o{^IEi>bOkwc_!& zXmr_29)%P2%)JveXn@StM>Y>?N0M1*RCbu`~ z`C6e5P3U-OUN{PsnMaxDhDed4st1?pB3-FlUEtaBg*AT!_G|`Y1Uc?(wxOI{MwAG96>SjF%c3g3W@W-vFWb>wx{n|2yG{8 zVXdG%(tbjhV$y_6p+ZaT%cUHqmyQk^e9Kc_ydL7Chdl=H{6}nDk5wz0M)(4ka&1md z*G>f3rhGXxUu`XmJz{bTL8_hfgdSX-IR4)=U-tdN#xif?yi4J1tguXTA%!!Sd8)@x z`lrVM)|mNn_2V@3=%c}@C}Et789E6qO*8nevUSiy3fJ$Fjs&OJ`6acUbvOk*D_y~c z^jnLr*;1Jam$FRDm6MnvoIo1>+*gh}2H+R=-4?otNj1w3-xQ(pgo4A~^;o(YU#>I@%D`VS=Ys-|* z?*>Q?2Ic}-pw9{t8q-V4Cr99a-tu-#TXimF9MQ$_Muf0|NLK=lXU%1uNDfh1{U+7T zoLW(9plBhK(&~w%oWXd)QbdZ>wuIW0Dio#Wutv+BG}_g5x&46 z>V!3}H_2i&W|uOPhJMBr<+xmB16!}V++;e{iHh5f7d(y2jJ-)9MQM>Qlu?RW-^wT3kmoGkj&ZyQ%!4aeDRs2 zM;6dJ=vJ}Or+xvB7Cbe_EQMk^J|6nf^IAZ6?jRX9cOEF03bE(yp$?epL6V3R%0-O= zJvj#ay1&%I*nK-+;h&_Z+T|wNj@G;R{Z4-299#so)a)@c=eH@k-|WKeU1gXje1Gkd zFJB69m7f1L()FTIwsB}8{$<_=dMdjBjbw{8v#6{RxLYTaWnf5Q2+UPji*jc3%pWau zDcrUTE{Cz_Un5M zZq8pIieF7DrJ&%;k%)bZc>t+3;ODr)Na*(z^fV~B=l)@G5M4KY5J9+71UCxk3Fi^h zYKLhd-5jDzT-P6lW?TBxjtLi&X&yyO9c90z`OvREi#k8=V>&jdux3j8{YeE>oZ{y= zD3=dbg`(kNd3`M&kudF>XBE;=T$$ulsKXNfLfJ3GF!W1Y&< z?sKAH2}@8ro4NyY&Z2^TcHTIy-$MCUf$?$z|K9&nI0N8J?RAm~O6Es2@?KfjkhD9f zpqu)NES(eaUn^NTli#0VJmghCeO9OqOKSOu<5?zkg~&eJlqE0O>IIO}6tLb0Ssv<^ zM22`hr(ze}M^Bqr28OoGREbw&41!&hrbx$mwMdd>oG%*lob6Xw4%;kCB5bj z6vO>_E0FF7Ypq6_GNC#I13H6q0D9;V!*rsi^C>oxoC&MRUEBxgpAtKX9Is;XF*m^u zsF_l95~WEB{qUJz|5Je9`ZpH$^Z-3TndQr>pHcYNF+d?+QtCdKH+Ei5gJ)itDcV zCBR?*g5zoxIi6|MsLJI_Orr>4AP}?}RT&)sS8L7){KMM+kjYXL&r8zqBszuOfF4v! zch#l~E6715i7YB`Ga8r>v|$4DK=iN(g1Cc*AggEt!5Jv4e$Y`#F*1egh>hSIPv3SN zz!vj8Z>d))A=R^@5IJ~s^mO$N3HVV|VV9<{r8a>I)r9gD(Y|0unE0_w95nroE>6mVJHGpNTWm?dQES~u)-eU1le6)(z z9rVR9eI(NSamU2_O}!I8qt6Etu}pFv(@U9`g&6%Pbfg3>yD6+#fb@haG0lfGLkc5D zFLX)#U=54U{Mmnh2;jAwOq7rv(l$-==z&cdrV}NBrSkp<`f*iVq8UtaxK&U#AR(R* zsTe{b=tT++2doi$xLTxZikgGaHI~qzQKy)!T2r**t0;=h(d39JOs_-Jmi^8vjS;&H z{D0CnFFG9H=3ns^oC2giq~Cq zmqA;QUIvnuaqQ14IjO}7L<-C4(Z_DH=uIQC`+%%8q2EHUAURj}nKvH|F#a2yDWR#; z@O+jV5k)1hne?LO5DB9&208~w35~`Bp?|Lxn5EGj?bWR6m()rz7>%+)NjkbNbQ-K+ zJ)G#Gh1q*{?O_C3FXV_&UF>PKYUpCXr9mY7L53tHvBY19myy*9$NU2OV0C7Y16N&o z8=iZPP&hJAYjZeTWAUKxwgNp=76_h$Dw^UKO{M8mK)?A59l45HJg`+y>kunxTCfc0 zfF^;)U4)vZRy%F{hVIiSGYT@RR@x^C8`tIB2*&fw&_XAgQVG*rY@$k3S`@K0Bl6cD zeL0R>{`EOo#&Cw}3k#;Pi!jv+{7Xr|*NM`-6ZEsrFA3V4Mz^Z=Gup$-U7xW+L!)xsW9OW*2Y+8?rJwoKkFEgt zmU%UrQCu@ZZ%QLW!6DH_0j_Yt1rM{BbL7YxQ7gb#nCXDYt1yx;dI_)xCan$wts|^;y%UEP#8r)7oNb$ zP^<(z3^?`(R`_JpN4u}6yv2qMU>REMrK{Ek3OX>p0S-xKYUFC-F+7y6q25_KSqVm> zu0W9Og!G~j(3L!TFHZ17&XM9!sJhp&``{D^QQxFcdCpiA%mzx)?@2mI>NT!M+W!%t*^p~I9*X$sm&Jxo+2|ptj`&bO10f^C^O7-?|Nrd03t%Njb)bE^ z)skDX>}d&&JqDYUWZ}pYlE^a-vB89re8I99%O+bA3Xumx zG(5ZvI9YjO6EkFkV?sg_2r`(gO$K6Kf5UB*8Uky6$UHa~{wy*KsU$ z#VdNg4)9GLCqX<ljx)_mV=|bbgBoCy>6bImA70Mg2C9~&&Oc4Z zobCWGV!acwez2}6i0Mb9quXqA2qhV0LdaU!4Lt*B?g83wep-+0lGsGTZV2cpe>ivvwk9EN3FYV~#m#|`{Ss@Da1<6J zsxO%iXYg8QDWI1n1Hm?g)sgw3SqoUoEPB0 zg^qtOZR;J>T(Rkh=(6FSQ1*y%Kp!Dtidu2lGsL_0J8)V2LOffi$!pA{FCJ2p4toaJ zhmKFg8K`dgZTMpvDI_&vx@BIRvhps%I$X|X*_V&y|BNv47~u(ijdSVjFoFgY*Ip$7$Yx<)V>4a;uY$Ov1cd~XDU zp&E_&O_)WpJRYlif4y6N!90mef5(PCSIG(OFU11JHdB zbYrfcM`hCUB#5wA@Hp%QFV|Nm zI6T7(cbb-)E@cAl8F9Y{6^#v+XfBBbIE&^Ssl_r;K+l*p;liayXk50Oz&UXcsyM0v zI$X>{PoZ(WMA8V9IznvaGUg5d#MRj1L#a>rzrX6*bFt`e;~MokWWh50$%a~-!^zs(BmQ88!f|~d$7UG zNNS2`hjEE*HJW=5#I-@V37#*5L_Qp-g{6@C#Hn7iY&;bV@Ssr9-GcCe>F_;p9OAJt zkW<04u-A*@hp>uqdY%!_kJkp5y0AM-$oIkmx~S*FduC%abc}=jcP?Q`Gh~ciQ_&s4 zh4=sU&jLJgjNgoS#dUlHmx4C7{NFC2_w*-*ay= zhT{*hcmafRa(-5!*G$9=jvzrE5oouEsM|aaa3q;rO5hT83EYpvdQ6!Q7NAeeCIb`0 z_MeFaI(H#p{t^-3*o)rd0Cg|iI0`h)0MNi^ zjLJ9f@6h?c!d4SLB%n45KZ%_n4n;1#cS;T6?hNrvOJOp)DCk~MDAi1eqYaht7vRRQ zVGhEi8hj`WVQ^4hsdh5B#)6?R=6L?4~G2IRV>iRi*DN7Liwn9Ap&URxsA-SU#&f>7kvP2jhZIy zE_A|l{nkCozqy!EVuaM=xFb`+40cs8H#sY27ehD?4-u{xh?${yxE9mdJ2^Wuu}Gt{ zQJ59M%z5$9BHCyiM|)EPGvtzgiENHJhP(0dE8a!N7YCi#8xE@JB*23Q;RhFc?n7h# z4AnY1iZ;JL8lD+i+8M>cSRmqHF~FMk(TCa=`B|;H92;^hhL%)FcXvdn-Wn{L!LFb- zt-B-K7m^`T5jFX3YUrNrLQrGKWScyeOGTPnH0yL#+Kvd0=uk_!Y}4E}v=#QN z-Nk`xBYjSD>z1$GNKbEED21USd2Qu1-iG$Vyg^}Pn@0Ma=GHA=yOEx*mS}XLU$+ZUS6xq5Ly7lh(?gKXi^uLj|u|YX~ zxLWx(G}wMXg}eXT!IgV)2qO0m-1GM9PENrMhcBJK`0kT)a?fE@+>MI8xD(f*;s#V) zj0(Bu(s|4}hgt8ra_`+!g>~=Tz`9Po=YDDFCV(Ftrfn=K=gwx!vDXDuv?`+={kpUo4ae&dv2RNPcc{HHCm6^ z@V4L={>;_rcD`drZgYcWbI(Q?ns7DR=BG}<=^Z=B=9$s&^EPh{jcmSSN2l4`_A;(q z^uVbnD&{H5d5*Gm^Bnd0gW#wCvzvn9Y3f5s+>7IuLx;HBKX?LO4?W=lJ9k-Kd3}xZ zY>(VNq&6>*+8ngaS$CojZQi$JXY;I&pls&;GMgXl{@(!I(}jGVb>VI9@pv|arf;g& zB8h=?)t=UnOyIFdCZdT*ORVG>=w%_Fr-cL%3HlMbtopLh)5K~c!(X+1rP!Z8Y>XZ_U?KUQoJY|$cf zk$y2;Px7dJ&sk5o?Wq7i_gEpLXI<1vE{f)31#%gE&N%xWe%b2m%m40dfUi{f2722d z=N0#nHhTK32%>PlAA$)Uz=Z$&)N29$V5yMN(=xJNm3|syX0JT!=RWWmfbYIC%jDSr z^$$@L`*;;9J=v?G*x7G-*HM6XE#j;B^;xOS_DUF4m=REi2);xBDD0Tzf3?t-a*#7GMe-eEM;0JF{ z^EhPXq=K@Qn!0|YV<@?-ToJyEy;GE>!PYEVwr$(CZQHilW!tvRF59l^vTeJ|u3LT1 z{?9%8;f`^i*2Bt?Uw(6}j5Tv+M9f+G+G4*sF|vV@u)qLC<=me<8(N?`8%Jb1h2r9W~ z)E`@+Uq5cj- z5M=m}Pe}c9?fXH+(Ca=Q9Gst99-&IXRTQ%m%&ilroEJG9nKo$)&;w#c|W$ zS>I3&n&UA$=Y+bV))cFAViIyJXP&+^=(ejL?#;;_`_%g&%? z?MlU(^Jm0cA{tX0_Shc$8sItSE&Qk~XSN;(pxk9t)ufLD4H8Q8lHk=u5yX%n@cMr# z`sBM)_ah)I60=$S8YR@{T4tXKl*X_6AF_Mf*<6R(FO6ccrzDa=);Y7H)qDk8?bAGJ zZG4E)IiJO!^&oB!k9gF{4RI(yCnzSa(h}MgQlz;=_xOF7hR9|yCGw6DJptW>qo*PW zENlg#9xFG#VRkRQI5@}UIZM>X>QTj7RIdUoM~G2^3$}+h#{%-5Gf;_X6rTvJ>#~ic z7>=b+6B)Y83DF4}O5=c?Spb$$`1E!)EgXdmaU#M>iL=io@1!^emYDNEu)qFhi@MCSR< zKat7w0%?X;^G(_2jPn4*&mMFIB&j~DnEJ<=c%`Zvp~CHcjADUh@Ru2rRQyCrsw}jN ztLo}?PJc`RJs5IRxY-&O%hSVAoolwz^E+jWHq-+1YV3z4k zxQ^a@lhNt1OF2%cj?H4mpX55EP$#%29f2(uTMG8&;m~^GGu6x&%GH@&Li@hI?R=s7 z^ZMB*hK#Eo_cE!iC${v%NM_?&cIgLP!`GDOY~bZN0?Q?J5Mmy&tEX==0s8D^pmemO zPx#z)@-x9Yd^;A+t$f-3G-in%iEB*1G+~DzxAOpJ&PF(snwOGn)ND6ZRC4JDp{7-px0$xRAtePHiF*qL-2VO ztdakt=Xk;4=$RsOC1J*CNr_#^i&!Jft<}&7N?yBg{|t49+GL5{S`wH2{~bD>isDa8el z5heV7_9qG$C3&w_r?p~aPf~q{Z}+tpM^&YP_<|rAWxB6?`}2sV03}88cg9BmJP^;l zQEc?Gy&mAG?$3pm>7r^A{MiK`HR8Ewg>|hkhhiDLYRT|N|I6+IfSYdoh_>TLYfK8; zwuW%8{v-+Y?>_6|gH+UUs0sb{i8;#UHd24Rwo@YiC_M{vZNRteE-DL>MX!7-0^MP* z_}YPzOMh9H8+?FOzrH1RoQFL*7tnR*;uv`iOq_{mRiGR;q9}~sCL+R3{2phx{O1}w zDCAkcvO6a5B^lKX2z$MxgElY@>oAt1B$J9sykMvOF2r?(8LZADG##Jf_#UXr+P5KJ^Dmy>J?TzP4WY-7%e7d$6x;9bMjyKV){X4ydwox0mSBQU$Q= zE&T(kHt-*&k*&Fa_~hZ8KA+%5QYExt z^%wY_0UT`+pL6s%*2pU2oTmYbcycr)I>yEC_9c%)vyYk?Jry(7@Z+9c2{#`Hf`$=Z zs`>alI@2gb)|oWwS1XBCwJg?IlW%o6q!7=elyp)}=1DFWmeTo^`yHAP9jc3@iaS`8 zAU`-$NKqvxFDt8mVE$OnaU(9Y9l>O-3>^IZ#e)|&`k#+RqBHf#DiDp|Lv5BvELrx} z6nKC?Us}S}{?^QStX|N{-1n^-$vcf2M8%TUk*FkX!ftHx+J6T1BMI0);&Hpa1u{|Fw!T+_ia3ju1_!5)X$% zh?y-ebET{w;ATcT8VW(CH)oe6@G}`#^~w~;=w&UM)Ia%25k?fMsFuePUd9~#6Nqbj zlJYf!Q6VEwW~U2liUs)%e@I@Q&S=;8m{nQdUCs)%Mz9p>b5tn!kZ<=4uvj($W_K79 z4Y3fJ)B5rb*MFOkJ|}QV-m)A_@k6!Q6RI>~48nVS+#Cj$ym)8@IwDyKbV1YY-L@~S zvIIg2YrPs>9&?Wo29{VtEM8SbHVAb=>l@_tuR0@R7TO0X#G+uv1AtFwuzj*tiR#sU z)1O5D`xjDx{uR-bujA@UY43kro0~ra1j^8Jx7y~bpA=UU5+GeJd*DyjgtV!REn18`aqQ2_NBB(so5b&9)(<)hN{qTBK-c(xIa6TupMp)V*>SnMgdfnLLw#2Q4fg=}v8UhZ znO04COZyEppxT6JQ;-s~5$}0XD_36$0Hix+%3x6O>;gIn0Bo8?sw3)}P-_HT!EXD^ zf@AZ>#ZuIh&792oj#_y9L_XCpy~LKn)!O<9p{_U*u|*8fdC?<#xyFOG4{Gto-EKP@ zyFBdaIoQ0=`_=D&M@a} z?CRB?P16Kw4<{Z*C<(%8nq5V!Eo?ndz`(CHTU|L`Y!gsyT^yUt;d>n7YFQ*oZBX*U zt0#K9RvBv{#+4a-O#%z<&g=eH&-5lWfj;!%sBfv;MO-72C@g+3nKNq{>7O%j7HoWJ z6{WEh=^OwK0v&HeuCm2)b59i7R>vY!zV0Phhw8)SkKDAT71CNqxQ$VbtLyIVZ>S2e zEd`$t(#2}TG@Pw=mRT|>z(K%XfM6l9e+R~>6|{`r2^$P3lUgtZ`>)#*K>gpNVAGT< z<96dS+g3AmwVY7dsFK{`XmRvOnTd5mMwNfO?Q?b7B9VftW^vBA1AUKtkItnPYX=rs zmh0h%A!g~Fon=q*tMfU65jCqBE%9e5dcA;-e8d<3py^bOZT>}Gz;kW7RyP!in%J&qbD)V!dH;=LxlaaJ=36k2hl@{Y>70?R9)tg|u@PuGREfCE}zOO-jgo0`G9rg*c2L6E*%;LfOE9@d<3 zfAP?gNZjmIgxcCOD}-pc;n%<4)8hmE8h^hUf)j3wtQqo-4F57M--5;{y2%qX<@39! zfSXXYLH;Y$1yHxE{c; z2JVqu4S@tW$FsMjItgk$-!GoSy+sw&(GH7nE!)jBBb zI1*;Zl7hUaAazYi1>5!y*jVStF_+{KRSN>@R{QKNEzC@*LXyDqbe1(vFpXH2zT<`E zifvS(#G7^DvN10}N_#oxdb?k^_WSzU$O;+{p1hQsF!8t1=<(a^0B&-z26ovQO#jz4 zpnrf*drvlM;(D6EPFrd`2qLzC(#et%)_Mq1A&V;7Wv_jq7nUoqrOvS=-pqP|9^W`H zxvO)%wvsGf$ zY#?V;Jh1U{o16?=lI*6It{t)>Lt6u`li?%TZ3KvPcWeg&OVWasq9UY=kg_i0=>gzbd09NSsL8 z`5q6Y#3u(D<&vu?%nKNtY@(e|RY~m~wYlx;&Ux!WPG?l_zjRQFrhfk-BgkYK8w;=c zuLR-XZ+3gJK4tCy->va49iW<%+_?F-3kUvt7giE&uuLpWJ3T5m-ir8ZF9tb!_sQP> zXNPC6@gQV#)PupHX3kpD{q7w@`y?+!U@$hSw5P3xz!6Yj(fxVKK6@^P-jiehHZdmZ~*6< zrh#YP@%X6;wz6*3Ci!Sfm5wfk)^JrkAjbZ=M#KadUSMNb=Let$vn{bugvme z&k--X>|Usju?wywgs~RFrAIwGYSZSbMrlS7nas?U4hHYnk8>)>?S;Kj%=dZMPi3uC z7<6syPfKQXl+62W_O;zsk{gR;#mp8|^!vayiMz=bGN5O&kFA4f7w0OSw$`27e7F6H zpnnjq_5A}%-03$3ici$!aLr+c*NhjQfV#MEkakv>Q{qHD{)hcWHvO(f*lN6`C3}k)r4qTeN9e~YMxnNlv>eGYhQb%8 z@+VDi4kwt%R7WXwN@wk$JC#nNwWO^xmpBrWU9-FF5_*-*ILTeYe9cj~<-8^U7T#b)8yH=y>cA?9? zNhsAZQRqa1y93F0LZP6^UIXPOR3eZ z{W>Q#l_w!xI6i(|uD%xj0Wb``Zzv1!jh+Z~m>bo`z|6m#BU!WV(WSS}-Mnnu9&;I* z<*EFM=-4p9#}I2TA^y^Njla5cDvd}dgm3rc>;7vLxa&xdyoMNpGkZ^$oD=B$Pg9d( zwRR)e(*ev9fn@yIFTN!!-}A0Bb)W|sCz0{~EQ4N4tE4s~hOhdZG+^&**5Ys(aGJBFS~-D4!=mtQufCl9t<(>1Gvi~u z7+nre$V4p_V9tVznz<@%&2Dtp-d#rji_|DyiOAA6R!;P^R~_s4&}8LN}`o%%bd@s`dw(dPi1SSE=UgqiD8rLwods_oNSRm z&IcsL(zJ77Ve09{9x|qyPA+rhJKi|H@VnaT8Racrk1_O=8en{;j@51SiHAx;Tjr=6 zFI?_uae70<@O-gvQ-nV1>XKJ|w>Rq$%4G&rff~;#D%J=%pPPd}_C~RklFW76u$J^F zVT^FP$qAjSqwyrNxvBXzkd_sZ!pihj9ffokt*GBV=g)G0-Vg2)dZ|23{Q^#MVbzBd z0(8kfR)IALUP><2$B!nWf_43+qO{p^XlybA#8-sAjL`3}3Q5061s)5fHCc-81y5j;nJ9E{NkiwF4YfLyZls*shV0670M`K=gEGEq~C&K6vq-_inT zx1~|X2OI(1WuDygFlvPgNUTVpPN~;(4y&A}U^v}e{uI0P3BOMO-V+{k9uO`l!ETy4 z@=A;6q()zO=Pua(j>~LG&X6lIUtGx=zr5ci4u({VC_K>aRA5E{ zUaA>#{=$=fd!}rs-z7z^2s;=A58h>gIT}H?ef4rgR6OGx)n`0A7LpHhb%oe`=RUZ5 zbviHWcS1vitzi`c4j6DNNmK6}4a)X}YWu3uLm$0HD#plWTs+8`eBRDWFfccO@0}*j z84XBS({~b6auUPz6m20p{%(p92?`f@YdAJfX+iYEw7=Tur(5V?1hf3P8#E-i=9fHkaj?OSHh(?Z(&4X2 zKzmy1gzoNsm+dDUBz5wX22hul!@AUN!acF)ua!l{x;1@glnK zDRdrS+h<#|*l3-MVBRS%G}?HL@q2DW*{P)LnE7`pqaHNj02wbbi3(z_3bVyq*M$1_ z0{sV3A9s&M%{*gvTrQ7)2?P-yxzW4!XveeTw$aQ9I+Z=3Yjqkry+)p#{P7=mu`(MP+S4Y1D?Vdd4;qX zA+@&{q(kW>phvGU`kl}00G{|X)vJ^cPQ<#i(85HBt6>!ueChas4~3=+2q?F}3JKAb zw`l{oh;E0xmaW|vgV6fmFQ4kGRW5Kyr6j!!RRXetI3(jl-Om7>Y_Hp_%bgbIIeAjK z{Qi%DZD1Cju!pO6A@r^*rzpW79T?u+)Q zF6b!vZ_jVKuy+^aTU2m?Z!9#jYGruGrQ68S+ch&2KT?apxcJ;y; zD9+A6i30q9`aMS%Ge8`#Z~vkPe{DNMEI`X0J&-HzNst}P*@YC+Ba2HNySH!;?%SNlLcY|3*`OVD;zi@x<3-I?pSWb3}=wsKab zFkp(1-D7pc$_}<9@R-Xd(yWxDQdOHaFaHhw08E3|((1?DTDH_S+E;p^<{zNFc8uS9 zRU4rF?5lIb+qWIp>7hLiu(IKE5&I5i_hW2OtKDh0#3p~iyVQNa()Vufx^e-M8{p-! zp}W;Kql;hGz4Pw4?$X>qR_qSh2uF#Sb2k~uK4Rqm!7NmV%Yby2Yn0fHW&X-YhEh#jWqWj9&pxuy=nJp zPtY?ij~kz7>PD<(magt7lQ%wk&axKVBe`JLpRa`-AmH-k zzaHvZUeTJITR3sf`G$U8bl~28n09>q_5JVqw>!0s^Tr<(-s#uYc?{jX$8tR4JU$tI zTCN!1$29xjGdon6pA(EYLHJ1ZrzKpL$#kBg^h@s|wXN^7DbGOOx8SbVVnzafHC}NEUBEMcfAh{wZAgJRhzK>$j#=I?VwEIKK7KJt`Z%le;qUtCSpHt1 zjGwaXk|1op?{>k@dj53VexBNIF|L@Zkoy^&z0vhf8E3@(eO&a!l@n;|{08nR67BmK zp-*jM!?-wIfmZv;5HqhS`?xJ9w3G5Pa_4jO6)R^@bO$t??#=E&7skO+k;-_U({5W$ zN$tkAL+>~$j)unNoTu=C?NlTgL=u5ikqNPc$#Sc!rr5FjO>k~jkOQF3d0n%HSpnsi zTeOnEo+%L6Ge;txMu}5)euf1lDhKQ)6VeEIb-gBRgRAQm`eC~tooZuxLD85qxz_oL z7t&#WNLBrcqxsnc0f(nR`BG6?clVxkoTq`x&*xW<;7MIJDv-RzuQ(l_8`e4Z!^pbVC=ge8}s_kJOIPS<< zXy~@ld!SYAe`1O;IdnnL5ta83QZ5TL7_Csz&+X;Z9MxT;Lzctma@hyL;<*nfmIn*O z1;VZ;d&ZBZCuk?V7sByE-ANw5fH4rTG&#pS}+BV=Yq}IKx}`)VrH1-j+Zgz zez~fZmB*oYqKT80<+kl%ll3!3XX+StWBR8CZH_EKc6!aq-)J~4y8}~BSDl!Ly7m_I zald$mdar`JKB$n;#4rRME|S`2NkV{>8^x{Y;3xPUwIA?}zB_}?i8VDxq68@-rJ2DM zc0mB~NKABAY=fjcPTLeOdc}_Cd87*v_7zPG*b4bYE5@k)SU~S4G;bSCw{@6G{9v@Y zD5`G1hPv7Nb-D9F+BfBAU3jD0G|vUqzo$afYWEyEYp-lO|H^x=zj_L4L@@0yijO#XX5Lwas7Fz0y{!N=g}!h(HqU@3Z!hGN8*>uSocb zISq%P^vy);P}*S~N0<_Qg*Bi<9v_GJld+uENBI|eKNonsqcXSvLm}IzR9YOXPwxlnO`D07 z-9(NGgY#ZjUPb}7pP4hniphg6UaKH>R*D#zuFpuUgCQ;OLn5%+EgL=t-a_$J6BCXk zUWgTVB$mR!LfUzsKkg0yzZ~PHu~#pkx~B$2u9&DJr9cJ!ylL2sdmCEhpGvpat$I{8 z8oysZdO`Dd@~oj^%a~_l6ypgjfDDyv$0czbLJarumfZCz>A-${;E03Rt{D_vt!4WD zRG>5skV|89P#&>`Ruj5Fu{)umLZ`8P8T;b+>184Br9&Nxo3$HtDe!=#8&@*Sm#RAn zDXZ>PG6F9m?{82fa|l*nj8PyIdLOgM6`!5(;-Qle?~q*Uo2GDs7NHFJFAtr#T#O5dwqJSPRKXm07Oq)34{hk{wpMh{&rs*wID$t@S4cwi@B(yjRrFen0%2zopUi$DFFOWo51d!*ieFD5> zFcvknO_&&t9DvQ@AI4D}OmN}WW+!3uX-M#ieh@lzEKp7Ck>MQJsSAIRg(B|97JM`g zVM3ev3iJl;L!Mr~a7B9}9gptx(wu}~ieZ=55~x@zv`Y`wWq>>2QDyAz6FM!W|NgwZ z2kf~&AjtxE0j)6J1)DzL*!(NfPFDc>)2KNXSiM}HJhw6ZHRAhq{2Sz!ml?e^a#VPd zP{wH3FsuPU>Qr8z`s0E)&e&BkVO}4Q)y)#`Q`n8tm8MW*5^*^1GwL0s)3sxvP=Y>C z!!OvEP|-XG?&jyz;Owc3-EF93Z%wM0Iz-N4%!fL0oxP!#nDb^WL>up+UKdN1E*JHH z+i`f!|63M#GlQ>q7v)WWE9b}XB)_)oHwP1Hi_r^qJUH~`^!|tsdn{14E8aNMg)u2; zPJj!lMPRray_E9&5g5f2tYxpR0)UUTHZtyJnB4KMNG8r)QOvp0`mbiuNxU*{x+$kY z5K^?pIKc7E?M54L`T~1b{Y&rn>R+2wkq)S&v$0U>?Q)q<{a$$Dyb~{EemjOL~Bj-8u(18=dpo2b>9SifRawjzn!YJDAf0eEWb&7CKF3w=Pu8)<3_1N zSPR4O``xDT^Je7w&7v+bimO&xNI>E5Z8t;0pebSPKHWgFE)_EgF)#%9W&Oj1QXcG48Msvim^2%k)+SfALT4tr39NiPqYJT849yZN6OdJD_}-eKgcQz zTLH@TQjRlDeV$m)Hp*Vk*2H! z&O%dp0OSknau53-U zg`ClSNAzf9ySvmuWmR0SDkytHgm&|^{PmE#G6SUZ?tyz$6POuGA+5@3(MSr3F$DN6 zaL*Mv@~h{Mv!V~~xW`wsE|}PC+;Ivcsyu7R98U`Becagi?L)Y1nw3SO4V-pMB>5s(}g|gFPRqbk7e?K8R$utLLaGYPCU9PpW!|y03S}?GKP)hgL7_C zj@5>Bu4HwE8wxsGfBX{k$V;YmSzy&D&g{Hv%F#5WDKx_kOpp}N`r!DBvpfD^z#bh1 zrR}mNjGX|VZ~|J0mR@&RnirEUgi0gt7Fq|GphiiI`EsQ3ktUiF2R1i9gvU28Dg~;n zp2@-$#FfWLU_~*n1}WK0&w z6unXh9&Njj8eKz=NH`^>JKlTEfIOvdXkhx?E#iN8`D5qyC$L`zP`ikkno4SZx3|gC zC@_fKqdQRJFL?P2QkUi+L$zt=MveIuk0!{~tP>ZPxpy6-MUv<3Eqq@{qW@^w15B8Y z27$gV!V+8A)^SrLOEn##F9-do7jMk zg@Xq~78w`R^)c)kPcJznkqgdMJih7Uf5G5YyC*fI>6IPch(0QjJ!d1zbzK#V;NIDm zS)OmTIYRHI=E7u(gN;;BbX(vt$^BH}-|8y#oM$H?i~S%*#ik?Gx}a8`@#(REUY4vE zcp%?BxqL^Cbu^%-hiwI*w!KAbw1CFV_)iUX1x7MmqZ6~lHqvAzwm>6_xJ0!|Bi}it zledg#UN#PT-8uVyZ%I34>H_xmR<$^IW=sXxRw){pF~uo*kq4E3FgeCdQk!Pdv75X} zM<}NWJi(j^Q1D<*-o$|Dt;B6V&HwObUd~)Vooih|9?UqkNl7kfW(fu-tqpT0Dp-hT zbuVB8iZFC3LN^}{Bt#9PamTqy&1Xl$f=>9}TH=5%ai^D~lhIyh87c}ZC&8%j1jrGx z(z-D1v_0zF?wlzYiAh-W)p`OwnsNvJ_!*mvJyY!O?D!5|0m%DkSLTv+PkcnXx}hCP z5!~L;WPU``D*_qnkX~sGLFa0-bbofYY+=K`YAP%uo22myn`J~pOF;%Y7-*2_s_6E` zT^7rQN&ekG0o3`;t(9==lX06eatvuNVc?nGY^#zrTZMN}0^rLB?u=6Rw`7^As@3&~ zDwVU?POyaPtKWVdAG)hFI%ZBpA`Ynkp=Uoz|D)S)pr|E}`H$iqci@U7yGS|{mBh9L zQAe6}0rp2|xB=Mv4v<yB_@Q;F|}9h*6q>;Ulm<;_9{H zJm}VXj)>80jz znD}B`1HP6qw*|D3hTNNb|6)1JX>eYQAs=E8i?EwLLIBo)FKhI6#L6x2CH86Ha3;4k zsfvGT2lf{cD>*n!9Fx3nXUe+Ql{=Q_5)$L3M5 za2EfQDOH)DME~ie0?!+T%t(B>L7iVqnmyzE9#2@X6r%h^z+kucoIE?Xe$TbZhm%~Mg;s!o~M0g8wf3V2K;${zyv1o;eKuT6ULLQRa1mk^f3 z?0GydO|XT4e9xP%8)`rB+c);&qy7gGZ$@4>sRR;u`JmSf`;=XAJKczLeW7O#PDV1( z8979W_0}vehd4VJkv40gLj8!>ebZYUml9`!(+s}!Acc|eA+>VP{gCkN$B;ntp%mUk zI=k`$@!5NC2>T)9bsyVgm$<-kScyzW0!X^kejfO*S@S%&+Y0=W1`F$f>kLGQqr~V! z%m8rO>Il0^Am!3~t*U#Z#C9Bu?NAFRx4U+M9fJf!{4#&6GniDqS_ObLaF)EI=&yq2;(LgYpW=o5 z7k6LMwmdZn6J}!fc=5-Nn-d)qf-oW83nE=oB4s&JCBDTfgIrv<+uoD$cd?KMB~Mfb zS%4o?Y)6m0zyLZZ;sQz zp+!2j?MAD`NaDZde($HI0KYjzEf0{0GIvPhU1DYCqvVr-4up%?e?-Vs!wkH68hAiX zX^5{;5|Va2fj|wAymt9P@snqcLf2~QL>MU=)3GC??>8zUvC~N(-tCG!H-}ReYFmP6%H7ua11+GyGdnIG@wjU z`vfRPh0oJ}Blup3*qAv<=SJAaC1^>Vdaz|l45@G+=nE3&N$#yUgU$ri?w%uddf4lIV0S>r$@DTtffD2fci zKe*bH726Oc7V%g#rc%KE$~MXm)DjTNJ3!)KX2=HP4Am<#p@{&lodcdLm8EE*2rUY6 zLK#ce1*@ry<9}W+aRbQ7DRL$`83JuQ9weFE>7`!=zG`w(3}&i)jHjKib)~gvOl0z; z)qWiWd^t$)0!jM)qGx07kz16HG;?v=<_CQETAG0PsFKtvAoEJa^Li1l>n=*`0hLE& zMV<YK`Zh9w~k8xg`=| z_9?cUo@+)-8)oRwclf}``11RK;0*2 zBEldz5({lm5oeA9sx%C}f_hb)O}{#OigzQ_z&w6}&4VT_Q&dBVZiA&ZZIt*ebOp+T zDms^wI^{>Kl+~}->U}lx2m~KJd9Wa(npQTjdc%dXWlZeDy!ubB)TX!FBh)M3DwHdQ zbTCH1_qKO2nk3%azREt!?{KtzFO#E*G}$ zwVTikx=-}8Q$z3GgB>Rx0-k9EMMvgr>cFsxO#(v7i_;zieuT$M3s zb^X7@NYqR3p*J_3SRG$8%yG$S%z3H6)?4Llgypi8DrSJFmO5o1%`81=o365~89^Eq z+cTGK=WY<+0XNjOYI39z|Aa_&wbs1uTd0*4%GsXNGd;)y=${PZRjCW1AhJr686yu3 zuS)0RE4Do-yL^kACgsx3tXJZHA$~{|^4344Lt?c*?OJbA)h%=-8y*IretMvh;(h;E zQz1XBsf2~}D*K%3g9<(CORXrBm737Y|BH?Be@LW1!&|W5jso{zc`cVYzxIItl$Wh- zEsgkYAShR$P{ca!z3_j|q6kYyB5_KvLhG>0`-696bLcVrzOgfjT8BNNl2Wzyx2>Ag z|FPBIRB3t~0@~2d(6D-AX%12_lT4yp{-KJEC~EHJj~u&E`y=+(5B&bKb{pfHf2fH) z5xZ-+a$O?~>Cr%jK$1WsA<3BV=Rz>r1gTj?k={9^gN}L6TM9!7n?1?d)I-B;+=lsR za=C)$)z{{3+Tky(&yYlyKW1t}Q7RF~=ArC{NN|+}6H{K>pcBUyZyu{^w^8B8? zom=u@6>vI?p^k=DB!iZxP&(lwhvOdjVH~zpNV^+B#9!rs9_@1LuuIJel1lKL%O4W1U08-4`*78>@p;ZD#f3PO<2mJ4 z?!K1M?i4hqJ93MDDNM?AAtyZNZj&w8EUiL{k>G7~8Lh_*MXxpDjSfe|X`Iy`CDI*s zLl#|>TweA_REh7HcDaBAJ3SwrnV3VG1TR&$?wjie2%`di1kREZ`guK;8YN>XX}t74 z*aUFem@?K|@pdN@vZbf1=y~GCblx`@)X_}?FytL*4T-dZ z^MO5(%Ci>~Z)kXAndWE-d5B$l?`)cQGw=j;fPb14ng_=Ok!H+j`2Sm_H%RRhT zVdXo2uS|l?ED*HVqNeK_w_Kbol_}3yK*ENP@wRuu*lx7vDciSyknaDG(f+}o4eSpe zbtB2;J#s@c=Zb!G+xH*i9rcGiAJKedhpJ+2?AOD)(Zm?}A3od@lWKx3){&+8+W*W% zNsh}}8#JV9gW9xq7B{}xM5Vw3^g|zA!1`|vs+p-r%`3ZnX}`x4Vj!5uy5`d_p4=9r z4Kj;FmXMhYmYLrF&198dQs6PzKug_A@b%|@|DjAbLfUMIyhHlkukFy@*)VN*FVT7c zPuE%d?NPO$_3!NP5%>0AeYTGtXo3sTTR@pL{U~NU6FNTW)#?hiGQLI$;yN zy)k@3L}(&PhuGE~O$*kJ=RvC*I@Huc&Y5{v|9Lh4i_Q&@dymak3T3JKLrINp;EdE} zP@!f!njE9aU&5XW;ck9d`VADVw|_nZu&J$t|!;eZMo zaS}@dkd5K|m@>*+pqyN#K^_UDs9>5$W2Mnf##bn(;OzdG@ z3c$~5c~sxZ>6O5^(8N5iibBDORI^o+2!&xeo@{P`FN5AIyGaP4UZC0S%D$6D$K`my zC!*GV=%6C*Qj&aEZ2!H#@{>fc)#w)=#0M{{{}sxJKpkzGrF|ZzJ5D;%Nu{Km zPh^245cORYR|0eab&uuK1k!nCDnjzGI;pRK_xTZt$$aN1!yhc2y4HTdn9@EQFsZqy zl9C8A_!Ihkd`udo4=!@D+%ZlO1bhzU7mqX1Z2Kruvl2&Iij%k#HdzDC{L4NO zE8@CMNUb4O@;S))Oncq;sFVfG9aFBvZJ#+g6tn(xZqX^Bu9z<}?0sBtiqVIziX|^F z&eNGkauYv=&TD zUt#s!&;$tBdwog%^MXh$?GI4NqP z7KyO(Co2=-??PTV;713ZiBwJ0yvVeAFRv}UZM{PZ*csKbV1y{qIP_Zn$Jj4+J!cd% zF^6P6&9S+pDAM6p*0&s}!t2H2a(H~JoI zgTrTK)HJQucHAHrR0aFikss9>pV@$-%>(h~Eid&P7jg^);qIijxQlKwcl2Tz%V^(R z05m}CRL2`!!E9e* z*do^zwsFtRJ(39;|Fbg_{=Qk?L`roJ-6fKpi~X<8QZ0Jdqp^X&;PUDN+0Z~OE9bG$ z4BSw=U-M%P5joY&WrR!8Wv*cJiJXf;iqnT^sWL9`nxg}<*D!~X>X^wCx~5g}risN> z2G3*K8x*>tSxL4Ph)Cqm@ds(8k)8Nl4XM~mK+ zl5}iN3{#U3LNu_E*3G8Jc&3RKW46vS4Hi~Qq@?o>JUg=AzYkNR0Kd+bNX*+sQguWd zwq}LWGgE~?T`Dp?{pV6>8mT%&sc}Eb*5oE772O11gLIN*Ha#nV=z;@40#hn4!nBQ`Jz(+FTpcX-E8t zbxMWUx|MJa@J1^6~lX^;<)FD*y-Ut0J`o1&$mdAe-c=Gwg zi|NDYaNafpk1hUuDok^Qibp-&w#e+xore;5pi8a2=YpY*jx5{!jaZEPQ)e&84Fi0W z-W46HV@o{KD9td9Ndu4{OQ4a-m(L?HYv}((M*~#xI2OA=Cj=CmF$@YdHQVv<_Ku=&(0!dN z%YhbqaXOevPbpqAV8|6&*^wq9um{iXd_a*dqK9~O`gJ{G?D!W$l$>a@0eDE&EX0>G zncBS3P1x;^J};NqJf=)@1MyU}1zb$QQU@MCT4f%+R<0${fm@bLUGcS2#db)MnrK}zt>Ip}$>LeH$ocH4>OjTl?M|KuVSK>v}o zaM{o|Hgqk2)FfD*ouAQ(dKL*?%zwOcxqZ1M{i9YSRZMI^dlvRr+SL3@CZ=^R)2^fL z#1K*!qiqml9bAHmX|O2MsAE4XJruVgVkT@zHin=h(LPj~c>I`(gJe|$9<>-a^9XM7Fj}AM| znF{t4rTC$WF0cdI^5vf1+`!kyt!2DAxcQmwxK03#VO4we)3xhu2Iizv8 zeY_3_s!3G{qBJa%a6=w?hzA^3oZLM-8=b~;62$I#;c!`?eaS@taZqUEZt>auOywr#u1 zwyiE3UAAqTUAAr8T(|z`y*I`l_q?&smpksK9Utb5RAkQIjFq_(GXhVz-eoy8quCWD zbb$xli;_lzRuW|a{C1z>6wwj2KT|Y__b41e8y6mo=O$3z2W4j-5UU3BL_JRyn~(2K z88%-cksSQQ@?!@&PHIvjTitm>ByE~nssupHFM_4VHrURfB3j=Vo;9Ykk5+#=&!3L!A}t+8PRJL z4bR$#0U&fK6eQjXgD>y2glJV#@T8lsXB_3!XJxIl8BN4I^|Js2XXxU3RoN?Oq(usu z^)%OV9G=zECCF@ssb$2Y38gfXU|knXkgc~IU${Si=pf+DCqs(QSwoBFXbM5NK}AiO zDz~GNH)PHI;#~rcV$x(1T6=O95u@^83*6ZrPcUoVPS9s+yx*C|ihQ{Ac!D>I3%p<2 zuP6yxz>6N3(M97;)(}}{@)!9<4RNG%BZ;Sw*!>Xdy`gI`PWAhr$ILZ+E9)r~<}{I-_0Y z?QN6Zls0777~AQXEGCiHi=^ANN6oYH!PC?RVSGk0f_+px{e>S5<>c4<=Bs`CdVoGK zw(S_j;}-;UtMwvSZPhY*OQ?*ux&DZSsGkr>ATVT`>M|z;D%9INJkzYS%p)F2GhC7@ z5Vtu#m#ybw0SvYeB zASqYoB^#$Fx?fqrT|m5`=oYRT@XZU9ht(d0Rkw-zi;W*pGV{tBX?OnAL0*W(0{ww( zPt6V<8!(fDM<(i78a(QC9qVg{xr6MjoaN0&k0e*l)mXzgnHsITV6Zl)L|n6yE40Zm zez)Q&8gP;|q6q2Y2}59Yn`(RQyb8mjH$65}Ko-)rfJ)r54SF*O$ZgnJOQo9kRt>db zM+yx{@5e)tcj3E5eJu7lC7C)WDSQey8J3dyYqqE&hzE z8HFJfeBZ`_y+5l9CcSVIUGPdqOsb|HYoq6bzI^v1EfD`bXdyu;Nk335?sgH2Q=}RK zDFsOo6rQ5Q*`Syef%t1REtlN(hEx-ruf0bYq)B27ERPs+mgQ_{9|%z0WuhhRom8SK zi;$g)*p$CTxeVmI+;)5)L6=ouAXUM%)#;s7=vQIyHR7O%I~bQ72QGR}N5f#TmZ?@v z3Cfp}E1b-M=_lx4L&AGK<`pI4|lqZU&tl)$ZEDbn!DhObFP_-1moFq~p?QCw|eXp!FkmZo4Deqo+Y zt(c$`@Um<6wMEd|F>I}yJo~P_{Tnq-^VIC8$;xE0?`CqY{-i)*{Y%7V-mahDhgS|H z$CH5~b>wVB;$u!)=Kk<9NQW~;%5F+YCI=zE{Pkp(vNy!!aT-l&c}(39!AXfQ$kKNB z+Kr^3o3?etWye=%+s6yMA8syynX9;^5*2$M4ocl{f)K|9CeBn-$+s)Ct@Hd%9aQHN zD*;zqx}j3PjOedQD#Q54pxrE=CffWjfhJRSBvvWz3FNxT2IpZ4ef;h)$pVagOhgP3WE1F zi?J1XNkuizHR{;idCF3jxty3d5wkO;($GHabbq=Z!QM=d>5znyQa8~azSB|6^d#o% z3lS(?C)vhQUm4_uNX^8iK~JZP;c6x@$Og=e{d(0n_Um~~Hn(61E zm_hh$>Y?tcEd@4xSy~OL+4)oTlEeiuobRuT3-9T2H4o6uOM>eb=ZqW-l8B{0Yg?dd zZ3I%AdG6UaA?}izq;ZD}2}f?kuXDw>g&mggCnf5j^N-7)%!a8^C(hb0PXjL5fxqtQ zGfJnJb4uL6996C{z}cmjyQ*Q{Ig~sCgSB!RlPj6YQ)cVW{KAvr^ed5BT}u{`!bl(KM;JP|$BVF=gJy$BLV3<&g5)`+f-icEaK?Ib<}3@%I3OP3 z;WR-fDz}x07hxRN!kiQd&@SK=1M0l#m=V;*@=47yefH`F({U?ty0TOU zbwEai){V{4(3^)mb)#6M@78DL}0Zg zMZ84rKk9fNVt=q!TvX7Ay?!u~BN98Q%7%xQskpxlMfmE;sc{X`Xd~ZnkZo z^yF*eJJ`QH`t+UNriUdtb_oh0+Z?4R-{pp2_cJOj=vZM(DL#na=Q9oGvNx#)(kqtg z)cqh8{7@f)#1{%jAYqAsmlE8=PkKYrvScW%8+o0)$j-W7-@HH0{W5*H2Y^0|t}fr~f`)eO&h zZ;|&S48|{uwF_s9_{GM~=Eqr^vtZkrn{7oV4LVy$J6y2R6?zLfLfaF?1AB2j@#5u2 z8Egk|$Eq>5$VE@z2GFv99e}DXxFw>*M-@ff_*{QY!4Q6UxV(+?VNb`dYgt~?*s>4f zpQQZ0?evX)X7TMm$~n5C=lOgl{FqXocTau1d*wgN%m4JWWQQNU4LyJMQP!gic>ubtunnH@HDzLb1`B3*<@z3>+D(x>rr6` zY`Crs!}GcLLG^qsJKZYu2s>>L;i|ZuF)vzqSbk*xnw~)WdCx#qZsuW$RnFc%?4dDp zu-nG&cjhI;0not$L@NOByHBS1=g+%!KamaWZKgAg#`cUg;8xhh66gDkA4e>7F5#_x z&D6V}GHU$De)imuosnKn5e~%70Z4q`q z8Mp9OPl0GBw@V83K)fy=g*J|6{+R+FvFSK34S3;)|HipHby$0aOAp^INqeWjzU($V z9i7{J=&|)`^{s*~TYufBb41tgWiJ|m@0HquCo)kndA{OTi;WE1WX*zlgN2WIoa_=u zhRA>>-TMA$1OG=F!q(dt3tn+fPl}Zr5nI0+?^#uMrk0=RYg**3?MpUCnRtN*ui35g z=PGj0HT3R~JIHd^u;ycEP{~oZD>r%fU4Cb>aEo<4W76aio<5J6Q7OFI#F+%|4aT4l zA3v1GSMqUn@C_(^@vYY5Zdl9Jdy};mRff+KeHYtcP6%2MwQ32T{FISO^7(%IQ8)M1 z>xmaW>@L5nJVa{+)Ho!!t`n}uv&)sB+@XI#8 z+`i%?=Y?>`aUE_1^PhV1@g&Wp0L3g=Eheh+=5oKF&(~q?bX8f6kPN;L?PWfM{?PL5 z85Nai-3dTndYK%mv;Tdp&*%B=SG+hxP*#@LG(5z= z$BSP3-P`O5q%lPw7b@?GM%r2Y{8smncmM6!LpHuH?-Mn@Z(5vewvwqQi`q=vLfu@Ov)zBa$EU__`EqA@@zivo zEqhM$)_DUy8(!YG*r}&~UU$Fa3%&f}717-Jcx9>An|n5BtDkghZfU`n+_x!pQr}!R z^Wh6#&oDb)Rc(GP5n9Q#&YrZY&RfUx<*>G~S+x0zwkvdsE%~bMJkI9G^3GA4qMw*B z!}t4eBK%M{I=86NYw}2ax-anNgR|?-p|`omCgj=PWwSF)`yAu0$*yP~s#xKU{KF~t z+WkJITF_(aZDn=MVYB210a(tQk9oh!xL$-0xk^QN2CN~rZLQ_Arh~l$Z$Fc@NqIgGQ?nXfnB4*k zx#MD5PDY1$820R_M3xQ6=p51(uLb9>y(2F2P?KdyOL?;rd9JEy10KDn$Wz{P>m>OG zHOHGJHC7uFUEKLQjjF4Zd1{5L5)6K2x(BaElN+v@S(m#Mu0z71`D}Cx``A_WBix*q z<>%iw>gd?a@IJo3U6wh3bsA4pX{XYt@f3C1_xlewYy7{sl<*|c=@Lf1T_Um<`qkG& z@2%E%(eq>szndOrok4|PjJdy073LgAGkIM;FC98KrWW_y;1)O@I2!i2xcsFt89`r= z*tzDC(Z*Q|y!9yH!472)GDHL1Fz>^M++4(7rKPFQ7oF?qi(+v^Sy$KQ5W&hESQxaO zFK@l*K+zvtbcU*NVU<;1>$*)!0(7=y?cPK5Y3^TReHfzMW(A|uO9Fxb#-wz<7Z)RP z@Y5sr80y+IgsHIZGME39rZ_ z*mKcS;M45N1e;d3|JVTbIVs>A!fmj<=rlFG-}dih8s?7T6?x=!SQ zt<=hfK=NoBRKtSE#nr^ph`)HiwE`{?NP)0z+co7W3E2SoN0Z4-Jd^k6PL)4_*AkA> z=}!J(<|mkRDcNbYO|!=TA8r4>_7b94?5I(d&&TNTkCll71I3WagNCw3ET_9|qMby0 zw#HUbER79Fc0+;l*9;0bH5QOARW` zcV<8*Z9K3z^4Sn@r)BEZJt+Ou^d+}{r-)B-SzmW-RXTDmgMN2&p8B0+SSUB$G zoC-Eg3)ym3fB#7#-(G_@Oe!(7-CAUc<3OIW4z2Z>`DJA@`fVAQ8^?}|GwS>x;kRKI zZrw=izIemg`6s&+D7jH1Dz%akCg!8)`8C0Q5dK*Xvt9DceK-5BC0v%qO{g zi}<;;7S*SL|1i9hH1o-h^Ytc6Z9jp4B4x#+b>~XnKpROXS#@XrVM@|W+LdgznkTsa z0RMllM(g_#_BA{SL%{2;TQTJWvxmQvPMW@P9Z{@?&p0lqa%@ljC+?eaVeVLJr|zn% z5X8h+vmn1?dQTmaa)@&>&(LQwHcP4hE7$*g8DaWA(ei)l*;&9Y4$!8oC>}tr5*D{9 z3>csuTNld&qH%P3EqbGF3rXg>z3sPWrY^}K*MtAxTc$xC1b6m7>hAwu>YuQ{ADJ4Z zjepn8qh-Wkbri}!LYhmbTeau@!^ks_I~Q#7{JWZae|>+L{pX?V3&=*&Nf!Md=F-A6tvV?qg|=bJ}PUKO)qO|1B{89(Ff*HXPgE3={Rv|0U}m zdHiEby=m+ z#oqmBMW_R7_)#5sYuL;v^#{mc(}eIRJ9{XhwdpAhP`e2ZT`)r`w;0NQukJrF|3TnC z2>b_u{~+)m1paRzaFQoY_*2jCtp`9xJ$~y-i4t^orE~Yve7fIkoA{VrHom%}y%qjU zpIq0sqtwdS1|Q_tcDc=;@iEy_bnfW%4{=Xi0)Q2yLBakR&Y*yb6RVZDi|67Yl7WFr zDPe*B87J+XT=Xq$Eu86`jjS)atlY39>)GC3v-A~@FW^(2C71{_6S}sy&PDyLFPEx- zTQ-@k&|m~5_gFw+38b?dru_JC2T7^VAyg&KZe`pio!JA&{!X--h!`6m_BVd3C;BuS3xaD)mdmwn=1`{;I()v@dO@F}9-VZ&BOpssWfnM@wjp_V)?hlWXjo@7n z1GcHy7_O=-Q+uuJk5yVmVB-b$7y%bb%< zfcHIlr|)_WV9hHv8ZD1pP_Ki)vZ(*%G+*<&Ij~?r@BZc3I^d#N-aEWf1j)k_AhCiU z8U()Yi=ot@jr20=a`Wv#b^{EQY(y0U?zj&mJq*Yexs<*T@2E@DeGxm#4_1ul2>^8? zhcQv|+#radLY=&GZjK=b>Pvd7oecai5(y>o@H=oIauJ%cOT1I$`r~nYJHfwvamRBO zd*UUTBvTOY9YM?!{Zg%F-WEeX$(DXJTMlJ3(Fw*kaB z22k-`uQT7#)EKz%u+b}M-sF)@UThQwd;W|GP%OB&Bto!1+ksf0oBBYa1*16Ir{-zp z8}=NeKT>5RMUtV|KYv)rbUrxk^C;3c%--k9oiQX(mKg?a54*o`di?l3M zgnz%EB`_DEYKQ|;Bk)fi^K}7~Dj5P-s!%O%^1d0h0jYJmekf{{0pWci=`3*LimxK= zxxHLg^XG*2*LLy=ZU}@kwB|H4BLaJ4M2{#)kmVL8X}~&k+{Yx8kAHZxLXQkw8U&4U z;_J%48Kp0>|AJt`q{~~Yt{DN#^$QWaf(Wt;VuTgsG~~ide{h)o9A$W%BJmCrgVsZe zY0KGe(45PeVZVR3XKp2FX0RvxjWl)CNBi=7c-D_VwBytBM+?qZf0*vR2c6#Taj(1R z7eznyUHP-3M@aF!r5h-dnHJ};GGD_&xUy*^Cu@KUT3O=d&b_R}I5ObpB<}!BMobCD z_UA3l1-zgiDI~3V;MOH6*p7pk2JI~mHE=l}aQV;=g-1Rr;Pk3(*dNZ(p1?>b^MB^( z-pt?XZ|fFc;zJitmpXE|B#8{p?jprQbYr0f;GE%D5MKEtH$*SNqid0UI#E2zXE&~j z3q1=AMeZ3vD>u1#0d1u2DMbXF1*+DMBTP3!by*P;VgbM0Igw=H@~QDBkMw@QzeIW>>bYXpR?f?aQ0yW6g^)*ItX9Jblqv+($bQ=JUMh ze(C@e`1uC(A9JQ-Gx|ak_igu$ZeESfX*jHWP9a8)-OukCok^=qb51gto8$xM?@g&k zUmlgU^tHu*G^tj(d-tI0Anj9y7E0`cGN7tH-sZ^`=+U|7mzg(Q`)C*;>@!cZeKbml}YnX6E&(sW0i>L2aJ76axa zGd)HvX?GH#9_g;+Sd?mNwj3&pP|Ur2DQHyUMAMvzsJ*8TFDiaYLg)Z}3C7^2{9F1= zMEF!X|7dhEjs7cEtidy=l1I zq$vfuPMR8Zq=?W}RBgk(=Cj)90#RxSzFs|>bNDLS;*!AYu#W9vDdC!G_-fMblAvRN zQ{_wx&WVuA9>o|6F^y(wc7PJu z0E4#-)rcP6fUR5=(@l|bF7645^&dfpH z8o368wH!8S0)Fg_VUePRo2fmd=0^ic-}sZK0tzK+vPi^0(>jKHmG?SpP{^s@(u$*=q;%#8BvC4RUH?BApf3(M#cYdH|=OT0e>PM>ePv9PzfI z0Ug$S;&%as-ri@F)X1Y}dDscodQhhd^ugcDa%dv9MIfyt3@uV0UpIf5c23ss~ZvPVLTf@$zmJye2Gpr+nKDR417+ldB}i<3G^D#++d zb)4)sfFJp1{tDm}+m{AEipY`E{}<$vpeIb|LCbn^_!BG`~I_VTot&t{=z3&|F zo1XKqvph3b%yUF~VnIwwg&h6dvcpPu%JN0e<77|Y=3zm9{Ll?K+8cO7hn~Fcuah%} zgBeNB`-aDR@>x3l<4fqj05bmvAR(uBHVT6sFX&0p`**Y7M}=C_Tr4d;j*=+*-$V2| zJyNr@zFiiK)%yn z!6}wwxPgMkJx><;uoe zGI4`govpR)^JX{1&uns@mhnnY1xb~dLfe>>1}b%xTGuzks;>vY=ji5Be|@6EcH}~$ zb!Lvs`f=k+Hp^P0s}IMOv-Ty4vfmkwnrA3QS0)v#=IT902VvyEj>RIda#xii(Tu~` z9Z|w*wF+knh34x*wbaS(Siu&A;%;EFH_JMen%3i(Uua;mg^r7qdR3)}BBp+FS(4?8 zWwTm{#GZ$qmZfjVU#xh;!y;s_&TMn;FN!KAu>xOA2X1VclC29953?_Fx!&l50%i+tOO1}?T=Lwx>;S1cxpO`(Q2tkokPXRESC-{ zI>+P@4cVh2B=x^ppT4AY;T3a4&k0B+;jll#xrvU=Lk1;(3CrxYsw(YqP43@Ir8Hjh zb~FxkP|;hsLrZDrSIi~+K9tZufrtJBlj=&94w+MHH@#WnL-+}l5HO0IXe+8q|ziAN)r$vww-ZAIHk)`fhB`%?}ZY@n$V1m9{&Zr3w-vSLo zysT+j+Ya-4>DZ~^hV+9ezZ1Gy?$Ui5@Xh1L>5G}>e?)jOjA#SSX#M~hdyGhs8%^e~ zvh1^XZFoChr-IcL@9t4IKUicH-%4W(Gif~I&qPCL8!G1d)o4&|YUr#TbbQ?U#dvaPtt*6qMM3S*M>MIiyWT+h zpR}v2Z>#mRR_1g+39UW)pLlDm2k)(**9H4pwfFawYd+a1Ew6bL&$p)I;wBqX^>iiI z_C6rYv-u=!_dNEUnN#KM26n1rFKkJ5KLfiVWUozk)yG$}X#$5T`O~D4R(M*oLE2%= zadlY;J6_xaRm3fMQ@4;qqXxbZdM0{i|Jns%gD+3F%FboXrwi$7EPYfjC9*gdrR5V@ z0h-;;-deTf=lrR8Bi}&kpX5xU8#J;i31e9S-g#^fYp3FkQe#-+2K@W&r%9c>9k^*H zROEW!HKS>;#VsJW3f0jD@NebvnW+E8Y)q!}LW3rzu)hB8Dwi!wY zvplZlO)oEa72B>AdVToXrJ;>jy|nA)p*OcyZiPcQ`bk|?)jo*0w~=FLvnwF^1g+rr zgyE52(?pV&`;(+YOB~6UUQGc>{am77x*Es@R)^fgpa@mvPw%4?H53%bDS;CkCCIcb z*ieU-G{{((|MDUi5&}v8C}4?bXV((4pDkREhuikON=ksVP|16}Hq+FVp;hlIAg75697-fMH&FM2AVy6UC%J$ET} zQc>EMu8XY^`=;#DfOvhGB`i)aoC??Lvb<$EV_K)@Zr^klsz$9_w2Z@zBT#q4;im7P%-_yA@E4Aj;y$iPcq#t zR$e>H_Va-#^6qQXY}`d3OU48C1nu$c5B;FJUbJlO8rFHIQGHRRMk*xihLW02><{J{ z^>oxtE&$IOgONm$%bv8QaGMV-ndl>*D^<1LC+T>n57e`{^H zfn&wbzDmD-!B(2S2kYeIIi%3L{J^wLRm#3fD)djnG)@U!ai*%7Z6`_7UlQAC#%FjQ za{;+U_94cm2WthYzl~knqh;D2*r3#*BjJr;%V>!IXzC`%Nlly6(xg~$vywT>#Yp|t z>z?79E)71RO>V>JACumY{;OjxaY%XU*0?*&YB`9+Gd)=f3su(qxBE|$-Xtg-gFujHVWuu`ghHq?11xbD$VLY^PY7V2b z7UuxW!IJurfI3WhJTAzTn-cU(vk{dkH+uQdk0;ze;*J|~Dv~}7uYh{Gdf-aayLxBo zm)pQpdS%Q=-8;-pN_J2AOJ|6g369W|z6JMZDr)G9zc8bP`f;v3R6k@bT`Xx-4Gpdp zpQLZ@hram8utGE0KCkSE?b)HhuM(PKx2t-J-@o7FS^gS;wzg%`*#<_=8ganUna&Gx z3?h$mx=jHR7b`l22gWJHFg`qz6?p`$0e6yN*E6}=Ufb$&0# z*-v%X>^u$O=;ZBiWENaL7^NV-5@wx^Tz;zbpkiHV-ktqYE4Wh@Jzq7 zh_D%oTQd0CF?r>upS3HxO-(!bW5T0%@IxTn{AiwZ=a~@bhfEbI@H7ojIN|sGyIa80 zrlAMY48>&v%k}b|ecj-$!p|Wk?Ui@cr33zfVHMtcEew*7swEDV&DoxfGsi`AlYnIK zT4M1-15tPRW4;iqF#kNz{~(PWSaD@q8bnhZ0*M{`g(&XfH6pzK`SQ3(q4_rhkG7}z zRNNB6Z}epF%}v>{{&mvRyfp@4v@O%ZP(0rg7w%2v9w;DC4yp_ILBUF5$g&}V(N92( zq6xf-)!zU!^e&)v+%_wseZ%HtvA^+~u&1G`Oi>66nUyf>b9!aRy$H`h%pnFUiALrp&_c6vrin63TKl;olS@N94 zVxxP;I^DP|z-zV6_zyHEQdarQ!aw*l?il7IgzraV0UD*&G~AOoa6yt;(?GzKWIRgf zBep>3V7pvRph(A{EE9R* zZqwKH9OJErEvwd$-|N?#`){MS`e&Q__srLjT_4YdAr*cWH1pN^EfBe{u*NLvaHuC{A zUmCu+un0hVo!F}U!L)YZvTxS|s4-Ixk!dV2D)dA5tf2?75Af_0nk zc&`g2F2doz3_gdY!<5Gta;$D^8U4I8;YcK0c&Xr&wUDWy;K+={kg=ox z@u{?lwi!Ec{`JyzJKr`nl3Mc4pepfz?E+;<*~kX#^@JKM8ro3@r~Uwzb^PX70pu&; zqE&ULE?$^**zwc1l)Zg~zs2+NZ8a9Rz`kt+yozhm^^>KwGY3&=WcR?+VPN7s`fUaf zJ=lU~&7gVw?B+I)`B&Jw(5bzMu{*^h;P+^8N0bZN^?^KOs^^fel6@V!#1u2v5gohY zP~~d1q=(U0=Q~$v>_{I9iHf=Y`~JHE1t=VflH z$^KE0_TO+X9#@2F*ag5)obzYQ{(B-__U^4K7P|{+8KsuGor&Rbam2 zLV0&AfvZo80xu=xq<|s2H>XYq$+u%X7#_J{J3`zv#-DN#55tQzAMZXKnBFkOZg~_9 zHs^uF<3RBjy#jJLA|Y&PQ?~I33E&T@lpWYCYtig(K3ZWth%Gdx+x{!|fhUg)E4lde zXP3VN&$CrpAR7eb^{#Kvc|FkGeY-G!j_l)2R*vjT%;_2jyN?)0v382mq}3GnRg6_o z6pU)~$jf;edsTKpdz{C;d^&0UEXMeg4l$V{;T=cMrz4R12J4{$UHNX!lA#Y$2CA5kRmH(w!*X)VeMZ zv2B2o!40%6u<{A?IN2`k?~&*m2ZnBZA;2T~cA#1TA-{W@6JE(;hfDX==er*AOyKsE&X z=O}A%jN}2-d}=zXzl)j7wX$}g)YQr%+HUL;d0us3lPsLRlpzzcgR!QvdEvgCMV7zF zvRkm=HYEP9M47W70}?cksGDKzA8+h(8C|Z=m985+7L=dN=FfSmcI?yqIaM`enJEO1 z8k>VRWW~0Um=i%-=yV(obImK}@C6>Nl>Dj%IWgo{qFK|dqsW-x#-*Eq6M>7IPNwcH z1izxM7Vv#1P5WV&)M#K?Z_@}ZFrxEDMwi(*L91yaS2L5qYN=sQ(EG0y*wQ8->kTv0 zvVrP07MP$|6`7A=0cPS~4b;Y{N={bbe?Uos*2YIKmVVf0Ez81vgwvQaj*cbVENRv( ziHb(-H^84eMC>O_@4#bi7SpBu3bcW>Eq3F|&SJ+%!eoH`0IF{u_=-d3>mRXavu8G` zk8f34j~x;JQ9`!zGMKr-&1aSQaCRvyC;*j`#^76q2`5U~7~H(od(eWob23ZM`+5ke zHLX`7_KfMX@8&4B?cFox9AU@gf zD5Qacp+4C(B5>S4(XKcwk48nRHa^g)St>g|p-FW(6l3@Yj4D|%44b?oJO0pt_nuDrk{dgfiLe)q^?k$k!~Gd zHYP%P0+M^vwVZ0UMU%rdf|Gw$7;dS5IHj`fNtb_REUW(R-k-?1spZ-Jw0L*Alx@@A zv~jwWpiFU3Qj(ExgJ-f&gVU8i|F|6`I@P&a54yu>PbQipC2to|;={&3ixPRQ1|Cc* z5b1AkRpRKpvS#5Z(5hI4qe9*E@we-HN&v1%jTeQFU`w1n(34Yk#dSk?lRXrcr{TaZ_>b{@E`m7ho6d~{??FzKg z$8WR0og4v|>GL|z_EiNutgM7h7XdvzGK4O_j%A&szjcSdCf0X3>UP)fJCiA=7yk&} zfxq;JqA0kmixIxhqF2c!g93tEF3*96iLI}DLJ!ne^G0u^llx6%D{NM$AI~3pfgwYN zRsoYo#;ia3^62*TG}8xn_&66{KCIA^AxrVtO&OdWlPO;?L|UZ7#Tq9AUZdc&<|o1q zkR)hq2a)i@l|Jgm)ce}D4!Y#Za>MB-uCS?MI%9)4f$J9p`y(NV_=J5)fcjhAQ}Z&y*Be+4;Kxanjsk36Uh9+jVpb!*xL$k@)+6ZBAQ?-gm>y1 z-Ton#Twn5s1;f~jh(abcrOO)#ef2$uq=g2UmRq8~_zfszHe-`rv3{Q`JoC#Flt5Gu zW7DZBjd(*T6zC0^qLq7RXS_c*@GCvx8|?NzdR|*Qt~W`SAk>O8wlK8ZbLd{FGPJ<> zR$xF>kuB^x57U8(9#IaGk;7UF{Ke^u@jfWy4@9F~yh;Y_U{NsVcqr9^(USMeq8Sn)c1 zR2(2{qA)_jW(qsXQL&W?#9|6SEA6QH@#8Mp0cs_4mlgpG>rPT|O=%6`xe@-l+Ms48 z6w!ctK{{>u!q9kG*R)ODNE$KPAGs;0JVZKc3n6$Y#RMk8Si3v7U91O`B z)6X?qmQi8b>z-y(rV2YFDR!_^WfjW>t9t%9g5`!U+85_wHLNaW^Vy?|gzPTO`E+U? z*$L}_Z>MYjY*MUZ_^<|3r-xUj{CJ2jh-o3+5pCqU%{3xhd!1m)Jl1Sw)qgPStch@; zi@bx5!3462`r$0hRS+^wz1q3{x*_Zd@mb-#1e#5;^k;9gaT1~7Ms6LKrV@R!y_583 zsWJ-A4r*FPmyAGaW;@#hy||GGb1E`ZiTI9JRl`9k48ME^UcP{hQfuXb9Q|6~Z(>7B zVwIl}2c1Tf4Q3MjA5Nwi4VNuLeMA;6RvOuu#eF^E z-iB;br-FWV#z5`<;ytP|)GQ@5mRN7?A-0+#%ZCsWr3&vHQltuQMtuE58#%%A@2@Y| zXf3Zn#uD+tbNX%rzOmM((h99z8M8SUW{9D+V{p5I;31A~A2N$ssBng;aCuFjmW`;y zf1RK*s$9F)iKZfW`qPgQ+4_E%P62~niitR|ZJpx#{=nGX`O2wCVcGMsvqJsU8JN~6 zL!NZK;YB+gd>#}j!}tx_LX}iU9Yf^mBL1RVugHMRD-}4(VZT;WEh!APZYSx}U^0>d z@4LCW}_2rA90< z?Q_Lw24#fetJAAM>Hca{r$_U*P>Z}M_<0eEMh2n=$#KmVG82bm&c<-Kj!6B)!Afq3 z_{TKuiWQ3r8TM~C!p!6{GA;wc6PM|ZN90wzgRWtoOv-*ZztfZ{)KEPROC2cgT8iT_4wU~Od4x91UZjNqZy$)k0j4xvN~`OVBm zte)HHqQ=id8S6wYw0Vch@0mrHe|l&_DtKdJM^F zI3Us&=oj2zftGAhZfte=v{vPbj3-zj8^#We=J8jQzqRt=y{*udf?D=M7vWt3pVako zr&g(^hJbBqPK%qYxlsz~eUI6dmsjd~aBq9RqL+#Lue`QB83bJ1FTR%DI3w*l&|UVy zmKOvow_~P-Ts(xWWC)VDU1E>U(LeikqQk05mH9iy&{(>e(zWSX#+=L`-O}>COJ$L( z52l0h-spxgO>!+Nq?(~^8D|q-x_uTE96djpy}lO=(SNaIhH_Z8jG=w|t67{~Qv=`I zclZ*_K{uQnE6K4d(N9z0S!-tJBvxQ(S1l(J6Sq2Xm-;0QNVdlv{2}OdmnqnNBzhkm zIp45!e8DRXXX1G4UfrJt%@p7W=M@R{d?^dV6NizAD5p z_2rc{&F31)9|PB(M|_`rfFJp_xk;~sLsw!B>i6kOa-*O5YVB)CCkkg09puU4icEp@BTC5=)*(&^%vBUgO$B&itEZ z0cvJW)<;4uWzzY~X2T%ef`9J{iHr0z&~NpEt+-fR zTd2=W)u}wiyST;pALs^P)uyp+8#ixbjE0PL15i#lr(l9sVM!O(^~?VYdq9N03HCE^ zmp03g6Sm^|LYnSMtHhfwLV;L>i#ZM^6Yoa`wgKFard=IdDrm zjrS(sNGDA!b^JFrK^0o;r{O(|u56unv8as(ld-dy-o3{7%n|W0V4AbYn3BWE7=uw_ z=}KN8 zO9&+U=60Tp+Z(t<^n40E90v)lm7}dAHEnDV*Vf=?tm5iDJC8Qf;LP!!)1)6291Fk_ z_3r8Q;<~ZfYF%8Me{M-GZh0jc#dWWUw)dI4aZud#O=RC=Ig6qgQnCy{jkm7;j7+aYB7e#omwjSnv(@(<8c;l*-(gP zssMNin%>W3hg(v)-RRs-OeR*Jf>Asxv6>}+G3}DTu#VeDbU_Tqpc;x59Iegt{T1*G z1ixAr!wy`8=v5dtOL9H@dKf+-=R#C(GB}T)i@1zC-f8Fkg2f!Pq1VoROrJm(r28(T z7aXWFp;;~5;>3idpkD=N=NC{iq?^Qq^4KSy;RI$<5-edU{~X&T?qHBu(@6MI$g*u5 zq2R*FcJPUG>ighS&y(=Tb}UoAsHURnJBoMDdtY|e$OEiA?%MVYsd;dFQn%y4z9?fk zE-0>^^KJj9)oe8o^c;+?5PLSuMz*Ocu&h|cV~Lncvt$pvBzi8Nim4z^!EK{aq{Bjn zJ`A^5c9-Gd( z^64VS3lS3N27Cfv7CUz|lYHB24ylHSpxwbg-45#M1|v&Tr39ZQb!hvbdLRJRO?vtw3{X^EsNIH=9I zY#O7YmT3-@ z&BC_BppS#u{kg>-Nw*KQF5w90Q-$5^$)+9;Lc>U@FW>zVJ3kl2ksOgSPxZH+MWKKCm=r8Ro61Vtk6)%{o|qmm~%Dbq=~#Y{;w>5muSLu2*m6x>~ZB>4|mYc%OPnj#jmZj^kj z9iel1LBV0jBe0zu#v`V^A7E&}D49PtDjNrcg_@xAYj!6w9qP&IM2xPH_9gh11Q;cD zT+amaF)p#?2+M$23|lMr#Bv&)`7ecrq{9f>Ftk@Ox`!zr@ua^4&}}x|ot-Q2<g zp@heFw%-AjY)Su*f=jv}Qv?hDr`2ihzuT%EZQl*ATxxCY4Tp>3>Q$EiJEy}WWg83% z#Sda4IbU*Q_$O;@K~Bf-q!ST@KKM_pG79e4%qrP3KU-nh&BOrI%Bm$(?4=) z4q@Z8T{w*LrnfhJ!^Q$hC-VIa~t86(2x?f|Br7a1k{ZwA@1L}f<sV-<-;@hm56 z^o-dXIh3H)xOZ4T`_V|^<9YStDA87wBx7j-yKqH(N2?u34q)|Y*Ag&L^l63fsI>#7 z9en$1A$G|rXhB}xy1NO39efM;H1G*dbjb{=sqB3YJ-&v29fO%z20Vt6X)e5gU}_J{zUfMS>DIza`5GDWtxu6L3Qq9Psi( z4(8ngb<%R3oTBkMLvUod9iO(^RU~1wyOK&*#F9(#R3=3#e^6vyid3FVk(88k{jNe% zE)k-mqa*xNB4+-UMO)jklxN4xb;>)Ql>2vMAK_4pZ(Z1wc=LISZy4C3w;qXf)yH5% zcVJ-~XyrQj*_84ys6FC)K07MScJYOrEY-Y$saOUm*hX(}#MTTztyUErfTY{(X0>UN z5%!H1aN^r=%qP_$2&g<2oSF9~r;Y$CRxpk^G`?`L?Lyyr=Nr*`!h1s~NX{`i(+69R zeMh%3&L^wwDQzQT1ynh#rTth_Aq9QcX_!tYJ% z@v9Pu!FGpujB|v8=2L`ShS>E55hh3xUvN~^Zeh|*_VKq>2>f)>L?-Y_>*q4{*&PBo zw)3j`YSUfug2_0>x(+8CICL2}N>yp+y{c1YJ1bgXEfQ2e_ze{zGmOM*cOg>_;2jk8#)~tcMnr?4WoQY-Kr9HQgApl^3BD1 zqWN%O$J@S|BYu4kq9$;trGT7>=T!s>%aj7LU`ZA=ld5cGQ6S=TBkaiAvX-oN`bGlo z2_2lrvCZR7ul}ifzOMDG#{_cMRXz}0WL?$k<@wq7a@A3Wd+E9=*UM|WXkC?poQZWc zz8Sse8P6PXejn6HU)q*QAjd?#?DdG9NO6l5w}CLF3u(Mp!t8G!+)I22Zp@~XX8~Ek zS}3)du_rr4)>We3t8t5cm`33oaWNQJ5It- z6DucQCt^fGn1VYx?qB+SS}evx*V4`)An42{yR^@vab=M;o0qKqSdqw7cXM&$ zFbNJbYCpK0GH?eu>{1bpzmXTbV6en&oNA8xc4+i-WmN{^yFi+{V**w17_o(yk72-&#BWwe)Rp>$3%cBLE4R+PO966?@AD$E5>n1*1f!_QvY z@kTs_n3tsaloXH-&*Cp~UXUYG--O}A{%kxV2x{e7C7OiV$WS$}_4F7Ql%Ri7W5SZe z+m2gqY0Y{KuVj-<`tEhPMfqeWx3VCp7;F&Fy?*b~UsyY{lsKbc>ORuM_}aWab|j!F zL@VedT+QYmstFacsXMH5lg+>4i5Yzl|SN6DKM{|4=Ij-LwmLlIo0l zd4nv#s3y zN8FC|dqM>-1sI7=1h1fa4mPgDP5!c3`?9(F1tlaEoNRk(DYan;gOk&IbF_J`8h5D6 z)aI{rG<+83mD_ELcMBD4b)s!_rbIcJdb!d(Ex%_kPvvpLFV~jc7HkF4u0lS)6qJh5Vpg? zK&p!W5bV6VM5Qgzgk}4a;=a@BwNF1YmxWgdkj0U&kl3#7G}@mIBZQWDqVu;jY95ig z#-wU2#)F^yqqgo#^G~*Du#Gp(Rx_A>H8H`FStLqb6mkSa}km{yV5`!M)qKpKzVA!2&dU9YmXSeQiGCN>ezs zM~$k|DA6SKu8tIScx^4{$s6RC{*btyVWnW0zMITcv8bu^LF7Z^HJVNlYAT;g^OhvY7{bZNBomx{=$X> zTeBh8d?sD$op(#LkxUMaL`K#1B7=n`M1S{yer0VfaCL_wqc$JrAcx0|ah#R9xV!mA zz{Y(t&D)l&fcd7~ZoJb=z@s%m@a7A70VXo1A4fyNR0Lt%N%zmdg-O_?Zoq~KIX z6H~8_BK=TBC|HOV#d>)>7IDA=@V*)xxl1^B(RdH6kS$Qz209lWmHzB^D?c)l%)%gC z1^+vEHLO-qs;2tBmIPftYtsK?@D(~?rZ*qXf*)`zijL0bOuswrXRlx<3NEv+O8MC; zI2(n`RxB%UlUP@AtrEfEV`|+Vu~DzxJgJw{mr-(;BzgBy>Kw)%F%$}zvtk6hT#d22 z#}*^T-5--Q^-RdbHl8PrJ|ja92O{s7so68?i(wgy3$VY+g2VZPQ9AKWe>OA+7Y4y4 zHJC_Nl5jC^7S8!Hr}x3Tlw8(fX0w*6!x-4n(V=K=|lqoWfIGq-QOXjN3|tZ(k~u(wmeW9Ho{p3wq({f1ZE6fhqo{gqr|s2j%}GM1$U0Nu8Ln0uf|L2 z`nMdW17d-RDw^wn2Vum7=qlz&>doSaaOE9zut#1Fx)V&>$<5gad2~#`e1=K4n#xh!Po3(V-3zHTEtL;O68}W&M;R(RsUEF$m|d*&|v1{=7D3zPXp4#ME3g}fmreQL1O`SMUD!H)8~4UqtyO8?uYX3 zyRgAIMaK7n@GJZVD=Zr78(2^|+hVS5+oE@}X|8R=8(^h=VY6A7j&-WpAC4HO}@d1|&WuQK?}rKMv*O1-w?Y<5-&jir-5 zK5O&{dg&)NXyT{wsqG4Zj3*(JPT$=5G;J^U0usxE3X1e5qteZa5cq#T)F3?;OFQ zekV6QbJAsPl`GzWD{k%Bke61uu6WIN#l5SUe~xeVu^G-WVh#0~nPu*}+@<8X$7*_- zIEV$xs=gm5Ft43+_`cCOJ+>R>*fm(tFm+|S_`GdPYyC^HZPx7l)d;47W68VnEejy~w5Jf)2dUtmg}7sPVM!iwqqCne z$`ZF1rmR2svXp%*gpFSSZsZ$UTyW$c+GVQ8;%YFAc`H}viW;AKVV~2Wd^4Y}YYqLi z&34$)@zJ@N!D5BqP4DgyAy9Dli*3oRBn#M1&gTNsSb=x6h)??uh=dAGxReu^*&1Y* zOt!Lp<*)UzB*$3^jb%O)9KWURSTy?)YRL7$y?j6&;4nskBO?Hy1^f$(PfP+7l=>Fz zDxMj`-r-1Y5b`xU10CW?VNj?Am)mpzC=<=l_OB>y{m_11uPN8I3xKJMWQF!yL#b7TIgv zKq<&@rrgH*j*wuZ6D*9v`5Uiqfwn8z-sy#mIa`@H#={HF&*hvOENJW|kgeJujW;>V z?v?Me5jt2*n&I8z=9L{{;Ly4aPDZR}^DOHu8B^1ZUwUOceSi?e_`|*8|=~uASz0AsS5)ow(`lMsI?eHw zo?F)#um$O`1Z3VMWEc6+yYpX1Fjd*wF+sY&LoPLd4a30*0kH?Za8fEov!&w>*{I!k z&(|L7h6$9k3pdU})GbEl3n#PU&Vs$VBs^n;E)HzA z>eO9y!UpOn_heQ~+?ertoga@cqyQ+Fk1qd2fg2n@9)}B)tgn_A(W6EqL|ruos^E6l zhsLlhzM$aN2s1=!%ZeV{BctG88eS3udUwRY8_o?nWU<-BIj!x)1iddz$nuY?ZIsDo zqMFq4E5>t%D_;-fGoABxne}3+EOREFf{W3x7zzLThd56#qbay%n~eSiP*}yQNIRtd zI73@SUVq*ZX1KK<6A>p<6i?*{VFiWuG=^xmp2QDeh>G6qU^+HNOSi-p&S`9NPGe&y ze%iQ3|En)w>YK=Ew06AIORKDAT+ryB(ELOD&opX99f);4<88Y^zpV-cV|{fCD`|!^9YVj z)4nRp4H^4q>r%h+xU;uJ8w{dL5%X3Vhc#6ihBnp{*3ixX+xbOz$i5+=u_9W zQt+av-QB$zxF|3rF*7@K*Aqn*Wz~4XUD>Lt0r_ zJ~}?DpUD3CS_gTem7UX$?xe(7LdOD4=Z&VJJlYkfkulzVl<72qGl|vbn z63u2!d<7oLmaC+~8)r?)VI?nOpOlMvAA8sZTcMIThgI8&_ra~QRFc1E*7Wwwj#1x^ zkN-qjSfYiL$eXhEWZit{@1`rAQk&|s+8Ki+$(^Q8t#{l!Y4z$yUGf9lEy7)CLXmH% zW<(eBimMIG?`nj=npqAy!T4=y@d>(>H6v>vc7Dj&6#g`0wk3>81(&u4-;(paX#6N< zLnd-gadS-^e8ab*`XNt7G0urCO`JUBSHUI%_-q zh*nw5>zD3mHoTK4gw^-DD+n@k2Mb(?<-&{G!6DK902&3#qIq&+nQ<=L!8`4V*NEg( zj>p0))3b>5s@m%CtG$y+xO*Bz;z(w|g!b|8do%7}I^Ef3G zT$&)ccp{H}!4%!cFBMLcL;bQ4Car=K!QeRfV%8t=v5QeMWkW+ZP@AzKd9@G}9A=@0 zoeXJA3n3Cf^VuSfR^|gq3l}sSS@*8(LOrZdDGje3 zs}yOKrBZf1mD2JLx8?J8gvXUEW*ZES(PArrt1FPzbSG*g4Do3aU0Itr8^;p?1zg#Y_ z2>-U&#Z2(;4zijKmh*25E@q5>rBxRHzV-Rnb20z&lQ}^MQ;aSpMnr1rFF&E#5+f&W z-6+nZ)W{w9j-ZwEA(KW=(zugW67;e)F=p*lqsnCr*!>cV1ICRfdB@~|UPVkL%@%Ka z&DPI7nR96aQXX3GR4PuB`6wE3MaFEx8l;GmQ|q&QmcDv)F*&K7GJ%lS3%? zxB)NclD)!Q!d^u}h03#nOW;++RH!^zT(a+TN!+U_fOHfTege|>djRpIry$bz3nSgx zU5w`vNH@C+uP#A4l6)Gm3vZ87Wd&du*Y&{i=?LkV_y+F7;Rm+)T`n42gy=ZdCjHLE z1r+UvAFAwl@Y$h2bS#-abD2AY?A`IF8b^dqI1Z z-5Xl-PTL)e3T^w}V=ZI{$r*e)bX)M|7QGAkgixC#dZX=EML3eG2qZ>)hQ(#4#&+%$ zTE+Y)8V;Xg<8wU^95;j@SXrOpluy)fRYSvWf3e_uRy;-tE|KwuDKuio066G*zqq?! zP#?C{3K((E&sCE%%36})9C=Qt;eCVjr&!KZ)R8;Ir-xSzt5#prwuh-Bxsf9XudZ;K zdMZhZ#v%x{PQGdJ2`#?V=i3}mKqk7qhTgN2dRvI@hU(cygwsas3gwvSO!_`9*IkwGvZ63HkDg$!#zKK26&afkV`{2^hN|Y+(PcEa-(-%euRN6!r}X%zOz+-w@F-3 z#lLp&uYFpn>y@p;x-8jSB*&=VD4|#vOmk_=b3RUq0dKMhWvi>a3a-)Zl8!T?>t1ux zsxVoW2{hzAtUGKMg5i}~S5ZN~d)z`X59tkLSJed}tnK7u&Tt`jZphn#W%6OUUDl2h z?Op8C!!#Qrnz$a1HIfWt+b*2UF+kfdGlnyc$(2tCrp@)~;>lBT+A>Q#kBzf&k1v?o z4N;5{kK@#WGX2&RJ?KQE0Dx?%XB+DLQ}^Oimn`+4%SykK`m~kli@jHw{!^y#%la^O zQF3`VUt5r(=%BWnr)aa;om>t_Yd^DFm}jO_SA`~IHy$#suQO+;`+i^ zH$!ctMAHoUxMape(o|ebGMRpFgv1PEq{SKtwKE>Flssk6JP>94xjMnR zvEt>+u#-JEMQQdJ4FK+6vy#Ncd5OogNWj zk`R#tVWmi`J6)2k?t!grn=WqrEoIvjznWO&aBWKiAkNGJ10vnqtJ05~tK=@Ls3uud z-9=>VwC$1e>!?p(pqNhOjrR0Fml)!p9jgD}@=KnY zC^W8XtKcvwjZB!-v62E~(kiaSGdMTLof5@aMEX6dt>G!yz{^xKm`E%LEuGR1|49f6 zp#0o6FyDF8j{AGRKoAlyzn6-953|7>=)hH$8}m?x2gF=Xr@u17t!ya|12GM+85br1OZp(magkUc&26Re7 zmVjE_ehauuKswavXk|GhoW@bty~!&B&ss})dtnOVS7II2k4$mEQ~sDxJst%c8{!G1OTK8prRY@#ezVYA^%73N})o(j`u ztirfDV{tX4&{E3C*FplakP=dGNnNz25>jYMRkW@SQgBICWcB0vI0&^`m`#Bwv?a1U zEu%k-hgbGoOn)f2Wol$C{n2jzR{G;na?&pZi~@ zBbFU8`B}%|^f65qRS^-XAUppdBr_Z(Po}{&^c%P)oJ{X=uxk`eHbapKXY)NGj-z8a zqx~6qIt;=s)`~kNL;8ei^Ud$C=nyXc1Srb71?Yb+I0)AC; zUBicXeVPpv`||II_bQmCP^sV)qYme`>^>|BxCnFb7dL%A0&>+Kv4dljkO&YHK?!O=U5)5jsBA9FpB44-?^btg zhgbTjbs=RU+*M-Ul1FonxL@XK^=w%Q0IrQrE57g^*rq#%7uuy5DV!U!!MhV2$MTI^ z?$QniF-Ic=%6_BZsV~@>vU7ev!9LhRs%S(A|2VR^H}GpWl-s(1Sm{uTRe86XZzk?D zcW)dW<(ac7+(j6+>4!O8CO`pr1p&joKQQ4 z`uxFi>-$_Eh`l5O_k)&I9fy~w<- z=}%Sw8qjMnYCN3hE|oCL04Ac~>oZS;NHFE|a-flpnWPOn6(dyFCsewn09`9MsgCCe zvW-2d0HuV<-kIr|$LNeDnwoixA6R3UyJf1qxQ$4bTD8jF!AW;D>COv*CVNkHo3IKMT&8iDdDhv)i#*HPMZ0VbPWMzELy^bDQT;R0 z4`YSQ4=|%!SR#D&{01x;UVR?Djkft~UjCJdbRxWYbRf4%NowLIDj?jFHxukC5ZgAe zd%l?C$=D(7&(Vp|WN4Pe1G7JdXldSsh?Fwh6&%|U8-VwwCfj^MiQIGMycHJg#^>X& zU#T_ju}UE1-YRxL#AQm1E zqe;9ioVu5xWudM_KQ+^*nQAoIxe|@L^~Kk7uN7RTA}uCgOu991U8_6}{3Pja{KmDy zbtA}Nf|0g=v~z@i#7JvZ4l4(h#!@2<)jXnhFw(SDj*;e-j;L1r>vX?dBzVp*CB#KR zar-v=C)hZTO8%Zp>g3NCCva(L@_kQxD7XS_nr6f=7fBXWXxVWdp9AMh zS+Ghh_@!*X$9pP|JElFlNh0cM0CTzMfX!0vc=Yg9Vq&bfzp@)ub;s0G9+8 zTjMCS2V&dH^fP1>zwhFA(1RBkbfL*S3J(6^!!)}0F&hLf25CF1o~+dN1qO)C==c1c zLfcZC@;!<}hHwg}y!AX3qv|cshvn=zFwW`VK z*$YIS3PNE9jDrdp+3X4=L-dQ^wttVuXH_lZ! zSkXyGUiBFHf8mWoypgp(2Jbgag(SBw@fP1MyBLhC9JIQr2z*Q)KeC?8gWf^31;X{f;%B4 ziUw*p*a#m7a54zFJo;|CetdR(_Q6QOM#bXwrj42Vov76-?GgQ|_jd zj*bj>Y(v2dp5I?xji`<8vq;ql(gBO^f9>jxs^&Dx(f7R{eJjUUNO;~U%=lr&}=XruX4fURXh zeA9(NWCvk2B!57txzEKcqw$%pO7*1YiC!c3ZABLzPz49rE|CXK=#S|{+-Yu<<0~Xr zP#c{)wRWt>ucX~n>OC*+XOq6j0~%uk%dVT>HM{(HH z2J(at;A_NK#fqbI-!5My3z7kVLKL4S9(`w}?as47S5Ex%zrjYcMVhkJI@=y{QmVVy z_B9p(d_(ME9H_>TLc5gY>pT-WLm6jlVFg!S8E0zYJT29%eO|vn5n0n(LsHaGgKe~n z*sfH!-8%`+Y1}h}0pdGW-8RC_LXTUPMV+)Sk}0b;CZmu(=e9_go@3a&(;gk45$J`% zIuW18WZV=%B5d~Vm)+q>td@;F@PY!|J9NRF@EeJB4DXM4A@U)`%T zS2)|KS7PnpY-_6=XWJ`;Sgm*^OW3i1H4qiL>?dSF`knGMNw__<{TY9pw%f10T1ATa z<)xuwwTjXwr7T7lEG&a2Rp-+A7H{?Com6on|E+38UQ=*TDG5@R>7uZk7tz_9SQjN=+aKAC zzSHaWFtK%?%A=OiCag5yXIE5S$}!s-$2HedXM4lfNlau%fQ4w2y9lD}ulM32h=UM$ zz&Nvmc~8Cpn+lGVA1kHZjCZ|bK1$E`?4(77_S$4f*q1CFF zIk#vxny~5WCt2HiE*W5<*4@-}s%O;0v{c$G+tDhPG5s>oJUibITY{_YH5y z;&Vx^`J~{yhX$aum7(B)90!?uMxfk!eod$YUr z1to2u<~;;^kX}zWTf=gK`8AC#BJ7sHc4F?&$ga z9*F6*zie|pJPN@{Z}Q%J!G{%MUDLY?F7PjD)dL%Rp|Chk*y%8z2Rkd`?s%Vh)%vmV zqk?OF3@mL3P32{JfqIlb<$e6QR5>ZQTph*A2_eSV{jwS_PM^E8$(D!#zr~`#16}WN z)&5fS7q>S?eh7Ea;+w4Vm_Vn%tYAElO>nD>BY{Nit=+S1wr*2hoo!DmZ7H>x>U>QH9`M{`EV67^`2MR9p7-n%kSU1_oT`p&95-xy2j-wpB zf_2NRU>7_l|K?OkxqdwagV=I9)x=9ti=@-FT#@jACCM+B?nT>5z%@Lw6IEKBwnzK; z7ed7id`W-P8q#SieQWP+aG0Yf{n*=7bs+2`U!*CYAi08DoAPmz+agzr@R;~|kFy$$ z@ZL#$iCxeqpyK24hmUVg&Oh6MXfL-G!=D>B==g~#T(Y4n(hj$JX?PMHv6<~iso+49 zLd`e%-_#$&>9jG3v*~0@2cqB*V9}VE`{-&@C%V9x)J{yXf+?uNN?=3jAI=A}(Ir$S zqW*|j^qu}MZnUnjZIm~R)TN(9dHbYoQ?#r-*%_Q|M;6MCvu&!C8rdn!%i2>zuN^*W zs~p?Lt88Dbdf9e4Yg;o6?}7_fTm@D(7bRM2WouqE<4c=Y6S?r(mSVqunl0i`%3)9c z#D2yNi+%yLy?OPgaVFTAx8#h_L z1m+vK5l`5{k!Fpxc*58-%^GX*go4Xpjff`-GQ*m-?n-80RT^{_)4NrCARJ&koyiCZ zU5YAv2vla;z6_SFulw}l}&p3-O7lCA+8T%x@fz_kmBvp-qdpcV&KPj}QbCs}@ zg3IBm#KGMHJl5!}$zrQk%%WF((CTF?CeE+hin;nC7;5OXlNB@bA{d>ocgsh$>Tj7R zMMPMz#A2BtBH1#KwOXbZOJQ#XS7@V0PFwHMLI zH%xJb>b&9$Xa-j#6=#VBRNgh)BF!!(`9!szg3GhBN^*!o%QLgeGKirr$IN;fgRHOh zmY&KfddCiFps3b|cU>yk{3}l7RIy`e?d&79%F%iUp4O}RJCnyy7?V;on6LX6vWNaRz9ki3dK*`)EYucIzOgr(Rw zMO&N*%doG|ga)5nz7SS?DC^C5+K}kc9A&MDr`fNAcF#m5#IM47zEF6W*SVEp|7DoB z1@n0^|D32_3+;GTcn5ryX_0lZrsWpof3i;Q;2i2I@1Q2-7UX|eC$&}1I{D6DC%wHw zM$~79Z0A8FV`?j?ybr2mZ%5y61=aUlTr~PBE1@=UQms3aRO+c%eibKn zbc!aKq_a!JV0XD~T07EDlYory-%)+zjogHb*HT!{mQ;TrJh+i1{klE$Ld%YVON*Z* zwsgv+N+>i(!a~W=pqGiMiDforIRmEGiHKF|@ea(lnX<(aQ_`d;M%hB>&t3H;XQd?i zV~97^Rto6WY8h=pikZj9|c$TppQG@ zli+$AU1{WJ9}Y6^Smd7(DswnU!QCu5BUI*akb+|>7CWJ{glb(+6b8!<3MG&33AqAlm?G2 z*hQhS`MHof?S5kB$E?8RG;+Jth@YIJ~ zZ>Kj}+vOK}$uN{ODFbY2yg9vSZ2aXXsQ1yO{Pfx=jveXv{k+Y?55#rb|M+{4-|x+D zu;OUxV7bCkPF#Xu*xw9;IBbQ+h1$t;W2IKVI0Pr%qcV!zq<5^&7Oi@AEpql?Z4r;g zJSVqHLY{)2>h_{X!{veY*oh<7={=%GaC*;C!Da1D+n!?+TZ~v@OKv<0t$NMlPOtu{ zdrp4~x0HOGQ4uGvZ6ym)Pf~dD5QJji2!C%$_*DWOIJghXrZDLcKBPlrMVz%THvpF0l8hvz2|& zG^Kn2?4v9hL}-EiQ@a-gg~oa9@WK}hg}-3(yM z3At8~0x}41Y+Wggwq5@66RPRh4xDhwCcY-H_%fy+E zGu9F(`-1L-i1NieuT6G4roj5MMWkODf3$4#0?r0d(gM!4>=fJ&HLma>lYF1D^%NJ9 z{+~4QR=E2yG-ZNrAoiXK*uZ6(kq*mQ5bK#B6UnSEh11+V_j; zEn!wlgqfL<(jKNAQc5J-a9wakPZ7Mha*G*q5f<1=rk;^h#uYk6@V1Aec@IM*&+~_> z5hS{nMyaCU$`L19GvHeVSDaF!8II4otu_g6?+XvG*i(7jsSO9ZWtXKL3Wr$_c*Bka zoF5I6w03IE#)=KQ18mq?I}VaatE6^lYT@KaJ-qXxB=NNC=p-n$iqXoH18yh9jgTBc z0fDyUZ;#V-cbOq5T0q7ASluuDnEXM%zWDgd7Bq-K1N)=oH|eM=T(iP2We;G4&EjLP zYaTpwhiCi5jv~WNgUfSw)1MQRF%1Q!#zX^&+ZEm38P&d+nYVS%Dc{)&$yAYF5G!5^ zi-ei_LBT5p=jvYZy_Ou1<)K7lxcnxKU(NH%T49^tCOf-j4exM~3>FGo;J*l`cH1Yt zX6vM0w)AyWf`&_V&*7jfP!e!>HR{cVDB<1cC%UU)_b2itsZ(R^F&ABT>ec$hOPp=#n%>e zEzJhTi3Cu2+?9Lqn&bNzwNWRVH*vu`p>rxv;NY}Ktq8y8e7a3$$E4O4b5}JH+4Tid>b>LLAu5w ztuLuD7gG`|wZrH3)3rmM84w$`y9*aFs2F zF=7nu!`bL7y`y3p!BiEZ;Fc?e)LQM4Hm-w=TG^_|(?QTEn*mpf7t1rW(|gJ zwo*2!W2I4q_+pRSy_L*sQxl#e$9+d?J(XJNVH*YUb;zW3He&R9y&i@QT%V67=kRnE zf+LOX>uSgSPf*#OuJ$!YhRSwIW{Jx7m9>Ift+Q9M0)j+kAGc`@dL*}G3x^`!Y00re z`k$-IeQxOS49`(M${RR^v!gwyH}N0SQH{QlQN&2daDzX)(Xx~t<}S+ z#)%RmQD24U4Yz6tPbCs^9gae5y>pN#L9aKwwsqFFjkDgfwr$(CZQHhO+qP|czkQy2 z-}~2BHC0nnJ=2*^(w&(k{YwIW9d9g4z17sY=?mG)o`QQ5);dw zC|-aUmytB48DmJlQIVGi8)?&}{mGQC$n)?~7ibUEg)>f3#Mr|UbkQQ`$Pa+0Ne5wg zrs|S#NOu)R@Q{;z2_!ZWNGKvT|j8h8)3raZLu-(d_~Qrx=Y5FoY${^DJvP%>noN zxx!po<}uaO0CCWKu?g}}$R|uPUj2n;?PK3fWb)IIZ9+oKagPB;!A{IQ(+L&rp-xFh z6BMXNqe5+I1ES(RuJomZQnSB|gy#?P4Nl78soLzc1CrF(3Em?NX9YNA3|L!9?G5LR zXPkqDRXEEMR!MrK*_zDJ`*LTmMrD@tdS-bpVkWf1F5J{QnF0+sj>?sN+n&2P@{1-e7PX!Lx zVm!}bak%e0@ft{Q7y_RO(3S*AJKXkc2;Y-mhzE5vAa()9B%j=mKCodVN-%4qqWS(Y zfl;#ldM(|f|DHQM4cmShXcRifBJ~ztSLb9mpM|U`1_Of1o z0@T45yRrh%R|fzR)^{TMgzDzIT5PPyC|S)HziX})sXiE1ONG@pDwJFddSgy^a!3u3 zbW{ViKvnb;s2k`bDa1fq5~0H&c~^Waz1mM%=)_5MIk40ibC0RH*lma<(LfVzY7bl& zeozON-t)zbE!~Wac0>W019vs$R}jcysn^U^O|j+#TOsn5^-7(T(KubPgU3hBDzyXX z3Ykovc|&6Nu|Qv_<<+MUKAM6OyFE;xzBmdU>ChJ3@)N6dQBjNISv+zGCGRM&V~LRn zvTi8F)EO}LKjM-54)mvtUU^K+`qK*?+;EHWL|otwLdY1s5GFkLb+QMato__^t7XPs zp&h)$aNba=WvX#IE!jcao`|#QIAFP=PYx7JU(4h!0_~cV59LsQkUuCFJqNtZ%2Ybm9N>T6m0+IIQOXa)1DIhjPdtC=?PW87>U)N z(Dp65-k>%$>gFc6OYPO=M=)o5nM~v>bN+_VI&eNulTv8K11n{ds~YBCA5FQK_Sk7)csXMkEkGh6^z!JDgQ1 zX3*0;$~GiR(`?echEOt&@pw2s@tt)YHn@>!@FEEtBIv>9hd zKwqk~JX^4F`?A}Ql@4J11|yu4z5@J@m()5q=cD+w&YgcnD=wG%*tjk@T#_+*o@`29 zN)hczMyRY#mKMSHl$s+MZamUjBsdQhRv&c#-CPRlTd}vEaFNXa+gp)!{>-9;5*}cn z{AmA++e-e+SbEju>dA5LH1+d<*g$C8ubCy6MmHxbJB^+%RVd~@i zP6jh(5A0YY^eoBlvM`;{k!9dB2sUj6A)NM_R(U)Rq{!P2sDlYM`~ z@|5UUHr|4zV?9V4Z?*#|%83_)e5*@~g0~~?rqr6|@zo_DYjY@ACl=4?4vj1^d*)Oz z)4AwkK&GMdNB{)&vluFNvxGs(qHQyK>ucKL$PqUb7X89OZ?vz#cCtNFnxG-)&NCUX z3fDjLrf`k3tImsWcvpF*jwnTE#$pjok|h||BYOTq(8F{PV9Fp1oEjj;bXBpy)Ijpq zdw=;Kd0E-&>iZ;ny@amm4<|!sygfXn@hISLgEsl&jpWAvAQxbWzdg1t+$P@Vnbd0> z-)=cl8$tIetI&$*(VOV?v!#<>F?t_gx^%(+{Y=rN-1GP_xPvj+b<93Hsi0BZ*wy9Pfy>~YLD&V-+YtWE5_Ie2h$(T&+q zXr`Xau1MJPb`q8)jdvu~lV21yGO2l{5JZHG7*4w9uihq4uoATDwu|Yok62@4!mTyZ&^#v4Mos%Z&THyH^y~`iN23vNzTz z$u3x7M2N!M5`4@m(Oak4>Zei*txo1^^pAL-=6m#J&F5{&ft-^{ywLR5d*=pjy040n zEGbCdbL8q0re;BIv8$wH7Y=Y((W4y_Mb7K0$G(#0Vhl;)>)6>by;p+4O96LYuT~GA z)!F%$A_924PrPj9Xr05DPd7jNJ4I~x;OIrTA6B`wz_xqmM3X689n_$IkQ-;USI7!? z&U~@(9@OF>Tk$Hg_VkG7dUSC2Gqc^nMix)xk*iZg_#ESuvyfd3&~v=m#+D1vGNbzs zcq=b!U*0ncL~MYPMb@P|j)Ir!UpFu^ z8hz-)UuKAwr@J&&QwTT?T=~9F5`{Y9S8YQ9#;@Eu5QU+}Y}>XwJYA(lo{YuQSByXT zWR`X7`hhbgzt%Xl7-1}x#64aUTFi%H9$8+lob2m2dLj>3r=1`}fN=_`twrY}OE;g8 zfX!mIULnS!Za<_DYEC!aM2w<7Z>{x-*-}MI0M93Z4%5Up2~$^*;7~fAHe*|8z@pS0 zrT-=%8IHl9Ob4pJiK(zz2-a^5!R|1|hd#!f2x=_LWt4trC&XCwBW7fNGnFdYG(E}u zB#aI1WE@(GIDHB6t+GFPD(}BsFb!jI#Li@~4@7!X1Q2vxkp?yGuy@VK}9n*g0@n(cjnu>SSPrNzHOoo-xZhEYO;2U;E- zpkDXJ$t6m~VR3!3o2$A4tCSi+TQJ4}_m@joud^6W-=}s}Y$c)0b2erJTy~^5boEPU zvE)tQJiz>o@Z7;PkJ~e3%iQ^QYZz_2d80_CT%BA_y;iuSo7$6EXY6~fdUxnMw&{{c zmYP~)KlrGERcp7c)nYkp*NDD1mgn%)((5JR`AC)AM@lTNyZ^=OdXC6}*yfFPrZmrY zKSN^3r$43Ji%eHR%;242Uu26z-I+MRFO>9&FC-GYv0N01CKiPuu=!eIiqhyiGzBr` zdjz@Rf+&Gn=}S54eJY#C{`9OQRg~hSvsyx_YQz{RDqVVUw%Da`-o~SkeSD!Z5}o`h z>sOBI=d$fmRoEXa`%ZF#7M(#pY3)(Ie)?7DyXm6GH)_)lEx)_kWy!D#MXW%|?cKrB z`s4XQmggj7IuNolKEI}7MnenZ&2CkP>OFr^ZFvx|9{rTjN1u)?Yml(b_mE+5F0z#N z=e@3KA$026=_ku4C$L-CW$fKXK;Q@jDS*Oj-YVmjmxZORNT{f3q6ni}ZJrw41_|>- zD==Q^9Cnl#%3wG^fdrTXkI9Zb!Hj*XZ-!rp!6jAQBhJYP?q_R z4B_>iOaPh;`H$&%D?0tU5jw-VQ%L*D`ckvy^kh3Com?qf6!oJzx7X?P28IbB55uZ8 zRiikL`eVz=`cdq*Q|kYm+#HUT)l6eL+sY^J(bpR&=&;OiyJFSy+j>IPvP+9q3>`cl zqbH?mMvq@Db$=6pghw){)H$fm9R!p5J3A}ib-k}Z7r~eAg%(d%g}f}CceI<{vE_^C z>4qW@2IsM81oAHl3r!j!`iQjW2?LkL)dHD|ghW$+3qXJ-@+uBEJJsc~M9x5GQu&WD z?xws+{xA%rfZZZTw<5TFSROmJTYNuts~Do?xLp&O>8#L;AQomUt%0m~SDEp-8XBQ= z*0?X!HbE|{M;omQGL>1_eidNEqFGe=>w*=aFKdGK!JNY2fv2bzr#+MAeKqe(&@zYv zJ!5+$n$|Bzl4G?3ENkXXX?x5X*>kUmKRC+MD>jq7H0r_|Qfvi<6o>%T+}-BU&iAs9{BnYp&=D*h_s5<+0gJRQOsgHGIH|Af)Q zFmPSzelsMyP0;0SRtrl@d%_FQx3YvcOq603uEsm@Z-D|u8t5nSwZ?J{lHy7nS?dKP zCLZ8%@CJmG!t@$yx`chBZnaXCJV^<(`5L8SXK_qXMk|J91*Q|fyGgM+?J}bWg15Wc z!)H%bq=PJJT8Y~8=)d=P%a?Ld}~4M0f9^~PC^$~_aLldr+YfkhJOJ662bCy zx<~NnJKGh{0;+{yE-Zr#!t*;y{;(rzy=ts}a#((T{aN0md+O1id%JRPQ=PHd6(EzH zd)ucnC+3E!Ri%B#Si*MC>_AhCqtAy4m)W4;z$(KIPfW4+tu%o%oS64|+lYf4yzaOf z6(Kr~qH0;)7mRrsYFOvSWVNN=Hbb*K&qzarl{p(ul<{wfWxan{Qq!P2mn9VfncpPE zoDk{q za-AHA?`f6+2~h7(k|2QZ_TG~zi0{ut7(nzP1fReSd)b&=T>9euVxhKutNw?%y<#<~ zNO=0{^-LPI={;x_KO)wuLD%8n&@-r)DV^y?R^`4X8m>Qm{m3Xw3duDk^SBX?#Iq_J zr+sPWNSg*tPR_hOt!N!{s+w_3Vv;I}R(;*^e2HT{b!zpds>5-+P)zQbXn%VUi%PNn zh``W#3EYKgL2ajFZ1}xywn>SqLwCS{NDxa36FV4Ev$hf$(lRDPH@mU^pi^9Ia*V7V z1?&D_8BsEk(%M7xyD-Z^W5}~lL5aJ1DW%BzEj6j)Agrto;X*~f3K9Kk8Sb}86}xi^CT(TtrJu;V z`WanRsh+$$D^aH@KiP&i6>bD|#-H&Of~6_@@wfM6Ac(yFI)YWxrzu?1-t-F5J$47w zGb{_ZJI3MnWKGq73dPB9$w*#I-L=KIVl9nD^)yEB$y_&tczn~R8@Wtj?j`Z{EJcB4 zgWLY9U@sDcw)a}to=4h>=vjx}KFvwI2W+Q^VPrKOk*^gMp9fDfp|U|D`RiZ5?${l8 zf9}@_?*`=$+gVdjb}lY=a7K1RAKq%aqaj|rI^K|`fdQ9Qab$I~!^U|@^}ZcHObc4G zAkP87Jes zzR^yJ3l1EYR^|9l6d&wItDU+$q0L(;%3j>i96EWKu+EYf!u|nz-LLbacEPq^C<)zu z$P1dKD86>KKX@>`B4UBdet+-FL!Y##c85Jc8ZC=o50NdRd7v3IERQQNI;Qc|&pj~< z68u%>5=ERE%g0fJC@dY<$l|S^#$w!^61roTIX``yg7F-RO5R_&sL+n9ljGPYy`Az* zF4+$;;Q{J6tbC_%8p;E zlf3a1Dl})^1R_k%^n2=#(bQU6ZqEzo@RJN$x^SaZyU!~0*xys~d_d<>^TETL&a0>>A}pDK(I2RtUn&weg2@?Vny%@j4uAP#-JNL zd8yp(wQ&7CTQYmT^7GoYBX9%+nlCs7BhvyT#GxYi-$5)P)?nw7IoZk+C8(_=n)ZP9 zuVkv7Uqrnuk*@L(D@w8jyw*SP2GZ*dGCuI?>XY3E_aRGe@FgtXQ0|^$;53~hBuJIJ zx&6T+XatJCmEi_L3S-tvWY{bJH~}k{4TA1Vs5$Ym^U?;X0TLV~;r_L~D|NcF7-ddA zkJdtLKWAT7yb#q{_@^}|`jA&`TKGmVZ7%#5FhhlL@&0K=$Uw^AACEWdkV_?Mhcqo; znQ7xsrE?aiYLkjVs(vLUW;t(_9$KUlXt2<^Pp|X@B=tdC_O){SJpK?6)glUAOKiV) zVE**e!KpzDk<=6T`NAN+0n)_Qw6g1b;HWd~OkA9tj!o~sIKND8p1uuO2}z{Nz0CXl zkj~a!VUgiLYJ^dMy1Wb?T_|Kl#*Iswj&}sOS$x2DLM_O~oanT!3KBKnUQROzvcQqW zP$1ecL+{RjVc+wqOXv5`TEr|$Q@C|s%1LX+oCY*E-rXqH>ZV%`PCzlpyGo!=%uwkB zGI;_z&X7gwH$zwz6TW0UIOkXT4rCdF`XDw`M(->*f`UHz`a;U==jB^*A-Xj3?jLt} zk?}u$*xGm?|Bl>rO#_yFYmlHj(-y?eq0lsEznRW(d53t>K?kl&+0e6EX!EV^BT#D8!CZvy*CZ=e%m)Er)`&Q{Jo0l6_6xXa((I)7_(SyBcKzkv+vP!>_k;Dw&; z9}0LQWs$8bZQ9MVThK}cuzwT|A#8leZDX!x->#azSS;SoVN2Er5;Ey>>5Tc5lK3 zNPqt@cL57+j|M=uPrDB)WsAjzhDehUJA(l^CcCEU=R?W^Z{CHIovLy#W0ysXRZtkg zcN3uV!HWT99Yz^`7Te1W(@f`8wn@JtE0QJbxT76>bo4CV3ZD6A>m+fpy{tWw>Y{ka zr)eNr{hLIU7>%6l=H;HOIbjcAAbrk-9E~qb^Z3(C)u^J0(F%vG0f+}D4h2XIksXd_ zf+LE37naU@>_YMAC>S{I6fv6Y<97<}{b|RZPXw?t&@)>u`ED5pJV5>Xdxq@0@_NcN zR>-3|_wN4WNpivQTKvSwjhp*artL6C!1t4^m?{@Aa#u7a;_4nwPqWQ>tfe!F{|hd0 zSs#3haBrU9AZviRIcYOy2v@<5UjBj)OfS8NflkFNkh*6RR<-lM%RdjPc48AkoxFoq zI}=%@e^f$(p@?=^>T`t11_EF4HU&EsU@l;-zwjZs_<@f?i2Mj3QT|v9AN4W(+PlB~ z^@;WndYN(a>JFfappLycUHq!d2zlHyZ6o{dm~BV4=5!TameH`3=+nEO%>)iN?8ZzV zr0N8tS-L~chu+z(5>=vJRR4s@l`8;>@8wW$ke*UQ;igu4pK;itWaHaYz4xee<05+W ze%Eq;xOBH(Xy-X7P2|V>a$Cp3$Lj_6WdF?{hBn%1oTVBcK(}98O93_6gt7SzUgmaR zGMZF0{R6_`EOv&~w9aGDcW2Du<_}{>ZjY3Y%<9ATpVD6LBV$k-St9>@8FbNe+X4_I zuhKp&Uo|9=5O*_n5t)y45=m}I0@tydX7SZodRsslYhJ^0o!E0Er+U*)v_H&thC$Nf z=7aw8#M-Hoy0r+weEY1XKd$MdaeWJkl79%rXy%xkK<}eUv0lJa1b3$OL)dNvd%3#1 zbGEn!fY0MLEL;rrLOqc^HHsJ0v=4DiJu@G{w7|jmkM_CEB zT-?;2Jbu0AaN|9J7UjCwdeVdn;9;gWy2yL!wk$o;Xo}SB+Q=k;ZPYe;3%WK?f6iiK zRA;5W?Vo64SO<4HIb@Z-Q{Rc-;^%Z9vJDoWG^o-C3ugXY@&oY1gB3l0siLBKB>V|V zM1#zbTh5>uE>LOE(Cn}@RIBUulklhTvjOuF!dATZciEmtA(lizxX*so2eg2bia0jZ zEs98ghxBC!Cl0#w240!(G#o$yq@N z(M-_Ijv;c@-{(VHVKPU(RE{LC9EbL{``#UV(K8=v5IfRf@J3tFF*56Qw)q%Nx?s}j zjk_>4gWsn-Xl>YZ((g2_J_F=Vxj_z;-dnm; zgZ^6dYP=gZNz~0*`hP;(PY11fCA*~V@;28iQY@QEcgC763U)-p79UOus4hmGXe(Ea zn}K(?w!B-JFl=*e^Omyr%468zj(}eSDvvWq?Tm34Q%QL&6jDhsEhOrUaZqTR zWoP9qczu3gsP$r1`=$0CkqFhDW`v&>G+!~6ikdijk!!&#&4Evl$W_0i_cYoP(l*yC z<{*35C563@-cV^1w;yFy^vMU=eZ7XYfx*bE z@hPT3)`GNlT=$-D%Y1Oy%|NB+g$4lU2KF^D@YhC$zLGX1kC&Mo)IEv&H$$C@S zFK~5|E5Q)Y!F7B}YeCykNVmKd(CWYn_Jz|#>m4sBf`Y&n~f=kIEj?v;6(e1I(gErY0-PI(xkla`N;Qc}>fB zHn2MbSYi9?UQMmxXQ9BQ5dV^9i#9W{9wVEuStPb?ke}D2$8)Cq;{KBTX03wPk@2z_ z(_DvkD!^(OR+?9nPX-!~%)mlg9$drW3|0XZcTJ(}s(;pN(qP1x}aIFOy^ ze_y%`qon=|&>V%}sZnjcU3cZZthrsyOCPL`3H$!laJRM#U zp^z49tu^%rpi+_m!Ctj3a`D(oeE-@+Wya-sjV`}0Y$%W-g5vqPFki7|bfZP4zyUI2 zGj``m8W1DM0W50`zYwYsjwhEMn?8(}N63H~IsBixe5-G&>CNr8H`f?n<<&73`pC)~ z%F~%8zKiaWSeyCCqw`@XYy-3H?|(--pq0s@^eNS;OlHT6iuMA>Y9`mtkZXoxfjPDc^reO zqZb*pKft8WYdnB3&_Uxxy=@c7!qF)63rw!FQ;DlC=U;rjeS3;R?vj~j`_as#w$r*w zfUP00|8{!^v@6sku}7Uc)omb%_UQ%u$IH4V+93#iUk{A9&Y$;rd4{yWdxH&Af(oEx zy6=eavBHZ@uKNEa>UhiDMSoBd4j7300=d%^=W}PvD zr917yeK{Dpx&14{iUD_hgond-m3q=yTnbCgU$uNR}(^A9HPx>&*LH8+nQOhtG}Q zq6#`+4re$U))a0*c2+}b$U7_VI8R`JV_-oI-p?mET*Lznsz{NTV${DHoVmW)(ba;0 z8Wl^!7Ec(x?;>G`uMIDCA22q8%N^Vap<1Trs(y_SWcyWY$JOh(TNHwqA9nDb(Ycyz z0Q1yhG$pBuJ-d=KsHohVElfEh?{H0PB+wQ1(=eV`7T7tN%Xn^aB(ji7)h~uR_?$)B zcx=s~sbqF}?>=c@o8BUh#=bypXJ`3hq*9S_6{UC-n-YaWk~(TR5<^|Ff#(4P-h$r< zdL|n+93JcK+Ar)4em|a0{9PQ7=UW+Ivd`fpR0Z-aqPjp8*uF& zz(00C<^3Haq9%X-A&bkky&1;=c@K0IaFqoMcADPNJUu|ls3y_`vcL8Xnx#ZxT0}ol zoB_~(P7$cW<{El6>41_K^u3sHb`A;O)8ik=F?8$@xfiL>ck~k5F{&uYxYuWh8{u$` zBRK1?bG&@gY3Z5x0|K67eDM}GGkyfWZJ!VlZU%49=z12nL3?0lOi8+n)&5=EJQ10G zIiqRnEj)l?G>Oa)exCW^dhJH^y!0`7sU)yxkE|WUD;6k0uvK#CLd^*9CajWloNM3% z|7J;otaEo>PQq0eVi``&X^X?=|HeiVMmr*yv=2D#}X4()ay%&A3C~xc6OdJWAq7I`G(x|I47UAZC{@(fk&wirl2TS zGMswA@UrEyj3PCu^7iC-Cou#>JGN4FNbPKsDN}8RO-Y+SLhBalG?D_%vm|?^p9IIwtC8{bw1M{joHTMec##O>q&!idV zT3?3o&T#iEE@uG;^7?5S>QOL#Dq~p z>P@QpaporAEc`pr!rK(!!IEAoF3brS{I$pr;@Q>z2ZuP%7i&3FO-1~pm(A0bi8Mck zdLd$oFH*%vX@@l5fE2IXW!yaM3qw&oR6J~#uvttH*ll9Bk)kMP!12A!b)Yz{Fy|k~ zSLRwRMtpXRzS&H%T0%`N1x0}&4Q01czQ-{j<3d*}}$ zQ0E(v^o>Am?5jTq?BBu3AspYBg4%+GP+1qp$Z4N8e*flqk@sZtRRJYNbef5a#kJ~mn@Fe z9t*QqKsp}_q~KfT4dAy3xRVO=L&X<+S|jZ93s{;XR>}O~y*(C69RBO7iZm2>Q5)7g zZ6*vy3qbe@G1QgD-Pe!t>~Awvyuod{`Spmmd-H564KGtd#U|9x&0u@#;XTE_1Fz6p z3c#W~RZ}7U=;pZImAYysi{D0Ag(P(|D>R|;PT%(FGB$R-s<-*w!$-8Kl4) znihU#rqxNpXGDT(cFwlPPeruyO{>(F0_H*E(Niux3?QE1;}uIILrevTWCbp?LMg4} zAQ};k*-!wqNpCtDiC>~1n6ZZhQ%0S4bwo=0FKuO0rJ|{>FG`zJeVn3*3+CotA_O-w zE`o7&Pjx~&`NZ3Px}tUfAc=KuCP&{~Fgb7akF{|lK^=Imr~*4ybCj@%Kg$boRNyIi z$99OHZY;wZ19vO|fpnaXnk}qU?Xm2`3$XWYEttk(t!+TjBTo^*%;qHzs?lxDP<(LK zPCx2NFzIqF;xH7oFN0>5*Ul{TRYE2VuQ_a9lC1vz=uewwPeF?4Z4$-J2sW#D?n!HN zcd!h`$D=w5X#sP8c`gkcxGghfN004hxVM!J^j?aGn#BB#NK^_#lNmADqd?aWyPv-&~FlkLg@&~R9YWi@ed ziO8cBIBFrz>+tfDX{Ea)N6O~qK(464#qZEctQ+kp5lJ@RTL##lG~6=ByYJ`i&RZP$ z(vib{gTlb_+u$rnN1JP4g&c9@7Sn(6X~G1JSk{b*$9?sM^GYWVlm+C*HT9?|J-t}! z$StI!eYy1I=G2SwN~NjA=*LOQz>3oRjFDrZUihnpoq0h@)2 z*i#{M-?v7b*H~zY^NSgMWqv;1zM@r5?33K1kh-tIce%Q_WiSNsN9x!*{ks*o3F7U; z@^i0XDYAzZWf4M7voDYrTxWOZedaM=pmsLHME`?JU00=oJXl;T6uJ;^ zUa7i@_VUz-3R1^F7z|vBuaQ|p`kBm$**bsrTxP- z;^o!xKx@c0f~4!j^=EQbud2^fiDA2wBg^(srbGJmOHA;c@M;eTt;17VeJ{dD!m9Y)9&z!l-9KaMd=bl#sKLx%~(OAo1#Q==+#{j zObwj~0O4alFDdI#a+J&f13;WO%}BymI)=7|7eG}D726ZEa>zM$!tV=MTu@l(j@0W65JwEDnOQF2Ib;QbgGD5D z0xr=;WTWWC)w8Jw&Ev}ah}c->QD-;=hM%$)(eB)@Jsh7=iizhWe$imxU}9ot-`U0= zR^S}A)02pD-B-@?2wE@LjaQ3g_&av>Tz)y{;m-u+I;OA>9 zMR*PQ`X7iCW^Y&cD^4E)k`B<#kQZfFeTuX>*Kp$C8w)_=S0!n2@t zvA{dVy3L|a9x~`?Ec$D8_6CW?nM;7Uf=h$miwoMDE}?IOfTBf8afz7+pz5Gb@5>Ft zCl3<{sM_|$*9)LHx0*oK84$_(a%gfE(WumS)=aBuoy^PH^2Xag@~W- zs^D;Oa@_I7x8XzBNaV7R&PZD+IsCm&0_HD-I3Rh(r*}R=%s0yv&$$T(Sg?lP2gtcO zep-!rr-4}Y78@$F;fw9%kS59Z1orO)xL%zx=|91c;vWFXA6ko3NfT9|8x|#Tp?0c?~GUyaTBJ zqop4{g;^IM|9$&^WL%KSVgd+KR>3)>%<2Ez-^ATE2LdtEw(^G$A(A7;4I4g$l{8sq z3Xs2H@W+3dAcu1Bd&YwVkz?sKCxp<3`M++KIk*a3yQTddZzOv=x}2`t%bA2 zhChmhFvvFCNe&fxgOY`SsM}|@b>C|v}Ha7Co}J&Ug0N<{d*`Dgh-IN zgJUcsUmCzOtIDLHl9W;F_`PFzSEfE7^Jvu?ye%ynd}49f5jqVf`W;LI#!C5U}7~F&JhF#DJFp- z>)fb3HAR|RvEukJvJ|J9{Du^>Rb3%%j;XMnLcHx`uo6_}i*G3TPOZ3&YEfqu!LsHU zTwJB##wLOM9Q7u%gzDxvm>gPC!8LrBUef%=zw_qUzwN)bvQ@@kRU=wRceoYqu(%IU zDn%>B6Go=2k`53<#vn)?ERLd9ps493$=jV{DO1=+D}?#n*RpeYxdLEafpCO4Ni`EafutOV0tyy5mXz+Qr8=B!2WMe034MYSp4q zs0v~sJrQtc)uLmnK1#&yty=M4SDVZ`0~KZSLstCqZy(Sd^~ja-3ZONsmo%hM7mV8^ z84=$DU%^V0c-9$FGsKCCE*qdxZ%|@_naSW! z#3FV@V%+};^k+Q910Da3yU4vx2yzcOa#YQcS>GN|j_@i>(srSLLYEOoi|K zi1!NED&==O!3721f|Y)`dSnG#cP#E4YDltv3>Oz}y!YS9$r@T;itXfc3R{u5jVs?0 z^lSD8D1XIc=@O;tus%ifRXz91KKsge6ur(tRt!=x*FaOu5?l`bBvGL<+z+`P2{6vU zGWI9f3Y7n`e*Y1tJclxcT!NKwJ_ZDIOE(g33sSf_ABXw>`^LP6tuVw(3K#o?tx!a9 z?$%3E{XgRuX^c=+Kriw;4pYn^z+KVs{@>hr)uI3uen&3-gcRvs&?Zuuj5Cq%^Kg zXHBu+SN~4!ISB8_E2FSr`(^6y@}^q!pXIGW5NsB<}FNx8; zzp#+d!t!%MA{d#DW??c?i(1~HQeHTpRl)f>@`_#Whs+?U(9cy!m1I9c(?r^$GX4_i z|3@~dro&Zo9W2+&NQf_opiWo`e$>MNY4^!OvQMDq%Bt$*+*zdV<)8diV zJHJ;9;wY-fgn2&R@%9i86ENK~@w`TjXNo>^(3yze4Dss%x-K1qPAnP zX00f?ASc6eXHA=NGd$*5pYrqF&rUeJWpu1ncR+S+!9u%nZAPJNl3y3Ix1N#oNsVtA z`e#VrSlWB5M~vWUWc3xzcDlR9V+oNG{iB@l=(1?e;nJeV28O^w@^A2Z=fr~hWK!a^ z^t&pOtpu7)l{Za#2mE-rJ-GSElDo)k0n;#PQP?c%@WPis_>9j6yypb612HqiO^L;x zz^7-pWXhkeJ$rMM$sFNPBi*JUrw%E_fGn|tRyO^3_kNR99#Zkm(3|3>)7{D9VUOw0 z@Y=zjaMAoYLPeW9Fd2;oE0|t;+}j4SODjh@i*NQPJ;mwsL>I4qfBw&sP3`gM3;tWSHN6o{ z!5Yn8Gz{sS>9vC1UQb~tiYB7YL!SP){9m2|=@J&Rp`5WsNRTM;_$@%@*(>w6(shJg zXNvfgKDZQ=T7d8bbo_-olu1#>=S5SditjN&C`}DFs4OXa@p0dWgw=jw*@Vc*01EPa zNaoO|pxKc$!KU7kGkAKlS^+)pncq+#{-y1|98eEAyyIdQ_VeAIVt4>2B*NHM{_nmZ zYX1DdIF{Z=YtVP(@{`n?WA7%LPd!7JS>53sKr z;;g#w8IJ}q4GH=^n*5%ZFK6H2dA9)C3aOdq)|ekGW?2p+VSH>bTLIIYw%3U_ZSLU9 zn&V=r?jaL#AuglP!19(lQ>;72gPn+~3G(ohzv%sYf2AL)u>BJHq4lW;hP)dDWYL%w z3Z;$(R2_z-37AwQ{$)J#dp15+i{A6^%55Xx+-9AWn_yRotg;&`kEt^?NeSdc$r1j< z6Dl_`7Y%O-)~omKsgYS{L8Wloqx%W2`}XNmBiA&fVD`9JBOOmku?ctcAlmNN8R^h8 z?hF`7bgMsOW2Vq#O8QMCXR%mRZ<=J33-lPp8B1+4W5ht>#N2&78o$v%zQH!E)B^Yx ziL6>A{IIOfADp&&YgQ~pB;(5dM)l9f%n3|*ffqSK!Tu!7`^%-!=U0mhA3#Eo z;>N6n6I;eT)hD_K2%n}WUZ+(8%!`8|0_<>Y`rbt5)cD`Q&z~0{xH6v)Rq1g`o9^+*|kWr z!^;*XinHPl#uj5dW^VT-YSmK-Ap$pD=dz52PsFZ>seV|3D~Hj9I6(OR zS5;>QFEoSD`qI;lXx;#ikd@of7=AG2S!{L$s07;??4T6Y>C$;Sp7441Q%J{Va4&4# zTMaS)X7c7ZnLPj5Y`g`F#^&ppLYDhIZ3;`ks9INwQCoMSB+cpj+E^{|D%;CG)US8}2SW7sJ-} zaTNZWNL=l-pNMmayHOc<;##<12hir6fnhb~$i?9)iG3tJE&O5k*ET6`!57Z31_GT# zvY=^0*YAzPO*xo;5pwz8gc8DwLF{;wKPCy=ubp2V3MjFwW<7YZ#^GjhbZrUoUh_0* zHa7u#mMl8khqLLC?Ol7N1+4n2qlfMaysXar=p|Tf_>r&*w57@yOPE>jc45%|tFrd| zooL9So`uCtU90$9;$dm;K{K2zn(oYEqYnzL)K)%3Db^(Ns zvCnbG6#feo`7^p!8{z&vOW(MfHn{ssQl4M8G1#oq8VS}^m`?fMHI%RcglN?yma)5y ziQxBaWTcXA0CI_U2vYCfT&@-ab?c2{V#R;kADT%o8hIQ7PM@BpYx%t|kY!wXP92v> zrNU32*6>g1Qe-}^DB?W%SGPiEz`U?h8{`Ff$6}+6R~p_{Fm!CCY-$TQ3`KBOcm(1y zc?c3JZ$%rU09LT`vl{9?1Y|H37EgGN0q9RCsa)aA@&})N#pNu4bOu>5r~Zcai%$Io z2d`S@e`uw?4Pp*tzPMGl6qIj>_Eiwr7Vm$5x?N;6d|dB?aOXn{uOLn$g1*7Oj^b&` z3ZX%udJHt42raho#SvvD@DWYC|IN_n<3Vcyg(ge{o}D}O2k9~aP9Ya!gkc_5vSrE9 z&v!%91&bm8v=8+m*puTjALwpeujfaME6$kVj;-f0Umz8NdSQF4WOfX(NscoM`2@oV zUV5|!Bn!9CBE$&X8FiT%O%bVzQ276td&{Uewys+kcMBTa-GT>qC%6Z9cZbH^X&iz} zNN{&|2=1ET+9YU#gORN9p3(gk*ql` zc&V?%h4YnebJrp;Cb?~5d&91lcsYR@03MEl9iGDv!Qkjs*oqVI`p_zUMfwAwDlB~9eL2t98P{atmt|W?j!CyuH52JQBkJVON`l{aui}C zSLTmH`%ol!Y>PufP6luC=}WPq;J!J!&9Ev!9(Op%ahBY3XqJQFZ6UkhUM1GmIL}b8 z6-9bw4AiuN^ClP!bs5HJk`11DzZi7}jL?+{2I<~{ZAtz#Y;TH+t}2A(upk3>q7GM@iaC0`NwYlWpCh|>w{2&cOE9b}iI=_;YFhlbQyvpv(BgF`= zn*kAoh7WYbwNWvg6ZxQhuaW+_fR}v~HIt;$@6rr+4wvm@`T#PjhFTa~F7P#wl1%zy z1reN#7&j36;fdHN!eM7lHyw~=(yz_we>lfa8YFb)n;Uytj4s4Y?7CAjxC%0^mX`7M zm2F+Rnzv0evgdSBsjxjsk2km96^TdgUmP(-9#*Es?H7F`q3(ix{w`2xYU~PEgscxZ z0b-e&eWIE=EsV4yk`D$p-yJpRD}5jOvPhU(VVIL;5#HYIXJ$XY&K!TX%+F4#DC8-0 z+B5@ZCVHg}l7?O#_tc4IA7z&T5we6cl(zSsf(3T8eu==-4`?7lNraxNy@2ZAe(kj0 z6V1#Z@HK9nTo20BfH!O%`j&PGJaas#Y(EU%{vcD>K029t5ynCP7|fhDr?Y&52E{R0 zKM`a5>Rx=lu<7#W{Rsk=F8@V1Hl676<=R@oK9xk(QlpX11}}qI>4?i_h;$oTn(C@O zl33NsOEHbl4FC2*C~+_~Rx>YWAq{dI*(bFmTZLC1HV`-%-}NjsrE(^P)PVMbbyMF% z3hs9Z=>aqLs-zhuEsJn4x`ZM`S+fn|O z#SgRm1S;V0u;VbLuD4tWYI@u%W;U%WR(9C>lKzI&HwJHFr4&1b+qNUb88i8ZGLFhC z4Pi)&45|0~cQ@zPX5=f%j%}L1J(>do=jR_cMYMA3m^iyDkKW5IZo#>Hkq91{ISO7` zaP*)CJ=OTj9|rAyIK`oR&&qh^zU4cONuy4nh+QzK_k3d30(V0j-R6moXw($Wj(qR&4=eYpRv7$&VE|Un%e-f#pcr7~m z*vfTb@twrz={Nx84yjBAJTm@9qDQvpzz94Zz!Mbiu8zPRWrT}o&cBVgQdlM#DB@)N zHp#+|;kJ@g;b4;*A4BSjB=guPMNW=AYFZg%O8=va8`7nlji(z$b5=K9>L3kXZ1~kB z5n^NH@;u?&B)H34tKWEL<5Qf$xnn=917$7|FpJK&zRWeV^Zt?>*DuK*o3q$QOGghb z8H|Nf_tt%X41d*>W4JICnku^b9x5<;(X@O)#Saeqd-GWhZQAJpWUxi0jJM;!rQ*42 zB(;(}J(*A;`n`*Ia*2@99&ncHr%~VqZI*;gZkjQ zG}X5#fOE!i^;ApRm73RH?T3}!$iy~u-XKc$U>D08C_5)Z>Y1VDeWi;GcJhvjL)(}~ z{gIXf(yyOguU4uT;zI*&>~#!?f89KZEjNEXQu6*SRb>mFkb%N*fF#>)$GDj)oH60v9=((#CdK zk>{hH{Dg)2O8J?}xrTai>}LQc)oo5@l3X5dyrjL7BsQ^1Z%GivE62K0|F0TKhGs{$ zbtKOZln=M;{YF7@x)nhTZg~`0DtpH(*BQCma!7J2^(4NI4B9Lh>4~=ToYu4$BR8|! z75q(}Xjt`O1J*NjX6yZc-DpzBC}-r)>hQLz%#MvAx^S1={fbXMALx|8A>M65lY3dp z({|h!|b!bO*C0W~*Uv>u?BGPbwa)~k2XNbY|8PDYsBVLxVtQ~8wrS8Mqn1N~ff zS*yFpl{;M^n^R{+UNMzTu)F4-Xr}AE>AWR#De{BDLGQIx$5XCs4N5>rcIp7NCY|!< z8hPy{WsEaOgN2siJMDUX2QhVJ1pz&x33|n?k#`~ia`;XcDE8n$f|;;0&=NF<5#|Ow zsh7x8&Da3@CCem?w)fF9nl4SDG)p`c17<`F99uP+qDE}J zaBluEnx{2~{jHxabMq0}a_I8>+I5k`%$0oQj3Y1V&Bq&zF(DURZtT=rtCu$C)l4Wpt@eUZYB|OACuJqpBjfj-nRD(!NgVWfrPn%Cir!O~(sd zgzYvTtP_#PRpwUbD1^VLEts2uy+&GbpKDFP_F3~XIWj7Pz(7m#_wLH|T!laI z6i4H8v*&Q3a~q8}OxHMca7%|1aih{^M6U0TxTS+GtAvWQeC(|xT!mb^-*Ty0#b5_p z_*NCd?w7~knY}p`=u4)ZDh{7`x4dSyq}TEbDx6Gnc7%qx2BA-E%9KvIhjs2=7m-0!GCspl=7lTV=pe@di!qPO{*qd81IyOk9~d+h z4$Ab^bd95as~4-DWTnMQo8~TM(lwkc8Ei^aZ56-s^cJ#hH&E4k3l3j_!6cxxMkVw0YfMK@YloJ~o+DnZa(fWr(E z{=C%xfSk{gDjGl#Q20xr#$NghKaHD>JjcgZozr;eaMSN4fLkVpe`}I-fFw?44T;&#nfHACy{p_6 z@f;RKd*YmxW?qFQL^fz@}SF+_)pRD8<-dO*n zGK&*`^kqFN^o^Q&w9n*9S6Hhu=|bZl(~C@-LFurJw$gs9QZ1I)?FBQV!9P38d7u=R zOyY`Wc0QIRPNl2(#_qn5VZR9bId3zS{F3(i1>)85>V)kXuBP>U$x-NxHka=9%#ZG? zO7inc;)|{ts|jQt33^$xJ@&j`v+&^(amQkhzQ60%3c~V5H!t=;20ze7kCRmVI)VZO zG&UL-Yb9MgGYLj)UXhALyQGRNSdh1ob|N^9Muu$oGFb`UDZmy?u8|t!NCynNv~Mes zo5If)uwHN0MYSKHIIewcWVkg)}L`3Da}( z9{(CM{i>hlF`6J}lo%l2V0eDV_2DCH;i8w^(nQ%RRKn5NUKf9Z(NiSUrwXn&44{^V+?zqlq1Hc32BlHiX>e`Hq`lK5;c$jt{`C&szN8vqzGp3F=Hqg=z<#`4I!D zagA_f+Uk7b0s+D4{>Y_)V#M%l>h-4~8L{CK`fp{R}Mm?9!myX_WXVKMMvVzXfST0*h z7sjsE{PmeudRM!-MQbiqA%A#j_b~Z~%PzvLsWjFI_2Ehh9XS>uY;x%YU16gyE^ zz6%^wQmWe{VZzy5`}O1Z&L!`aeMa1V?}z)A>jSf%IkBx^;G%E#gk&im|Dn?JYXys3 zaw{m3G6k@pcB;+(aLA7nTD17`xK0C%0Et{FxF?GCaHVO;-F@BOnqyJ%HBV1sp_Xlx5sK|6yYzA|Mzp~t}KG!o5dBWmWijv~E+UGB%<5l=>X*q!hVJYykfvU|KkDJB|Y$HvQ_ zY*|R$97*QgH(}0`4b|{lhZXONGN4?Wmn{@U%=?!J_GSs;rVuQHzE_^hPDTc@`p+uJ z@8}$wT}+7)+#=!aHxtEK=!sec;5`A=)9s=|i5;^j#f|%>bF-iBpO* zp9q~lIMaz`@@Ij~LPAGCZ-Ct05Z4w%Uip*8{oUYchPIkL3Huv?QS!G;nTFi*iv}MS zF)zMN-?P=GJO>gq&MXxSO9J|aLPG<^LzdzAgAra zs3~oxl~Dy6jp#cWj3afQaoT%$_T9;{`(bK`#(rje5=Oy(S(M^4m{+*!TCu3>)!Nk; z%&2X_l+JpZZyW5VRUm7EdHEu^_ZX)q=z?=YhMl4NfuB{PV|J|7*7&DDA&s*i7Nj2X zRM)Pr>nvM-yAdZF`g62#N~HYi1^>6fqd%K* z6KW!DJCk1R^Ts?rp9m_xsW60_DWmWXv2j?=atnL! zAC%q{-CN@NhI_>%iRIwBWTY%<#IG-@E_U+mkxqJD zG<48dt}nA!@-Qx_ZZ|mi*Hi*0Xv&iOH!k*-HTIdf@M$gEX-dy_VgkSfyZyGd;0o$+GM0HnzR}PR`_CD?3irT`V2I!RT(_9S_ z+m^Y*@!f=mkqqo_kkOJxwR*4 z6|69o<}_kqdsNEtpB?X-=U7fG*BGqzwV15DZOg8H;dn#{>c~hMKe&P+Ua1)^5vmzd zkKeY1rI*FkT-vxsCw!GG-EYK4Fksoa*LA=OpMUHm-#W8=W^LyF<-6Co)Ez9p`INN}tG(WI+2t5JXXWrrZsuFd%2%nhHu27WTb*rg;G_(ShEv$VxVG+G5`N%rcd$Tt_HatNKn|WY}WzVT6 z_?Wg|ao{1`TTY!T^;6noV^6^ZPlhYu^(EWVda^YzGe0JODqb(uYhEZ940i+Ol25@K#8FQRnc-8_*0Fe7=28)`He4!7&v_7dv*AS5KU zbbJU6J{n$}762LB{gxyWa4-^rmRIHcpTwY!~-rH*gIL$V8wG8<^Q!b+guQEqr*cc8CdFbHD|CC-JBH~H~taC zn}0J}VsU31sjgi1m72VIN11<>!(V?U-#O!v8M~i_yx!^u_g1nOzFwFGWMt22Wr_$k z*+kcw8(BpuS?-k{5v*btL1cr2ol(#cgkYlKQ_pX!c1tGpL8*b2w9jlRb$k?Ik?%`A_9Q!5D>=)tc^F~v z6Fv#~7}8pc+xclmp?S)*A8XrJ|H^Yx=P<9(Rn)4{hI`H!7=rbU%h-DN6k=XKg4yVd ztJAt-ds7z$3(;t)(!2V;>T6nr##OOS_cBhT?8@!scaIb|W;KTUE?*2B-PsiwK1?mh zJVu|pXm?g7&FmOvom^TYXigNn6=S(Fj=k*$Tq!!pdOqV4^gYSG3)8Q;c$+HI?#7

guOV-(#{uh1CWYEb6}S73`&;0blv+`w?U-d)kz&=6RK~Vvk-g`b66V@ zl%a0TSWZJaEJy6?Lo^Q2kw1B>rY8H{_}vQnT`~^&cta)m>26QehTX#$Z&11k&~m)_ z!jyxF_~##`GhC(=zews=%-6A=T6yZVCZ*^#BNtvtMWF}&XkGv6PDt4@XX&6TP)H@? zQPZDHx=TfJKW;61hwC+v-4*OoZ2Ur%5=H%{9Zjm&jkLbpcr2J7WPJsH6VoYoyh1FE z)>Mr0n!!t@yiIbKne!qBzGB#(PMrgi@55@rwwGTzD2B*$Qb&*Ox|;nw-z_)#p)6~_=c&AOZJ+%wiW%vHy@=$YugFGz znx52gW)#ODGh3`7xa?T==Tt-2tQWAZyjBr#BOueY7K|IuRZR-4W?>gUjGTvNw3ebZ zQy-evt?%R&UXu#2&hHdqa9vq9pX7PqRU9!?jLOB3U_>p-y?t;Lfr!K1*BOWy_LoD) zvjtxs@tyCH-1F`QZm?Q}gGI@YA`(ouyEfy?>gN2kQfK5`S9Qmfv3b|8QfHJ+f$an& zV#jR8Z*-)*yn!`GT*=`H%QvWmZ$5rk>In{Ha&RDfHgG<4r`VMt$A~3OIXU6l#k(R= zliz%8^^>)Z!W~R4KpY@%EqP`HMY?W4RAl}L_l`<3BmTf939;|(H~w!s+&@2CkBBo< zeI*vS;Ky@M?m<`xPPmAx>yOphuKj9(oCEjYbdX=Iv{ zQT>&c4tgm}e1(*f0>pnW(ha<_q7e?S$|VeP~zf5*olo*x-;Z!_&1=4+OWzRr2G zG=h#&6f{7?VWPuZk)%)fQRghjw?eJ5S&*K7_*&I4FG`n{Da(TF0p=sezO9@>4c%(> z*_33!GnCqQ(SoBNXu|amqiYU0=g+<3z*E($zCz=_q66I}jINnATCIpR>@%@x2^3UF z@%qXJCl~mH8oRNMpCqegnB|w0h6@^#fN1cGd?k@Wt&QbZ2O-!6K9QA-aTSl9DSHTXxX_78pYYU9Kbi=?tg!eP z;jmh+Bm=KgS**FXJom$=NPd`cPLu&-4zcl`ueMNY994hS)E|jxvuq(85g$x<^*k*3 z>}geO9d~b~{N!r)y8D+v=UewpQkkAr2%el`^kZb)f z0~#0x0_t9>ne#K`nP=}(OiSTno#$V@^y!zIiv_$$_mM{!ZGNf!NW3cxULHI0CwL*X zat|2OeyS%5bMvs7hbBh+5ZWt#KdU5d*Zw#q2!7v?-1yeo0z zN%WUea%|Gpc}O&|v>YKPJEEM@)@GsWYPH&^oeAJ9v8@A>=H$*rHrdVv6>0c)>@@7a zKXQ#6bT2MY4^F=EQ*`{6)ryo9D+Lv*cu!mtzHX6m+?e7ta-&Cz`n^KDENc}1FvB0@(j$IF6_P|x1#bEaD;MEml%)oAp%H|;0Y7CXtaHhhWkx1M;)m?;OD zu~`tIBzDp0{NP(eM7*}zo4vQ}yFFmNt`x!KDA&s6ALL^wr9ae-SW+aqRZ(trC?hi6 ztkk7+7$Qg?xaCpU4;HW)_d9u$2PQjs7rZ^A3tT-M5w&X|a$b%`Dra?fEhp=VZirXW zX!{rhufe!R+s&l-3Z_wUTEK6=uVbK;x%^-%{c%-Ot;Y~i-iwQ3K)gL`v%k*GFUYl0 zet3>zxKY2qj?s-3Qq}F)(eftfvq<9m9gL55@@VYeHwK>CiH21B4GcqG8*R7e;mQ|z zUHutt8q%hUGWuJc!NtiZV|l2Z)K1k(W*VX@osB2ZinG?PRY&RCpmmfXs#kzjxxHh- z8e@t&%^K8#z@ho(y$(fWrni%6U?j{?-5^>7O=RXzU@sPCNL4(xxUZWsV`;3r-RU(6 zk<;s^OGdC$p@7gG%4T7Gnz=iaIm+d8KbGf%Y;ejVc>xsH4ni{qjk@H+@ho+Idq?0p4)4cP(`VA_L)}ugKGD*X-ZW^rNQCe9 zj~+4oO0M=1?u4aaaAi)^@S8=nxA&0Z>4 z`Eu<2N(2sv^4>Fgsn!}36U`u;Kr<|mwU2aHN91gmd_6311q8+w&XS|%>%Q+jxcagtp@=Fzc->9@6R5X1{8iwY#A_yjS61IY9NQxJtJn%Be>FFuxHx$j-P?0$%rPGH z&PpE(qgxs$qm%b6=K1|h5;f!GR}DIf;zSjoO#9S?y8DdW%NC%$#=;~4Ehkqu3kUB2 zpQbcf{xNOLq8b^~&a~5Yo(&nZf!U%e!l8UHOq@yRE#u@19(zg=Pp@=?3l;2LVrBRh zVifu*6xS};sEPAve%kyHvti!Gb%yhonRk@nC1Yc;qMl#ZW<~a!*#XvJ@vW}z zx2I2KNhDeX0lSR=6@rS@e$^2#BW;;Qh^pb`FU>P`h4+aHF%FufC%O^^y_lh}M+Ex@ zAQ?uz83=R{_B8BI?fp=bs~9@+?GEgs?xs=5t;XLC&O8v7mrelNU+0_p&8>X)m_tnH z1xu4#MhN_5(p9^i%t+m0e`u3p`Zj1c7v=G?7$>qG24Q8ED9AZTM7pIkZ~p@+m-20wM!$R6E|tV;I*oQ4 zALZVgu7VnO^6~=^oiSO^`C1Mu{+x9{$M|s(vNFC=q8rFoBKcin4fU319U>QFIHCOs zIM}<+ey9d9cZb}$XVkm#UDrq)+U`<9mM%fv;Xd?(T}xo75mp?n8qB9yoxDrE`@Qe& zAY#t|BRG#BgM?Iq$_yM#pNWr`!)=wFo;;as)w_2F@k%TCRm@A_=QfoQXprRG|yYm@IP)QAj)F7hxlB@Matv68T*H8b3wj9X}FQW{Nw7an%5Se5@Bo zSqRD6yH5F(n7sARGoMQCK(CVPo31r-4oH_{3nqot$(weXvy#&)bQ>-!7OGCrjM3^AG>IH+x7I;jsyDviS(47!x1f)IA6 zqS#U`F#p4y8rpqd!98u~1b>1EG{$NCiGCW$H_^i%d6rS_D*p`m*>rp3(Ctn8Si*@Qs*#GZ+;$eU_5EaOVsCw(Ztq4JL9jBk zNWwMYaeQkb^e~!(Bz!FYkGYT!KYa~7OivwzR24C&m@u_{mY&B+-Tv$|%(%kP|(?p`!H|IAj!7B}NXKW>fSUEXp%`QHw%JY zo({9(@KLj>pVII{fCuJsxfw0QOO`*cmhctT}*(wATs9QAhzsBx)eQDUftM|R5mYR z6jThntVBC4g3bxdw~Uh6N1GVqy?H9CgZ-`dxt>~??f5rBGez>ktu&}*6Z!sI=^C@w zLiBXEo7+*Z<~BEJ546SZQF$(|Z_k+pk^-aF+WK-?#9wG|^7H zLJC9w$WRqOR@%6apxA8qYD-Ar7k&psBqjv6N-^qJcW)08L`>YnGNVr zg&UUCgsy$7B2tU4h$#{cisO1_teaI5B$V#V;KI>-F;xe)ZBneX`C1w+GtACK7;#3~ zT12FYdsi#^ov5=>qzZj#aYmdC#8CAPLFiER`A&pT&PR_;NEmo$02gUOt`~)ZVefzk zMm)(dq;T|5O!c@24o>(EKGe*AY5xbdu^GaMMQJ6Jxjw8oBV-F!JR8jm5$+&N6<_ zOjQIso#PvDkPhc)NS{}WRAls`-jx&?8`(L~1IM#U7++5700oDamM3Y*YDtQr8W(19 z|FU8lUqUOOWsUC0`2!R=gd-NgOtoa5WMI*Zo@wtcaMZG-6A#;2Zc* zvQ8kpsgS~1e<0rmgjl%5%EPJefum{Y1Txe_ni&oJaZJbFd>xGoBVUOQG+erDKi*5$ z9F!zQg~WTu)k388-(sqIl)!_@ajA?+-%0IceY}DVWqLSnlxJTvOgB-Km#D=+V!FQT z0FqiGHf!!q!Ej>)6H4|7BVI4;%a#Ujsmaau>Gf^-pn@7NP*<(eI%bLrCiuxEPt|JN z053kJvcf^tPwFme^5hg1RFQ_z;#wTKqrbtg(MaO}{(Rqj6 zjzpMwwCRNer{#B%+QNM5n=iRRiKTgR&l^&xFarVUenW)Q>bSr$$M+PTaqU+BZ|(Kz zw}9f)F9XFlITKS=@YE4gT|ROIDzrA;ON*6u=V&daDr59(+YwrPIN6B+iD|4u{oPm& zP`&t8Sh#o5j>Je49|paG3(Y86QQ+`2yArjVU_e zuZxeoU;V-XADZ6=Bd+r0pDOGk!wnzqZUNYOR#2zCt5amfN^`sM3oiUXZtaB~*cKQc z{231`jk6v^!BEzTL%~4XZBN0_s4}`G!a&HT6jB&}QwbHyX=Fr=bu$Fy#_XTm;QXB% z4E9S}D-$J|4wN_LJOH}4g#pr-cms$-!g~WC?tog2@DBh-My7)cV@V$@(mYqWiT+5v z7YrO;cwWDa{s001!8QKHCH3VUsOGnFGC@F6l)viz@O#k5HKBx^zRIL04Km*l!Ai6L zhRL3OCW0NtB|ZI7uY;2E3(( z+>%DKj|OMCr@@btN5iaE8YXoLK&*LgCRfkg``L~(334WqJogcY}paKVGqhz{`NeidP!KYu&I&Eq_D!KHmUKF?=BK)qfV^6=q7uyP`rzbX?qkUDImq!@G1A zvf2m(tIa?|uSa$KTHFlv{im~iV{(g$v@{mtp^m%g^lo>P5yUd^8}qkAS@v8+yAC}i z!wTbA%=Z{ZilRf<>#dNuyWzXf@{4qh5rn%LDR&Z^ob$^z#tIvlklfQ2>h;X=K2%8M z)y_aL!78sXQihH3Uj`uZ&eFlB2;`o@JaP$9p6yAiBVW%fy1@Nv6xt4GF{nMG4tiZj z)yrtcg6g14PYcz{@}_&XCnx``E-i5eN@5iYo{Q&hw2s2a_&sac*RB8N79@mXq70ozUH5e0);=5eB{ zn+=#f>Mp^q+3O<~~O^DmyDIW9u)0z8p?{KJ!Vo&WOWQ3v1& z^ugaeS=Rx0GTZYnoAJ<++};Q(&^HnGKmo^@hA4#U^&h#`J7YeAkce z4T;BC$}P5aoxh18`}l_#kX(Qm>zM#C3PHnSPIwUJ3LvMIuPe)nBvNP{qVN9rgQnWQ z{ecu>9|5M68C<*{dX~ZMHPxZ?@-+hB} zUFW1-Wxb~2$QR>pWNt`3G6}c-Gz}pKzUokk*IT?58ogBjipIRo$0_?r2EI_V`I^YH zPC&dWu%4;Dg}0u0>$?HSO3Sr#%v~91gK#}Fg`mg#y^S$P>4x+pN<)n%P6L1>x;+4a zIA#EDIgjc9#JwJ?E(XCbZ54v>%$vD285+XT=X&G|TEp(rkM-z?edVi$jsNnh(vMyM zXh_|g*l&y^9=-k_f)UbI3=;eY5?}sJ zV!PC}0W{Z1Ih~NUW`Ka}oqtGnjsclOEP_GUob3sqVKVPShfJ=n60YmiOBOi7=6(EV z#KZp5j?+|2aehA89F7javfa%_wb4f2(6Z^;SEIz^@*2TtT;1mTttZGEP zBROP}#|4#0^-CYGW?@#CPBH9zIjn3T;2I$R|1d}}y$JNTiEUyBOe{d-4G!dQKn4L5 z`}?oc3VwJt#(;?xuK`RfP}+Y?Y|`CdCicR{IHF^{N&FHJxQFAgq2%)#1*vM9BAuwa zbYFi%U>@f6R`bL=z_0+@?CS&@sYeoesxs1h;Mk%B0WlKGKctgJ>6Cc<{NKL+WkM50 zpzs3|JVE-6_#>0qAK}Cc^E_vd>7SkZSNt7-0tog1QeT@x*r1&>Z?|7}WV6*!Te?ZTI}^2yN2!WP>l~! z-7fGImMo?~JEc2jM2qI*! z#e!^j0)YFoY5?TlsD^{YC5+UsSmPfZrbn4T&TFoXpKx1WN{7++5Vg0AEQb8z00UE3I%zrmlwNgMgPr(TU3@lQH z|KTRHZ=C%(44`461n>JY~YM9a!A}>%bL5Tc`mSkxBHO)<0*q z$RW(k;guAdz*_FvY#X*4b*FVRhZsW%^zzaAe|mWcGtkQebq1D)6%q()_n(>@H?gbA(;z<&F2EUyc0fapk*DK;qtIVXm1LJdg=*;i*Pq-dp{8}h%OebM?T0?(H z=YLK=as5yH9>##S{8|40uhj9M$o!T5pxPgBSwJff zPb*&p`qRoonE!6&OF%#?A9nYrm4{3Mtvmo$iq_aWpp^$g{;QQA!{(KG{L@JRE6!h? zR6TwWp|dI1C@y5fUHb9vpEYCSTI$iv{ZbhqK!idA?cJ(A>v|^8$ph=%-<^EypH6-~ z6X@gtwshhEve6BYhf8e~UGz^UKi30v@?wubCr`QFdISJ2y98A969AkJGNAYg#sGe~ z_QKSCIhvej@E{vpvX7xqG{E-%Z`Nu^dojrWKit%cyc>?xxZKwUT|S9KI0l_&Lcu9qfG&XXrV3F_tGFp%31>n|4;nDVhyrt3#jk(kEbNW6ABMNAxXTj^niZkEDvveQ>ew-keXaI=W7!`b$bHhe@DX3iJq5E46Rt1B`RDc7<2NE7 zeZ;San3(-|dLqu{n3xtZ&yc{D!UA~jw6FI9Ssc1=?hec49FZ!YF9OIQgnEvb~JJK&nNwJ=;g;=)zIGjt`J zTOnI{Yf`$#Te{cI<&{+6yx&7Hg+i80G>Ts$RXv)B#W}Kdich$d62FJ#TGr`0!3ZS1 zB5!P`cQPOT_<7_0ylB>u##BQXqk5Mhg^8@HHimhyi$ac~Z|XZJTucsoVrGFudF+K< zkQDJH-Q_BDm%qi3G9y~n1hz_gpQx|Qi+*Q%K9jS!1 zrAKU6ki^LF%f~TX^6zqUZv4BH{5uWDwHt#( z23-ry*!vmoWC{#ggzUb;zahihEVO?Xzp0d6DSkXTb;3t0ATJ2rvAb_F2-%3F{dOHY z<}>J6l@(|6)`Ne9e!6|!pildZv`Q$(xy54lO9C=}--qe)%7Hh@f8ERO{uaF~hVp#5 zJYYz=4{HSf@gy`LF8<;w5kbizrDY`tt%G1)_$iz%P}Z@z%jSeA!PNGmZcxWK`9fe!*P)jf%zL$8~Yt%FJ(rMP`11yUkhKjMq4Nv&pnA+@cZi zNM;(WWeMe`&llP|G>8s9!E zjP$878hNwX>^NJDYCc{tHqC()88bgHV zPScr$n%3BGi|MF|Sqn_i%Pcv>4NZk2>6Teb+UMT>YlrBHulkm(3&RNuXzUJx% z@J(Dr0tYRk1U7BG0bI^$7qT%&HjgB_HfI$%FR^8#RfQR?9&5S5X%({X$-a%&YLyO$ zy;;eL-a-K8JEW@@>+goS#O*0I{ok*dnao7vyXP)U@r>2K-zJpFDNNZ5+kkUgfD4QI zGb)@exphG>zNs|vlnP0iQb zDnQ%(D5P^c#ZKrd^^^U*Zch?l=QCy;z4_K&?#a|_o?=5s6u6^RvGOy$WbbGAB%OAQ zq`a>8wv*5%{(@O0->MMrmM@fTt4ngXrPWG@Q!9Bq^Eb47e6`c8F4JUx6{o+yUKL>z zYtX!}`}OncfIkPc&E{Qzx8iAWYm_K@6G*h3c+~ha_0#hKX#%@<)tW8Q)+B~we9(KR zORU!HnbiKZ3Wn8PMiwby<`>n5t4j!>t*Kw=V+BF=lklPYLE~CrHA0d@^JQG!YTeWi z_;rFz;HjCSA{?xI;9a+{jN%qX7CsriXXMsZ8*Qw8D60E11ZUdo)OYI9g4vjUpbZ-j z?OWjW;A7OUNwv1h;KEx_$#wj}TH&`ogP&kW;eIW=>3A<9a`7z(YH_I~7fBnzZ>lhB z)QX1Kpp6XOZq`reH2C9X+3*UNB;8lx>bo~4Up%J+FRQp#c)ha0(h;c*c;#Gpeez^! z7J`PkyV)vyPTyoj4Ra&7$h8#&4EJ&kVYLaO_tG6Z7XcrlSVo`Xk)tY+5fn9^Ww@Px@mCPn`*fpFsz}B4mww(3? z-q7a$+F>%Kyl!ePHLCnX?$Ioze0EF#OX;!DRZQ8lnYga-Gc4dos*{3`+T`0T^&sJxGA(<#8xzVsZ<4fJk|KHHVfo<>l1hyUEz#ffw2GU!6*T&D`Eh)LVT- zS!Vgr5{W8rrbSLg6SD*gPA+Xa9So;ICMBZ*_K8?%7%OL~!;4VD+4cGV);4CX3rS*T{GRh3hO2|SJqvfMSDQ|fBWt5HP z(-}56ZF64&tUNKJo$NCP)HWzPndTICcF`F{epmCgPXx`{CligJufUI&$vJ6|&q(NK zkaau_DCITF{?tUG_W>8rZo1e86b9_Jjksn3aM9@l2C|$5wn~n=QmV?Cqua+Drzj=C zb^nL9w+yQz*wzLi5D38n1ZP8Vf)m^=xNEQkcip(V6WrZhg1fsr3GVLh@-;bUX6`w2 z@BL(+`Lk=+s#U$D*1M{z`{^z+RuPP-7}l{&!Kg22cPgT#p**j?pa8Vm*+}_$8|1V| zC`P`1&SbIROOpCAF2Cd>=+STMGyCrLw*n+Wv1;2TLNN_yp4;@|UfcG*nJsW@JVU4* z;2V0t;^K;Hz{$q2h+;ZwcuXXp6|$BA9mc$XQNu^Z14a=M5U#X4m5K+a3U~!4oRnnm zD}tCf;6Ca1fH5CI4sYFwUPC1{j#ndBpeukR7d`&xaADC>hd`9dNG9;(W<|f|9+zA* zP4lWa3owXRp9sY|Gm2ON8!#yW;tnWEvBvHIUQC=^$}@t*!uvNMdS+7&<(mR2p;&$t zV<+35?N8ue52JuuFj5(j>AH_x7_*B~xxrdB^Q#&6KqQnLL-~^ADiM&8i0z&N5=wpp z(W>f)Pl%x57pwaJDPW@i28{DR0_HQ|XQdCDRsgQ$uNeGE7)JJy#B{D4ry*r()g9i6 z>Da*lF^rC{AUc`oxIJZFO)U^L8Vrm?jBO)}r8S}0(|Hv-2|f@Se>`R*NTmHb2nC|* z?;lpgMNxmhs#&&QFA!BAz6SWt&;9B%<#dYB#61j9wF=#!2ka{I1mb2e1NbLA=0vP2 z_3eX=Pb^1p1WC!jNTeUh)`-n+M9%P69t?TYY-BN=8kqNDIx}}{6yHm+3bk;r}#^v;t{lg_NXF3@L`)9Vh1hJT@FMB1k40ulz`Iqsf4^ zBrCrulGwV*c|l-tVN^tp*XGZ0N)lsPF5+oF66S#pioT>SN|h?Bc^q0GxZHsJtb79r z1alEGS`>+`Baot$P0J&4N(90`z?5|kmH^lcnsEsPFfc-z?cEG`d<*b%r4t?p$!Esu zvC8D)Id*{KwOV=u_`cJuR&nNv5}x`=mcfO~2QdJ{j;`ml7qDE0CqZ1N|vQ^B^GI&fvW! z1z1?LW5Whji6ubaQfRtIK^iXvpd&-*-lfaEK{&Av#$ z)q$DpZ@NS2Y*$iAj0L8i3TJ>VrnW&(G2(R;xqw9gOSoVFiN61}s=W;}Cy*19fNJg) zK9F@1My^en9rcPsQ3=HYuYqJC^$+nifcR3t#3oh#h^{q(DAAcdtf+3LVot!y4LMk@ z9{|oqfm~J6N&H?+08J#J3<#?NE%!zf!6=?6kQ|G46MD`a|0e&-2cDYh^{BF3z)!>Z zy(UOo3c6R2RgIRym2r)C(}0`YOjJu@&kEsuihiWy6w}7YgwE_7DNxl3qm`!W?kS7mkQuC>ZVaYwQ?6Q>j57EZw*{N~eD3jl zj#>RHD9wS+CeZh3%z#z1^xMN7x9#mqZxJyiNHQzkGH>G6;7iDTe9NA#EzkaqL3Xk! z2b;ogzi-=Bntg)84f*XO*jv(a`Wqwm1U1=ne++Z9i0=tGx(w5ikxw6lf4W1yvk!v7 z!8_?Y?OpkHGbB~LLW_^D>>!6X#TP>`=@fauopaF4o2)UaV16oNo|W(<2(RhL0LAt?840_~h2MX_uTnzhOxQTD-P01g+1Dfdf%FvPp> z22dH9Ek*~;s|^X&W_hOTVXjV>&#bu$1q4ZY#e{xz#mRRCBg|6j^VK-dV3#WmdP?Q` zqhpt=4tkng6)|d6#XzFH66incw=b#*=jG0YeVi`6;`%})Bk{|jvkRRf4AP{rY&=Ea_3n4RR!f#}$C>e-GBmsRwWwWUA5aduInRtk0-lo1upK%%KaOi|Uatj@ zMxMJanB$ue6wFRgl1JHMGz*(E>69u-2k%jreEdyf({<_cZQ}4rkIl`)hCR?K%5=ga z8WR7*haJx!YZ&bfQ^*|mmLQ#noZ)aMM6okQPXHGUsN2bec`RQCJA)cjP`uGD;ZeH;0{%inbCJFOoNf^COY+pmRl}AfXgp zl($C1p@=p{#BcY6P0oNZ)ze+PEb&YSqn+mBEQg3z^ed!P?X)GqEZxLJP$R5JU!`^L z@xVx`#fHj`wCh(JSoMK?8!P_!QGj-QHVXR9DZ=1Tp32pf-@V9gjCZgoR+Pxe6jQvo z*r6 zbiV4yW@aY*78!DFRFO?m(rCxq+|;QU2WgA*_Rc3!a^!>5sOW%$R8$+-g@G!Uk2WF` z+zky=rhsH)&;%g#d=F1!JlDqBCf}jiCg5sRZWv@nK6d<>!C@4qkHcYJgvp^i)|CSm z({?Xqagm*KxuMH>hhiJ4HrnvUaV+&>3Q#iDWLx^}=o=GKrJVwY>}tS(k43@hYzPrh=bx=aF)Jq42<;TIM^{awo+V^-(R?LHKt7!_m2|J z{p6kO6nQI0+~|CV8fms%a7O$DY;RpIDm~oiM9#t|JnYAcSuZbeAB|g^Tpn*+FDhTW zq-svw)51hHgKH0^GbculT%G6AhZW4X<3k(9NL7tB&u}oVq~AMhT3$~ag@wpO@1cFm zL@sP7kWt8#iFw32nphQ9)+kx|n$3LAS+kLRh+HuCGI#q2dBS1SKO6EuXr; zV8w6iw_qE;sQ&qa9H9GvZ01H)82XGO-t7l|b zj9~i2!_>3>nm%P%F$E2D6|p9?>hs;p0v%5-`l`&u(^A_+$i@rv!T0hxrh}JDx9NKZ z0R@^W4A)O+mNhT~d#*#vdg9~X3fVZ6Y=q{GJ|3MU6ksCZAXlV~qX_!tZgr=le~ zWn(lcC>f_%zliejdnw8X9^%q;Ub;Hb3v|6(E>8iO5JRS3o|e!&7D+yO7G3WP!ais> zM6?J1Ntb=CeAB}S49JHX{e_(6Qz)L`C%ESzxqwGW7g&D;l5JPlxiwYN4eyahW1pc@ zx?)axo-e3@;VIBM*um-%5FwFK=ygP1w-6+rxCcUSbOvIejii1;Z7VLuf!n*gA#Xx{ zLcz4G4;j~Ou|uF|l@FoIf!m*o+99htMBg4B+*t%9r|?B+WQ=|uVs+%~GsG89%-xdD)e=`1ClZzst`{4WP0iMi9p zgbHf;?sKRo$zl1N7ggwTfNulljG1^N+l!{hdLjGI@GK~AMWlVq5~cfoR27d6>_}z9 z%b$A#uM(E0Rnjx;Wx;#iJaTlqRR-DV?5;bJsdJ+Ur#CN|oHGb(rR|x{vNA=GcB2d1 zF#CyhBk!k^xe9DrYb!IBZQt4{w`Z*+iNNfS5W`;OA;i+~wWwlDC&NP60eZ+{O5|mX ziqk9RuQTza5EYsJIZ?#>CZ`sd)!1|YWK8aPKcl$T)sc{PZx!tLW7W%6c54q}qqM|P z9CokZ4Uy=dM@i1B$@D5HE1%y3g1P3W4;;>)TvRZfjeheZkC^OwU0gR!2yP$MWd&e} zAiEy6adMYGXIOggPSTC51lqNdI4CPxr0Ft$y#(~sv~qHz`u0|#7U!irWBuA8JsZ*$IKdK5%JuQf z9gDzQ8!oT-T@$7jv0|cMK_C4!S30DLZ#c9ABpGf$9itZ1H{TGnoorp_ufLDsV`-v| z89&d5c76!)MOBNHeUm;KlkFSlg<5Y*7KW-OE^c%YBRhDMo()}FMv<~3O)&A^YjDa| z@}Ymc)os&gC9b39?R?!(mfHh_Q8?~_-?h%b$0K7Ygu@Z{G@@Bk2k0_>by(&RBb^p9MS|=TK)3M<^)h{Et8UK_o+FNX27Go% z89b0$>mP9;D{<}lpX@;eD`hZO>a7JU)`Cw+;rF>IFD1P6`%q`uwCPoDix(nnA!9^N zMv{NJ&YxlH2{op~Qi*jvMV+J5 zKY~0q^I5aRBia-Y&x@tsNlW(AaTBu15qZRmJj;_qvu_$6xUrc3NQ+d$y1poOKgX0J zw+lzOYZ3{2{Els_{>h_``rHB8^AQ;6e!4ix$n;pPahV=tE^eXSKeW$Afv^2OehNvBZE{6G)&R?X*9={6@ z`#mw};Ua~?Xhh2pO@RIgHB9Dg%$l`NnUnj(JmWX7* znKIBZB$3D;bVM~s;OYWB9*G>?6YN{N`LMmrTY9^ z^0^pdte+%;ypS<(KEZH3x(2Q>Q81KX9z2x59RxJpEk*6RFJ*Hzh6XxrG-n@kP=nZ5+LLdtY09lZKSUQi$$H)OEfYX5DHgOYDOc8Gb8R`k^ zO;pk_O-yKmb;CQw6hB^ZEyBvTV?Y{ZIpl@arVc4~<5H6N+U;5SzVS;?Q!y+vcU`O16acy>O`%YtQbb1^Gz9KbFe z^j9Pp%)h$tQw&UX&baqP@nkr3c(U0)+f5UaV(_Fb`>0s0dSh1H?r?q+rq=V>kfeT2 zoX`&JVP#B038`)d0WHE0Xdww}W)jqZ>r_-wI;j=$=JyL)^n?s14#5R%8f0VCjoe5# z*3V3S!CmD0EG{W{-``~_DkjAQD`qMVHV0p3h%|(*sp;GFb~(?Q{-6IU~H@mgnHz-uV_)VNZtMce~sge2t78@<;`D`qy%$x4`MesXh zGp||WiUkiXgGnF~69s=>JF_gj+qaeW>^$@pCNp8G$#eVa_4L3a87du)8k$l7vSZj( zZ_*Eqa(6kV%v9vnDtKHYw+|~^;tT4Rg_v(><-m=yB_*Zj&NB0^+`EL27(=+Je!2P4R*<4LvvPcWF6}AcHW8kWLQU)Hg$QAn2UyY zM)*jp4mXR6Etae5sE~gm&K1v2q}^}piMnt(9f{Q_QfqGBZHcmbGB57yplBgemhlk@ zU6+sESF!+*wJxlHconiU*gsMSZV&>O_BrWC+uSuO)o)HO+Aox~^PnY6Fs z_wF4|iy@JYA?et$VC4=Mqt0vg$g*Q5Ijisf2p(C~E;va`8#kRGUCxT8i=Rfsco{x? z-vAuV{GLlJSm>~!ljBIe108U$##;LA(HOeUeJ#y5z`d}_z36>bU$WZHgMxihh3}}+ zarO%OuTdMSk@{SbC`Xb$Euz(Hk1LHK%;;IMD(&D28$_hp7$tbgtXVjx*{Dcbz2qE< zCukGW3!XgVUoDI#VLw*YQ|bA4$77!!QeadV!W?`Azhx91T43<;h^psh3@lu(9sU$2 zndpU1IL+5%>?SK@GHym(z!s2=xX0qXgxkX)h<+n12PVqL>a4EsJ!L0ROtFXUL}yO5 zlm!cGqL=@4>10D#-B-;^`gxYO@7dM=WfBSrap?5(2F(~05`6io%;U8IHV0|{1k}}K zPM_uNyEjnB*xb{Yg>bRr`2x>wZi2{T!cv+nomB-Y-D#mEQ#0shBs7+N!q0FA&t@cf zsSA~nDqpUQD~L`9!a{?kX-0%e^@%$QbLR_;rsN9h*BLn7RqM-r^C_I(VWN{;*eMcf z+*6}dN+*_NW#hx`lrs!{&6(avt3b-Gao#T^({GtM%}I-Ubp0yD?K(q9PyeA@1TgJ$0Uo&lLg;S79HA<_~^uV7R6?(iu)Xu;{j17UaWKzU1Po zp=;ygVyZ?uF+F^`+4yLV1COgKw4Vu8-OpY4L6WEE-7nz9uYm$_^mV^BW}h$o3_^av z3g%uP1L%vUFe#;~?!aRi0sQLRP)gAPD<*|l{Z>FBhArwQFt#&Zx6kQ%HfH=Q%&Re4Z(&-T)g>zzLD3SF9LyOxLZ zP&Z=RVK(-2OJ<07bZmmFrG&E1z_e+6HGI^`5O{!v+#=4Ix=j(ogUtIM#lY0v3iVt ze1a2^oT($ltI!i?D|x4lM=5=fK=mcez~yTXJ099hJS6egOgZE8>`zifA&&@w;x-&` zgAE&p5arI5g=A2G@Og&F&_^Q?F&4OVua&YRBXV{#0WLz^LoRD_T#ey4vy99D^5inQ zIjuICia_Q$lF3bHm&(ZaUrA;eAp+5e#)-&tqT+dFY|79)bCFULnE7+dIeNsm>$VHY z@1?zBB)bC2<-n*#15EV!T{+zXfL1rN+CR1)qZFe9S1cUQCDh&Bv$rvMP};sP+(}u_ zHam9G%`$I}($yz0w?Ru~)1413O>rkmK8>K6Q-qD-m!5oc2zfFnUd5yk`Q#&HYeVY! zBW}<4_e2O&&ktd`H<~CEv2k@7@kXLOsuLj|ENu=Ekj9CaEdauuwK48|QZGL)8dmbL zQPO5(Krv#!S;K0w+NhGGL_+^IzW_sA_g$SKlV3JjlvvdL3=eANVF9xvpBed`coU6QhQ!QG;CWP3X?W$ff zhHEpQh<{h!Tg$Bf-8p)2sp~#;QO8G-$m8k^{y>zuUcFpO6lru#ptvZ9m-{Z$Krt!B z>0_ipiiv9_B9m`6${xNCm5B{7ru>i#p~4`sM=@rxNAs2FxY`3T`1J0T!jqgW2(iaE zg{!*I4)Ps6C1P8i1J91?*1UZOym3*%a9i#TunfoxBMP>4s=p=zhI?{J zcK)$#XL4)5TuEohB38)=CKe^fU0gmnAnMe% z&{T$yD(D&J-4cV;0>{(B&}j>OgKc=EW$VKV>J1;1+(CusV$6l-sd4Yu5Q`tBC4x`) zm3Y!ASI)SkZ>wF`VR`SFR@|M{N|a~Hr9}K9P_OIvFv)dQf`y(B<8JIkx~>2oZP(NlcZFfWYSV>z z^b5?xvPyrkr$M4`@YX`B(A%dOv?7oOQMZ0C-ld+T-bLH_WflKpth4Oh@poC{*u@V& zf8?&m?7;g^hphu&dP5Dkcq=qYNC4i8aeCKP=}cQlcGI%qf-nK*_FuJG;Y{oMfJ57m z&n=jzG)VdZq39r~D{nCV)`DvMv0TxcecVSp$7u&ik%%T-Yya8l?3}dp;@K&TXLPPy zWmQE-(drcMN_I-?w?Jw2hvMK^?>}(QrzZz4UC~ZSt-}iM?5(x%fz<-A?aRiel-`h_ zln=KUT6;u4m){qo!!npw=y}@}G0opop=}tukjZYXrJ;Sw@p)Ic-)c;_(#v9B)K;cQ z%=V-Ji9!c$Nfenvhk5BV==l2>)O*}ULhXcFTbtSDThtZDw@CzX7N?I_8Mww#4Nyy> zLqogU7Y6ChD+HQ6BLin*!h|QR4@N(qwaTrHa6UuxvX2L<$b(6=1&M{mV(noCd*ITj zx{&-^H0oUv+6r1Pm%8?ZuFUA?cg*``C=1vy_q8<1PRfM}iNA3dl6`AgINkhNcF8B$ zh3#7A{O5wN%b!scA&xAdbaK zG7Q#SRG|lCB&ha77?;rD^K;_f@}+!WkaY%TMb5fLcPFp19_A5Q&(*?CZt_QaH}Ez= z@%r_8JoN(8n7Drq;^^R=86u@rO9Plq&q=zCRa!*4@+5&ZLIKopB*xruv=m3jUbEO= zIIvUeP|O=5HV_1DuNI}iXhiASvk498kWwx&mzt6^Ic@D?9TguRsqoeX2k^_}XJ`rb zh%l9NQDptg!cXx2-SZSwk-;DTSeAZ0>Ia9e-$=vk;0==ws0RO^T7f zYEhrb=lcLY6R{M7Lk70-T@mtAM|0X^6yq=WwvPg}c(+2-P9-9A^B+<4Khc2#g~A3Z z{3D2>WLT(WqeQ~`fA+kkx@OXlOU6Svme3_xjE)L>z#Q!wFHN&88c;nck~Wd#H~79M z7Ru3IGO$yU9>YDTf7Y)(n94RLQiX48HaBk#HqPr?&krsmhjco0E+$3w3^IIertjd`wIp)1{ zazu0x_B9{*q~IsJ6t!rXc;3%;??|$yI(?oRmt{80 zizI8{qz|oj-ICl$Cpj5m^82L-*1`b*#x(q?4_uTzVlTH`D*&q#X)6D@AsINJjY(Kz zeJ+$p(BI7VBWFrU#WWvF0Bh0+BKpl(g4tfGN^Y3zodNURIXR7{vN3z*`*bQN`N66@ zeRQs@5>-+o1O1s2RHi2RK}x3T_CzHTu?XoBBAQ{Kv+)L_g;HB>lNqPwL9vPr4b{WFnJr+$ z>r>X9#kCbNLLxqne-kuuJ!xH{`W7iVM)7vNpx*K!4>Pi3lL6Qyi>eo4`AQa1Lnj9p zx5Edp2L+=Q4m>4CX;&+ciOuMRq*1n5!ANt&x~xs7bQ^}GDIfbuAp2Q;60oQE`UZvQ z`w6rZR%udv=g!YcxDLl4e2%BP6lwKV6bVW$YsE!Y z_m`h~JH&9J8S8qFIqyYRbGCI$Y{+>h-Q<*gV$;LKrw#*sH{}?QrX!i>OUO(wtG6UL ztyxo(>~BjZ6ka}=y4PmP=s=____2;;7-w$}Me?OvaS=7VNd&c4it*AcXQlu6GE;3X zW7UpPMQ#qMPMzr7@THx{|6o5ih+(gX0oZy8vG(aHgnU-uiXZc(%8I(P(yN8}lyQh2 zE6F3kt(qhSGms5EH=QUBt(*)0HKN#>6!(j$3uEC{j&J=ZNGb6FOyH6 zp4#fSacYUPJh8q7A7J|!yw4-uwu^ESdv{`*v%Z?AuNIsSsrKQM90i=vVa5tC=_J8@ z&#T3K|ppn(L_jvDb4j!JrLSHJT#E_o;t_{3$cFtJOAuUyTg8)h)?N%q&yR)}V%vV&u=Zego9Q+-M2TY4Gbq1MSe;#G; zYUP3o};?0-pyPI;V_RjfG6MsXfU_$Y=RCeb5D8EL`#Wg&6tQ86V= zdNCWUz3Ds|G+#VjM7CA_M}9nLpm^GJVE5~hlF8ZUfR_EGM|X$9YVSNeHBXIk1b+0? z?p9mx9pQ?=MCnt0a76-os;I>LM36^W25)NMXOCK2qByR}3)m;nXT=nDp2Bv9^IH;_ z+0N&$=;?a(eQC@r4isLRHyok;{b68O)qM_dfQNgAKWEVZ^5I>Y=p~*EiJGgs)~|as zxD!r!HGUgt8a^7M`Sf5ORL%SLsce-TJ_0A6ThX?7Oy!!*cbmG`q0RPOtLXzfV^BH* zX*9@zq~TZe0?Fq5J#&6Y=o8=HfwCrZhBJflyqk6k$8{**qUSHlTiwrU=yw{estTas zv2LPL9@cm84#{*O&gk7;DduAcTSTO(8P$8eC@)sY=VO?a8BDLb#fnkw#_y_SEJC&& zun_y_(J`zx$Wdp_e}kaYTj?@-d?U;mclxrf<`LJ%drq|ubMWcTJsM|V@+|H%ixKPzR9 zxX)jeMI$Ue{?!n@z-C44$5$in0tqN@#f&r%iYRhXCK*0#4shQ#${ueuy({I`nvckU zNZr~qXOrL|kZ%B@A%lccTF+AwDr6Y?5ueSapuR}9Ev$J%nc1n&kn+UcOu((sfmb=3 zC*8qSd9dl1kXyb>5-_x3uQHi*(Dxl&Wl!K z?amWYuX)Gdx#A~YN<2geE7_upv?QnU(6;T zRbj?mv;@#O-%BLS1-*TQ?z!;N~Y5pb9OfhE0r@rG9* z;iTagd`9}6x{$1ljAf`c-x0CI4;Z&Mg08{So~NoRNX*#`93pRSU6Gh1^z+tl@r)o( zYS_n>t&q3jk#2N!Drgo%NMG7v-^h&jrO;@FUfX)WLLmK7%!TAuOk&6814GDqnz5Wh zZ`O91Vadhn+BYRhZnU02@~xafWQ-W%+&m#eP<9>?57EQ8b!xLrk-zP98CJMiew+0GspGjlMqYCYG8+Lg!{~ufKN-oJGtms)dJm< zLN+?f#$CqDNyRj@snrtvh~j~nqX&+uhp^F0mh@uIQ-?g8CxrBFSE@QH_67cEJ5756 z_H7Y@ZMyI=s!GX>`!3)57Q8Ae?UwB{th9$ldItm<53+Gdbk<=n90lDfAU0Cek8 zt#o?mz;DQDL|gJE_2k>aG;hCa1Ij&VRLy(|%@^lP^py|te-fID1oj2mgP`O?NYRgX z1U(RQKNie!Cw-RvW)({2uS^-%nXOOXI2k!iO>ReCd{%GeMb^X-EuM_JunVhmRj(mM zxu3BWGDIVyv8^Bn``l_sOdCxVXa;6CqAYq7Uw4WwZpx*n8p z-~0YNC}9MP9#30Vnmx3&<27t=fOpe)gxafdHTzwPXOC~ohefAu8n(2R`01BFjGLg5hAwKs`%riW93&&^ zILV2GSS>5b9%DR0A-3OTzh0l(v}CI_wo3m>86K~Xq9RxQh6&anI4ecEGMF!n-+sgq z-pkH|x1lumS^2ZZp?bl-<_!9rdt@Rn4oms17UfTFnHgf)#pm3v{qJ+`f23=Dwqq!* zTFS}#E;`(#(&&200<`t+^ULwQ-#$(OPct(qsVI5ltwp9n#T^99I} zIGdS^V~72D^(8m(Tg&CW+ishB!MDJ%;`MK~n=~=ubZeZ4f01R{&YpHZW)^#-$WVZk zPY7;WX)8fYh0{paXN{ep>x&+0?G@gDs}JQT>9G5V4}L0Wu(QB(({dS84%C%KmTGnE zBax<>caQ88@!j@S9|$7JTm_m8-B?C*humXDejJ4uu78wpzriKc9#%$vnaS}+Qg1z7 zvG(=gLAO;IL>wbC_J3Yx6#&fiE?RY|^B83*Zvo*%xcCM?NL6dBh$PeOEgcPAq?M@S z$EhD#U5t@)LuWkf=s80+gmspzKCH-(Xm*fWbI32NRvjL$rck{csQG_2?+966-w zavFK(Em?zp!7aug-0A#;M1Y#&CAj>sdz>D;7kcbBGz%L4PMw&=Nd+Embtc5{NA~}m zRclUs)iM&1EfO8B6yzb%sdyG_ z6*@UpP29*JJDS$aH`#5P>FMkog z{g`P?x(m$oFLA{87oRhBVmT+Cjuj5^1m74zKAr7%f}Q|@6EDewL~qRnvpuNEe6}Ya zXLjj6CpznWxqZpjh$D*fCNlF6M*ICzRGuiwU_8rdS|V}T)cZ7QpzVL{h_>y2ZKoGw zUo=3$ePh>_&e^!a=_Psbj zozU6|K5;T*L`#}O{s49xwkjy=lNFG+SrQ^uc`}g8^TfXp{qom?Pia-BY!=?&ZBT@k zWUl8B#?(X4&{JiF1R4?#b;Z(MtTBF3fZ&|VZ6I_3&6TE#SE{4*-V<_C?gk!e*qbh% z-fR^|ES>ZwNbephW0%LbGQg;zU~SHkkYkOtUdB`uZx_ofp}as~msce8n}pl~&*jgI zm8Jt^diGM-gxdd<>>@jMIH7cqcCaX>Ow0X3c8D*VOJrk}X|ZmQ?t!dt%CGM{Ex}); z5(5j-AHW~eh*<5&Yi#(p6)(R#mi{wpE0AA5*uHc>kL}(N6-R4xguwJ7TQc7NJyQCL z=7%Hg3f*p*DEVeb(n&iZY=3%a50i>I5^!VHBJ-!yMzXZ}YQom2$xHd;lB+M*73QrY!r8Q@5|7^!v4-nnAB8nq@vt%nk-ajasJ@{ae z!5@$fS?{u&_1rgtj(&9SG=hwt*Tg8UNeP>gXfV#mGNDKy`*di3(ZB_fDgYgi~@+Jxtxt5vRjQNmF{7(Nk&{M zmdLnj-DoJi8gdc*$qpk($hqkaeZb~rP!J?6-&N68N-K2TBA}ds1utnx?((b zB)JY$V&Wo9s}ejkBIj$-lhK1?YLB#8`}l(5jaNd7YUgJSf$x(%9MAXeqmX$9XfYU~ z!!POkf?Wa2`gb6(Z-Nq7EhTt>)r4PM7T{ zYG>wq^nCkZc9*Vw(Yh1mXp8jQv{I5XLn_xsx2X%Wo=)KC?VY2`Gw96}9wg6{b;?yR zhMPn{4a2+m4jV}0s$FbXY>Zf8@*>bQ{-;cCl&MMcOl2S^`?3{q`(OBx?;4j84(0bg z?mZ)UTDD7PSyq1f{K!L&*Fs=;l22DV5Yp@yCu27B$*E0nnJy1LkZxYv05rF~WKubj zjEHW)a+xp}lm3Y*CSkxZnU!1S1GO25$!$?O-6|oG7RJ|Z&qPqfC1nXiNVzK5CF@Y@ z6yk0%C?VDy-UrCWFvdzE>sa{|3FhRG&~oaht?R+TP*`s?qhMI&P>2Y0F`U?;q=?cI z!#)|R1(onY>g!J~C~CZ~SH(qbaAap;JX6%jj6+CgJcAfRJ#(VSUq2V}6`sv>1`RAP znMAcD(`YJM&Sl@v*s`Qc32P92?OdS}9g{Lxm_crOdNaeILC3>Gn;kI1B4Fd($~$e^jF_q>@tDOs(ak$?`{&Qhw*akr*`I3Pf!MV-77OY%TC^t8#)Q6&jHM+`LPWe3*xx)uA+&G*EYr{klQa1`( z@oynKDcJRlqG=(#)p;AmoTIa)4jBO0e-UCW>!}W5d z9xt{6N;?#hAuqN-N}B(hvfQmL--B(g4p=tyzgsL|n=b(U{zCy++~8!)nf*#LR{}g^ z|J`W8UU;FFaeiJ65c6;B|4-*WY;#Va_8$u1QpLfH^Y$qdafMm-=ypjbNpQ`2TU4Dv zD(sqa*tkN1;WW_ zp%mV{2`KD@)h{Ts7u^1Iu-hsZ|73Fdm00@a)W$$XzkHLMBHoWWUHhnB3C8!4b=%?L zh}gr46=GDU<{^*=T51j*9bdtj?Jt;lF?&2HHJYtj zzLE)b@?dE&8-|UZSP2Ndn=@juJdI=Iis?0(CZkm@blU$z_W5s-r&=O^G5t%bSS5G6 zP&3)SLVQG_jU`nlHYwlTys?LpS>|az0Zd6P(~a7vB^{J|Khx_5es`Cf(A=n=JAmnNd=D&7nT}nT;ZSp^5zk0jes|I zEg=OPGsLqQMI|i1^5(R`N=02a^|ob1^ssRFN6=Nn`nOm$hFYW{>E3262xoh1us;%i z_N$4t$iAbiHMVZOH$eoU3HHs7BN@rb)a_J*`9c5F_0=1yZ>ADp%73jR>5`Pq_H zpjzb(pC3B%o;HPrg{mGPn&m^8=tA~F)>J@jc+RVMg89s;+u1T$FtqSwapCEa3PRsv z!A|$S`T3U(xYV39?DTd)`K$paNH#gUQz!Yzme2gKB4M$)H6*V1$*`I`b=l4TS74Cr z)~9gST&$^F?!q}npYlMVZQIhfAbntGV44; zZ^su|ER8!rVSRbKP&$uVwvdzT|EHyDi13(*adb65j-S{>w-@^ndb0N?<1JiHD7N7# znkX*NL>|FnkkTRZ$$Z$9=e4`mUf`}$CI#z;TI&}*yRY=ncjE3 z{51^TU|I8@T6l`M#903o3Fu_m?_=_+^J~A?h-)T9E()c=kRga~6H%|HYCi8iiX#Cp z&{j7m)R)51g!`FxFFa>%iHYbRV&QT+Or@ZZ*Y}MfZsdfaP}GxqatPM?;11;NEZ@cl@{>NewjSmDIsr<^eEN&?C&JItD-IoKY98UlQ ztAdmn21Okp+XopZSg-*xL^uuh-1@N3)^7cm&68tW%I?}%cBfu;uDNtH?ZZAECS@|~ z?>RI9kb~lH4SIY`mf53Q&?Job++q2eL{bQ+S#j0A{m^qs(qZ`>Ztub~c!Nw~hc?p& zA~eaF$74*dLV5(y2X_1&AlS$k5X>Y12*v>fs|@z)5L(j8E6lbsY+0$@$eM8pPsp=eWR& zv#4jX_hiemx`x@hnj41b2(8!$!}X>}7YZM8rUEkDbAQ%TgwM__&K9VuPQF#_GZ4d+ z1tpVy2Z;9bgfkVMTM_#z?bf1p)LQI092n(z@*sE>q{6Vb)B%cpZ{h@tbRmcSvH_Pm ztQIV?(I_yhnnEfZ1!q={NOR_JTo)X=(>M);)>)o9F0ebMw8b}Xyp(F@;YVnGH-sbu z?!#{Gt9Xh50@_Ic0a~bl0D3q;K!UGgpH2{_JSc?p2hbYl2#8Tx_XCJKAVm-(HLOw} z!Vv!qLzlIz-EcYHe?bDYeC1Ew5YP`vb&$0SgO8=LU*?~w5Z+o0-2(fu#>FqBJCLm4 z8rabG|g7>;eBPp{2Cpx6Jsg5hH0=v}A_JJc~<;j^W+KigqVZ+EE0p1@&WjwcD?R6)uM z15v{&^dZIhys~9ZSIj1Np-KMLw}qXnV;UIZ+P@?axgv{(fwcW0DJ>&igVfE)hm&fJ zy1hs9?bQ1(-RPLhiEH_3_3!;S3~u3y!m!=Fi*)_dGxihK$P4~Ka+1SR1YKm&7XbQd z13nAs1X^$QwPzSQtyS!Pmg6adh^YgV`rZxwS0td5%T@VbjJ);(RAV`r=_=9<8N7EH zm9VHJ6ECXTp)0FL%&B-*C``;k^uK@Wsq(kf{)V+fF)twi= zIa~w^UgL9F?KMj*%Bk8+ILXgyJ2ag{u*eP?1T0;JvYc>yO@2ksgwr41`9-~bKyRcB zIfb#EU$xY~3!UEl6Uz{xKoap322jjL3}_(H092{B0Hl}4z-NYa$ zX72*4WAgzX*QloL^3{t!g938DWpfoow6g}S^?!=#H%_YJkvAES@4kwfzZy8u|9B+&veCijF>xp6Hn6lF>R?dcA;Y~PtoWZm`L&6{ZrI8vU3NbK)9V%K zPAGx@UQsz5S%dpmq+50LNEu|$%g|C@fUw@;xJUfuW)Qi|-H)dc%oMST5k^CHVr zH>==dH@jd;+wNmdD+0I&(Dt^Fyi6eTKZEpNl>hh$qtw?-flw6o9}wQ+{J#e2zg$3C z_`zNB>cZ{Uen5^KdByo`R^@ZnMO3nxSX8}I$-S5aTJbY&V{-#``qe$}TKHlbt}&aT z#}Lbsm=7l|0qN7Ob(Pa|ef@*OG&zk+$nX=fs|wx8^(`V^OfycGUOUD76S%1#)pR`$?)IC_x zU+5F0m%sX8KNj<5OlEWrP^bYfstzHw=+PgThpS!H8k$cd5cLxKD6Jtz%lUah`B}60 zX>Ll1yDK>6vKeO0?dVq%&av)}72NAzKJ1^NK-f3T3Mbq7K4X2CM)^(Su0Ht_6x|a+ zVe;iNx@M%HN8XgXx#Z-UDyQS5_-SVb2SEoe?OhGMV^kj`mmGf?9&*~t4xPsw&CSHc zvHo-OVp&>b4@P*?-Gx2--%kiU>9hqtv-ZsH{hBIHJ}B^T@+r6F!X~oIon z7KCaE-EVMy3Ey?Kwm}aaBRl<5ye!jI;J}>QWAO{NON?pnyCy=2Z0L_98ULMxP71~U z!PYxPR~9S*pvlA&I}>NZiET`5n! z;K=5ljjNd+YS*q;OUJJDqK<`Ztx5O2Iu1HrUaSvK=8jY~XH?IU;?<7ddz>}b%xeW? z^ROoOvN14U+0ZN)9}yQY1R&;+&qr54b_>e~(+(G*k2iGq?V;+KAyVwG>}l*BUJdT) zT*M*^VQ0WqcTJ~jcb~_d3&94D)%3DIjMDoVb}Y{))i|~i>?;&Mbb1P1Tk-&LnR$(f z_i_jImJk6TMlUI6%&sjwOUKDw&hX|HR(|eiZ)4zV$)=1w`t;`_15J5UG77>Rk`RKO=kj^ zJHyj_dgFhH`-H68=Ru!^T43uzaV|i`3kNI!S_&)Pr^zbU=fTdS)Ksow=Zb}550%rE zq}@2#H?3bxFK)MOj13h}e86IVnwSA1W_)btjXk&sqH!iE7s_SN%MmFr<#WxAuK)cs zu6l5VZ(d*K-J@K$#D4_ogA4P)QXqvp7CfTY2IQ~^Hd!}y=0LRA?H)!j-@;*lD881j z9GkIcK2!}p+k-m9ipOh0TwBs&r}}Wy8D^;*04>Z6hemY|map0t&|Xv) z@4%26gXrLrBSyPtK;XhCiHKh<5A(Xmj@uws_2@Anv?-~Zesyik@!;_n`!5I`Cj?3`Vi`X_;xY~Al6Fp+LTH7_PC zvZ&|j(QES1oPkw`p(} zqH?z!K;51V&$T~j31f4XU6rtUEtE2WBuV)R9+TsP?hvz{K4@AOy*vWJ2^}44Cw%OJ z315BE`>cI`=fIuEr}I<=bw9LrlIr$SF@#OAnnMmI<^cpJ9+s0cI9!rav^OiSkD;D$Q zs2)*~fK(OlwU~h*uj$Cj3u7@DyJ6SPY~Wyi^vrN>u7AIxSa$mNbZxOXe^o|NvHaXC z+tN`!tO-T>9USTJndUNmkZ477=*}UD5asf zL$>pgv`5UfHtYcj2n-CcJ0nB4vfgEe(K1L*}T_VD`xRt68*F+0w~rp7{=LQKe?w zXk~rI)H%iv3eXmzDcX@UABqI+ctgEQf4f||f21)q0k{OwL_L2UtsQvlB%QTYV{zto z81{_GEYiaiT}?lnCoi~pJ&8FnW6uq_{PeB*7|V7!Gs_-KZbQu@WB3@u*bSGfT%vgX#PJrHSoWMsSoPwkoKWpv3+L(N^^Zgw9GmVPfYtE50xa4zf7Q3J<#L$z zod))QW`eQg@vAIrM(SZ#SFP4at8s|ngUmOEyV{k$~)f_Iu0 z{J_oSP1`2MFj%p(^9kgo+YUB>o?YQ6&nX22>DM)hUKTw=@%MX(d_v}w@aV5rAA;{Z zUrkKZt+9p&Q~Wi&@2hrW%l%3suewewL?2cj*jtWQQJt*s_t`I7IkhpN~1bYbo>_n$oH& z&wRoo!rVJ}1c4{SBZeMVICF)Nb)?3q+cmnhWD5%HWdI$9bx7(-QYik--x7=9oX6(D40g ze)ftm(C7S-*Kd4d_v8hcfG6%L*VyTVXM&)Mm(Ho}nCo+afJg%b*K2DpU_qvB!=evf z>I7$WvK33fg!r_iv%CwMv)o5GR(E8g? z`4AW7P)Ic)St@4>b7QFOb?U_HukFjUm)o+@V-Lk2#u+93l)}~CI-ajmJ@=nR;W=Rv z;iwUYAQI_s8*3)@qCSnlT&NP|@CzPnA=4_1w z6N?BPJ)W~`LVKn;P#cXEgs$eDbg2o*$Gpe^8ZnxN@JpS>wF9@WXBIa|Bpv@Rur7OE z&MqPhAp(WiwyAO`3slOe2;Zrg&u7~fEqk}k;vhp)pzZ{^8hrYG+j>gQ?(CtbEYq+} z@h@t)%=@tQOt!#9HcquvLOcgf8Hu&D6AA`LppMhjZ!Gv8Dy=5y z{3IFwp^4%JyuJkVwxAo{Gw63t`G#ePFKsKfRUHsmw8SR2SsgLVIv1l*)$i0D$TG?v zI_G@h$0LXg>#U45rm*~wx;sA=#=ZEd z-aYCr@H1`6H1_u0GX*voBP*#i$UL>_!!dr9vIE+rB-S9RzfQ~sUA4yx7lvAlRMr>h z>S`xU$7$+zX){Yt7-4@C2e4o?9UOb>R4kcTf?eenUft?76des+AgE}+>v#`fz-gJS(pr!a#gNVb4PxJb(S2%O35VOg2 zgO`I}fO}9)>-Swqn)jrVBLzuaRGWy@j*?oKm=)^~%;R);`msaa$~_XAi+!e^Sf%ktTzy{rr5 zv`D)3Ig{LWa5k~lw8^U9{1bi2d@=H~q!d;+vg!A4N2F%x76sF@Ur+(l(Ke+cV6(^_tu9_gmabZ{IzM2$7n7S=jzRe6`8z{X zbUuAFBxyr)7Kp{^OcKLw!Z&C@*G&IKpRzo^ZHWc=%?l*+x%zT*mj=>L@9pUuCmhL4 z*i&SiXvr23s?rL-2tljPxTo%Fv`ZnCIY{Y{txFKlq0$Z~N_sooFb)h|80~VMskKWj z8}jOqeFsKMc1p=i{u8A76`@nqd<^FLz^Hs~ghKru{J@B=;ijZh2kt}W^s{SPc zuT!+kPGNbLf5!+zL%jxzB0BngmO=?KQMV53XWz<87RO>Xy6|Ho(9t1lU%$Cw-1!dp zYD1J>2;=4^v?awFI1-}BM{-(sMqIgoX2KY0o zNH^DZtk2!M1b*iO@EpgPXLODdcnj*A*3dPKrf1foy(nacgQwjO2YyjF&0pSFaRJu( zXiVrDCgrAXLz&i+H$Dlr^N#swo!S=qPNSyjm*EYIIv{z3XGMZO)<$C9BdS3&K8Vi{ z+n|_p$3AXoiuEV`c%-9XB=F@fk#dTdOUk0as`ckg(Om=Omc)(7EgKTv!BO|7t`sU(ujJTg6DoW-vc0E$5ev(XK{^@~0?UrQ zlVeD4fXV!`<~y5*c#sb0UDFUubm5PQW3GAzC=tKRUbBw9%QF?TJp`bzlRi@r72;bEmFmjPdaUB1e9Q6y?Oz$0Y&ASl(`|F`%qT(*)lCC@-x=H+4n*ksJ zzC4&BA^Yw&FA8H|XU-5?z9S;GAwDhG8qeG)7w$=ds0p8*)+Sc6@N8Qjg#}_0nzz7+- z@)IlP8@6xNG!*RZ1kAH0?6liE{2~SRU!{@(`o%mtB)U>DF(-_2aa8r7+Y_{S=-rGc6 z#!E%A%>ei6dw$w<6cX#df9eys=$h*x<7aSdP)bPI>^;`0dthhUF6bADF+pz&sB1w& z{l8vpVHR5rp4_`{7Qm=rC3>7M|J5c9Cy> z8V$%S;KhTFZ)}5!E>U6<*{GBi$&Zt^U1Ra z&#Mqa1$B{I80H_5buoFe9}Cam)hE7<=>Y(-UGJgiQED5?0@6>Ic{XYDf=29C4^g7& zBE{*WqiOo)$5N5vcsf*F9}yXzui)nwiV`LW!6X)h)x0`4@=OM0=51+naX$^HwS?;! zcn06e;9lmbdO)G%z{}l%e|WoaoX0z=+yJdF?E}Q#Jsq6rP%puybZbPtqW4bapzXTQz~@6F&4{|h(kWpJfnVJvu^0U#v{vbGZVUaikXmBJ7* zzZcJerhkiF=O1Y!&46A^Y9n)r)q{1pw)U56_-JMc`)c9|uL72K5e;It*;NeUN^M-z z>YPVo95W++_{r3~n+YRp#k&)(I=baO(PlQE&B)XCSBl z!uZRvzyrLq%bDBPTdUf2pA8DU6|a`43j=Rv?&*w#i5*wg3|`Cgp#@`W^IuK)s-mHz zx0mFjqvUo6LkSWpZ1_CM`cC~jGwzIWEAl?*k0&!`yj)g^FOQ8j?6`Een1va9V@Cf! zp(+@2&d6hIZvGCq``+-9$_*vo=Ms^8G+|#H38J5!Mrve#VkIT&;|e%g4&tscdB;e5 zK7<&>pDkn(=4U11P6Mh7(MTH>;58z@Ti6G;|IsgmcFCH<;DTRJ*35uona zV?()P!@1!pQ3(0TV7wiZDN2iDncL$Yds4M#Q&r;X5wEqK^9nju;^t+*S_*ts6cou| z07aA%*kzsU#fw1K9m(2nCSIU@8@$6(@hqtT}WBu-kjR z!pA;^$fTpFLI)44XLSlYB+8{VFoH;s(}sO%Wk~rb^ELDMo5rCif$yQ~n0nVG3L5=yX|q}>{6 zE7nzj$=5EZDRx$wn=LvLnt3=X-yt==m)EPB>dd-0B#8AZDkUt>5@Lt?!EGEdB19CHOkjDiuJ21 zW$}BdK-yt*(wr;?q75ZqJ8_}os$wdk>%Ew)zgWCFfJ_WQga;lAwEn{` z@KE{dU4TsfzknU8se(Rf1mO-;f9ew-uEep~ZtNsd`;4dk;l(*3oZ+}wN!ch19{5^4 zb;jSvBSe+OzRc8;kk~vN1rN+IK}O<39k{b@*kXOPh74*v94UHpRED;73S`L6J`~8# z-T(WJ0MgG~(q2-F_;jjJ`f>8Sf1SWYm6m^F>0YuJoXg48Pp@eYo6nD0WMZ9@XXcBp z&9OYD#0Qe?oj{}SVlxv96Wfmp7$^(>ExDjhgM!>PW;n9s?m2;7sjtq+e>@lW z4j)TrYT@RKbhfS|PigdMJOb+d%rw+q0%Wy1ZPr>AqHtwsD zs#useV3}o} z{r2BEzxARbY$De~5cc2w#~-yMb-B3xLD*j_O@zp)jAZ#rWU`k>IA)8U9-J0}WD1=> zaLrVF)P%VOjBfYCyK^CNYPic|{|v?C0+mCI&P0nmJlW^JN03hP0X4#bxlpaN=l^C& zd4GNa))<21aF8TgXtuSw;lRjeb)JrJN0=MBayi9HXvb0H@Bar-5+sEt78f%6eEGj3 z50qt2^0g(XQ|UARH$X+cR*`(_3={BQBHtyx0Zgz{Tsr?Rz--E|sqg}TQOBrT;sYgB zL4|E10O$Junw!BWPWD_~SYO&`B5|PLdL+O862a|`?DyK}22sF40Vx7v+Y}GG+OH%# zi(~ddLVnzgl*;HEvB4J~RN%58^0Vb=)y2i#}v*T&EC-477um#3Y zAV|8SKT%diG-nq>OVf!i^=%r;ghTs@YTLDoT{SkH_co|>00R1nMCAjbWU_39!a%Qx=! zcF$buHbni)@oDL^Hh06vny+rIi*TrQ)AT3k^ns<9fS|9}R*L7GMlW-X=*l#6uUqhVC@Vh37p#6Kea* zY9&?-&?$^yl#LQ=gDK@kQA$TCjiQxu5=i9|l}GVQ{{E57pe#?|k?~bXqBkl;tGHZV z#j~ax*XTaAVr);rC|BfW)zFd_1>~*l?(NOWK-_=Q-Kk%l+o@GZzp9nf^Dck{Ou}NCcV-=-Xe1ZW|U)vvkq~!(jL`1^Q3$|y1C{#L8w91YsHg9 z)978eWg^L!*G0(ZYa8{CT}H+-6FT5x}%0#+)T-cV`5cns3uq0u~uq7pw$TqHzT zRzc8CCWh<^+?3Ki4r71RmTxvI1Azn&=E$=HAaXb2!gvOlyOi4Q4my*$7f5JP$@gac zME}70Xt+^T`gE)F)Zi8gZ{ymAd`-ss&KFGUEx7lJiv4(A?Jzu~esgkrY1AeKAoT7T zsAe0sY2hPN|GwPjh^eG?IducrxypaA>hdI7joUT#7W99qn#9rN#bdr6+5}&BtuR2B zy(MRsJvYj_u(O?7Gx>V>MK(zMV#35UoI=8sA8LJHz(hPK+I5=B|I_Z^I=UdijMW1P z2zCVZ&g8(x@Rt>bx7qP2dyw0Kl|3yOZt`}{*KKU07%Ua+_T-wj6-%dsF|hUS587|4 z6~%#U6Dz~Rn&L3NLf1IeyW{b>dj{EtGr0Q#_dhNg#i5{TbLi|Fk~0dF)SlYLXf^YG z;$K2_L`=~i0(-Ki_+f?Bhq39w`lacvlsbhdat@$#%teAfibxb>>!dsbRc7DVb8faf zWb=o_ui|ZV%Xxm%K=I8g)IU|bFI8VsOJB`7qNSW{pOvJ5kI$BR3-BIu5me`!aBx3} z|50}Cl6lm3Ca|k@zh~p{k9m6H@>nLHbo79%5%d3D1It~*6W~)FELBO#1J(^7Ji&zy zP2l4re~=w)B9#F}xkU3RmVVBuC;hLoCL!%gk+-Ox2HrU#<*FA;?5A}CBLOs_#5-n! z4Lqr(eQrVHV?G4>XQ9o;h}7#(AI>{W|7P;rLh^piYCE z3Xb1#^u~IyWxlyTbn@es3Qi^=>{u4v8yn-G^oMg_$=R6iEmc%!%T>iL8Sb-d)7tV) zJrmU+8H2@pBRB5oF`OEbR((>77ojI z35JM9)GDo4gFPXp)wFk$vm+5r#s3q-9GE}B+L*xmZW8Yl^Ja1;*tc9_`^(bvyErkP z7AN6;BltU>8?LilkTa@y79}& z4Bn$Y*N~Y;%$&C7*Nm=k8+pmR{l8tJ82H8b0D=m$uRk=yiDQuEHdqkw(aL+#nr}CI zbWS+l%?9T~1auqppLSt)1Q$aDO9n0{N}WT^g>x|W{?mxB_+v>jOL*<9N)}=>H=bP;3MWve&~Aflc6$qJ3ReigB$A{@3yDdO97l-;@>6!^3+E~$@@D_EK z1hk>*sOl%is^q3;t6T_pvt^F1dFJOh(&p#tET&oQ13n`V4~wQufL4I4?G%`vDTgkP zP2sQePV;w3`T{9-kM_=vw5^PzG9_LUfTXi->nmT?V;l5|uCbblDsVZ&zq52L;6DoL z`=O$L2Xu`*S%3rhF{Z>Ky{`zIE18I-fmw*LIL<^wg-%ly5KWAPf2=f6-I272-KTIU z8sCcZk7YEeaOb-+1}3}1I#psjt78m%6;F0k=v==|S#N}@O>wR;EyEX^Hu zo!qqD_--BULW;CRlzOU7PwgPXT9wB)4w^w@C0?DJ94l~bH-)C2hYuKEYoJ1={jb7y zT!qgtS5HR}{M^#2|v&9PG-ZZ$_JCx*kGlUR}JT!{~!%cvj+Ng(dKBy zIwW=1;VgnW1qGA&oY`;@`7B|usJdnPXDaj703KBv*}$um>>h07(pCwhcNOoX$FWV zT|9$uzfQz+;mFaIdLP`vho&r+J#VU4IEHNxYLXBbvTEKpCohk9i&j5!suMRAs8fsY zjtk53f`gEzk^K{Gf7FOCj5iS%Y)q|0F)dI@SYIvAG4f^2fYrdUP4cW2bP~dRh^WY#MEg}AoHi1n98^5eNK@EmcJYgxbPp; zROMcQIF%#y5=BthQp(u(uqNQ8sZzgygf>F20MHVlUtsz|hZ_7_Q??TQ8}>k}pAq9U z5lEzr9tXG~o8XD0JEFmXuTY0hD@<8BqRF((&9TtQj(7h7-#DRGqM8+GcpJWuir+8b zuz#xj&ydI@vA06{VubRWal@aibIG*K8oBBp7;(yS6;t<0V*=BZf$9(6?2Lek-)XWI zTrp0Sy9LT5zB{`z)g2qXCPpFI|6h!HI#>;oLmTFI>#DRK^M?gm1POk@!b{f0l>Hp3 zc8NdC8vS35+%Ww7YF%mczO!U8VPGd26Q#cEI~En|WB953880&?`tJMkfIyOoNi`ES zP}mVlibZ3$GNb?2@;|7IbrNb~v!~p!@Km})%B0^-UL5C%3{w*;9phIUu9)yugKpgj z56t=Ahu-83iE#fw&1hvh)Mv6j+c(x#Pla#LVpBUiuMMD@!A7xBPqW7}@Vz;%3qlHZ zUCL%yq0?f=sK64xd-s1a<)Pmj$B(%>9W)Ao&Kl#J75v;b2g$;Gn_7`u6)tyl=n61t zv8-3y%FnK0Id4TiPj$?{Sg5HdRE>I*UySV1g(VbpU@YU}-=}aeT8%Za^ZL%lVRX13 zz+kYNj*_)|Uw}z&pXgn%s&*1{rlKjWfLAqmuv~3?GRo2g{zclH8mORd z93z<4Hzepd@2{7V>BdzysaZ_qwvYu?F7#bcS+Ym6WU?poP;<=Fw)y+*&H0qCO9BV) zN(`S7kpROU5&Kt@j+mc6GWIydzq%LqlQW{I33bORWel=!A%5P))_-e4;UB)2u;gU& zg}-jQ)HnSfj?*Aso18)9nFFREe7S);d*9;XhA;sDAD@DHZ-K4=_4;S3G@RwA)H%{7 z;`e}GkM{dxFq2?Ot_b`QwURJRMyDviFR55Gb~T<*EK@WNj$8L9S6Zhiz%Qvt3R5Qa z57hq$h^^QeE@C3@dzwXrm8n12c^p~AU=W|4d7KU2XP_$-xOa~oCgL$lF6XN&7Ok~G zeD@XP_3c4jtt<=W-UK>$x1Y;Oo5_TwCYQ|0adZDx?9)aKzmr1bPnsKit# zUm2YSv2siZr@A<;fcsySH|T#JUMxP=YLXpqJNZMptib=&ScMndTrgRk!YwH#FJ5O1 zS+#tKHR%i=)^KMJ@dD&lBE6!@Z2HR?^dzNT&nGz)ZhreVW&QC`dm)GL{q`RD)d=Nm zsHn?IP*2R1Em*|!y(HQ4jZUz={zAl>^f}6aa=T}0+;JrqxVYMa3$lpz9qQApg>uEz z?hj`(RFC%3smgzbf6>r?{}Z*$L-#!9zbUNfhwE2UO1Zo~KYy%Rzx&eiXAkpNo2cle zcb2NlvB1^p>YLUuw^6(g?f#DAUr3hOR$bEP|fqJiBsMRrM>@(RuF><_g2QL zC=D01G9_V0&na~h#|5<-0|erI(!b!;Q9JbFA^2=Ui6!aDD#am+$gCwe=y?vVM!y9V z#mg!wSo#6tpeA7N4H{mNGFJS2K2|E3ViH~|r4D11)E~M(qK5~hP33$%JHe!yxmF_^ z$Syo?Pp&ne^$}ixipLqRhl0ZrR14Pj@oaeVJH(FIfgjntE0+CA!6t34E7gntMgdn% zIBS8FW>LK%M`>#z;{2(|18W&C-{B4!4xPme-T18WyDpo`$#KHSZ-2(Sc-X(3eH$eh z?RXdo*2sHEfaq)3G%9wHPWIpsg(8X;QDVfhuKBixf{_6hL*>q#Nou@4wyod zH=zXkH#_jy#%&+^9nriz!p(Etzx-I#Eid3lVkP@N1@I~UW3EoXLCHtsd)8PdAu~Cq ze+;STK2(q9_BsbWZb9fsvg^bS(vjo^pbH{4#S*yEShXsk!o!0_563Kz0GAiIuQl4; z`;4|5*q?%2whi2ln1?L26s$+c-Zhw=L*cZ1R2CZzhl zF`EDEZ|l)^cjy}e{{GE@F3La84LYc(8&-pWRMQGwt3iH@^$8V?Eh4vIjaE%afXdOv zqDVdUwX&owku{0rEs3?mbpbHGZ<;65RzxN~qgHNk|D0iW7BSZUOORdq_6)=vr2CB2 z`kSGKo@Iw7^v}@>8e3Q+%l%-}2`i#1g+M*&Is&+}j+f7`wYSB~MoXiasgvq%Q#aLHOkqH7;=^t3KFpbew&W|f~C6uNfhSYjN%?Y%s=&!M5VhGqVrZjtKK!eVu zq%hJLI&j8E_a7;8QM%5q3Kd}{{VhTIvG<%KSrw1hM=7!c!!7sLJC2t=yxFewTw z&4MvF^LEln-6SY$3gCruoK2%MdR&yuqTd62e8eLSJBs0JKvl1E=GN1Ymr;-SkXTpd zFdj6Dq3csQ#k$^uAT?TQIphVpIpAd*K_ioChRr_R2%N|)bB@1yZqs$+s$&gek|aPl zsdb59`QgzzH{L~_1=o6`1=|awZ-v7}>pkQ0#Ta=!BbLkdMsaOv6psuKMAcliO|&(X zrOIZUYz+?;pCS|~S=Rj%-)lSh(FOqdDa|WR=&NqKGi!_czn(BIFIG;IYM=~)qD@uQ z9id5>0uV6}*%0K+{lZx0SdRsvrkQ|4m1&xyb+mo6kSk8wbS8nu> zQqJ`R4&px*xcHeHa2KaS#JCeLNii}qq;^px*ZL6^nThnOOW{**E}h#BnQ07qE(g{9 zQN@L}m!Ila0|E;Hv)gJnIZQ0enh?xjP_KoLR^C4$d$4#oRPl(PMnGaieCO}OF@ab^ zIPk7?+5g^e_QjP#U^p&v8s&3V;vV)=x*qxxy6~BqPOv``bUSS6MWGR$o{ibW$_H$C zntmtr#YrUqA2;<1f%tQHG?1B+t#;uJb>|cG- zI+5wwuay(g>K8oBd}7-ohftvQX$1QG-`uwT%gvddZ#X4#9uIU${t4|)u?zJMwfuvN zjc+&}{-9?59XHIaTsHkPedDnXSeF@t0Jmf1|NpCY4W-(LNKzb?M|hI-+2@W#>RK1#k>A@WBSD)@pKGQM1=u$qGcq7#Y zdWq3*~W&)36X;K5p_#Y9;J z>=g}Gv*rbTrT$QJ3;ad#g|Rm^x6{BSv6~-!y*Iv->ENsotPmOP@ULzRBpBJ zb&dXKJ){~sCBE7&I(=jb(|JmDWB6m6N}(AUfJ{#gFp5hVS$f^LQ)aW{dk#ah>Q@EV z>Rl2ff+?zCWbAxbTR9S`%$I%GR~-VIsmfvnVf@JXr*hF>#S-l}>mOM8D=LjArkkkL z1hLqsEahc$9mh3gm?yIt6E+pA1IpS-cbU@|xm zPu_2>?h|=Eai?l?qs~bP0zi;muW{`_uqAslJdSsxwKZf^eJyI-{gf+pr}NGqf~H^T z7z#m|q9RuXD(Hss-=TOX)iuG3GlX@hY*Yn&C%LNfNBn#_oprL>R_;EjcRJ;HDVIJWHn2s z>=t(gtDF-S3OXDk0Gv>)hcSj3F$dqVA4f5sP+xN8!yeo%I*7XVj^YZJ|0I)sYulO1 z{BN7d(^N0rC~J3Z3R6lUn>lEeQk4mFZg-I%}dQCQP;h~6n{PUexzn~(cb+a=q_b8kkZH8o{a2;JxU43-r|J~ zohS#?c%6(rYBg!_<~I4rrQ+nR+qS@sIEr{1C5m8Hi{47`v;#E~Fr~}>;cZIE#Hkd7 z?64;k*=AtPet!0-yAQu!+W4xpl`iA%BYFJMB*&`UI+}!4Te%P+|1>h)WmBBe!1pWa z5IVQqPlhN422Lx`(dcjo6DwSH?@Y^@a_!uS&hA1%(>=u@sbt?qUIZgJp*$SC?Wn859S!Oidx zd;g6W&T}+tXWEZ;wYZ>F%alP&sRGw8C97 zHQ2i)+DU$+Y&U3m=oopQn_e2>jV%%I`2k}hk+H{lqJ!{@(N!aeFx7+6@GltcW;p_B zv3OH!W>X~o>!#NpbI;v~g~gQ3&+)969*0Q}Z}}m?#R#NRg&@HnpWF3GDen3XC$7H4 zlbJ8%L#d-hC1epxU{I&M3+iVl-#!6|Q&M%XPN@6*Vk;Xu1X>csk~95osyld4vJ5|O zueIZvyej&AATw;!N7d_<^UJs38`E$|?`j?UsjimxMLe%G?(w=V!Ta^(xLA#TtAR5? z)y-9T$sTZ|RcO2=Phio~>mEeu&L$=A#7@K_2hqtpz@&`Y6dqS=ibmp7I14n~rNwWL z+5+|WU-JXQ!64{q)7(>mLJh4!cr(EMfBNM(WsYu<534U`kE3DxG_RfX}q(&pCWrLe);yfwdmgkdA#F5NjM zX-`0jA_|GXFNLi-z0-hFq06H+rI~tGOO|rBCvsQ2xGw!vvEEoXEP6Ew=dgVn-cbii(2Y z?cn|`8F^aN+wos61j6oy;3p!4Ux%3YVKRPnBN_WKI=(sKVdf8vaNtw?P3`1QI6yCK zL8f#Q8~Z7bjgvbrsPP-@au3+1@x^DmgWuQoTQ__KpJYy?MlRd|oB4U5!w-x4{bc$H zV>=JZg?jlN}ZvowP=WepS%|6loG#$1r%-6?-G zel#Kq91Ey~vM6xqP#BGAqWfQx2@Lvz45cdj<4 zSv$sm_Lwd|;zo_F?wx>bj4;^{MG%`x<}ycgHHBXgu(DN_XR>p{0xu!T!O78n25AW& zH?q@+{rOhEOa0?X|7UAM;I8+^mI|m-ZEep4j=tcwog+A#&htD0h{`;zw)fy*`tqc2 zC*wXB_8CoyJ$w4gW~6)Ny~8Dld$>C~w-Riw7IWAh1li{)uXv{4eI~tx!XBg+PLsNa z8v?#LEQ~?;U*(khzlsLm_j}^za;!iMS{M|JOg^AZ*FGTH5Pl$`+vIa0`?@X>O=+6+ z{U}svE7{2I2rQE+B0|DXzH9+2ld8yK7o0Zt7g}tH73H62f!@>{m;b#Fnizje7LQk< ztwm>I>VjF^teta-XyFIJ4_F`^`MqbX%W-%bF>G(l959oD(of39{)oGh?zbb_!Uj=s ziMw?yLCQ_#%RiFklyewzh4FE$eIac$9Pye^7&>`W^yz43PfKckKgInv2F=26)#Uu0d5pbETgOll__}a7Qg|S- z=ZTKiC@Cq{I+_g=2tybUp}DoDEQbXGw)6o;jKhu$C0>^w((G0J4{i?cU3aT)aH~iw z?}-({AcCJ<4BKCyzw~~f3YoV5h?NFoFn9#)*aiWpaFHZnRf$}^zpw3`4#x55A*^$u z^uN=3!7{%Tqi$d!!fH5A z=db#)*JzvcG>3#oC@dC5ewNnsAXMmsi{q3<27bfa#U&>K?RhGtj0b$)<^^%N_#mNu z8sl=EkiD(rfb}cZrB-3;2mf%cT5{y0a;gzThRDJy=}g%p;cZ{iaVlego}iwy(zkt8 z4oQ%`ZpE0cM@5#Sxm>ny%GXC8Mt!#lE!=q;13{D++P?R*SPT*QM}Me8Z%Dafh;Uk* zrP_+64-V(kc4E{pT4lB|mh$uRU5w~-Q8@YL8$!TD&u&v{*?7Zgy(VZ`Gmdl!`1S+$)LI5@JTvStOxUeVyaY6h+=Bcpo zf`AQE0&U4r_E*9|RZjk|lyO8@3ugqvU--S69jyWGqShELtdSLT8Un@!rb06;C|5VK zA~O)#89Pb5bOZZknSQx^Z@Jhw1VK{^bZkq*StM#=2khV^z;BCLG2tPMB)L3jSCl}O zAAP0G{rz$YD^YR@Sjwo$4qd&gPZ6#%CQFJZm<$*Uk|i+2%d4P5iLh#Y!nAjhS{t0S zjE6WzF4PKzTYnikIc>cq{u%cLtyc~@a*i!PTBJ|g9qC|+In`HKh?8h%ABvjat3M?W@x zh5TL=%cJ#CS}6S~6 zbGWM~v5J1bmk`1qJxn73Wk(T*VCCAdg|-HTfv7@q2J8P|>KlMWiIsNOwr$(iS=+X4 z+qR9fwryKyZQHiq-h1n>dR0@YnVw{l=}fva>CV^U)a8im3IXz7E_H)PDT{|%N;Di+ z5^Tb7ION)>t};NP<7dnx=2*aj%r!INlr9Te9KG@3Hbl!B)=N9fBp-S&fUC#n{#P-& zjha^BX$4K)1`Eqy&rC@1BW;?im0?j=hKpD9UrhX@KW#w-7zf@zg*fLmSb zqTYuZqsB;T=t|VV$DRZ(lA7uLk}R|RJGqM-*SA#r(}}@6y8%?Jq_1HZA&tizBAD^i zY5W<|N{I)@wNA?%#Vvc}nL=LHd%NhpS4E}kxd{UtualYr&jiD8{-TQs0Rn>1N9tiD zF*;s3UdrmT#7KZ4$wUrd@MkVS1v$Z}-RAt6Z9ms7dqaYZW#{O~=j^fK{R~wE3*=s1 zkIy7@)Ut&t*-?vXBY=hT!>RgJ1;1ihm-#gSAb%lxN-EB;GJ*uDB;Kl z^z=s?k4SfrcPCiX;r^V5vTyi#7quEE#oj0RuovX7@9Lf{N6D?W>}7D_f>~$~krZ>1 z6p=ddu(EbegEtR+F&6~~FHe&~Ou2SCbiU4Tz0PGXui4Y5ZZoBSajBLD)5+?HayI}PaY(3l_SJkpH4g+4G)X{lj zwqW6Uzs*^Q&S@gpu2jpgb}LQuY;jZO>45QQJ55OU+Xf|tL^AV6R5Be|WC}dda2pq$ z4rEj<3rEn*+TWIYVuLv;zn+LHV1lVmmlJqoB|uzMTg9Q z);=BmzmiSK`82{uu;)O_jfL+n93sV^>^I-u8MR&+E)_Ywri~9g8?!i@P zg1qnJ&48+2d%~?S3g?`j1lkId+91V)+1`o6#x!hH7x%SLi%Ua}*_=gz4by zYaKi#Vja|qi0r`tN{LXUrtN=3>(y(FZzN0vfMe|tBaIEo@Z`A!)1B({B1^3$xyNGD zh!hz5%5)gyGj#u|#{S?#Ktm2*JI**dyGIu8SV)o(F5^3gyfd+kJVsGoy(f;KrnB|~ z#N}k0wluxkrf+g6f1_%VidUs|peLuq;H`jNz5HY9I{R_e{LqgU$)c)yUDoCJ zezv{mRSO$#X&vTIfx$%5I6G)tM6jz;6h_{e$gAKQCd33|CUK>%dITEuygZMhT!(@) z9AVJz#@nyxr2pU#PK;F7zy^OPQC|(j&m&YqWw!r~Hbh4n`K(^pw-j>7c+L1}?E80s zT3F0PgvB=093uG-_mIM04cJ9Z8Y7xmxl(@tDo=V5O!&ftiAM1AiKUQC67FZI{9(-& zLB!PRZlAW6)}L{=Q#hz%B4HVHrP&o`@iXCnW2~W0Z~B-s+PHgE{`*fF*fEIRD}l3UpW`r z0_c359oo*Pi)IxE11`#ZHeEVLFys$_q=8IW}-Rqlsh3N3&q0 z=WFeq|BF6o-*RNbl&;bhi{rw;IBpjJXlDr@8yPayc6K>B4`9M;x-DepjXqvW0wn+! zhCz^KDK48hyXt?Dw2R~8wsWKd#*V|LmBJ|DYRTdF51S{ z4kQ@OPkoy?q>5-i9G^B)*EE7~N~5Cryt6E!tgVwMd11jZi(Kj|mQPm?$1*G#2B{QM zzzrTBu}TDQM;VQ>236?nB@9$B{YVarE%<~C0Y;$${*#;2k~xX&>bx2QIh`OgaaPUZ zX@}+VA<~tJsz%fn*5W)&>!}uetkzq z9)}WZl{U7Cyp#p002aY!T^WCkCvU9r(?6tZnsoyG5Db9~!Dx#4jRbT(h0z+}iGLqi zFnbZe7cY}t#E-L|xRp#-$b1$ylYW`X;8JEKi8cIdE93Rz~ryq1D8)Sx@nty9f6U`PdYt=r1^k z6_L(ZKH3rJsHImZ@OB-XDK{ss{!?ysIj_CK$@M;~=)G6eYg`01`0#E{{YeFmm-IIV^-JBd>QRleuFOHI>$p4B zgB?5>j}4pz`3j#6oB$r_=%*(OxGK4PB5WEkat}TW`1hvuX54RDRi%bWyIAO6!6(U> zTjPg0yWqEqQ%3{nm@_3-0~dt>8E?nzgwvZf4M@rRVBpj@cI=Pp=B4_fJiFC4o#&jNE_ z)+}AIT6}Gc(#FHJ?On26;wqh&$MUJ-!g#za`2PL?)HnA2!R?y;>$VJFn~+*a+^3F6 zZn##EBs;?7JBH(kbb~_;B|>l?q z&j(+x%61lwn%Nzqz1tj%K#lkF+AUtyJ@?=X^|@!I|>`vldV8qFSCxx&tY z8V&56?{w|9Napm~Ki=iCink^1&jh8yiaoWPUA7VhsUFX?=MY+xXZ#*qQMElC6(#|Z zpEf*?v>mugQz(zM*1-zO0%6Ny!!V+*+MN|bP1nKZ(qIB765Z_Gs7X?bh3)kf+K*e+^K&ai(l(POt%Xem!_oi^W#w;Jd)Yqe$; zdB!%MmTo)GGaczQ`s}N*tQX**lT4QwE?Zl}Fak$tE)#W+=#A~`dEu#D8_SC4x!G%@ zS2GIDHltbo;>*eX=TfAuHA8>qn#Hoh%%h>F%BCfoU zPg0Q#Br}LRbr}vFRMdx*pUt`c+Q%K7zyF#5L2lMwtaM1%*5VvlBECN#5W5s$pmm~r zx=jjhyw;F(Go9Nk?a8A!Ma+W-Swr2EoIqHJTB@a6a)v3ZtyOYmE~I4BGJjCC#P@f- zDT_R$=xN2c6w}KbK7YC8waZ)DMiaZ4vQ(7arm;;SYgnsUW4&y8zIvU;Zqf8j)kc-g zva!J;OOH;QLVdbx=QcJN8pP~*ExD)78zy?I&4cI}wudw;5VV4rJW+$VkVS zK-}J8IY9&1HCQ6sPV1@vf5g5{sw8A zCIhE~tLnCy`=p{dmN{Y$>dKxl$`jpu1iwPbrE(b@=7<2c!Ru-L?`Q_W6B4CX84+u9 zz4#2kzeoEkM~<981q--YAANw3;-<6+ke0B~0d+K2i&QK={Stq0HOa!hI|NLc>36~; zF^CfXkQB#Tr)t1pFNJRdq)XGMvXzRpMZ{$12W?GYqQl`8(1&oDhFOe`R7W@+(*N3- zLu)Jyy#h#k(d$#Lb5_HBvch8k*wM96rF`iPsdu>R5kJ@vu>os{TUxu*6Plu%8`D?q zt#7P}*wHrLa3^InBqRo}j?jwji2D(N*%5I7ZRy(3cT#qfbGpO=iNS1%IDj^_?U!yO z?I#qs|1Xaz1Rdj%l#yhvU&QS5zIQTC>XSpoOVjeMS|ab~byZxHR!ovAc@3I)hR(0x za2@75>pfC11iWQdO5;8TlV5~gALNCBxeeU9?)8!DJ$nv9+jeMOsyDhC+i4hgsTqJ> zrNUFq1(34-VE|R%t`#fhg8$Hy&xM2>N`AtSXL9(HTL(p$MEw^nPl>8erJm~6Tq zc7qSMf-8jLDQ`Pr11K`^NdBL|IuI)l8u%StTJQBQf4HDrBl#e^5w^GZ7pA}YF^^5R ztd6d=ITtz}rYXqY@;H$6HMtY_YpPw^h+@@5_AJQXiB4KFWGYmSbju!7Zi(=NS+Lk;7S${-x1CRnf;64ckpVEgAW!2;RSC)7QP-G znEue0wc`J__XM;(T*r^nIYY`NI0fJIYxeU0@q1MWGV+urSLC(3y{squtcEHV_qoiBJ9$cz39eiJ`nX%#oMl7uj{T$>?4k!agCtCz-MxzGcd&8BA ztK|e8J6t2zbW{7woF~Ka&LGm8=d`X$8V|LRDX6yza=mB~V)*SOprk(`;yt=_DDb*v z5tLngLy<|jJPG^)ANmL?1$3DThrNHPE`XaY9+MYSF+e2wLT$O~S z;giNBl$K0^HA|AHk7_i9iJNNX_ccW6rICDu%5dg#cw=FS}%IWxaP_7|XNhM4HRBNw^ipb}IoD(8IQ_~%T5D;^z?oGD5 z#Qa{?VBQOTG>Fz$6VySGB;NEZ#tSq^%#AD0`s+2_joYw}dUluG;a|3t9>SM7#`nr} zEJ0`mzHrj}9JJr($s_+4zFYb%_f!>biECKGc1aJKr1-y?yaeVXGwDfxp$OQk>1AZJ zO=|1nwqDxrJNSJ3-;Fp@%{C?>c#L7CMkk^fJaipWyBwHwlVjlr67!b?mo0xCjRlNb z74gX2qr0Y!zNRUK>2={ zSScq41Zh1bRV9XcB-207gnl55oKlB69MQaGK$R5GtOU5BT0pnzvNk_y`3pO0%1jqQ9P=;69F^vG}U1z>JFbOIN zFW>KWqBnii1{4duXYlZO()wZ{YO?7s8tLbSafVQBa7RNTWUic8ABnKb+ge?X4)UTs zJ&&KwK0YD&l$VbN`OPraJaZal2;Z8}krxcduxloMp_QWC*V3r&^ z)Fit;X6VBo?TKETddB&pntf|bPAmDe{tc%4)X3tOKu0v(BW1MUoWCSy5ljLL8hyAr zNEl{-3u{A^su|A4u?LizMHn=E)C4i!91Jon)V!il=>}_xeMLFHp|uZzNc+ZWiUMdw z6rT@J7=$k7`@};Q`cjEC(B^l`OtO>mGc&>9ztxP{HZpR9x2USF(v>KY%FvT zd>^kf(?gM^0S$ze&*f?i1LJc-lAr$f6?PMZAyCeX>ejgZ6J z2JB_3pQEYCDj%dUjY_Yy>WD>=W5z@AUgu?JuXT?w<{jwc9NJT4I*0c}g&jLGq4|Od z<~oRjLrvXHN}VgqqQjRy-wLRkgY;4d5W@yML1UbPafnIbYeby+7DH;rnhKXNX&9&? zZ+`cQ0<8c*{$#CL8^GrSV)rKfAqkcmP(Qb13+<0!KY3KAGN>UjjQzzvy@xFJ0$-D- z?o-}J{z@CGYH!b_h1!GiJ@>L2{@9OvDMr1Sq~2CjHO3G=LogVS4fnpxAL4kHFTnJo zaERhfhH&8j+MA;S++@NZ#@5-9div89k4;^KOj+U>(8IAnM(KkD?PF3R()fu`j)N10 z@?nVs-EOh~2>ude!dRthPgniOuK#ymhh-dbrHio=Bs-J$2iQTfm{2u#PVJc7T9`K` z6a0y#;^*9AQHeB1nIEnq?|I&d@PmC|li=XjMMc@UWGVD2k|5C3KXelHQi7RYzf? zv$+-`VTi)ABH-Fnu|_4*{sm@F&GF+Qx6$ftUwaNd4nAKRyD)LGv;(^AFJW{(`=R&I zf%wsXvI4-cTyehnv9X&!t0zrw(}a;S@ara~!A$Gp#eAw1jftwJ8T7#SP=L23(_mbj z>z!XN$FA{Syg(JR0^pa-X(ia5Q+Xc8sBjEIEJ&d~LUqyRT_7YynpWCmz{ixiCTIo2 z-udOFfI(0I001BWN|I_6$&@T??79E}AmZQv;C`w0PA+;DwieEMX7<)}Mwi_dZrEap zbf4{C)aN;zCz095K>jEalZBk`@TwW^KpV9Y9wayCR!8spAk->bJy9)ug5QMSzzsz}_>45Dx z;cHS4VEzB5b<2r$$C;t?*809jy_9dCEy{WIehSdj+m<}CydpuA&0TG|3&&fiGy65X zN_K+>C#ja+CGeHwxEZ2oo~9IZoTRO5#11A_~h5TZTq{I!kmpPjI#*#RcusIbQ5sA5VUpGig57-i-XxpSOD9gDU4pZci<9 z@$p}H(BCPDlKbl7@W_wh(Y#7C?`2t^Wl4{6pn8+G*Cr7?CtJ%GqK3^Kd0TOBK7v3YSKr}vk4qbm zNZvf3H~PIfb(25*lb8GO3$XB27HhI2y*AJRqbx%owIlSF9$T>FjQxCUA!8r^iOd6dZy z`Ze@gINspPxLR7xgFH>}eBj@7|Fo7EnqGh9y=JXsZKYucPpO^v(ea zE+B*Jj)saN@lvzay-lB5{&7n>AcYM^6p9MCWzKx{fk6cxmTBLELyIYRNhrM^{kdKK z&coE6IQSWaP@hk}&6_8F&<%&cMC`T2L!v6^9yxSi$D0HRWMA!Q>47Ent2OZ7eD;@J5*#2~jU2J~@!)=*!-_WcC(?8QYGj=TS>Aq@7&`fkh`f4x z#m}uCS~_=U*SlC{W;f2Ujd;Bjj@x_k<9`uTT!$HD8f&v0QZK~B^}oi7Lb`6qT^@xiJL#*zM`Xjwff!*maYElzJh9K!Y~9F59|kb;I5iZGSloezf~~ z&uOMTFAF|z{TJL1VcID)h zD&iJT+T4i-W8e0d@IwU|Y+qdhv5f-oA(IgzQ?OsckM?^Kg@U{3Gtim=3s9?8?xHU= zV0d~>S#6{Oz8z)2LlJ)s4IGSGiaepmzeVbPSef;U0Y3_qbZq99p5Qw(%Z39 zqpY4yog(St7U!FcV)n?HYz8gqiy==>F&ow!uO#!`e3U#Y`LMUb?I&APMc5`zKNd>> zcp;NuhRn%uFMFPXO6BLa%xXQ-;J^wsGDvF|;{jd*mSNG#=W&#Dr`D$~U0XY9zg+uo zSjXy)70q( zOD$vW5{ z$JLuA*%@D3Ncf3Qz2G13h!3OR&9Uu2Z_Pr+*M6C<;ZtAqmAL!SE8G{Yvsn(`8_oH_ zWF7=gj)bJ)pk|3%BKbCC1~_H**s&dEIgz_e4xEfgq!6w9)K2xk7#<&)X%X2jjRy}U zb^jdkwym)x+3TOp0LqOhi6Oc=_1QW)_e97&d^^1%j!lJ4(hXkv5Nt;8t+(0J&st?K!bYpfwkO+g^w$1lP+Ja7ml*Wu6lh?X^R7#OR`9?) zzkpHFQioV?oUn~3h!VJ}6TpS*Y&h2o?1~xr)hZ|wTw-Wj)B(Uc1HJ~%|NAQTa&$ds zU5)2Nzi4zL6IA?>=jR%(eV;WGlernZQ>eY0`*^H(InQa~d+91e#k#l@`5i)UQ29DQ_bHWaa*?IgieFqJlfLJyqlSLsS~(2(^;Ii$IY zwK}N=lo@*1X2$coHD`EaFNEf=cm%eZ=1;DdM9~g)XlT$d1j{hUsWMCzwihZzw4t>w-rQejuB{H4PSeu%8d%Rh#tvpXhFLW z+uL8aYiUv42+1B^UVeVIieX~*;+Xh%6G2;p`70HAscCC0(hB($u3ox3(DsWq?=_D| zRadfQlQnfKc@{$x-mbK?bezDHEj_0DsgkdafH9jFmzpK3HB41q-!Da(3MQ?fEENCvY1?`D zyVZ0ICJSHKJBOa-r0>jfyptI!MdqZGK26B;%yf+p6jF3eka19G8hJfaXbFSjG)#;< zyf`0gdnQx~oc+=PW{rS&dIQy6GHB)ge6n3w&lg6Auwi3pdgRjrwh*9w%y#~3u_}8G z4{0GuC2|l3Uc4W^7($$+YnHfCT3)y8{b+8Xu#80Cpvph_Om1#bZw!gDIh*FQ$*)e; zHdjhf)g*{iTNezcr+|HWfKEp&-amI)z7U1VTzWqkJhvGM22^LNxUTLnAzhYiFYBl* zISA6Et-`bF(N^BF;X^x{fvgZP zG09{%(prUcC^vb>*QqPzJqZ=$`Nu<-uq2m$+V6G2!H-M!Sn>KXNvH~O(SS;smgylF4q-hv9ditE~bPT zZ$KUkECp3M%^(Z_1Q@jbv7z7jN(_y6KIkk0uULK`8@l8~Y7^h-=V9t=wib6{bpC)> z_V&;YS@Hz#Y36-2LA)b;%c!M_W6=388pwP%xyby6MS}A|TDLZdj)QS{iy{dxu$1lT zzkw$0yZHcT)q9hJ)6Exi44t9_Hyly7GEKfnxbu>~)*%d@nvEd}kI|<1zxLYwAPsmb z>d?6bu-(W&&{s>ShPBJ&*n%ui-&lm;EEz!KB??c|fWGJp2ZhHe!w}3BX0bVDYARE0 zx$purG>@q^U8=}jjU=Xn_vwPu2FjNN1!wMwe|>Kwg{Sie=~r6}=|4K6bF`AalN6q- z5%UVprRW$3>}VqJ;Ex>&kD*gpcNCuG8l0Dn7j;90r}Vt|wFn}!X~+CLXU=k5Bu<=i z@BdM1Dut(K|EJPwkW{8mrdFaWLffd(ReXFc$qU^7$N9q3|8PE+Lxb$U+Nn&<2{?~4 zGWJhOYymTvE={Cv!L3rkud?xW3dy@Cy^d@D@i_iIS%Iq*opWj$v_lp-fin@Fqy4GI z5s4G}T8SypGIbY5;SC^VcQ!ZBtZ_f1;G%wOP;kEXl0@OH!uj!vDG+0L@Kks-Z|s#p z(K)ZdSH?pXiG%Ay1%T8J!pMpQVP|`LaMGc-&WUNOZb?G*m?rIYFOH zfR1Tg&^?Kssyz@5y9|IA+tRI6B2hx$8kGD&Fq0>Zl_|T_Xtx{-=5}|?_!4#kZGOfT zrRC8lgw!hakAA?;1$7;HRP?ADO;UY*1gpU}jd=f&TU9^jEj7@wV5hr?C?+XxmCo>(J&$EYucxh+T*h&! z?NH65PJIJew=mp%kHC#Vsir9@I6kxjN#}wjIt6H zb)Fk;`3X}$@dr~OCWeftlQPC2vO~rse6=@Vw90l~HEkTS$5#{$V5P ztcRmA4qeHNWhXgZP+yy}8c*4kYA^Mokojf?-?9S(C>P>;I;_y5nBQx6s*)A^1H~6| zCFOkD#c;_Dz|j12Mf1vTsMve<<6@?Nr>mlC_shjD%{QI=anK~HurZ1c$TV7F!>I6^ zFNpu$0>&_d$O~sF@xVUpZlzV_ywcUhuhv?vvbbYChpo%hzP(EowS8VNIZ-YR%u*eP zq8%Y+?q+o&NZ^xpxsdKWN4Mgr^#_PBMOS{~|dNj@wSM9!{UsPx4I-qFgxP z0alt4Nl`+YQhj3*Wg&X*P>vGj?rDf+>%MV$vN7^ZO2e0Nb(XF~V%0C)0?V-nkWq&J zu)QliwdGS+K|0PdhJ~^^G)$H!D_Jy?3T-}xgc7P#UOW$uTT9$ePZ3K*Hb1_nEm`%b zEkaDv!kJ|!I{r7j-#qO$dbmr63~yt+r~!X%e96EJ>U_hWWIsT{7^0I_bVb8WXF^(Z z;fUzpn3a0Wp^m=EY)Ojfx`N_*)?_gQzOID-=@9YX4uOR@>rW!eNtp9y7F_4(J$2h2 z5qbPTNSefaE@n6`QBzA)~$yFFgm=jautq z(r}N;;LngcKHTig1?qsMXqnB5_xSXPW-)&EWY9svjs^A$Cx572ywSQ5?SH$I*$uS% z9aqWymP8i=bZF{*EgtJc4Wg37`ycc~4Rnr?plDP8_2O_3PG2IvurM59-F8qxb>lt{&C=)|mY z2Zl{*qS5<>5i>px28Qvq#L_1*?;hIG=d<|7_0uR&@!FN)3J{&*{)g{6nDK;;ks#tV z=Q*(D}qFPiaB&jD8fjh;MyN1^LdOK)1|It#`hdfal}KE$T@0= zc>~ex{Nx}MOqm{x?gBSuyWGWvftRpZyG@ZyDnjwfF$EOYdV;T-=uV1XR-PRlol=hI zIJ3M3{=UZ6o5Q)L%fZ_TaceP>VN)WGh(3C4ATOqCY&coWh~F7SXjHZ#B4|)=RWut@ zYQH3Dvao1UFVu778_82r6YtqlWX?I1#%jpz=6(Vgw;oT$;LaS*v0-Vl_bTV*8j4*J zd?n>JdV<3KrZQ$Vo78mSwYj5-@@{u*G+W$)Yk?Xyn?8OH6qUZ+-Urg<)qOMJE%NHd zo>j=R`n9W=PGqNEdM!yHZQ6Z`?yxs1rc`h(3=jBg<=OZ4oJ8eDWnOlvgPOadbAGDq z!1&5iETYoaXGZ!`IRV_aPq2;=Cwp426mtt;+T>2$@g<7)(S57Y3QyLy?3qx_v#&!p zZJ3gl+c4xBgQRT6=Z;iGmPO-6~bqyftfNGVQDJuUQx?T`& zwx_XcLqt_Xc|=tRx=1vlPK$+3T%DadYnqcWA1FLD=Dfor!2POS)yx{lA&vfOCY_^* z#=yz=a~hIks3&GA7gc=6kav+{O-!C8tjfz{DVJq)M;Ru-cS}K?-oBDmmi(3h1<~6A z{am%O1p_lEmnEh{e8rrYVWM)ls0F@4<=pD3)#IG*-$V106k_P43_~Q9u zS81BtazT_B8onTekTOan{PtYS30n^vT6~{_xZ18a9er0B7|2OZ7mv_L~4)wg?LPlE7zfM*kE9_3b$YADCb& zvHwuh4enE+&oUM|p!5b9ukhN<)O3`2IqXv479i_5s zT-i5fPUO@QVCLUj0{TgqaXTRdi>w>Px;HUi!ic>3RHC-vzth2vDO@Qy2?h{GyU@Q4&ea>s`fF&`zBC~++-sTd)W z_-g(u9hcA~ij3~QnwfU*eQj|h6BtNk-yKXSuOCvAC_!JY-rFH@P{o%XOpVMQ^93q& zb<0?k2;nGpz>FATiy226!z{~CcUH;Fhr12nD~c}PW7DU`uY_D zghix#()LbTcxSn>erU{WMZ}QzOo8V{{^-qZ3T71O*7p05gyc)?amxKh|(+_ z6*8qiKQ^$VqmsfH$^wi4k>hY1Lu>z{NWh=x6R>HnRXna z99NDBu>XTBT>#F?lLxtuBxvS7)&LZA6bBJQRi4)$sc8r$6ql_J-upo|U2v`c2#i{% z7nYqO5w9P%9QVhxEq|_?gTLMWqeQx1E5z#|QhM)l%;{`KWXQkASk7tuN81^lhbQpb z1J}>x-tVPUqfUK>O!q15=KIEN5|Ue3$c`sR8+kwNYtMceUq&?Q`=8#cm0n5V-n-im z_XNwd=_ofB?>X*LT->+f4Q@_OW&*jcRd&uZm)YoOb?l18oPd&^b9&vvl|zYWEB1S{ zEH8k6moZRm5Pg68Wr9Z?0bEv6p4F#d*Mg2NRbdB=v37nP;y1h-Os$Dd$}F2a;I0!; z4QM^G59O#N7gg94I2|>vaiih{g0#}iNdo@t6#uC@){$&SckFz$T72~)u1siQKrh7Z zH`r}Rt?0^R#;h40)p%%s+8ltFdpM$);+8f-*O5&kuhfs{s*3qL)mF{^^B?!Zi5r!d zZ0^qqS(%%*DuFhu$GIcl#-|5`!XTIuAI8jY-ZnwD-^WHTDp^^2?X{m(2r5=>^UHKx~le>LEii_L3R0iIdg{JE9)C> z&0D>UY$#|5fet$|H>tYulhXQ@W;^Cf$SRFx?s#_f-!c} z7UD*pBK-!?tNNZ^60fOTFXp~D+8+mQp++;#JfXkfdP*U}vt@tcN10xD(tQ9)=XPz2 z`U6wrfy_4)?adnkch#HbEK}^7Ed&$2&S2#29%FrNpSYhE@H^cJe;frXw@gcY_jTyZ zf`=U#+I2S>ytuY_obwWdm%CU?4!k|w*mDB#)Y!O>Q$3sLfC1Os-|67D@#-=l@WJMp@DxpEF)R)(F2sROVoLo(Xj2(DqRn=>$S z`|v+BPRg~@ozuqzh{+9Y8Y~=KWdj&Lu-{vvz;ME+#xZB}Rlwe z+JphOf)1QeL@B`HC^uWnkh z@IBvkm^)e=zXk$Sn#b6*(|7WiKgC@E5!*e(_KRhwlNh8i0QsvtPR7Q~Alc8AZ`zg# z`ak=VohN#D$2ybDEfl!G5HRQdmcpJq7uOAB@v=Zbqr+=ehDHHwiPO8y?!wU^uKz#NJsf_2K288vqj#CeP$m zW(nAizRPET81>*ox&72_pi>#tQ^CQl5O^zrVg2r$!J!Z2dflppgzyCtm2g%|UQc{j zpU#VyK10+VY0MTX63@{~5aUC2(c-$`zm9MH28-28vMU~kDNS-H*}mn!{?{sUD=OV# z7cAc(NX%__le1jps)bgfLnKp;O9G zF-@zG<-TLqK4KjAIWL4vV{JoT#PwOk$!sLyh+Pizmu{Y=&4tGfQjoc_Rq)lGr5?{` zP1!{Dj{p{3=V0&5j9AG-KG#d0;jjp`))59S{F&g`_hndoT$!ursGF=3Ffy0MI$MD? zfg_v`y7sLE=h4@Tc6uk}-(U~KO+GT-USmj}Mxqv^=26nFAGFZ(*^2=GDDnRx3!ciS zV#Zh*cI4C5j4sv-N##!o%cR(R&&Gb5shv_Z9o3?0gT9GVRJ4$3})L zhQhSUel+7*ZsO$lQkcSq(eeclmT_ZqT}5m)akgb_TY$T^%t0Huu-pPTUxIwcFT@6h z>9f@d8F3{D%(vpltuw9+YIW)_U*PAk#eO`^_zD-))~;*lb&50d3zC1y<-DkD@HRjUoQ)i6 z1*ZlwB37yR=b~m}LD7NAwv-btSIbk5utUwPV{3$pauL^)uD-gv#+HVt4a~?_@@J2o z<&Dw0d_>F?8AZSF5=v?9Fm1W%J^k70tat;~^ZSIZJWL68-kEP3cvpq_$D&C-pSdr#N z{I#?yo#(T@V&T->C{u;2NYRwt<-c^mC~79SB?h^Z{Id?1=tm`+%|_F?xU?EVMtR2m z@Afj3-n8(-3eJAS5RW+9`2_eLP)jtceKU6tV8gJm==f z&{L`whQrHB-v6%RxSBi4z(OYng;h|fDUhWwZZ!eKBi@qp0f5sbOwSTf0fdI;v(U22ox4hPa54hx7 zk)OQ0wHjIotY(NKX}UnN&MONK5MlMSx!)DBW$+04!F^N>A1OGf2Iq}AeGRT)#qv;( zKdkaYRx}Uo$U_AO02_!=NQ^9!Ul!*ZEU@5l(d8@zh6|kcHvvyd-Rac=dBq;*K72ue z9hvfctQ`?6aaM~ox~;k^tO&?6kDUkAj>3{W`IMu7$n;6_ObRH#Bs44Ek4Y@&Yb5SeIbdq!|#g(oQ;E z%$4WOy1XSEr_f~3ctr+dUM3(+KUMes(uRb=JnL^AdJ%?9m;y^ za<5=8)*wYYZu3fp3X-MFObcWEg3-j)vc4Z0xb<=n#R+9#p5_ z`{g`845*jud7=B(6F~#p(xT3~;j@a7?B%4-rzw6wY+!Stl*tOZ&0xq zI)oNVn6(2auj3FlTb+8ZMLZgMgf&aECV0$PcR+Qg5%Ln-^7IeC1k`h6|IbyE=Hc8| zaClt9W6a~R&vtMhQ+Vt?v1cL{V!;)KM0Ukd#47Cw&n15ZBhj5i7>os{?dk+JM5O(8 zgw!~)``9kR)19sTx74UEWsah!M4;iG8JvdlNZmZxf9p+nHDW9YEbz>P zFBM#jJ((}J$fss5uVC7!hC*%nwxNVUb0cX;!DY9X){wDJ3kg`n;$DQyTRbH=C=nv| zWVtI`D6`Muo0%mQAuPYE;Ick33pY|*9N`O|X&L`1ddW<DK|93;=j@v{}$f|pd7 zL}Ao8WpS|>$F0-);c-5a9UxVR4xJG-A+#+mc#H?sqCnYduOMr%264$e|=aRytJ zvrK}60q2H9VOoWOhkpb!V*#yVWIqWcM z%B$8Kjhcs(ZWWl0E-?&zwhnYp06o5)eqqXR_d3pK3`M-rt&$PJLz>)q`vv`1;)sw< ztQU}b4|+Avo7;AYfM+L81T-3->BIfG3TCPm2$T&hw1`q)w_6~3tWSn2@~VO}U&LQl zLWE!eFrMg@F!6ixP53+?);R1}n)x0!2%6eg+Fh7{R33Kem1qEve@a$}`OACH8 z;4aN515O2tY6SUoSH6n9Y2z%2sF=j8IDk#Od7=_<&JxfS3E&tI!AC~FSSZF`L2DLV zZllrG7b#O%etvBIj*B9DekmQ`7`aYATo4JKoEF}+(y|BMghU_il@>QlTsDSa@M z$n8oNkHeyGABn4sZG_FEZl+*amooHmsE7^Sqxu*OjEPx2b?ZHcI+|JB@z?ZE1;-qp zqre@_y^{88wp!=sXP;V<$D6MP-GK8I5p&7vFS66(dKzF+kUHX^O_o!9v$Au`>PI4L zrdwfv?TwiUN5iq!yRmCMq0RZmTcZK=PCjh$J>2RqrY3;#uv1H9YIEM9tZL4JP16-3 zl8QLbD%0gm*2^XD+xE_``edQ8EDCXzKx3MOMHEI1r3%i)Y)OiUw;K9N8`7w)H~~c-YH0ItUT<7D^N5gKyKpm016n0 z;+CC;;^|pm_P<-rRs+GaAWq!(pv>)7f%P6PUiAiyak><9gj~1Ua+O$w(wD? z{sM+R3^uJT7%sPmMpH^x63id#xP-3_8{hp;obV5{ciFq+)LNt3cBhz7& zunH}gygd|#?SJMz6oS%wipyC{?8ER9Fls`t9 zas&=_i`wm~QKq|<-JNO)Ws1(b%2a{K4+G?Nlxe5k{Ya#8Q(?mzC%qf!I+Pz22_xz{ z^DtZJIveZ6%abE=0tdX&Unb!2NP#>5nghK7VsCfwd$+uL@`I7dyyS|7$O}{8cyMDA z%cN&Kcl(1Is0N#kYV%Op*XIw_qSQ@op|Y?skt?5AQU*#c&vG^+=|>jC4O@Gp;vQ<; z0<*k7zW2Xk*v|To7I;x`5F`n6_h(mw{$zR!d&3DqYyh2U(P}(kNDRUZHV(-cDZ$^D z5+?v9Vdq5N`mg`0Vc{xV%`xD@-8g1tVM~JXx(nugbv=>|g+GX*ZvGzfP3Y z3u@wMoi|nspAJ1A+rj<0-7`3y478T!2zzFQzs$>PrmtJtUY~ap{kgi%4bQ!=*bWB! z*nsnSopr(DuB-Xz-sD^oJ+GEy8H|dW zgkKFSU(ToFB~REUg}}*Xm)QaP$mk2U#d#UmE__}|)5s%GaA7(D3uXdWVwv0g*C@#x znpoT^X_zM7e1w1F!!hpZ*Saq=9nI8|nxMMEe90-J^cW&RcgJXg zaEF-i#Bg%>rCCNMT9>{uLQ!c%AD9fmNe4SB%ix150iK z6+94Wu$IyoPdQeLd4=Z;WqOqcD;m>Du*qCVMDWK8FrMM6PgRq=P;|2DMvB7M%tU; zThertv{A+4&Br+Znhps_Lmp)aZ5WtW(YyO8Z%U=#9%zJO4rFpq z2e8z&)`i7{f-@O&=<_&~CRs}1er-;#Hfzp7 zOGtUPE6+HfFM~M$_{*k*8!_hP-O$QdFh>xXC}(7C;r|NH&TKcA%|%4P#9Y8g*9G-g{I%AAv6re{#P_@=7;nyjlxY}C6qaDAjVsnmlHYCyj&3^lw-RrPCb#aOs%*mU6|X~2b^94UfzurST1gYGu+glaO!1QalXJE}oV_5i zkD{qr=A&m!6UjzBO}YKU`st5`1_sf|%RzldaS#vLd1ljC89&n$S|tCl+TJyp9w;DH zM?6gdqlq30=2bn-s_SXmz@5RB7ALZGc)e zgaVM{H@j)yw8%L8N`?iAL@?&^0gy42FA8z~#S04q{2kC{I@zp_n5cb(0mXg%ge zA_yg0#;i$(rB?EI?r%n#0OBk%L&^|1z&mhO%{vBM;#I7C#A-n`5O@>0AHkqv9S~hN zQ*aWd$FOwk*OqtU|7t(=z2Vo1e@m*suGtxLD}n}-u(M<-&&Nkxes{tkQ&FWKSAKh( zs$;A~PT*M!Mr|(>#5Z&=e%uv_n2upo|4~5r~>k5%3vel^a-}Am4t$0a$a4nr0D4H3XToVF#QT&bf*o@%NIsB z0G*j9^uP>~4K(^K+5DK0Dk#N`Pd1|Ws~Pue=DrQ1VGE4=#*TSIheQ4DV@USHFw0XH z)P#Q&95&T_wPB@jJRC!E7TM;AjW0pP7!I{;k`>~t>Pf*WWs^*pCXJeLWmQ-}i5S}u zcH}J4%N7B;BfNr;^qe>v9djRvV{zr_lDd4we%1 zf~&S61$V$P;968IO<9zlA}1|YE7$OY_<9UM{Jr&*#bk8_IiJl0Hc0Vtut&PC;CKXK zpr6Ll$2(SdQJO3xxhdpvLYRVUANiMVnI1z3ML@6}4ZHq=Xbyy`Jx~N4TVogp} z*!3*%jZ6ewPi7MP>~=H}^_LFK1tbs@904NTRN$-_CWvT2Nh;{H8~xL>leiO-yebdj z2G|Q*)sM{w6{OqXc8c`)uXh^3noP*0; zuKW17vp-WxhF3CaB+d7G{84_Qm@`Wu7V51LSFOLZ89uCkSq`j4 zF|~ivNcgNv9}6ka1tRwf&Q`R3UyUh=4PE-Zg_$4MEgk59i#uLdr5Co1gf@OuT^p;H z{l2yubOk4kBpRbuwvi)wl)kRc674E>BT^Cd4pl3bqrweyA8^yZ#GV!`aEr=>k)*5L zhNAecNST*t!HhN85PwG+Jf>uG0fw>?!YiqOy|pXxqCaocK5y)PMy*Z-C#!W@{%#n+ zTIHJgm;Xb~~L1p)_gjpC%BQj7lxT{cJ$0}?!8jbb`H;ZWB&K^zm1yCk?KA0^p z=Ud*-y!SnvQuO<+U@(y4?(e;wHLzzVeR9%TCYppt?*3_e)A&i7)Vs!Zv(@ybUld$`jpdg#i_=3aV#s=l zu6c>KhUt&vJuqFbBwi76adKSr-x6^Nz8qH@{cO0(Hl*Jw3ljT|CsTC}U#%1-zM1aF z9hs_g;3`9TO_p_+BlfK$)76sxjvaD09nA@69KESY*)rDf!~*~2)i&Y4t}Q2Acy6!& zH>`W%0;sQ_kGK*UHc!$=Rrx6PN#b4YC#o_lIKMA%kmvnAdEA7)FLfi%&yKohr~SjD z+yz6IOT?LHPLK2jqlE)32@TBjsIA5&D>QqBuw)9a89ziVIvabS@1#qpOIO*hS_9iU zF1h2#wT8-a`zpcoeNoVIMf~=1+#ZRg8z{d;EIkb1I1C>iK94EeY^Vs+dz$36VXtE( z)l-AAp@Ze_6f{)i`T1(ppAET~IB9riLu2e4Nx0F#Y*@K5G|*Vs^tl7{3(p|}SJ#44 z>ONu&Qd_{Vq&34AcQ;=N*w`oEqhoSPFy3T9L50-Ryg*}SsA_BJ!ZTa{_yP%U1C6r! zLlGuTlaeWqO}8-8rr>lUA#o`VxxKFHiV<3Y{?1pATo=d*_TCmoMGs zw4J?@jVQR(wkoTSR>7HG$Y{lq1UHE_X@+3+RS1f=CHDHnN&QaqxSp+g-K0Co+xJm4 zAJ!~!5K7^*js<^Qjj?dbCNVndk4b#`Myka4pT~BuBUKVRUhkNT+4b|qa*l*H*aK%t z;Y7|bk^9D<4UNkVGv$&#m`Jvmur05{&iU}Jcitx-+u*6Q(hb0n7PonJ&~^_(0>35QD{ipl}XBpf+g-XYUUl_O^1O`Ona zvhGYrBxUMa(IaD?A<@qB?|rj-#V931k-H@p@vvpkK%;lv6&iMG+^8V^EvhUuhm!&L z^SXlTpl({0M&Ll8kFF_iea zZP}K&QgCN!YYRrk@oIQUojW64T1$dILljA~us|Exc_-o$Yjh@AxF|YvH=WN%rlcsU zFKT#6pd^OQkth^p{_F1FfUgRY9M?vS(>Ldc7tO=s*$W=|;_I8JKrurR%25NGpuLm+ z%K0f;(O8#1W#~p^Ikhmh4;p>bbXUp3#Pp%7G=rO9fMwCh^54Xztm+a`BI79<)Gngf z<2hpVoYc$gCnJpy)j-P~DH%BLOk<{3R!U|1G^1B=NhG9R){e-k-leihS}yU z^nw8(6;DMWhT|r*I3o@NOA8LK4w3W!21T|lVUewva!{C~1ck7o*LF}Y}Zp~15>RLD$DrRS>Tw{lYlfsl-*BD5!N(r zpj&`lkyit1_*}Yllt?(hX<^P$DW-E)bMcWf{0hIp8j8BQ4I3$AmC%0MG4V)Q1KUb0 zkpfyCmFQ2LGjr6Vskqha{E}7t%kdn5pN2n{l3*~B|<82YlWV<)BVsnw}9{?1oXz~UlC8w_;hcFc!gRXzxmJMLMsLTapr;&QG#t~=KaBu*X?fH|MWWXr6F&{>(;Q_Ic zl54AE=Z7TNTJ&LE3(oHD`-IgT5vak@bI{VKzT@TOMLcF@;6*9Qs=W+3p)^Bs);}w> zr%=-cso(dGiC1mxuN2`GOTt}S;8~U`vmRb9#eP%3SF~sktcXtR9D7fWfOVUfp2sQ-}G68A0 zz}fZ1MH>c0GX*DX$?4&2AF@{_>+|m1p+(OmgIp;Kvmg~5zoi~oIQkJP0s3H9E;|5l z=%c`q9stk+E`|wFOgt0~`|9l~o*Bc=MpgbG;B%S=NT)%mPxTYH%%4G@f^!0#(lqwU zIB;}p;%xelV8U^FKgG@_F;s9?8r=v>T9;&u<_Y6feRq-x-&Uamo^6NJxl-CPHPJcP z?<1J>j{GA<04%yLlu>Z356)nWI%5c}gDtzTzlQLrVV+~3HwvyXz8l9s8cY1oUZZ|Y z|CR%Lcn=i)a%PXS(=F`V(t8)DKc1d_I;EcgUgt0kgH~{E3-r?E)StofBB<-$wzrFW zsHA>~vvr*Aqlch@9fl$7wvN<&R(gox;1pbBjGyr2?b_jSwX*(aM;q#JW8+IjUHb6Y zDI=p4OelJ9E!ZN@KZ4ZtP-`eSW{Cjh!HoLh;AK=9Gwj+sLZEGVO~=2@y|wd<(*R}& zJ={oL#+`S_6JieJ&7|zduA!i3FjH=0eMd+zy%Q{qg88=7wm{pJg!kmk#hk579O2;w zXDo9f5oR!UE6CLKN8=676@245b%YKUlV)(YxOro?h;TUFbWVD#+a^u!Ts*9%OVISn zczO>Z$~;&eVedUY=bJanpKxLYG01zeLD$i)Hu&DV;M6GfS8=>8dfIQc&U+s>YX)2z zpwsejcH|&&6Bv7ZhjtZ^Ku~ax=+K@yx7;0+f?Ksu2WhYfh=NM+vda=c05(`7if!a%ywi;u7Y5=bQkaBu9J4~rIhnIYTzAr%H!gn^ zE(|;?LHnF!!qFs1^0+3MVQ&G=)ti@3J!+mC2^c{WD$Jp%$P+6 zU!9+ku|Ry#|ID<^znn5vseC2MNBzcfOlFYdN_sYzS!bDfEt35*XKE?92+_*X?7!Ye znSeP?+jyct@yzYaYfTR7Mp%l?8}~L^PYX#%<*BMnROE)7mf@<(!_Ho=S{Z~#fo9E57EP*sOuty+ zm=Dc%Y_rkSmQrX)h;EA5*!6gNiS)lPdU&@qhBj(YN$k#SVX_LT$H^QcEIMm>KBJwC z8shVQK_|OKYBc}BIqg^R%b~Rlw6>2<>&LQ`U$`yGH3B&0=}zk0#k4ci>eiHq~LNYMUNAVj!40!CPqYd zd0Df@9aqGjg(0ipk{0M&@4;I%eiX|k3mYdmGO35P?tbI=tnnl1;c)cv%ULDLmx5KC z|E4(q6%-A&Qc$T>Yn8Vpq#)w=8yMz?z<50=aO=7>8wORN);nDw1^ZwC_~WEw1Fu`& zA@S4!R35Zh^Z3}L4cfdBXE!fiBUYMnq#7=zZat+})$c%1z}c6EL*KzHd@QhbMWMNi zQYW2?(%uuA67J(kg_8zRWiNnvuHZ!Acu8O} z^GCd&WfV_-(LfUvZlp_2-3$eXQK&H~T^iHWjC9y+K8T`K89~8`Zpvo_RA0;>*%IdxRWtkWuvf~$d4dEfm*~1MxQaD`0L6M%zD9xB< z9D%9Jkq)P-Z7R4dN#ODBgaazLDi7BF$`=GvC#Q@cwAk;C3BnGt$_`2h!fv)87#Oc7 z2yb0Mu#?AMelm_CVnU-!iNKK_{mW1ID94cuzeDVvPR8BdB+GAy@~)8ms`_g5jNHB}k+D-v@*Moj+fw;(2x&l-`_v)iF; z@{R-eD0SVGe=cjXs%{<;JXhJZq}lzX(>1ZYE%!cVeRfW* zjjVlDXrPO&q~PPolnZaI<5mr6OVtpPN8Vgzv!WwQz6z~kd{^oY@2BJqXZIXMhJcxp zS;HxB_2P1)2A%$5!DlTwoZ(#}@e)I5L^iW<2zz zq1-gW(J~7Nk{}~;p!9F1I*N$k+Aiekxx(_rHC_X5&SufsMeqEgM<(&ldE)MfdD2pJ<=i<@;v!YrWd<1AMF)8|TRo6w=%OMhLzB*4WEsXx1kReoTX+qG zJXM$9sXq$N*fWWK@p&e&&Eon!@und{x;jTqKK60*w0R^R6Q1THj4!+ss&T74()Byg zlWw&|&AVJaO)#jDgA6upY1G0RQs6iw_d7>m;Cwncu`VoW7uE_Ap*ra}^!qaM=>|$O zRkr27D9A3phg-KQEFXV|{c}Ls0_PZtzkDk{xc*IGJio{Sx#3;JqITCwsT)=sCK!{e z>In=3a{SeNKABE74G5k_#`3KNCm=9R5GfST2q=f?^k64T@qA9}_Ua!#v^xDpH;>ia zKr`4SzG+6Em5KMYovNjF&kU}@s->pi(Zm^s68?C-s->O!>5s99pIutvZLMzVYSs~5 zh)zWItw&GwR&a7^{I$=UJh*=0jB6`Go_SNuU3ds8c7viy6;8|LHCxe*Twq$kp;H>S zF!Id$4lGXwfmVd!^eelS85?Hlc~~&U(bb-l)o5TMp)2Kj;A;=_V9SS27)WN_|}8WJqOj~o&z*UMj*7Lu@E>@ zDbfo9AH!g{<0ZRIqbIVqJ2*`XDZ=dzTqO^};OulTgVitHO%F+rP&E=M%66N7^gng_ zAL{3LFXO5_?0;iAOAg|;D$7o*&!e(_HAs6Fl@(h=$=6x4VWG}4lIQ9y{fu=Mmklki zcNAJe`?zXHK$g-v3NEgE9;tN{T3q)$R_Q3Xxb8894Sj5=E0$iPF%(*k@J?4z7>0)n zTP~+C6kML(c&x(cG+#zx9QuP_5p9_a$#60fjt-KCX=F%Fpfaapi*~>O>C?@{bQAyG z3O^2y%n(v5+HGi8;}QOtbr7j5Y%jJESIcpVf-QjKv*1YJ`t*g>GX`nYr2l0)VqpGT~8qXX;%;p@B_;$#jVgf}?P-DVj@Ina}94EF8(#^=ITI z!RD8A>r0z)XyP8|fuv(?UVh!=KX8Bt_LwZ-0bTL2+FIY3MIQohj-@kf&#y|Jad00k zleC7Cbx_(NDupYlsl};&+@oB^p0GB?>VIW(D*h7>};iIWuEL0Ks%w z$wXZE1)AK2CD9pS4!&{Y^M;@+f5gs_p@f8smy)7G7%uKI+P-5G}bU{PAUi_ z-bQm~Dj-TI=8avhNNgT;vC*Rmjx*Z|V)F*4n{)bvJ*~s60b+@)Z$b)3JVO;Q;+ymH3b*$>V7Ass?@t# zeCl}bCCo(3A<>-!qkPG7e2abA@4c!?mo>cbKX)sYlaK%4zHt3Lu&Bt~6=p^$?j&I_ z6i1>q-NKiz(L z*zI|1(w@vM)S-2VKs3l`4_z@f2dquO7xNT>A53{)CTOI6COO7}$p}YA5Gw5?gQg8- zqucDaur%hOTsE0bGo4Ktosnc+V`<|7>muW-nMtF(xk*M}wZ|C3*}Jgn&_y#?IfP7* zjdBPGo<>i2EY*&JljdsDoD-Ohx1MM=W?(9~R68?kH@=ZC@=9yxoxB>g_NqJtMgSM> z`X{7BMym54U)m4wN!;MgQt1HA2;EH4V`GfN-v5}dai z9gjN|CZ@}WDuIyG=Gb`=cPrMr=m;!HU9FZ)=3XE8D05XF>`88mPQANEGb0X9)cG-@ zat$qVwQkQrvOk~4 z*x4<9#Wiw+hY`CGyxJcgh5@#M5g>VohJImGERqw6cCayebmh(AZ87)|`Unv>oN*`9 z%ZVw@RQYSQ_BRgEIrZjYZ7^4kB>o8<&mCN&M*e($4A+{5?mL=D!IhAJB#(bSk8`&| zOAj!)%snsS?kaKj=e$Uhb5$O8LQT|*Q%%p+#feH&NBNNEcBX_);H~z~TX4x(Yw5Dl zP0Dr+a7hVZ0Uw1XL0$7QJ%+sF`7WM=06aUP2~9ataBxiTr{USI=^$`6PRAPkWW;vP z(Lt=BzvFufZBtFocPNe;z#EXW#;$4r9B76u(xN7l?;QZrK?x0PdY4f6Io4>7rdM#8%{dA`UDZdM zRd9K>aG@+@AA4(Mq0=mH5{C+`(Hq!adb8 zQIO-$^gg3~Q^B2_WJpe`$T$i_bcWe86Be|WL4}&lOc<x3sd_IB1 zO>{ZL?&}hz1(oit1rGywJA_>BeXmnLIz2l5U`W9h$zpxO93RkZAIbCz2yV;>5hYW0 zn@pFcob4zLwGHmr{DS{IUtV2}=o?)ulCmSDUKZ2AbUarr5shlal|-%osdLn8^^fbl z)@kDxyp?&m8=ZykIxg$;fE>=}-?@zMnYEiJ<9Ci-c3y>#6&wT0U}xq{HWiBb*k%0; zc3y>#6GVBa2Z0~G~ zxft4!a`pl#J+a5!2UYs#QwNpf>L)lIieED(up8Bke%85ITQq;_Hhv_dZhO(-BNvdf zh>zJ~T5JB~Vab~?-Lw%GS?DN+gbE*Y~qUm;A5<_krT;5x()sd%T5pz1vfMm z2eDYl<<_60x7K$dwzyN9!GR19aQ_(vOHoMLvYg)Zd|JXaDj?NGkh^}|_I*45h0d86N6r3xA2}3m^ln^)T zBq}cP=XjuJ z8H{}cE}{+|uLl%dR2}5$0j2eOF`kfpBmEWJD!7nxlFg7xKkjGV@}1eM5L>;IK4kSE z*0kG35q|;e<3Q;Mz{6b%mLR86}WF|W3Elko-qCTs2Oy26tJBi9w?pxK0yk?L> za|AnNW*O(k&8b{qWUP$okH(KJjVhSl@<)OcBM`h4$GO19B?|RBb^?9cCM=;LC}hbA zGs!&)yLldNRf;sR0&MdmQ-*f>y*|cP=Bhl{3iO1A=DYNw;khibr6FVEh$^@nK3ruY zs|_rl8{C8!X1Ki*|3bWr&|k)$CJc1)73foNtVmhG?WVlzY=cq)zGIgztS@N3Gqj9+ zj*U?+i1HfK&>$JRq@l)FGz#LkM`i(~%qk4v;|x-2=&Tu8j>%_>vZ~cqF$R1-=Uo#N z8KtHW9ZRHAhU8h9$ApGaNlG{;Mn|!v%m!*;Kk}-YM7hgRR){P<&NA>}VlsGOJ$HwQ zRkzd&ULtF8jY)>tE@8{Ar@`P=0u9X2bA=X(!(>EjilU6rYi{S*FD6{@IPqhhy1OWd z*F*v}zJd!Y&!hQG@7tA>&I!Ukv1PXZk zG+a`(VO_>dvD~ff#DsK3X9gks&56MZ&Q5=^iLq*`Fkr7RV!_72;=X7v6dpBfQ<}XR zv{b2qmRvmA<;A12%x<+PRM$Ii(P%XL$GYtw*o2Rhwy1`cT@Z5)YT}0qrE>sQ!izCZ zFB&P^guzpyrN?oIg0piV4|kiFjq&%2Y;vLCoM?S6SsJCu;?_e4SvnmiOTqdkiyLG7 zjsJ$(jQ_rTQ;sYhm{;YRFauAt^cbSVGyQn5N|esZMhXduf-5O2r7aF8?;c(}MDJe_lx)&f;tXc31PFn#L z{*2|y$Otl8flf1lMAM#vOKFxGi;sy~TSeWKPMxvwx%9bxSD%)d+pC-yR&7`4e^s5^ z-;yi6Q`svwx4Q+kEf}8LEtprG+nt)))v8rMu9{YzaD^OW9Ir?~vzj@00vGJpVYkl-gZWKP1m+1v+QGUw%_?fHd6kMjhV?~ER zY2*-T4Ra^AF`B`y7P@|m8Hf8?d^xog69g9zJ3?NeJu2wx_J$~olGOlUX-3AvfFaShfk)7~7V8vo5HoSx)xf+G|fbygBaMa9yDptYfd z=w@d?zWgparodjqp)--8)$KUMj@}Tmt>Gs9rU|IqQG(Xqna*L1j(lU$RRv!7MQ$WX z9iy>=do-z|G*)OUQyOD0z8s^{P}-?gAaN1;3uFIy^x@<7@!2P{W!y;uMt|pq{0fe^ zz$QuB`u%X(bAy{`h|O+GI|TNoNfo5IGs*5wId1+!5a;***|Sn@K_V* zlbVqU+AFv?3uM!NO$i>%2eZ*7lp>ZR5DoFIN-uBI7F$Bf40u|2B~CtwTS6{v^vTB(r{Q*`2i?YWaQXu$9f3+7cVA?MtKYSktUW=xFDAh`3+SqYYy7Hx3r zQPX1cycwMro%+{+t0$Fc$R;f4Gw z&lXY(G(q!x`!`AQxcN&xD{cQOH2EZd{>-+2LncsgDZKC~CNTV%_nD-#9xbUtDRQfN3xaPX(km*KbGpy;GIJ@p%Mu%P9U4=#ii&)+UWmWQHHe51blC6Pc8Zn^Zvt5EtA;~h}o4Mg$FXa zOHK4m{qU@lMMO3I-2EXC3*W==37Ndvdg65zocneCl7#q?bX0Jnf1XZA1(zu1kR)Uo zVi?qwBnhLph$c~z5LS!mkxmO2-3o36tmmTJjIun|^U$r(1nCzxqYCx`H2p?2u}XAu zwx(B169S6x9I=%N(?w{`W_t(K3T_n!&qK9>TZO?(p!%6{U5IB~g?`C_J}on=*0fTF z{7+`p9c=n7>z5ovDrG1bo>eWFSDjVAcW2c|MuryIGJAC-KW)>iyz{DL>4*0>z3MwI zNE_ZtOHfW{$1DPWk6*heXKc5OWnPsqn~if_x@Gfjk_k8B8`#uAtvBi>l0e@0cUbj$ zEi)x$U5XK!8Q1LycWz{|rft$esYyz~B}G|seY&e9lPEMxvr^gQppFswn20Ay$w@)| zu23uYiqtyjFe%IB>LhVrj+CYFooN(E8qbROj$qm#Z6$Tw=M$91N}r(F z2tGOQoZT>Csv|roI(ifnF)Fl;gZvt@0-5J`jYG?Rmy8 z@jy6_o}7Q~AAd|od86B(c*oOw?`Aq4iaMs=Vu5`&VnGXr*ODio&>o5E4seRpN9jz6 z@jq8{Fjx#2}cgqM7;xaEx{5l9NV^Su;CaQT) zu^hQG?I)&wMVpDI_nAG3X)=_)Yw8uDsmBBjzF%5*)E8>ecXT8}6pS1mWtZ!~PW10; zjrMzPMvTyhHtlnTQpzQ0qAi)wLPA8YFr8e#|G zt=>^ie+?EQu4;33X(y``sDwTQGZ|x*g1Mj(i5i89DD-6E^kKhQB!7PK9NG3}JNg4J zr99C~8nZ5yBk1J_@3cY0BtT2sh z%7xwl>A|Isyb{d~-s2HVuylx0q%D0)Py~f~S`h;_9vV40L=+hm@L?euRif!UwC$UM1z+X^fATnJ?y0~Z^$LS-` zjdW;VfYTU%_t$N=FDKpWUD&*94#5!N(>yy11YD>QJnZ4w_o#zD-2v(vP2vE~;Wq7l zcV^KYc=1pGDFr`g7?z&-p_K;d!?DAE~&%uI(_6z1PNZ^?3xXxa`?Ju+wZO>r+OoT@zB&u*vFL1ICW-#){ zO@rqaCK8#}WtM-uWfX5#UNf8j9_UPOnbyO!05sWL}!y=+5_DJRC^(GGt#Z< zvLNbmV3hmJB-Zh+x9ls%k0jugqA^jH_ z-^F#!#!Zs+LBNGDQRC34gadCSd4!FxLHgr4U>RSE=ced3bxFQzl}g)vp*zfL7$klt z3i$4qS8-WUhltp{ujVdI!X1G%xlCbnf9ZBiDcoqLE#;7id1LUe7K-vQfHb{K~9McpWbD_59f?#o z!Oees^_|QG1=4K8da?xG>q`ZLSmx^UV^mn}`8hlpfu|$@z1+q$qR+MH-BScb*q zI)i$!VRkR^e>Fk?$H>E@ANJ*_8K(-Pm$2*F2 zxx-U9(wJQEFj-q^o{q?jR;9Byo}mF0@_FG5KY0X1XKqAkpMiLfA4b`byK>t|X#Vri zEo{j{WDBn6)F@u=_sQB=BFJk>!{9Vx!V`j=U92%Tb>xR=f*Bu~TSHskl^?XN;W$*J z-?_gk#{HL62~JD+DzN)1p#*@;D%s#Lqa1n}%Z1Ys#3zvxNGxu6vtqhud1%6kWz|q% z7z{2@@2f;6N>i96Wi&Ycqy$c{?A-BLr$Cr@kh$#(9?It@$Mak3M3AKYm=!mpF(l4} z>lddD&C)W|*8&7Dr&0ibRIDC@c;#(h(Yp7wlaV*bW}XR$#z^B+`^yi2@q3{rUnmr# z*_uoOw&P8s54~cSrBUL8`r0{VKq%m4?V5)8&vjGd2Jz=iikAQvZz+0e%Di7#cUVaO z&+jgyI}G>Wg@3~_A-^_&m+3Ezw5S<2I%`^mm(vj{vnLV?F}L)*j{J>CQi^jtpYd4P z8l1SWA>Q0)jA_##XEJA+qA*0tT1{42C1^qodRAsc<$ExEtjvv=9wq^2XC*OSs-mx@ zJ6eWo- zH`7$xH)RbkJWaE78RRx9A3F288eu_wP)4OyK*JD#eJm5KS+pk>3Wmo)gUm=n zggw0AfcG8VwClB0-9s5a311ST%F1zaHA;QjDP6z?ba23yTF5y+8QSRis|MJqMVd{A?6&Scv>kaGs8ND{+VPJ8 zYQOVDK7|^nG*}2Ui(};@F!ZlQKFYVd0NH%}#GK;|iHNK&z2|9!?kfD&7RNoWOFOVF zowpWhJ*}!Xg{K=nM*EQGC*S}dlIJbpPw$pHUnsSFHG=LEO31})QpNLt_7)c;VDA$n z#dmMyRw~1e=cg(ypr{9&V-Z#N^5jn_Th-F4%f<2zg9nMMF9m6hC4kj<*l8XP%@(o?U6UAU%>d5ou7x56|%rdw2wUrNkF0ke! zZL7u3S(e|vbL+3Q(w_nwP4|CA7Qa{hp_QTq`rtfU5WobqF*sd~;dYZn zNw(>R;N)RK%icTKT56v?WEcuu#XOedOi*lTn5U%5`-$U)+Lrc#)gGd78n+%Y=Fs1Qe{cBC?c%hv z$CFqJ`Gz4q66v_2cDK4;I=*}l<>+vg)|XD0=o$nQNiowYF&iTtYnrU-86E5glM2`& z8D}+-mrb=(N|!tUi0%P1eL`*)QB@ZltYd<6mkyXn`H#oe?Y_f#O36`@fer0ICD`+$v;!ETXuVFoi*3KXz87?o~#zh~1KPO{u zH2oSr7kknmNj}VU!t+*EYc&2_=39y=4ih2LdDHk-PS6(-8+Iyp;KpFpn1nem~tADag2Dy zA&ETC<&^u^584P%B2iO1M#PdaQKcIdkOfR9W$FF)iQOkA2!Y|o;dp{toko0vzibgy z8H9;C_Um%fnI<-Okn#5Z0_@VE;gy%FBvBp4c_C+KAm(Mo!g;^#O?R414BEQA{cH?Y zh}r9G)zHjT4Ol$&{Fp~j$5h%oGu+N{dF%Q=d@t_ZE9UqQ75{6KkESV(?CF736 zgmEe{h1XBJyZ4s<+2^@TmpLUr%qqIZP6V>&20{HqY9qA!>1hzXApj^xULPrX$av-9 zJjn!E73<#I-G!@A3xB?EQ!=A}{{nc{)$*oxFVdiUWb-P3!%!{>9x3bauo+31V1zEh zLg~$lZj@Ojmya)&(vb~bIiVE14lt+zKmyQkE>xg9tQkwm)0;wgBg=|c0>P3rm-B&4 zW|6*w(QH%JxxbE{WEcn;pW=5T>`!^Y%!;juu;MpN&%ZzP1j+AQH#m}+EYp~?S-3LS z3@%nJzI^4x)L%HX%<|Q;6k%+Q{-}*V@9Q~FXJ>|du`SGSe;!zdBUTC%76Yet$c7h5 zsFtpph6dMOungVm<2zN8rs!eo7k8pK)C5)Ru}!cyaVtCzcv}Ve=e*3dXGFxW>J9}% z-#@27sh5=d$MAU1ygv>Bw8P<$1l9M92iq2C?tnf%4x;XvH8`t$Qk9l_ih!@d^Hdbm$wWM>h6>DWHrOgnG5upF-7 zilZ+HrDc|QH4i&%_Rvx67)>s7^nnE_#PkhR)lg>7P>c@YS%m6Mw8RdXZ?0fQ z_spcd9j8V-$HZ0Q>clwt@xN2X5}??HXzGG{BDp|@>?Js1c3(h_2;MkEo&vDxo{tW5-4;ao zw;a@o-r&U>2f$VWg+Qf(V4>g1q}KxGUa|R5s*3JfzH$3(Y=C-ZLvgs-Q1PO%po>U? zekH-rVf{hp@=8dLl0{Swcn897Y0s=Qx!nR}p|4|FM9$jzcmQ+ax~_@vq@bu@fo1>o zTb#QQbF)QCfxTRDsHpmVF-6p7Qe{c3rRU^q!))6CjmB-(qRj2&WMkWMwInIl#;!~~ zR;9z2QiED!U%|x%R1%Ue8FlD9m?)C%Wdl*dbq`?lff&H~mW|u5an!yGClFFz!bkc$ zZfl8e7&mM)*!J0|4yg+3Oa;UQh`+?V_Hhg-(c-LNXI}HsKsS+vHYAFtavWESQwhI` zY|q3jTl(hx@LqVTolm3P&$Gf)IT0Dg>|P|VGYMKY_QK#-rN_KJIM)`ETl(JfYR)LI z0B;L$mz^QN_I@&tE3@Ene5)vuSv_X<9s8E{R)}kG-}89|8roZ#Ug%J2MmSI>hmf3S z(*yg|t$S{84p=z~c}u^`r0>4_kl8(&hE$8FeY@YeF0k&?*RTI@fx)CM%b5 zp4DLmPmrOW>kmXb9dFqb6QRCW4(rgyH$!7LRy4Ney46Wy!_XwH_<)Yf+Xp4^BoDmU z4WP~LwP#W>|2-IMM@p#L&!am^EY(EXJyfKxHp1#vb(_)U7H$^F&SDxou+bZP;N={! z@dbR{n+F3wXbK9|zZ%2Br&t`;9PAxYD@$kFqVHQ%E{e?U0U)*IH4doXKR{%vv3V3n z_n5h10#!wQ{fUw0_d{5SFHoLnL`#!#1fu>PvJWUfG(v@&CPX)tW*1Vfs8R#?S|U({ zyYtN=T63WCGHV)=c7bD<1hkk4G0=r10;?wjH)mkxex%%5`Xa(93dPWW(ipBd;p@P= zSLQ(^sP^M)x42W0ZEAX=hgcd?ge+(mKKf+vr^di~Z8f1*)Q=eFY-D3W$2H4WexCm> z;6p2ykB$kZw$7l_yeSQVqD6;}-SM}NS7fw?VIe_*VJQ+9R(>p1TPPUqc7J2Z-47Aj zHh0HGU=NL+unZapqnvo1K)uq@qekNP-v>%)iQRwoHE#!Gk<4s!fwkuv4AUaffm;dD zH}7WM#bf>^tksOyP(^h8Mn3SnMYym(IKi(!Cy_S}zgh%kR*Hxhp+}??f6lX2Zz#Y_+*-p~aNZ zGEAo~HAvGN8gYW8B_3zYit?Y}UvZPm;M{bUj^}EpvGr@c#&}MFLClWz&HYk^0raeb>N}wuoIxV$0%f3!ro5bAk;~tqMK*T7;VP z96KFDI~k1dl&+r*61lYUB;gF2z{?ZqG*h(QSVc54>*ZWZ<=Dk6ELY7U|MAH5GNBH_ zH$QNAJ++#pYG3Ll5Etc0kFA8)iqeZtO zQJ^r^RvWWN{s3JZ&c@f=i*_`7%X3Fmf`tj#x2KcR)$+b7b#n&k^+%luiA31vFMmUn4>-Tw($r8iQ~}t zaDc70-&6eKIqXMrOLI0_J{29C9Ft3+U`OCiU%>$U$<>dNke?Xi!f91erw`etM&qAY zKkTii?T)$tC!b1z{!iY0Iu}OB0ooeeR5%R;+WDt2WK~AQM$Hc;C@p_FoVk>jMEU0( z1d5Ua$UwD#%*8yYl=pJtyZF7)sZ!p1_Lt(iQnXX0tzk$?rL~03IWu+m(Xi7W#`-s- zo4dm43Qh{|CkU6y6$j3( zI$i(0-9rHr-WH%WM=Ar117Um}PYVqj!| zI4NfDU^d-79NxOi0H0Hl4bFCh5?VG))qkV{P0{JAxr@V$i*MWh=m&mPpRN-U17ps0 zIh%dd=7ygQLmF(qyGu;!bT445A^hsy;0TE30CFwKeMJu-x|TGBV$C!wsq7zD?6tXLxf! zyzKsKnA6(*#EraeymP0~=qD}-SSf#5quJ6_E zze>8JzZo3^i514M)CqRYq)Y#4{1^U1%bJA&>({$Vn^|R;a#+k*`xBWPNBg9m)oIf~Y40dQ{jhC^JS zea(I}sW_L~Efce@s)pdxo_#nXCE8{Xz3CWRfUdrsBs-Kdgk7s!Sre9E2O9^GBw3@3 zU};%7&*n^Mtd1ZT0{D-ak&B~dC(4=)`0-NZOwGASoT;56r?(hc$N_7@8!pyLZ|v-S zl(=bFGY#|ygP>wc0lP`Vn{$B_5E024p5eF2@TYY;S0siHWt)zfnve_iDTuXgrmo!g z>8&Js$Kxo-3vN62F9z7M?ry-;D})TdNT&ghoLHO>t^2?vqzWA=$Jq&I>j*tzyJ-qR zqn>^%g0CJOstU=?L9S`iGqO12RG82{Q&SvKri_0wP#mdwp~%K0U9oC9!wIh#k1YoC ztuYtVm0HD&8I1up>_-6Bjs*%(TZ*WlV@=dlMj8+Pr2yM?h&!55?e$2SQLEv1 z!V)6y2)bOr1$liqKv@p(ZGvW6)3^$GZk@r}V9o69sS>lK_NiQ>!K6E{(qPRH;@UuO z6Hd!!E@X#lGjZyK|BoP&*?hGXV5=1;@}PvHgCNhhXJ#UkO*NM?pXH@$lNk9&o!q(U z@T5th(LUOByzX#fy42T89FDv7cQHLfl9pGjOtI_}1&;a&mGP{PV{%x4yzF6LqHHFM zVxLj(p0ma4?Hgt=#eke^)fY4C+chM?gNj{`Qkf4|>9PPG0YO)gJvW-aK(*vZuK;0$ zfCg_Md1&6g<(OkZo;{B5K*CeMJPw%EQL=fkmdSE++xS&G86-YevZ-Vgh zZ7>80_M32aE61)Dqcd%Wr<~#KZC^uMvLyZ+;%W~rzvRyY|IUl`tCl@PZdGj8Kkf#d z7JZmd zG}Jg~75w{vrxHQ8yxBi*=eEROG;-|Xs}y<->JHqImdh|FLWA!#qv&X23w{a01yJ0m z8DYpcWc?gyK3J$EFBSkCpG|W4UOSn}W8*y$+?7Uf?xWp*zh1ZJ4$GKB!@5@DNJ_y2 z$`eSEQR4vTvAzexx=OPlV@Qk~o=?vr0`yRk6q)tV;g+n{M9T4XFUOQ+ z5++aY4JNE2zeB95zSILEP&d{m8K=>mU`&=_Qf7j(G4;}7cee>fYNP1$jxQs!t)Yti zC|@GrU4UURtTlH~4w(G<+=pjoDh}^q_VDFDffhemWl6s892trj2nJs9eF_C^KU*yE zfVoeufs2M7c;p8L-M0ofvU0mrxSPOWuARyuSfyV2#VN?uUNX3{3HeP~#2wfZ;%pj) z(&!sjA~8=EfqcIjRli`O4>;7OpdGiCJ6}}MtAT1(2=>6RlP5%=QRSEIgvyiK=_Q-W zXJC}<0zMc;TOJOc!4B_uQS|HhUXyX}Hh`{F;=I7y{JCeEtV-%hmsQ58B{{$At1UF- zt(T1)`~|74>|}k8k}%m!;VY(d*lwuj?7L_}MJ3fL8#@hGzE&>d8g~RAk?i-t4(o#N z{M!5RMP#jPT0`T~=eSy1y0~3;!IGp*)xlnreHI%X6i0r znhD6g8Rc(-V-!aNW`ZR(`+4zQCFS1E0{e83~ISsia) zAB13NulIMeqibBiVF(JMC%Yp@AO{V7nY5cd_g7X2$uLrr_~j8O}YPq4mGLJCKq8K2+PLPK2xGv>=3a zepz}s_uv>IqWXy+Z*H^mSZ%=i9oX6)th`}AnaP{OdOYY9@%cB{;>iRv3mNmkmB2O& zib_3xE7sI{M^8DQX!R$U)O=eyDK7VYPRC>Ow~j&&SR4B@@K#0ZV%EDp7n!3#R&DDr zX801LitEH7AidYMN}Qv!P$LZ@nDl@rls-2Vwlags$w^eC2TdX({2AIp$o|#Nz(Me5 zy+ZsG;Nz@HkhSe`w`J$hnXzjHG=bTfhU2HMgbpd+iM@)d0lUYW>dTjwf%{SH&wj&L zy=z`Em$%H$9qmE04I1rxO#m7on8aH4ox$%Aur18sKea<(wc*BN{_Rg75O8Q;%F)*f z&TX|{Frn#xgA6eH*Bb!&^@;_nspuS6r>ciU-Ay@KS7X9#JDCaTPzqr8vwaO=U_w;bX`6J)xaKz-~Bx_UIwzBf>Y%xBmaprRS1BLW z>Gw}wnTzJoomh=1 zr>K6hsW9S^|4ZhhXZmVZ*xY@4wz~C-vCbl`eEr35)_%41G$ZDVd7ztmL6?1|{qpOO z=@iG@=LAmL)-awM+B(YwSWqlYtICs06S6JYQnzHioxg$8W|r>~VPzwqQ`#QeN;TEyl`en4SEa>C^uHooJpcU`hO-gxwC=|9qPFzhN;pp zMC=`}oBViVgZjQaCn3PpwkUX2G)?P?TU;9@d|G z7lh+KpTcrkTtDTTw&7@W0pkw0WAYjWKdA}dX!rk_xiHxuL~Bn<=RlLaJ%blQ@J&kn znIn!O7TnOCUgAV)(OxuSFyO6Q=0rmsZuK2I3ciR#OxooQz^( z9?BAQOeu#a>x#gaSk2;@yD!zDhE4b3AO(w4ZR3MSkG7j_X*o-Y!)cuZkIH;iQOqal zap>7>JQ}>+%hM+s1ANuRa?AE?q{Dh~8K-KHQOT;3W3&|Ci~i1#b$0kXvqzmJtDCWq zDQ1-13eK-^!iub|f|0dbzs*HXFm_1F>QFQ-o~Lv3ZO4XIZIhm(GdynXwHq7rYe!ov zv!5zHx3>1Jjrp^qjn$)Lk5~O;iaO$FxhLY^p_qBN;Sm!2nUmo+%}yK6;$;cKis1Qz zQE`(VrB0WHeo%=4hXc1i;%5J;ivCc+^~^5xYc*ip;_j!fB7AexIA&^YY&KxzM~!N1 zJX+RcWuA&TT*9a19RBo8-%Q(DX!GVQes(3Opl%Y24@>?W*vl>?P(Cmk5|}*4gA99z z9O98^ErJaD64F2BD!n8`yT*%8S^5C|q1)8x)akG2!+>FLwZ9_ZI5ot^DevOHSeJ%l z;cDXLy?FIQUeC=~#q|0ki5l|X#Y12a@s^bp+j5PV*! zX+cKrmF&=mz_aJyMJ*rBYKq{(%M;V{>%L05MuPUt;{r_J{xgxg8-w32fx$K)AAeL2 zK+U3shOJgEk<=bRvs=mr=_&bCPEl!`mRzjYS3(x)wK0k}Fbec5|9IdBkN^8oR@NX4k!O?zA5dzV!td-LsFB7Cw} zzY_@f`}?I{k1LWP#X4@E5)IS_<0?qc%z8g`Wrf>-f0BauuVX7B*I$imP^;V(^m<6P zx#fv>`0y|NvFeEuXo}JF!@^B+$IEhuT;RK~Y#MK&=II6OQ2p6^$ne2T<|x!P@M560 z!MY@=NxN50P&F$6NP6 zXH-0-fiZ8m4)@{rpm}s4IX5HL0_N4$C$Q`ZSy+y6*>vXvt6wl(xzM{A1caWL&Mi*-jd+NBtW3Lw?izisD^Ah@Bx=>p?=_eBTVa zuXxJ&iU8@5YHzKhJ@FHo)`NYz(l`L2hx%D={4PaS1xd7Apv?ZB@vrrJ_8K(-Ul#%6 zcH-zAI)sw&ZCe&Q7h5@MxbcF0D%_d+g}XC8$ZU4L;J!3oSjQLL>-ei@oA9Qz4zl89 z2Dcl(E3j44forA5_;mE_XV^(RdO0`4Gk@Cf4Cin$K%3uOd7JH07Xkw9DdN{P-v-Cy z-WMWkG;i`}!~V&e-v8y+*-#eeMWyugmWgI`x0*JKk;$wtAf|D*g0=e-1z&+EJo)S+6~?V^~KyBytwuXc8jRhVr}3pM!>LZ2ijUSuO0~+8r=~W7rvkA zc3GhijI(8G0Xgx$tXXosTigo8DwOw-AqmEM0JIu<|7RXgBaqh(^#BLWbhDC_9d5ou z=W1w>o$9}Jah-?4oUbUv>;!+hC<2pmeTAkvH8x(!Z}fP*zuyD6#a;=YkngFYj|YT| z`;WHYS0lzBY?)x%ei&HninDiSpeMf(?|Hxt60c#LX=^b${|H}bE_gk? zAYaUy0H;xvDm_iUT%|-|p$e_8_1N$DDlx7knR9B`T_*L4E7nl-&?%b~S`jBxZX$p-zISX67(`Tk;-=-33K%}awGW`&I2Oq&rz7YwXHyz zPy%)1(OC@FQJ*$cA*!*zXwH%2Qc1Qn-+EggvBZvm^QGp(bjJSvHMO%`KKfdFLN;o2 zdAdxKGu5QK>C}SfuQ%=3LENur@og&iK$*znKRt}YF%$Gj21}Po!uKH?cc0rm=k8HH z=3eau)oWHLS+ZzC|DN7PluNVKceG=mwT)C-K?JGV2wDT+&Ba`swaXU(D#c62Vn7S& zfpN~i@|bBtX9HU-eozazPPO!$!U*1W_a*rBh8(f*XU7CUmusn4KrI| z$Fw7K06YvP(eHK<+5s+jwoq2O0VB~7zdMhUN2uQsRenFLXO8XPrMuzH`+3ir+o2z5 z&R6thqCWZCTlJ`SslX@=Lu1+^!dYEz;qnVlla5|;t`BMt5e6~E=8rl&eqK3feEgjp z3=4jxU1=UM_d#8meW<@XnhYNZ1pXf0z3O9d7Nvu~g z1qMWFPoOWFY`3VxVi5Y=wh=E~5snCw|#^e?=f ztc>&EM|K`hDZLkNUuQpWl-T`s@8TmK;eqo|?0F(w`WmRGu$lX6LDzP80L2c;)gUY& z^bWoD`eGlha; zwxnWLhcirxdU}5dL7k%UXzck<7#))&=?N%CuTn*?t{Kj!UUjh)403QTt}iBIB)asy z;1H_AKh~3enxjs(2;v$NF%>VJHp-)~B;YPKE^r#7whsSaG*RiKM|;6AuNC^)OG2I? zB1hwHqJgVl{GK7)%0N%)0Ps!A;$7x!GNe@dN=kP|KSCT&4$7XqA6yB4EI*6)p9c90 z87}6tGiN4}zCp{PTVl~`yBmew6(-uYp`}7ZX3SIqdKRW9J|TpAA`i80fJtJdXq4d8 zCc#3lG51+u?n6KJKsw$T79m%WpsoDG(G9P*6zm|dBD+O#G$ae&)^!q0qO2RwSjq4| zBeiEDQf4aZv;84N-c2-blgp{pNtE4SFY_E$eTCql22JmzqAj`Hd@7)*(`Rd^TV&Y_ zrw>f9X+Hhp$s>U=mi#{_7WIY~arr^9Tpr@rGyvz z&g>e&c^H@IIU+<7r~bljMs9z)Ao2KwScI-D@b3MzA-9LRv*;-2yOSBt} zj$#t~I;biCE>Q`0mGwtxj_zk59ppq%B;oD(&;+9PhtAEiTF@97DGj=%Am}<6;c~8<9|G>gf`xhK>8m|+{3vhPQg^P-+7;;3HT|B&pZj&IR`5n}O z#)VLmn&-a}PCWAXnMP(6OLLpo#(^g6i+Y3PMjqX(_=^&ro^V8A^@5$}ulU$fdY^~= zS}|3?J1MHh+0lBl?ys`W1;w~BzcVCuqgt791VK%aFxrEbSh4&kBLeLPVwxlC;ebej zT!VjOMJ#H~;89v3MDa^AuZp(7yD3hr7TfV5yu^3q?JFmXj{Kd$12}e8)A61%;X6bH+`o>5w;~|WG7u}Ux{;$f1Jd&)iIaku{bh=4?=hM6$IY$vZIegF-xs1IX zBthbPK66owd4mbpHl?q0MXiQ}8;E3O-xR(SH9e-Vf^~f4M~DhFV_DZ+qIQ!C`R`sZ z7jGGB&f>o*kK|d6TH4C*^xS3WHMTrupT!n6p^a*BGMQb{*!@-&wt8z9i*d~`&SeeD z2aU;VLr?$I19M!abgT-S<67>PG*LCmdH^UILVt>7xKT93s%AUct91aAYEPzIK{1x< zZ`@<1E=9Ef-Pw&iJ1u9;)pkM7bQjIhE3h^=Zfjd-nz5o8CE|n7L=_==kw~0%pH;V0 zm4%fJ)r2THr5Nl?X0^nFELILX(aGF8BbsDtvwe32bJ>igap?yG47EHL`pok=NKA>HQWR%8n1`M(Q>%R_ZGJ4sXIE{sXGQr;}B7E zWM({2)uc{3fSN07=$t0DZ4@6(=$D~vhCUmw(FQPsC>;m%1G;21SW$R(($g;*HD5%%HiC&TWr6bw zUu@|YbSeK+gUuZU%OXk%=!G^Rdxml(v4wWfO!p_Rl+`>OUYS8KP5ezP92cb*8*UKpF)(fmN-L5O`a#Q>c0P`$(0P)u zOmH+fJ`0PDp1eud+50OlWue>1%=y21P|NZ|t3uC~(JqFF=C40Fr!}mn4IC9&R;%>q zPed(@^Uni6P*)N?hbHevgi}lS4va%NPh)3tkQ~jd)Ek>=>L*f~fl}+sjYE_oXVhmG z4~{SV4o&8sib#g01@388sf;cTVi2dC;cJRDJq>!Y@eH>en`hA&neGq1penA-^eT+U_h%* zu{OAAXeNJeV#bEM!KYqKfVE@v_`??yt-!~_|FH;%7WD^H82J4=F#p9=e})JeI*PvY z55rDq5q6V9YkzJ3ha2gQu*d-23op?R;Xzz=b6idA1hxYM&pus^Bac0?u+9`SKTiyO z!ElX+8<2CsAA=T}JQlz31Kt0Mtn$B*0+hymC2y3{A5<~t#X0WLJZdQJ(TsK(nf)uN z1#IA|hfbeQ^D>)ffkTpgNb~u?JC^470b-+wSA2PwC zZ=1osYZ}26RJ$k0JvfMN>ZCf>ieNyK?@>DW_pCHJ{{NTU`Wyu5gGe<8c}w)Z`ge}eYKHsgo}TVzxY4V4j1MO?>9$;C zJY&Y%#?Gv}3ErE%>3O9|?g<6qmz$)0bLP5j2P)}lP!}SjDxvwQu*#RA6d{W_B2BJL zJRgxID+OjieFza|CQ9!y+nD<(I2gB%bX*o}>mx71etjXSf-Bmw8Hfy+9D8)jJ>0%> ziU!*sk;I3<&O=`5J83d}+9{ggc#$&2Xh5d}slp^tTIm2=p&@N4uPGLI5mWxz07F<` z;5N~lO^?u=bLCoHw@*+(m(ZND$lQN`m7$N-LH0jj{fh!r_tSbgD6;tqF?Pmb{s0T@ z5_8*Me}Dy>sd*Rw-xqA1T@;QZzJ-PO6MVKRKB(wm$e8@*hroCFfa+9(Dv5)BzLE;4~v0qSG7g11dT8E}odgO3s*Ba5+j&jSjq)L$UPqHyw0ikbe5qrtTNKf$U9&5`I?juX;F-3>Z51TF|s}XG%o(qR@hY>RYDZix|prQ)#R8wpO zE$Auaq|*MQ#>56@nDHb8^REBw ze}ep1eGlziH{pAG?(=h}o#340zc_y*R2hDj5md%@vSx{b;WRrv)L;+x^NiZba`L91 ztMH`g&nGyk)^O3LtTESRbVvipPYuRm)`Yikg4$pxtCfHDlCAzhDH^>m4DINTws`#4 z{^eN$vRsCXW5QoqIrMWU6Y39x3%UxD;03jQ3}E%&-~#*$n8;ym998=U!MT3vUPkMl zq+&2&^x20S2(gJk)r5mR9>~Ho^*m`vqtXPcrj&MJ3~)-i<)h{6pPoqd6c?Fh?EEAj z*v_;3mR4jdxYHA!TM3A>fY%AXi%h9?5>m&#{S78Y`eQ>B8-HvFsF=wwVV5ybvH9p5 zH^DhJ+8>UH#VER}U`d$4gse~5HE%}5KlE*dmE~E+Gq4>ZraTavJlzl?h>`O3$WY-# zF?xnNQBTm~jBwXShR&AXQ;pHaSN}BJpDjF>7GT{u&IBWEqz{c|w}RK0F)OLD>SNrC!i-t#u$E_8M6!)<2faei$qeS=@v zs*3@oo@O4kIzN$EqVAVB-JSE9sPUG&k%PiJ9=@Y{_>#pnOf_EuqWHeJ^s?lc5<5AN;~ z+zAle-5Pfb?(WjKJA_7pyF+kyhu{zh0g~xF&-=~y&dD6i_0Iu)HQjwxSM9yl+N-MT zzUxtwr&FQp=~IiSg{F8!8d#z8M|umQpfML?`nGYG@Ya{M)v++fXg+2g#O&mWCQih6 ziW#|06nrPV6y-ttFU|05*J6_JsR1~v37kY$4Z*kDzcCk`F9;j1divWfo0xi3N^(Zc ziR^FOIdr$H=6MgAkQ85P+Azi5@DF3v(z64}#hNmDBFmJeT@hm0CJ~oI=ybhD!%B)3 zxcg&d)3FnI>@~wa&z&2$ilOh_htXLqOP1AfKFS!@8z5$_@yVZ| z2l~P*tcqcI)w`BOZa48mT=ciB3aG%{=Va-=w_6ZTc<6E#d~@`>V!|})I`T}mdm(!5 z1`EnpOK8lDOlw_f1EpT4#&L}Krc))**D=(zhi-`qufQ3D2;_}_H|_oP@^7LM*};f=1%(5YH$2!L}`0yOo4L z=rks}5h-XCRd`GmdM08|xnbqw=pr?;3r6cHJ<)Hp+*LT7Lp{ckx^DkuYT_4Z7lFi+ z4|}KT0d0%kN**$V<(tN1fzH0<7hV(5KuqF(->%mqEWFROI#$sAec0hXc4ee!X_!i8 zo)!%%apEawTDrHcGWKp~Eb%us@xli(#@zH#$pZ4v>;N~UFolUm$zktGRF5^makwF8 zG$@zfZ2I`VY&CySUG)g$_Wtm}TL0lgKhhI&s>pTHIPQz$TDX9YJ;mfM#l1J{fGf3y z(q-Nn5A4yWl=;YSCawX8EHQKSn0%XYs-DORIjTGqJ(?4fYn$uOA69&-a;&b292e$S z6*a}ZfLi1a34mrb`Z5o9c*YK_%x_)&b8g1y>TV!ZuW5&@k*szfiX2T9fsG~Y5Q~jPuK;FalL?&+ z>=n8}FkHr3^SqSibR$HQEkyXtkJFrC*Q}0yo-UrE8vXoh0|oPN%E|;WTuEm)Z*Q`W z@3r4X^y6DAVnyJ6^%0`d4Y>mWi!out7g_-WgNh+US$S$9XYj z=eCl@hHy}Y(RIgZ*``aJ0(khdrq9o7MbvO_%qy80!eazg{GOQ=89DKO?mqrh?p?Dr z?vEVDAk0KmBCly^Of+HN>Z--Fzb;r!(35?jY?oy0w=TM17-# z#elnC*gkvjs^ykI@AA07uuz~v_eeQ!P*2w^5L?1Llh1aod2}PGA7`9*27-SPofMM3 zvO4}O;J~**df(x6lZ3nb!M9oKsfO-vbKPs%B2&BvU-?41Q8U?cPcoH@E%N4$X1^3F zlMPg2j#qo+1s+nO4OU-F^~@}Dh1bD-@bcsTfzG*`Bwg+feN-4&Z3pTS8}gKX0V2+ zapV5X`zT)PU=7Btc-s3OtCly6%jv!Dw9^w}$=+C+%UmRVl-u{F(i=y#+)o<^&ledr zV-shIo(sda)S&tird7#B!#YiLiv0dhUYJ~wvBF^ziPr?VZ>hutv0uKqWlZ~NH_t8; za_tzsRM#!=iEy9yUr3&PKkpcplzI}HJT98GNN(op5c~slzoMW=hFtWoFP1-w5=%H( z;x$K{2l%GnO9vQTbb1L$3}8s+_xl##N)~>##{cuwP+7aVY+V-jy(p2pY6Ajkp321_ zLU(7*9YtiJ26lrWJgL$zaG^#ONb5Xry-9zzDmz3)yu7Qh#4!kNe38@nWkGr%O5xRKgW##2>O>-Uv1 zuiIyj6V>C-+0XervRhVuv$juSXAV>t+2nLLmI7s{8jo#K^;b#~I*8?$AH~oYsJMM= zH4;VLrS_TZ?Rnpy$I3+(Z4g|aU$lv$dY)wF)vNIQ!u;x+Y4rK4|F%=SuJ!u;UdK-7 zMegoxQKa0!B4?ILd2@q?KrZ1<5xtdYXhJN`jZJdy9Qv^$GrCOUmu$rfKKEQ+TVIKq z?+0k4_SK7M(_L9rYyC~<@|lIp!!;`A@cTmGrv2T*HDMbPA==7^9$jE9(pVaw7QF#8 zP7hA)9nRAqNnqmfH_t~!7H&n$3hNc)~PXQ$AuzH4KRpk`JBW760RxHEN$su=t#fvT0`v7a1C z6P0~%3e8Y_x>%B!;qCPEBlN7^SE3OF)JI~aOYMV5cn8DgVUgvA-li45i#Lh;{VAf% zN*LYU5iW0b_S;WkQZjkJmvoyiO_;eyzfIUUmn_5u%nz5q-c~CLSMyNaMkyE9FyA_~ z4^ziHEbo65FE91xo}WlY2Ufebyz&}edS&e3oenh#n(jQwUL4iX^d4cD{BdMRVnB<(4*ugv}_6lKCNzCC@#(v6BO3#!5->KJ-X)#SFO!gt5 z^R0dqFXI+c&yr43M7J+I5IrQ!xN0c>i*(9Q~!)Lr#Wxj*e(KI!}BQJ}csaDSUzq{7rK+t#&k5k0w7!1`b29<8$GVf##%jyM^*!PSYHw4__8!A_SW5wsNw~S6X`OMh%PmX09hRd^Na(jHTFs63!H{UE(Vj)N@%_3L zwrrOB`4bD^h1<{>M;^)XX)TlyBzD9Z==>3lT28zI^sbc4BAS;_9A?ai)?UWdf>!&7 z{c<(I9JZqzxw~HXE|LbE){ZNZr?V#s)zs~C1{4|tHDs+vLwjH@&MD{{d;<= z494(Z`Gd?#qrnX2k!fgaE91qRKkiAPTBmNq-OR+^TrP1;n3H0eX|-z34yiHDUMU^) zFr%x2kZ8u?tAbjn3dvAzL3`Qa?fiT}+g#{tAVm8Na}n-q6YTTO>Losr0A>P1K>$Ap z*{}DEDn*opoi-uHv_X(brex>EIlB4h70oLM1tg8fz+zc@~&H!gV;bT-tKP>|svD3UPp^2U$Ik<6ED_q)~uS!Es z@>k{lXK%6hqUqNf@IRFf4@;A5OcT5;Rsu&CHa&U8~Erp&G2-?y^gP#(J<)v`xfHBz|;?VZZP^L zN+4F&$k3kw(sOjfYPR4|lP_*rS!?nOcKnBH+}^y!aFT842cyry{o39{c>?K zcdcEOdhaIuNfb-$ab|Bmcg7lnq`Q8}jtaC^b0OUpNsC*vhV9_xYVLY8MP)WP`m&o! zJ8*GwupFMsJ8;gfV#B}YHmbQsy<`PqI+^yVeyzQ=k#f=$9Dhfu=Y)DHS6Uh*IDL>wXf+2HqfK)jB zI+bcz@DBTs%8bDqp!Th@C%FV?sYBV5B4j__B+o#Lyp$C{o<4Zakt@tE-uM-* zoS=Lx4S#TqyGZZTLfDj*1Qg7VQe9Zm^I;!(VS_z9dpP|-NoVY=j;0$$&>pVr)|3kTvz&I9X;WWvw}|e?ujR;RbwgqvS^?9fI!6@w17wF zzEVM8M_;!vn%gtA4-%o-l1OqjhL=W>p0W2kSu`EeEd0G5DY@R8FVb8mb3RnRKMEg` zfT(Dcv7ce&pUVKHT54y}^=KJ@#h6dS~3^Tom^(`yUWlW8R|vb51#gM1M!CSqMJ zy!2awIJz@fG>D@(5+!+CZdrZR+OqkGq4Pw9K5Hph)R8{()bx*zp&b3`tH3rOv{dXh zQHyf$=(S=I!V0`pHS`$Rxt|0ntMpD^ExK587|7h9SJ1J!3ew<)nQ2!=EC`SwjQ#Zbw?fh^`9L%pMoCnid)57p{LYAK ze}3QnHuAB8n=j7(RyZE${Bgaw+w(_I{#^xKh44~R52>nig4tZa^ox)}cIgBT2|CXff z?M(7zVW+G6H?FzPOA;oj#KX72$BKKaFIGHhCV~Bl>b3lMY>hLFzl(k}gdwGxVSM7T z!dT+yYXV@^k5F?GP$@xN7t#X7yYh@3E+WWMj~A&;NL1_3LfKXxT4bKiPu#B`@9&CX z|A;8Za7oi3ODV_&0XzV|N^S>}-9I;P;)~@F#vxS9@QausR++PTt`du-v_{?-}yUhN?)j^e|ct#SKJHmWi7kLr*m;`3HW2=)V&Y1HkaAIe}Bn` zA)i~`qf|ER@5I2C+_WwllZoRoEZOFdOKC(DspVmnK2V&bLdcwYJL2tTcq+fQ!_car zbpZLZYq1+%>YdhqkDGn>`jYg^tC8}o<9$Th?=13b8)!#p+=76E@@u%Q;-b8!{%BGip)WH|xqDGZ}@x2KC-z!DRl)j^Q_TMP}UpAX`QsODRqTOU+FpsCg@ zncgPXE@X?LyYp<<6(KdY+sFIgxXQGc(bOv|T44gFFkIr zBER%GDa3aBdsD(D6ZiI(EnhE7MX3#G$Aw_-2SF(}&l`>W8?}Pv2b;6cru`{)S7Gn! z&C$!f*s!4=n-{L#wB@`{y|+kycB9I|ny@{wrabhbw`gLpR0!dYUGFbEo6L6KAP%w} z*XG`Z@|Y!b-~i6YBq|63@5thC7ebdqsFIPMthx5(BY6;*BQjY}c+^v=OQC-=L@L0x zYP#jePD=1WbJb+SR$Lqks^nvndR%N^t4kP~0oE%?_;kLgyY&qshGfl?Nmp-zBR?30 zQ1iL2wIKL4F(YAH%11pEES2>7)ddKLRJEDFzGJ>v1#qEy^VZ1Lx1wRjVQ352_SL zxTAFS(CpSSZ7pK;wN4E&xgZp4@~Gfu5H1;EdRVCa2HxPJWG&R{DG8uk5l9>p1Y!g;Q z76`?{J%LHOq2Uj9v}0w9?Z7OJM939hZFF|PS?KO%`fcimYb3k7Tw6T{RrsOQ3$9Pg z-QGzlr%FEC&M_IQ3Wn$Mj`G7BLb+^CYe>$5q|M2|9F@>k^;bMk!|$V3a|iZEkGM#E9MBHG|;K|totD(8UfQGBNN|wIK4^RHz zG3eQjg%VfESnFoFN0p=1Kg^vP+PnkT{4tlD5l?Jt^lD`y(9gJBI>^)?^w{k6degDW zv1ScGG^%%MNme5+CRr|}geVu-30RRKZoqmMk_U~9s*|r;PqliCqpy^{rbUw3FkH~| z*E#&)-1j>%dKw&N|TOaG*8P1?-ocN@+v22LZY>=mbwZIide z(n+!>6K6>V-bfgl1EK`vx!teg#ss|%8869oEwnxOd^5p=3tA!KyvsnxVstF6;3aIl z>GaWQ3UrJX+D+f!x)RU%x-bRifRs&+=`3FdA`N?h?6Krv-4&A5gsW@^>@`36;;AtB z4{Nv(%4%8=dv4SYKTP~?G!{O4v*~N_s$B1Nhs%W0j*|YLo=fBxSC})L?ho>#f)Y7~ zMxzM3pUUidm34VG&*8*Nndu6Jx)PQE4RI>sttX{!Au2U(-+<$2d(d|mA}7I=Qe@K% z$-Z~RiQY&*YBHbw$%B9C)ZItqroVSx39#~?nUPW99#6kX)>KVWocek0876xg4F}(b zRsxW;$UuV?dOONC8XMP{(F_n7I5}UxR8a9AQzIc}oOf6eOmJM;H!|{Ct%pZ%i$I}J z*QzYkZ*k4<4IsLGrBnXXZ-y;0U{TcIi5Ky!g`gy zyDS?-zP6k~r?E4;G&EE!jJ>dz&LfYC>5Zd_-EQ=qH+G?T2|uKX^f9Px#5EdQ4EsyB zirgXN;7=Wk>U)&vOKj9a#;jJk-Zw-yrvWa@)ysqnbj%YywVFOYqVQp~+Tgku*~?%q zMXWMxe!xg9BC+C1S_ldQp9c13y>jDyjS5PCl;QNU_ikXEVUcdrx0E`CB1ur~MBPvc z50_P(QnMHP)uQQd{tK26EB(>2J5Rhk`xgY&yA1CK!_WrrIN`Az#(lNHc}Hs9cEf>N zN{i=N`y#*8c-HL0~{K(^%vi}Gd2Qr^%?@ywnkj$2hoY4%~XeQ z4VOLgygssqwo>fmtBzWQqpcf0DYv?C(pb~chc<_=4Z7vj70{KZ6zIcmf4SAbVqg+p z02a{sC(q8^<60XQ?~FdtgwDUMTUy4=!q&UnuvhhDRF4N zcMFdZ+|2R3uVdI0S;pOItg0lf)7EIQ^P*>`Q$3&FZ?(J3)n&ZyU< zkTasR@{>W(&U+l2W*6}_TCfi58jH^|Lp|sj5E*hZm5RvwCNG4)lnSQ$sNBrD!o5U@ z0Wj<;%4uXr)KqXo?BHBMNm+@zO0u(c%)C-lJOM~FlDVtu+KnN?xHQyck7h!5eSg4A z#0+d5DTxo>+qQU3DCh!@Xo?#$cZz`=ADeLgSpUeJ*a4#NO?!Hu`t;q_r&#@{w`Anw z?@$=HGpwrruyU>Eg9=#EMD-qmIjb8W?g3B-XDjL(#&HOf8W{>^RACd)vQfBt)-y$M zYb0a;p}8YHv1g`#E>szZYxi%BV^flV9UYvcqWrL>JN4vF_`N4?JX2zW!@86MCfoU@ zD%>^WxWXtUD51lZB!Wl9wGQfCLr7w>bZ2_Fv_F($bNMQ#%2?ic*;1JFFehsHr;cjK zX59A;=aVs4(6tXu`I+ms_ROkd$-15jk-m!7jZND>XbZb4+K~bskKcsAtwi zMFf}5WP!{#$kuTB>f*37aHDEfX%jI1*_HNMvus6%w~4jmgNk>pnAMdrtJr|YK9-F6 z@rGyqnlD@%&iBn0?q}c8!_7|>{-nNB$D871BqvvKVDy9akGsOK7dPS9`p3aiul;8? zCAqwJi)+{n0Fn`~uBCn6*(K@@8x;a87vFI{EZq}_+Y9f8ucrdgWu|wNi?r$p(#ILp=+NL1;@dm(?+vQyqn&BWem$wmmX1=jyhe1KY z(v}8GMGhxD(u(&$7M~%x5xDPlD{ND^QgYwF%$*>XLOC`~Pp8?8Yhh<9ALLVt1^4C< zHvP%(tP>(8G(7MyI?;wD#(!*5nYlTf?w4G4-KDz#^Xg5S{1PU0>Wa;**!XFVlum9C zPl8+K_!WhT@zEd~hj_@2*}I1I05!?9vMh5lhOC9)w@Z z#cYiH6$G;r#iZ_S<-SYp7f{8m{*a>ao|17`&7L4+-vD+PS}49$BL%0ZiBy=IW!0(}q5?W^JrIeJQ$vK#k$_@k1tdqFDKf=D#v@`r&I?9xu; zIK4r%8-$8m%Haw6*y7|{Xsdv9y)DyUWAGet7|_|SBZ#Z2swas8s$(*)dOnp_@yb&2 zCtQImB-Nc*{$6w*R8iZl~ z&Yoc*CMo87;KvT=z);u+la1QTgnIlU(hA`9W~nQDgk1AbZ`Sr{g3Qqqz^te13kiwGyV4;-^@a8YJEkR> z7T4WI-5kD60$-YJ*AJ>E_l+gP`MZshqKe}7GA6rLuU!#lH*KS9hwrA-1J?Y4l1ngd zdLg%XBtaQ^_1zK*tm9-z->h5R#ULiWDksLH-T$Vze|alZQKIt4Yy10hB!FG6_vt~n zo4EO6ymQ2JHT(7UdA%qC%XHp!zaz=|T445DUX*K~1jBV-!`e(vOjM}t$c>LMhw@Ik zc<9UxBO!p)be2f_> zT@D7nY7f!|MmQ(9Er!UAz0t~|4k;zMH~6jO1drkf>$aU2$pIk}CGTj=-!vZki2x3v z?<-G!JRCWG?KRV#yhH9i5lQ5Wo1j{jgg5=XdP&<^fw*3^e2%^hRYqeG3?%qKY*DiH zV=?M$yaA{Daw<+=VP%k-Kn&3X>xTPxy#sFJ`KdEoF4XUjQKiAt@mrSG?rY(dNt#g9 z7ZKj13rA*uRCr{KvJifS{V?~UIzy78=SnqKkU9YD2pqeZ}HdGtA#9^~SGFzk$Bl!~pDV^{)GSyXK zF|Gb<*aKo98iPeLMvzSo8@Uy>Q)}ObeHOxu&M!cy*&qf!dQ=(Ep59)~on>Xj>l!$yNgL>c~PmrQd))t(~D}{?d z!o_6d`j8CdN5pLjPNfqx`}}!7ZlJbakYs(AyClj&mnBOJw0C@AfNql~aLdOnzWpwx z0eL!3*=9f7>Z>F%JbH-Z7o)StIeZAak_7_Sofd9p zDS6_NCh<&Uxis&jz|vX7+#lUNCX+hD6bz+m}rmx(*)EzEjl5Jo*Dqz%P6m{*T zKFkU}H@UP{M9RO0KFlsd5r4M#%^ET)i{!o1di3?x`BP?fL{J*36@g5m!QsAdZCP0s z8DC;-ht8y!PTtWB9xcY{{F>F4W0vd|nAKQR)Aicu^(@_BynIojIbS(;c2-HcvBjY& zQEbF`OX=39v|GMa({$-z(f?)5s=-L0HsXEL;!jxa|BfBQ8=)i;0gOEU z8Z$fQ6K1TZ`P=Y1I_Ox$rr`}q=wI6?PqFp!xs2d?D`Ns~wiyR%U3Km6bsSE|NcT%$ zrO0#Ki+DwPc4V-9)1}XgQWrgWBGIRm9d~Q*qan-XKZM5h_{s^2$njJ@46gW%t1pDZ z%t+v=nCfJYkBC3?#!V+tp?N@lz2p%7_{Auu1a)9Vyo@1g*(@T}w`~3#1fs#9EB;YF zCpE`l&HW6sfqQCFTwMf>V*e%kB~_rb;g5HAfAs@UzH%?D{65?3_sAD>MB>B58s+$T^%#(lf~zKOuSo4Pe1sziwCC3 zfYP1)%W-FC3z*Itm4#&TXr(=ufJ^R1w}}3jRA4^|*#KrICYzHzoAG{P-^pU{CYUq> zVULntZW=F(RMhYLnpnm5WKMPl|0%Yy3pjlyvk297XMrZIf`vL!pm{rfwGY&ddosP_ z?impoZqy?6p0Zn-x8%gmnCD2Kd)R@?oI`s-X*=S9)fd22vx@2A42xBv^F|^esD~|D zr*+=b$H8x zbGxw}OU=CC+VEAIr!_G0@=nakrT5}pyhFY`6cWzfb%vF{(%y~iL?7zAF1y@Dtj@P8T$LxH+-Ku$CRAw*S9P|NEjXCN3sDf%i*wE=-?MD_Z zD909+s_i=I*LQ`4ITRJ|?F^tGzc9o9WK^B=WsP)7#;JReG@ZWTySiKk4TMC3j}DHU4=;bP?!a@A z=6R&-`A?-ZDr_YL3fG{rI52}A&TW~oBCc?VFIJ)O2|Ji%E7BEO^u35Xrim|bvRxyt ztU8y@>_fe%$+5IB7biSCCR2o(x&V&ld-vYl{;TqXmC%wsr4C2lOC(^2N$tBPxHku^ z<@063_X$`NxaJ08Z`qbzuLI|FI?5Y;W%S>g;oILVz9z+%YpgQC1^+0w2ii9Kw&&){ zuTJFmSSRRw+w8ll8g?Dr#}-o~?vV3LrKtFkabE7}W&`wU_66q#3f|SZ8LtG|C9>AO zuACbgS$$sD9baSj0W<x!k3k(4D0!bT5Y(s(Bq^|696CvN%vO(JA7EJNom8z)c&lK*17F;F@ZpAv_UYa zg+{=>Gr2hnN`|wIMqo0|Tx!N_Ux%WC2NVpFj%dd58fB0CMml3O{l?KHAj=Ip>ii&s zxoN~N^d)=v9ak(T9huZj@!*E^$V>QQ6Gh*4mMNlbBsR@Zku-Bb`;j zI;;g<$jlVOuDhgwMs1J4aA5P>7)5cRxL}7eG@H=|roz10Ag!U|fpI+891n3Z(?Fx+ zAQd5Z@!j6wp65FFF`>L9&J49W4~1)c0EkG5PrEzEJQSX3=C^I z=(rC)9Z!xuZ+$$#O6s2Uy97|^!0>Q(T*Ucj=4C*RF*yCUa1?X>ZTvQ9;dn517;PX~xcEj(u(|{<@oW!-nceft_#3 zt@2kGe=RpvO7tEztu=!dv8ojm zwFP64BqZ&TSrJvzq<=xEp1|E=ck!-Ozy7;u^#|bDwOwarT(RxjoWn}Sn>f`k8!Bov z*n;uotg8Y!0r{;aVTaKF_K#fGp9lbJ-`kOZ*!B0gu8*!n>5CdP~e0!5Z$dNiVwYwvg7FUhotQJf=Qe_p<9i$CdPiC^;x z{c#gfiV38g9`(t^mfSNP7nX#qs2z_a2&JP6@nlfa3L*96t!XzNK|fT7FOX}8PI8g= zpypL$ujEfW>5n5*RuKyHdtnPyF>&o@d;5LsU_D!Vg8>N}{qgqAanx!??xG(1D3WwN zH~w1j=4vO2}%3NevVY$}OB z_uvTiE?ciI02?5v17G}Q(%8v@8UWFefZcyacM zfgz(xcJl*o7`)Ur6KZbH!~V1UsGJ%vx_J!4kQ;TE8Jse*$^<>Y+^ad_x8s3U%x=(@ z*t=M1Q$K@-e#*A!*Rda~{D$VtewCbKm=i;Cc)J+_*tl{Kkb;epJ|}g38_@ZRKttrI z$S}b30rRrhfI7WaIJ0#!XO2#tA~kz!=p{@eSzXTJK3d&A?Nh+{3bW@q;-VMNkAtq~ z+2nk$RY9)C?fym82~dv9dKEe6ua%r%x3o?^=aEVipkE&`6ptY%{&}$Td2Uu2tXdZQ za`8y#_(2T{Wc0Oao*( zxuIOC&iMHI=Adf2?v_%04_&(63r9}Wxg}}xJ$#sIVtoNNxUq` zjAvMEJK%}DocMD*@sGFk^?4EfK1~hU^_sI^ggMi~Iq}CAHQsQUBuZkx9kH!uUAlQ@ zL=zSC*0f$1U-yRyS8jd0IW9&>r)hmJhhb0p zY{}3*=6(B2MtEg{`LNnspLt6_I&o=0HlCFB)g4e2$xhWNPu+u7e0b8zM`5l()R6vPL4WR?%#-C+uf7jqz{3e@nc<&gW22VuinY<0YmnuT8}phg=R`B#?r&AAU# z?IsQ>KD;9bC$~6kqLC{7-p#2gwNVhkqHS(Nd`@4o<%iHK;nQ zIQ5vR`*jWy@+gijx)|n0%lkDyq~>8ol%Qf*Eqn37e|N|?K3RT<|9v2to`7dWxIIU* z`K_Ij#aXrNfpQ7q51pTILc;;dvK&u5OR6r|Nw8A-F=k^Ekfd5!9`=-%K>b-ru@y8n z3eQb@sy7va+SEWmEy){s<}nb#>|~{;|E`8N>Cz=-J=T8hEgf^X@H`DHP+}%u>ELcSp1^l*RR2C?ar?ALAhI zD6r}%jgD;O4*d|Uq}I(cc4idsm9CNTWcG~UO1t*)N287eHfzurMWsPX%n>n?-Sh&F z1Zn6-u=f^2`|zTwDkI&};CYd~vk*H1pLFHau1vy=a5d38ECvUfjk)ZH$J``S9hh~> zm$rMto;1vFD6S6Fj!s}tp za7=6nnTIo8LdlGvi&e5THRlC*q)&Xr^b#cT*w-1P4 z=_7DT{ZA>lBO(9ae?UymH>Pq=;+j&cl}p^GSD3>=LmUylVGHtbuMJHqJcCS%1HdGon2ZE`a6@vx;pcP5 zM7ClGfZrP;oTl?GlfAbL2Dn-Y1p!bP6vF@$fy&byT<&U~jxq_^MWG>1KC}Hve(l<- z2PPWAO4fUqp?zR@#7*Hm@E5*+dq4a4O^G_64%$j{ zXT^VmeE20RME`77!UhlwAUlZwQ1vta&>&Wr#G0K514LN3u?4O{Alk%P6iT_)3PHlS zRieHTG$gprSK}qh{ECgfED+p*W+hl--|M8KlGZjIW1jBH`<_y$uZp@SH8Y?K(wD9a zLgI4v>L-r)mHkKp5nc?}qz!>oQ*WKqUG3JzRPwnr1Q6r6f#uF#*yC|p=seFNftb$O zib|^Kpb!Fx0FCUk--Hdjh651Pfsp7D=)}0*HE9|&d+6^m5i=Bq()|-3Nfh<}#D~rY z5}$8u?*zvPt?0E%M=!GrL%WcLATUATzpX$|5+sAl1w$~{0tcar=HH|-k_ysqj+j29 zm8qaK}_mFWMQl`)acnhKXjhWx*>e2aPIJTCC zK#HRdB!$Gr{kKSAs6o~pB+CUTjrySgMiwBUVCB#D#v*@p2}J2O2+j!9b|CV^f0j`g zszA6A4q)VcFM%kjV(voVJz)0r10rlyDnRw}0y_`^vd zX&9to|9m~0JLcIl1R4T^Xu~lN?IPIjNqnY}vl46nw*yMW6CC@R0Y!Qk2azdPqcTav z@C|-u<9_TxUU+x4n{{+|HTKWA|1@3b9Q0Go=s!50-kg=7$trum4a2tPF4#>co6dw6 z9Lv6hf^d%cogn=S56@o^u6-pGu!;bn^gy^Ld9`OG5+AC3J2atw#DFMR$uF>1iU!&& z42?prVo)w zHF>w?5lJ=u4OZ1es|rJlHz0^Zt8{{h706w2R-z0|7Q$R#6i7uoKqBSN05tzov*(1S zAw@>6<^3szsR_fxcqEYv<(AgZ2^o}A6D9;fq&DUy3=Ae#2Bg0*g$tWdl0b5AOve|D zdhqu;-G%m38rkc(8uqcO)Gm#@%AWlzol+S8kxsk6(s?Q|vqUOV>1*WbA&ucGb9LH} zRDuI}agtPoU@skAgkE^m6dv`jl+K2RWODhkPcR|+s;KfxJ zEKx3r<8pN$35w0IrjwyI zjF*b%wwleBrz>2RuGt7eySLLv)G||OT4~A5me=jimdoiXertt%wZFoLTr4Yq+vBE< z#=wkeeSQ`<|MQyTY&qE6kRppi&mA(7tTQk*hN%|PdK%-B^diV+0aGZ?_t2EqPrLTr zS6GB7Asn3KCVl&&dpq58FCJkPbi6BI=S@@SILA>byOO(Iqlgf4dhbZ7P zXnTM}ZtFsca`M3ATscVD)<%PJX&LfN^<)PYI1$c(0c8AH1=Yy|u9~0Em@AJ-L?xb} z!(G>O-^iFPhyGDlq8y&;hzzVwYcd2^nQ36Hb07Yl2g_b_dx32!mLMMr3ofIlBexq0 zcmKyc%$8q*Y&2M7DB&5%{~d>?5tw2Aeo{KuHJ|Vt_pB(N7R=x@0GKQP0UGs(o14!hG@f6}`@OoUdpiaPy2(0E8khX!i zT*&Z`xI3fdU6lt5kYgAKAPG+YXa2~JSDrOASEXoMfOiP{zEHVr4X1usDq*;WBl)QQ zLC0H}7XIIUNpo0O9+fCVTn})a6#$G$Yk6=Gg7l_>2Fzf3%x?WHp7;F)$?8NZKp*u{g@IvJ(bwjD?XkPTDg(}&6nAvhlYF9)wOfPzZUHM-o zPc|CsS)?V(8-JmMvtXhnxQ>$}35gqo1~hV`?Arkmbi9mf5`GBIcqjT~>)bTfwl)im zpbX^dHh6(8Z6|{x?x5Cx{VfDFucJ5 zA|alx#mfKAv;G~2kPl=W-`Mbh6aQ+oZ_aG_UyaWFZ;gf|ss#?r0I|30X%Kr0Wc*)E zE{E9L+47KQ`+u7be;Y--znd$cB?;lZ#0lk7?xBMG=_{}87L9ke-H9+SRsK}9>xgZ`P8z8vCz*ERp+f3wW~`ronuy(EmZAl`H< zjdnb20lbD0sf^Bf^F5wyoPYZTsbA^oiM-**m|)uqelUaj@_h3pq&EdA5T0ibf<*Y% z(;D5fYUuv1O|%k&87_4ox6h5k+k&LtO7L<_G7C3^w@ks~9S_|)_mD~jnGcG1ZbaM| zDZBV)kx3BUS?E@YvaPvi9Pi~J1WF&3LUqsnC90<@gs2pxgWgYs`Ky%{h?j(Yx*#VX zNHReXL=3v>(N=Eb9l9HLyQD8bt)on4TgXDdM=7BwnHvG$a(tFkn9$Dx;aMt#|CSu^ zZS(&L|KUHS3^D_2{05nUN#*|64D2slTVo(9{m%>x@=gCc1N%>whOufVq;tt2Gcd3% zpU656#Pk9u*3u#%1rSIIocL>cXUid`7n1wGrdKleujvI=|7&`Sl>eGuAQ8m$u4_U} zF9g4Y8`8ND(_5tcujzeIffUrgGccgSKQpi*83VaC+@3GVFu-*P#gB>!)RX=PM#s{S z`+4>nfEiA*i;R-V&TT*B-qBuQ0vU;ShYEPbt9_sx=8KgDRyP;?jt$*)TC@KWF=r7tdF*iQ}wI!L$1PAeP8@#v2y2M z^&krEPx}uN`2N;6tEvoy!9*@7%^L*_sOb>iqbbiINE|Yvc+=l!rP(C@cwT})vkqNSd_q#%XnW_=S>+A}Nkd{hwY!=N5_iJ`xR*0#OjmG$F6`L}e zxoM0%NnS_VqpbvFhPJNxUo*5Tg~ad`3-!W(`-LM3nVkKrYFqzD3O)lAkcgAYs}IU0 zG6Xum6vH!-w=8~*V;!6efs!-_x>ebKBzyWVQQgrFwyeF)N>WI{)=<_iJx7pax@JW1 zqEFgp7y9ZaEd=}+`J@7C!^CWzLJILw5pXQ%Kq9=woC^C8L4-C4&m8~qe;8*IQsn*# ze=adF2CjKg71#&aAjO0YsqE9;KP^+Iv4;ME>joo4J99-Gec%g~B?rFJCGzeu_n)`? zCmMK)jg0s}->JVMUvUOeG1C`F?#sEsRY`W=|CW~f>tNoafwV|o+*i$@EuwWzTiZz+ zjp5O7^rKW1AY%tm(Pkm&7sL?^$hU>@ewu*P(1$-wPxZ=nho>EHJiOXm1wtVo~JNaGQwX*bU#A0mhIzqxqJ=d9WO2vC+pFwENIB6W4hCFuz%y>OKBT}ZHy@@ z*7gR@|3%wdMb`~%QG$+{A!cS~W@e^qW@cte%#Jzcn35bycd8&aQp-IaN|gR~6*mnTDzNT*Eh(Cf$l~mO-!ZURugYt+eF>pSl%wpsKEh z;pOkG{df5V2pbXa(&2vF+JSb_2m0Xc2g54_2qUbGz7m)wGHR3lKGpuUguw@P6d4I zOwfbgnXVM{NDd+mw_JxRnxzO+RKFy?QfVo`<4mt7f6~1#hEq8!`4M5gRBW2-s|)d| zOL4X7S}3ah+eZW|_KnK^$-C0X|D;6=>;I4jib2;*prr8<1gTyDVOwf z%S1#QIfqanOo*qewOl(L!Vlp64w&(>Cg?c-KbgSbjd9Q2EnJdYRq}&AW(dZgUI*D) zu{f!>XXC;wmIZsR={ec2+c>W!uBUUy17Ba3Lqa-opyTFn%gwPZD|U6e;_7BNb&y*# zRdej`R?O!MZauZIaZ+cf`}uB@YGxEJhH&aY*F5!cLtp8DE5`u9Tx^l+RxEC@III2{ z0+e`Or_40>*^-y)|7ioj=rE?D8Pu&v{j0fCHomg5E&VBToPF>C`P;W9koLf29(B~# z{?V?{BwMi8&7Z5m#y5J8b zzghy#BNNsKrCFi^bv`DJmj;hdKGD@j_f!!P7owanbma;Q72MvW%}j7UGrmaBwXI2> z??GsNO<=z(bNm%zbUR%)Fl*$*HA8#^du7?kVo&qe80R#?Og8&CFnC~nU7-sxdjZnZBK_A0{ zOYp<*5J5fNgvvKn)&t#eBKpY8e;C4y_~5X+)=DQfg)+{M*9l@i?m4hYryM>@eb`H( zVlC(d$|SoweSkAO(COM2+*=X{^m{5dwLRv}`EIf?{&i{gpVX@zBPte(j`f4tO}%q` z3`~aZQ3~Ob`f+GzcGf-%liq58f%pE`>-|ey32J`jMPOqUxwa#WbD>*;($BLHhNq9; ztxMDP^Ge1qgGLKtOUf5#(ntzN7hYt-f9IK+4X+-m9{8}n8;(_;XcS-{ok1;&Cgg<} zk}gRPqai)P3wws8@a3-(bz_v-6A?bH{} zlkD0SIJS0+3jFn2K9(W$f9$~yLoJbt6>A%~iMX9Z|${$#J{zBteM{N4B) z8Iyx>s9zWuwLfqI?MI9Fr|=Uo0;+_nXVZs~3jRRP1qf3jLdk1TeU89En{9wkS=4o@ zc0AL};s^>3_`B(K^ZqFfJ5hO76g*oRN+>dxs1P|RQ%3QX@?;9Ed^mL4w~&`_CswQT z@a+AF^Nm~jnYGBJCP^VYLLo9Womns}6|Ht8Skdozk;7MtGW^Bkp(PPK@2`HhGD5Pj zm|hLH5sl6IJap5-!@lS`AP5HQV@NQb~GVCvGo1pR0q@Gm%8s6x8E{ltY zoy|9+iL_(u7oX0J0Ip+hnZO$9KOMp-m(q==>(>&w7kLl&q&7J5%)YDnjR#H>j5*&@ z&ulk(aY`)ci7g-l zXB@V2@EO8kL%8aJA{i2*_w&^*9pP7e36zP^QNkgY!e{ob=)g+1N^nXyCFnhj;o!!5 z7|bkk458-QH{DFwoC3oQ!RiN=15J{JM=TPx3mscr{?K}SaHD~|w7VXLJJn2&4HXCc z?6z>>mNOjgLE{Y>b1416YlHFh;!_j2ke_+e3^*)x?9qX%D0`D+U=MN2=}=k?WL8)V zuYJ=DO~{yhjVz)5VB}&gb7A0j^zN4ZsD)8kIzO)HvUOObnx`2M2Tb|w9{axd^UhcB zm9Zm)_wYBd%XdHo^EXmtfByxebJY$sDxtH&q7weI%pg~rR_JAEQ-LoeZG|<@{_?&h znx$iE`Wds;p9!$n=4FK?>X>7gcA)#C9CDXev!bb{*~`)d_8$(|ztap|HzwISIQH6B zsgO&J>IXt3nl=a#Ux87Ielj}J#6f6 zF#sMKbv#}2f+c>M!JkQMcan?&V|$t*_=I50#`N}Ja(@0t%SM)tHV`kKuvV!*a5f-y z?fmjN$53_h*%1ce0YH6XJdMs(BGU}xc^dnZ1IB=9Syb1U%dNZS4HrxRLLLdwI}N2v zN=cxDx?$4{W4;v|>6E9PT}U?Y72ntqLV#iz1eB|#s%FX;7)WA^Hh-SRCeD~YN0S4( z#+Gm5JdHz%?DC_d+EDJ6q}tNElLHldo9SV2(`fLydjLa4d{$WD&MH=^aklHuK$9sJ z9B$;jNwr>i-o`8+?Ew-tz<6&HyJclr(yxoR6lFS677a zH5#9Eit{%X@sqT%%g@941bl}AP7g5QYH4zF>o`?#=gaGBmCEihh~1i%r6V(Q^5_>? z_Wf1x|6d(+32gdVIyhngTZjX_>2GFQ=e5|_&aFuxFY&xZmata{VfV5Up zMNv$be{$w;bk6&yv;XF(G!(1Un(*sQK%NMbF<$|Bb{tH)?wVDB^EIMY6*^m*Xk1?c zTph!P#d{Zc01-j*uhXG`!}QBqVwI{-_a?!GeXjN`+>P zjM5Xrw!+fg=wy#3`Ogf6aS{}KML?e-g9~I7#C(8S=-ut~FfE}f;B-i5lZko0K$HiI z^EO_oR<5OoebV?3$w;zMLjS}x)Sso}Tb!+bu>V})fwA+|AJE)IL!cgMgvGiqYKb^ zKd;!XI*@dN02vOTBLALrEnnjz$kvfzM;wU_;c4XfBVm=QIW_nhIzbc|4vdZer3~Vs zbV;yt!fJMe8gt2M2JHtRZCDcmuuNc|!K6a%3lX4Bv`!|2Nu~Z}y70x}xNqXXgx z%sD>SK?7rb56BJ1be@*7#sfT!H0=Grc$M^59_RrgNiuu%nh8<1&Xa!4K)R$hO;5HC zF|aR)N~2qcHijfq~WgyO~;jdOOoYwI5|%q&DxFy@17sm`@cz} z%;+vSjl6C^Vkx=zCHrT%wa6b@(TfUyRq0m+WGFKoQ|t+f5@W06mQ&=G3!_KVEbb;I zKEKzx1(Y`xEnnVO8<~T&FBbU{duenxzY*4qFM4IE8co}E^<3w_a(kX_Kh3`5ciuZy z%P`6_H|RAf9U5RvQ zHsA^MXc30^Q?0a_vW8eq8 zQUp^4e&s=J^lxN?TUrI{NwF%xPk|6nPGz5 zcFn$j3zjYx9I)O^Tc`H^%KT|4i%Gr{>15FC7X8DtYMo7a9B}8gPXcRURW>N&bSmtR z3O3q(Hp6j^?JcZZIh<<1thwx8IcTA|@*3dFy>PZAvCz8Te{iwsAv_S2SVdWW95#pd zcnyN7g$7Bi;2?}3b=1|lAF-hAexukIDH$42*~*+|P~E^vTc|}Pk7Nudc!cpE>^5+i zMSY9=`)1a`^iUX=k%A~EO>oaM%4T7m?%&d{h7S8(cef2;|4E5Gyxv^X1y_WL+3#w{ z3{M0JfI0jIsq0>pNJZe8+>thD?afaZ^sjtr$?c`{P-J_X5w3wo1182uUMNmX2#KN z%WI=>!oQ1q5fJAIOdsK|d&kp~#n{4^*b6({uF%2;x99y%p@eTh1NQ5BrZ2!Nu+hSt zFNe!Qm+1|IPK^%`C|_+ayzBtunGyPc-6-TQ9Y@lfPvy~0jSns}$%G&KhOcSIK;PCc?Y4he5MKZ= zjyE5Q>~aL3f}H$9o8$3)n(T7#^9R=+Jy)fH_sy@?s{;NE=3>WRH?18En{FWfDVTe@ zwB6`#$K5ilZz;(^qr&p_=fc~XwzeFR|MpesjkS)Dr$UmO*@!&xkhJ1G_JeceYq#I3 zaPN8Hlha(U*G#3>-7Ec@LyMpH+b{duhObjpKT&!Wq{I`6lj6YBIR-mlR}VV4bFP0+ z*4Q<6`G*V?p;c07H8E-2c{avhdfC+48bFyo!lTl(gCmJU6})U02b_BaDdPecL9DX@Mr=;mZfB?FXY+CG{!eli2dSEmGq1XSp2nl)QK~7x(+( zsHWMbRbh@c=O=KuoyhakrcomMzl^@=Ne}h;fyZ;(D#T2)jgOnx7zJ3~-mi}B22*Iy zI~{L09v{%XLJVPJa7I?L7htF#5(J0mi(-SOOs=KqSk*lnXx(kP zqKK!`W&I0pxQZ3ZP6cp`8KZ0xs#NCAyr|kGY5i;&QezAu=9ESvsYa=4x1s$)c^egxGZpI8NKDt~}@gb1t`Gl(D?O$5>CsF%@ZDiCigzxL$q zioy-Dn%H?T)eYi|H#IYK9^x_!(Q`#uu1Vyrt-J~DG_xyRE0uCjAvN!?il*Q+glx~O z5H=(KJ4b?%Xmas4zNLG6cekfqn?d-M1o8LT0~KL9*FHSaNVp!Lof>q{K^E!iZq)d=*#uS`Xc&288LnmG8)qv`YG{Sx!W@D;&O6m1VbCOe;B*wtFpBIVT{sEG!m-+d^HuP zb+BGK2?331<;6i>s?GgCxF9hwM2>?yNCqhoRy>zl!5Gf{E*9Q~cWi9DL)LOZlna-mLU0XzCz zeiJR0O-G#!d#0p_rZ$#MB!k*OXo4wP%TmJRYLax5P5w;-Opk|kur(p3Xp=kMRxpV! zD66K8QM8GU8g`>Y3^G6U08%soNBF={q2lu9L1L>WVraxii2c;4DiUiy`b#1newsAc{HVrN$l7faMP7}Q zn4?q1V04n0yA#EzHY1N}k-?xu#I^5YRqZo`R4m8kj}`g~rWG;t7}>EOpwDDD$S>4D zE&4iJG$%wiZ++I(17*`x&ST)BH*c+_gxBT~CL_)`=2ZE4o(H-TsxCCIZ#UDs%y=-z zs|Q3>%cisBnZ_ogE^VG!~qdML1UA zAdThEUPT(+!rj24!#}P6vmjd$i-ev*$6ca<#^gdK0g7Lv&f@td20Cai%)5o8*IYSx zI)ALd4P-tyXXA&^aPl8C!woWf3M7%fa1hW2>WdUYgX6-7v+;0yL?2bG7Im_N zlf+GJ`f*W>>3miZC8>>t1*zLqa-_DndX{1M%P^UdznM5?gR2JfmYx(q?h?Cs-M zblT>hXN~5(8j(p%>{yf1y}Lt)c7&IK;4V35?DAX*Ll7S0=o+<4S_wsOto%;|rv0+E zZ7a*0MCSblB?VBHceBQb`=D0BaHOm`Q;0AQW@%l@7%`$4=o`qv9^TI0CKIU~2@}RT zIpJqm;C=wXq&x!CctHUVe?c}@(;gYKW+o4H&O4Yn1$5Id`4xvIbBb_L3=;Bl9JS<_ z^MOslL^NJ$RTm|5b8H;qsF*0|5p|cBn`NMgXA~Z@2qhfM3Yj0GyEDOw=kbJ_Bx4kHBhZNvXD4ShaZB5 z2?K?Z1MV)Ta&Xy~l6M|_$__WK#}cq<&gx2DmSz0{ftrk?v`u5eZYmx}8_wHiO^5)y z`dv0n@Y8w0(Yy2H-u4}`cvnT{d21$$d{x9^ryz|e))M0^S^!t8q_l*jzFPLeCf*-SAfM13o9jHjhrqURK%rm1VIu z;<^(?1O2KEcBjni=M7S|{=vkp6pwNqY<3h-Go9KBW9U*(+3rDh9-gYhD)2eLcN0lX z*q)v^Yto)8Y#G%=*F0Po_CvBh9#EEq0NcJc%v&RoJbHXj7w7&;*xRjE8NK!DZ#?3v^%$}y^f_^T5y`&Pi{G{x+h z|JUM45^1OP5WAV8S6}|=5QjlvwAaJu8}H5 zjP#9VV!R=;73U*-%yEB&idXav#u%M73P9s%R?2q1cOzIorf-sTX&OW|G99LP4*uNT zAlproxdTOoU2lbc#_*|Xl!9w6wbc^6Q{a=uibU)~s|9*9g%!GH=qwy&nvXEmg6xP( zSd<&fl65>igD5U0jQt)t@KbuD66cjUi^JL%5j7!j3M+Yg&I!`L6vSgu&(HeAVm85+ z)LQfjDXD)XHr=%WnjkQJsOi&`7&Jcry&3kKQE>VR8F>kYFYPc=@=8&##{<;8xymVG z%3d`6yT9Xv7`t{MO~`H-4Sqc2#$FyqQybR9S0T7F|1D*1ed~Nm0ww2E8cGvw)uSIf&7qoRZf-m1aPb>z5aso<&yc z#*}!vs+7Ijn7gD^(WI6>EEU5lJCm)N3!g80`^awEl*+?*@^5843#t>wAU2((vZfeu z&3q1c7Ws*W)K&rbsglU%tS*c=rUWqtOEmzTLc@gpPEzw#3J&IRpKjX^1iRH@g{yJh z>Vm2;>;gbo%~iLobwo+p@_Iz&^AVf!1)E;XjfcP9?S;RR)g*V138Hg9b;OrE{dqQ1 zW9=`e#j%G|0>*0$^k9DI*Tr0c&ttl^DU`HMaCjL~_$lbJga+Z^+6r^CRkKnSX>9$} zvb%cBbkjja&aBvp4HI=cDMf3NvhYUQW0L2x<9q=SXRMJ$O^1~vw4M4W7BX^EE5`C_ zwz5iURj?+sbWFGNDwgFjW&n8OhYBV!+3T&s`MZ+p7!`_c#b`OV2K(X~_-YSbo#30) zZ}~PH8oX#AC93c%NDXXu)}{(}jU{m^DH6!AKka2aFu?=E1hDYBSQ&YIl5p@ws$-H> za1}L*4aUkUFE^N|7%{TVkdhf{p?MsX&zz+Hk{7I85A`IEl&Z^awXT%sXM?|GJV=6+ zoIg>t_RJ-Kr`v0*mb7J+D*WVs&Q?6{6!|KNg+n+e{`j7+ku6w3#3l^BOW_|aIn3+) zndxXi7PCbCJMZbPjp(wO)2+m?$?@Z^Z@ur2Kiql{)S|ov9zQy}RKRI$#yrHZC~edk zPiSO!c?x2i4;g7_@l;$|lFieW@3Y?-a&ZlM3)&tfxZT-r-dwoU@3O>-Mip4F`{rt~Tq$BVmdr@|Mdea@ zh9!7(N)tRSAhWdQe8i=)c5M4{DaNtd-`wnn=PvtGJ|dJFz{RXStQN6|x}FGWmisa;g!De8rZAjA^W4 zF|7n9U?m+Cq(B51&OEcp%10`XsgwDK!>*ti`6JYiR3(L@*_v5bkPjP7*tfcr&?q+& zGX2T0Z^4uSeWSUkAUvx4VOJDWAxCcIxk1ZrDWk-*Rt2#=9UN`+VfF+lQrrff zy79xUp4A)G!)GEHdHCxDV9wTAPX=6A#2@&z#tfojVy}E2()2R~ea1|)*mPk%0~}vb z!raoCsqy{swna63l2%hgj3RUr$pO}+6@&xIj)rP9c*WVl^rbW@;Adi%5VFsZF$ zwsrMkVZk=+0iJ=LY0bP(!k0L<)-hb14;Q%4bc2CF7M<*iNeB$gcs^g`I9OgD5l@*+ z{}60CA2SqnRJDm^){@Xl4X2NZ>23Y|4AMtyxJtz%RaMbG9*tq3P_Dyi6Z6l{&NB}S zo`nN)cv6Zpl(s5^p*6LUxdj2i>>rSR6g^uN&Dx?6!@b92l-zCNGoGN_Fzy8|B5`KOHl!Hg&ha&kPt4!EK?9aOz;sK9C`l+>N!rY zL@1=ITn4zREPcNViEIFSx4uQ;nT>A|n0JppexA^ZYxmB{uVv@DayxI0g@4E`WU|F$ z@E0i#!@;13ibuz!63ShF$Fg6dnbu59`T?N_qnd;Fc z4=Dt|OoC|T6uf6?&7JG>Y4%XhL{v#{$&>vi2tb?^k|vlcfdx%t&;&GcdWO=fx!it^ z`riJ}9OOrNp`Kfg4|A~Z-?yum)Zz~~jzk1)WkVu|!+j6*nkSP!W0r1I9A+i245}$z zFkv23mU4ZyfyfMaaN+cwK)^f}<37OnibW7;HIxOFEe4H; zpF_G;hb*9O5*2bBvBWmFbuxjdn0`o<>0Z{R>ck_`9riJf<>2Tbu7>34Kqtbvmi!4B zRLEFcn9)~C+KC87Nh5nh>6S;)T+}~p=Hf-ou6ATXQ?h3+<;sUx-?TBdnH^uX!7TgJ zIb+N<*f!KqNqRxW=14p_WbP!rH;XlT_Gfn>eSXS}3lO>cc?)-9*1WvP1L(TqlPg9yQjU62f$;W01z`*QKvd)N(woXO93Y-(0fIH_#O!@Y19?-tRvy+2F6frIN zXI0UAXqiP6*FX@+i$#n^LHiJQrBKwe@23N@iItfU)a8`%OUcQ&17_|SCG5&a#TW}T zqynd4YLO%GLstsvC@s6^6d28syJ&_TMZ5G$paZ)8l(O+-CTs5rgIQLcoUE){JfC)i zVE$vyp$#Z2N(N;GTnd5acRn+Egx8~3LjPO5lv2LDdrDTJJ0|hFsZ0{O_c{(Ks9kzQ zeF`67lApqcTS=VXfONZCxOZ7yu8=t%h+VihiM;)CLq%t{7p0Qk3WBAgOWIOB5U~KF z6y>KJFw>$-Vg_fQ(E?>P+t9JU9B*btO~ieymiHI?{t}{#6`1**hLMMvEcgm8iC*7c zW>xn?pQueu`?(1Y$;k$N+Lj95jn9tIU@bKK2iI;@sH(iQN%U7W7wFx)sra3ZsU4o_R>qig#Na#=4P_7dlx$_Em8xLk2IW$4W6dWQ z#jSECmG$N58Z%GErH5_oRl{MaT=UqniV{cWksDa0EC>q9+P;n))byo9jvp%m6lOXv z-wjCk_@EE4C*b_`)!bWVPKvxr_An`cFSMXHE`TSuY*vuiqz52S%|o{Eu_m;1jp0cS z3#Qdc`9#Naq9xvWLc@ru$$xp}{yHBid#oZ_?7}pj-$3vc9t$z6py9LOseQk8R#lTf zRrg_5RO3TZ#1iGRLUwP_--ix~3DNDTKAqq~gH zrj)S|>?VfBELF=MLm^M7aPunN6WBmCB{FM_WrmQl3fl@sUT9>9_lX7*;@(2#yVf>@ zboM4fCl8zv+(vaJ$MzhNiP0azB_GHAfDZ|z-)X4W4_wVK)tB021!!PefWF~#PH*Xo zn-IvJItTZka8AZ6wVP12l^t{-#e9UBF(~3SvB_d9;~^|f&tiitxB2>zOeyd8A%|LZ ziCW$ila%%u)m~ELkUR)~i!5j+)3A(=`tuVQh*AnX7u&-cJB|INgb$gITHY3f18<*F zfk3B%`Dm@?$L`0GnTY-z`&nRAXE6U0CcO_Q*|O$XCFL`ce!)Tf?h?{kA7zgFx2VpW zWDgo0#wxZ3Co!^(oli_1U({Wmu7ino4(N9%OjIKAsK2#0&Wc6e3N|Q3`XMw5a{GME z<)yvOV$nmz(vFNaX*rg>5TT+p^7VtZmYdKAo8j845(elyro! zkS{WU&2WZ-`73M^p}6s5aWRv0_;IbS7n=mC)J~Is!jCqcOvWCT8iuY~x|WiPYxMmF ztqRErt?KxTJp(UV)h_p&B5QE7-r`8&1ZGY7*9=UlI^9#@G7+4bvP;3zZvtFHY|*+m+KgoBvH@jnv?ZzYvH^HE42cB!27-CzJTQDZ zZ<&`|gnwd;Yf_57m$Vu$I8MQYakvF5qKJ^1*4ea{`H-iH={LS`(8q8ztGi=D$B$zS zxcf5t=ml5hHe(EM@*5huqV1s4O*`}TYkIY7V@0UAa7alq*-Vk9j3y-V{}v-CNEJ|v z4tsDOXuMK!(aM>>stZbMryg~fJa|zUR(+WxvP2=BeNjWQ`R*tU!w@bS*T3{O})9fL0vQpCW(E+*;fIv{(-2#q~- zWu=FoPi-n8>3o`D!zc=OSyTJ2dn0o}yZY==*5=>K6q$DS#Xw<<{+J}mNNbv(P}@vh z3hT|A^b9^T6>j@GVJ-dk%CNuXO>FCrnHp>ad3NffTQGm}5r5ABJ?-&>UpAUJk2a;) z^oWNXs!H87hdY>5*a4Tv{H-SJiVA$hiLDNLZV?9VmbjNHAq)=f;*363BPo;C zI9yN@G)!8cj8q2&BCRVTXgUzGNB&-nG^u~Ec6^o;PB6_D&V;1UcaciR0Z~lulm@0-Zfo> z%j}qz!tLe^SL8Yyvl7KjU&eA`Ztp3>EgP6xOMFZ`y8@9yKN}_2wVad{ICrF5hKYW7 zy44P}1)!^QM6-o0v(rb@wlV9JV5f7+f{3DtD@pHLDDnZvpUGNW6XC@((<#}JqD9dM z5r*GFp{Ly`_k@KKF;-D)>yTYx5q_P!6N8k-Cfvp-+-H_s5nzi1GaBzi6%Cua{%0l7 z3mvT~>T}R?!ng!v)@BJnH89SkdYF7@NvY@_Yz`_xhNGfkpiru!FJ+GhJaf1G`Gc zcnkP~p|ck&({o%xuHZK4Zq)fcdgBc}|w~4FqaDj^fs>{W48f zU!~89wriP)_1-B4B~f(}Na)&{@l125kkLj_z*F_o;+u4=Mk^&z^Fi*!N50oY!5*lD zwcP?2{pMA%Rq_ZQ(~9-t->sjz2g50Z%!ANo;y}frx`!OA3F&eU-6?VD7I7##i)0R7 z|2!oXdo^4A{6JE~#k}UE!F^CxBq<`6r=4wGv^BFhlC6FRBWD@qUwciI;X}Flm}rpc zO*>myG?<`@ONqL4u(1VV{(RL8{$a>!=2q~kpCU720{SFT4ympwi(hS-ta%Hz;fQE& zG_BJtC}U&2O}QDFa0nT*EE%iK6Gl^JBfYFmzm^I~_FMfGLs51Vy4fyf+|QV>)?(O` z+9+BvBo<(+`GDJg$2(XQ^98)cRyi6*<>fm}EWenl&2v8#+-mLzfrr7-sg?bjYW+Omr|eN7%iH7nDaQI78Q$(wyg2&ZE*BnQKa?p5J`b zjBvtK=(AL3uQyeh`Zj_D4SJ=Lhe&4rjb5cv4=y#zOy>w(0jQ#>DQa3e#>M9C!Rx>* zz7o()xmTL8;!n`III*q^GLHmlDos9oN^Zkx++?;TK&ATZuWojdr9Ra{hq(4-H30R2 z_+;Yz@Y+X`iylP4Q2%;{=JqgMT@kjGwsmt{^Z48w$yYjmla|nmdTQ<#;o+7|>oIm( zip*!=f1Jd_pBRj9*{zVmu`#^fbxS*!((ZMAS^IOz@^pvRs&)nTNtQP=6uy3(Lb721 zc`<;?h8Q2dpqkKe+k@2pRD_E3`;=>Wvc~DwK*4JX{)_H{WbtvRWJp~fodII>C3bf{ zce#6seHJ?KkZ(*Rm-XGS?Szx~s)k4C$2aq8F1t<@$Fc`jJ1-~ENvaDb-rqddUd=_j zeDAZhKbGjcQi)UPy--d~>iJ6c%H*06u~-aa8gmv5<1;G9ZwdFmzffr9i>hMQ!`eG(;rGy16lZrb;A|+x2 z|57gZXUuQE$h0a}g|D@HQ~`WzFIJI)gm;SPJFuK+v`#@0xcxgr8T_VN@d&wBYPeX2 zWPd<_J*Bd3m^pVGb4_&kTCuD7v3HAV{DsNr5qoM6KB=mz=MhV5gL|{Q^Ypc=ZSU&E zFoqsrLVafGu|`K<4-*;-|L*<8Zf`8`@sgOB+o+8iRi||*x&3cU$@O~gaqG?x&bC%# z<0R-be?0<@Hr+%!XU*VpXF8_+L@CYP^jB|SZGF7Q``6{Z58aYPh@Win_=x86`zq11 zrIx=Y|1Fxx#wyOAjnhwo|5?Rs3$%aNZ_o3$cA3z#cG-64{4)aOlRv!ME`rEN^wg7a ztiO|?)U07*Umt`})Gcgia_RTioppKSt=$oO+@IyB4grR#pCEA}8p5rN@)-)1-i6}V zYkJMYpQnw9yHwRvi9fb~y9)LW_QhGXUXkqVU#4>zg2~d}L0LoSVe@$d2MiPFTj0?! zoXi3V=-U2ZIj9iPFg<@>CyGQJG;s9or7^v|_LVSC0Vg~!Y%--j8-q-+QS^i9D2NGR zDpcfMEAnKdP3eEScXRt{&buU!krjV%_B>8<$`z-Q)jTc`WfHCJhm8#ww=lA}gcnNY zE0nUxPN;>qe%}#YK(IIng(MDS8v+V&jo=I5aAwJ4?rRk+R4YX{Ua!XoC!3r3v^~;M z9=(yNXOc~;iKmSLK3hqf3!{fzPT=dqn8Y!V=caD*-vjT~AYeYL$lqj^ghIys)D-!o zuq6`A{@uByFG$_eiX=hrq!5%fhf9MCOJC|ohkWLf#M?g|7dYcpRbS)V<6q}Ep;vd= z7tc#dt^Ek*Ylyf^n9M?ba_7IxQCtlV;c*cMNFY`DgJ1)EW&Z^kcde;fXQ-wip|Z=fuC6;@30AsSE@7T6XWA2L%tIY?>&Sl62&Q z<$iie6hSGu=yNFqav8^MWd9V6$gl+~w9p(cyVSFaaS=)YtJDI5*+D2caUkoE%8vYu zRM3Er*!nI+5amdpAA#4%f2kcMR76~=Ol39Yq~S>+8<@n&NPKId$&YcO^k&0}=vsjsOoiLZqJ3h+V+C9u_g%S!_*KshF z{ON&?nI;Q=Hfib|ptb@N1xBVNe`oh3*N+iYsM!08Sa$!HFN zXUah-pz~!yX4*ruk(7#BanTSTZaiQf#$XgLDErPw-G<0v6rJ`Nm+ip(Oe~yZTo*#MuOzCeql@ zO$AwxkIJB82m z&I4qgy+wOFsm{`k-o(w}GAtR1;Pmy7%;H<+jq#Os>}d-n6CeS5GszyCq?oPj=qUB{ z@q_6UkODTz0F{!C8DcRh*E$B*0JZjUXX_2?o`VtVo{Xg5Zhm1jniB%+p3C_HH_^RCr;qfQ@@x~O2;LorHE5Y zBPS@Y<_N9sfKE~N%jsy8zaAGoxoTvNul){X$zJ`ZxNvH^8d!)F;146NQz*e`t(Xzr z-F3kE#8LwRV|mGAA~orwd`p(Fb;cxaNA(KObU%C$*YGof)+BLZGlAE4pAn0iMRi!e z1I8dUay9{DG<6mvz^W|?{C#zLc4&J)u8dsiNO)4CGO~{a@9WqnXh{aehfob6UeQr4 zSMZ{VZq(&DO6rquV{pH79Hhh0b3F!1sp^#cQ)RWG&~ruo#L+cNX-rJ^d-N%C>zYPr z=?8#IYO1PncIL&UH@KG2;?#p*esCrMog=i}X}NmyEq9`HV zL@Y@$Gre8_WlgfB_ctw{tNDzCcVu|=ry2nAHPB9Q+VU=X+EumD6`JqZrG*?!!^MdN zR*S+65;8k(Y_R#Z=9w1XSAYP$5R+EuoTV|RZ@`~~zopUE>Jy8U$8=WN)5i`$Ru;%E zZ_|&kDw(Ie$l@X0J+K4e8JsQuZoe6V_TUr@s`k~Czgedf6(kPnK7b3?wElTh&gG{o z5ZG{zQr^}%)Q%|33@be|I(GZkkL9Cso_~nWpJAQjlyrP(jc_k&C#WZMCNiqG93(YW zWM#+X%f);q!q}FB*@(;muOo2|-8jGjzKmHWH*+KSt>Ldheb#|XVs^}V29nQMm4?-! z%ex0B-?pYl1!ep1A{A-ZIb}{O*UwPHk!!&y4BQ}sGN!hb@!94w*o63d0v{gLCJBKv zz5)l{Z#98M=^pcXAOfv5s5$G#&@hI6D^Salb`0N3~}dns>go#Cie>-EaJMu)t7ixNL^vTuo>-xKoq zeVX{8ayxbIc!|2DXer1Xr|r2J?=ADL>SY%q9flA)D6TQ@*+Q1cy&Kkj6T!U@)}0(- ztz$4#GB49GPfs#W&oFOYGH=~5k6$v6-!N|`N+j1ONQfCc;1UYY^fbHPO!;@!H=$_u z`*cB1v@k3yIu5^cGCanI!a0)Pi-ha(a?#NzO)K$A(a|)`EAeX4(bm9^W{3!jm%Xqp zBU8aIQ(<2ueZK7avoCkL-QNr=U+3)Z$$YCXrE8a>PntW3yP=6xFIUoir+h83CRDJpj9LdL>q&+j8?#3axv&ZqaU#KZZ2qk0I$w zuI(LdG(t4r*yI;k;irLur2#EOhY17(!>>^f?_S$*;G(`{EKkK@s9*-lH;u>0+4zh@ z<|l8nVuP_*G%dusf$Q{M=L))Yqn?FOQ5O+dc#cgX_3SqNMC<=oy>;6h`0#WQl%GAf zZr;il>-GS%im`e=QkpNKrb!8QQ(f*-Zg`Je98H1R$3XcP}#({K^1&*7(1w ztOP2b=j^J1BM+r(o1;#eHA@T|w~ku>yEO{1sSBLsUptHc(!(h1Tdg5c+x!MJ2DrE> z{G}^-r#lgEXa{iT08|9>cMH0Y| zNvD6<^Ze6(=+%sxX~zhHFdH(9aS(`Ztl$jD`s$oNFI?b(K%`ZvSvrQ{$ zaqFV6WDJX9>#c1z`WM)*HKj^-v~PVWV}1j^Y-U=iJ|n?yNEcoxkl(r!CI`If^_VVu z#6o=j^tXOu=Jg)|j96I1-^g{g3jraumYs^(4wK#x2kp52o0fxPt!*v;w_L&zjO6Z(xSe|e z2nXK4(&c~|W8APo{6~YyI&^f;$H_%5vY%(vFOzf}bZ+LR7vYXHOjqejzBdv<1|&XY zqiLw-(Fikn;`CWEA3TEyk>DH@DPJ*BK`_MxLog*Mo`sI7(0TUneZc-|BC?eXfUyS1^MdqT&t}h zz#AIMX~my->yF2u@i1|q$>w#7>hLD~E#WsBhfJeQ|JcO0p^RkIheL;S!v?Y?+|tfo z`EiMVI)*d&^vZ5n?8n7#78V*>`YT!*fE^yL@zh}DwWeTFePt#HATTBb(0>++<Aj)qQ%mW~`aGe6>MvVG0$Un`c%{c*Fu#*I)Zf z=k)&?p)qAs2lbPw1Enm6H_yW6yr;ETxqb)%J0E`NN+?u}MH7eR7?6@#$Y83sEsJ&R zKC3mpM8Al|W}OLMU7%XXJx&bljS$ig(YtMfenvF#r*P_D+{9YTXCZvnkE|iJQ^%uP zqEIn%Tn-0L>~| zNIyNVqk8QMH8&r87V()|GqHb9o+qe_Z##&(JpFuAYGCS;R&{QsR|U^XYjbnhK+Inj zLE+qPXY7cAVdVhBribzUH1c;In|5e{s(45Uag-q;6h?-`SrQUw>0-b1((65I=BJR)+u~Nw0+ETG*;`5aTg@h@5?>syE(1b@SP<-9jUplMrdHZb{ z1tVA4=dTf$@BI}4DP$Qj`Q4*pKn9R1;1?RUVADCgeIe5rGFznvtHZ(Gn=}=^LqU+WM#BMq>vH*`TwBB3JSD2o3ixxKE>| z_7^R7mv@+$K>pcWh0g_2NX`0Mk^-GC_#($wc&no2=GDcd>1VFtEj%1P>P8+^&=wK4 zA+vAL8`Mw-#lYS(G-PJ{E+J_6eonfczeW)I?pJ$+`2a!`nrGO4K<)F)BJ(*dzJJd1 zh~y2SOzE)tBi7f_UEA2Cvo6s)u0!(>QwCNtS`5Pwsv#+s4V#Lxhl&Bm5>^(1MyceP z57{sbXd{69GqhzYNLQJ#{hXFbkgn`7Q8#KckwYC8<>2}`k4wI85xJ}Mo?$p<$!`BI z82>d8x3Z2wd_d=NOeQ=&$bkhuzV#wYzai#o5|gQL$%SA4hMF5uqDMM_r7A(kFw$-&JJxbz4T8hU?!2A8A}2{0)`n#lG8|=>goq zn{Q0b%w46ybpz)!$jp5H+R&jx3LksUZmr<(NdZ+*{o4;xL^{M93hRr1Zv8QbaEES^ zxL-YHAs!GseAICau>pop`yc#loqU6yWp?9Y`1j%%{P68;^tF_K?s%CZnGPGN%95{C zGn1>xfv8q^3#DlbAqN`s7WUlMcYa2W{(lf-YUq1vZ_D4HM*Yu1-rtsEAi!uL{Y<{j z>T6dqx%n^7$|H%}RuQxHyAwq@1w3(|T0U_nMYfr(;E1~s)(aGal|$gQVf?k3LWUH8 z#gIUBVnYIv+P7T_R`&D-d@zsNei&wX4N2k>Bqa5tuOTsShV_?*CWQhNLtzBwDhDF; zD17LF*(}B0gg)z}%4GO*O1)x>mr1V8uwD8u zW)|5D0R^+L?zm2E{Pm3uZqy*#(u45kBLYh8p%{f?KjqVwU!?~OVIRA^yZ@5)f#EM% z9THy2>L2w=)*GF_{NA8_<@b}oE5A=~hF|&JtpMRSJG}fO(tpF*fAQg8#QqO^NH9xT zAg2Q`Kf(Y3F<-C(zHYse0|N1oYw7SYc+-kIbKA7Eapsdv!X1|v6bv=De592HuUNJ@ zL+Iz^>)|}P@+|qoMjI>5XQU8^NgBwG@ozK^T~lTD?YF1L?=s@V`3Io`0=G>G|8KUM zSJ)z3WSd;+gOFhI_BgS=PQJ&hJ3!&ZtOyd+tWTiR-`cLhkbMOb(z0&IzG6KiFsxlH z3@pPnn5WM_H><)V{CD9mXa5V0Ul}L`4L_8MZTMe=n{V!~)M#u7Ip;6VekC)=R_QP0 zUwZBp{xg&1?kD&`ws$J#R%DvjgkbMP~Fr8YlmM2>h4Q z|K0^;zp%1+-7k1`i2qWy6vxo>vGEORT&{ZH)?Z$CnnGG1T-`gAN_|p9RI&mP20WGYQg<;_1IEwlMzhS!`tiVX+h>UK>w-#y|UQK0>a||@csvjr~iY+kTzafT>76_?7F-J?C6*hYq|Mc;d~^q)f&NL zHJBqeo(U#AJvHjY)BBs!4dW%!yU1oE5BizNSF7++!2gX8;I!bbzu&w=(B%u-Z>$XJ z17IeddD5nXCLyD06bF-!E;>J2K=}78jVa&GynqDK?^6BP*0)5DGM&ef z!EJNE^}R-%97p?)*yUm~HD~0Hys?7@Qdq++JE?^C0|inCO3PGNHODk-9z!!(99t3> zgah6kCB=cXX z#0B`j09yTY6%?KY+S)o|ycawqx#I?5X45Ra!!+Gp{Yc!Vep}C3PmQevh^B6LWLmni zgc>+N5^@!sj0NL%bb~O;TAkQV*7c_x%%ug*EVg^8OIW0ls)QJ-&t;+PMqi@l94ZD9 zc?o+1uLc(yP7aJ|q|?A*-RQI)CZN@PGXE`I$$D!+DS;SVtQc`3hIW>twwFjnlgVx; z&OW?JE5FB6vXaFX4#hL20&J)YvpS^mg|di_smt#Frb#_%3yhlD(VvjqzXX{A3_Trmv{*=^S{2*W6~{tiZjW{fwfhhNBHu)%QB^#xDBoq{PZp76fA>&AD&zv=$-s8-Kk*FF^(#%7;G^Zqk#4Y<{5 zskPEAoF>A?sZ*&UlRcuD;e%M;&buwy^(}0vSj@wxi9N<`AfX@z>$+GVKm=k;ZOPwH`_)Wu9S&CK|6izsZK9H0#G@hD70I9DL zO7P@Ug861hVC{Dge5fc2tX7JeRIkagl{rG|VtDsp@VQU4DoWX$c!h7;H+ZeM zKc{iwb5yLf)af2DZRd<)Y%th*D+8X6B!cSWj+}FE&;$mCi))H89-r!}bLJ!l$Hhd# z@6rz9Exbk>K_c8$LifpE>DR7;!#kofP&B2W#sya;?+1n5kj%TI+1*ts!rwtTLunML zz$fIGDGA4P&vjoRYP`(SJL_zo;$gH9FdC50hbFv~t>}B;o6F$7fXg!0bi?k`91csO zuQVbj#{>s;PHKxE}lxA%tNtKx3VvDjMro$(ilQ5vkb$Ql#aJ;!RPgYX^yz&W;oD zi#owIh03O=YBDFYw6Y)f2c$=bE|b}Jv|QcG+;90i8+F%AOv{m%iSNIOj_0#IM*hvk z8y`q`SLhXawgheIB-OY`SoNnZT%fZLm1aVW{?npv*1>+V`JU%$yxe_%$FYh`Is=yE zgg|1eYz*ZpYj3HZYoArKtg3!3H?1tAFNl>?H(y9*R5^x=AXmV3`(m#|VoiRli{ObY zM@R`o>lt`k!B}uhdqMuhIF9A-@M$yurD6=etY_3W$XqS1)s^2k)w}4U5x1XYP5nCo zkrmUC!@{aMKEK)@BC=$vsq1T?-7{qC!A7jcrktzA{jrhlH}gdCV_|pbF>l$Ee06)D zPA}aXJiVYyrXOcm%jXIf5Vx!@iMkN7ul82N*t}%z9c|8j&-BiO?HbonbsMTVwdjjK z?K)J1LGsUp4_g$e;Z6;V#PVT@uy8@y27H!{aMd|G&eGkGD-9q+`z2Tc*bsy<>44Aa zgwN*n^70Sml_*20A*q;DSY)1uaaoMzYbhKEwP8~c7@rauCA`DJYNA|tmZRv(<+Ij# zXoxZr=qI)U*|;~wZDc+D{uoCe**zm&fIE9&(1V}(nEX7_OmU7V#q8@TM(AMuJ#zCD z^6LIpE@`6L@Lf`*TvFt_WTC4V;b5eri8NRQi)>`_=MXEK;=8DPp^>^4tpHs=>DF@j zfcp1GJTyn*+m%Q!xtL&rJuQ@i6nX|{c08%pjEKtkiYePz#`YxWI^~A;Qc{+wwzK92 z@zIIzc;Ooda8tYPcc-bl_gfy7YWWkx9NFo5EHD=q2aJzEYknWko&6ut=dtIIlge(Y z142uaAt^{<0I&(?{!3p=iNCh_2}%2-XZ%Q(5ZH$3g+c}-9k;|<&s zBB6;V9_ae=NyeDm13wa%m!L0kk5=Sjz?#mpxY&uDLb}C>@JdH%^>RYV7AwHI8jPP~#_oAnB*se#WUAy)ux#Nf-6gz#HAfiXm$B_rw4v_uXI82h#KEM)h36mp92)OF z0(rK+F6!v4X}p_b(gh0V2Eg45ymBm7g)`=Ys$%xm!e@ zEkf{S-k(GFixohfo-Wij-$MJ@syXjuZLVxj1?1+`%~``y-2>pLJTitQIFou!-#XG1 zeh9P37)l=%h0h%BJgIVr#{lw!HbT<%zNjJn5nyhxzUH{P3~PB{tFnl0j=~;5xcDlU z`jd?M;Kwf)hluCf%Qy1o0{d_&c=r1EKS=3waNk}Sb2A`Iz3e3`IbjfkiuxfA?T1%y zi9-}WX1PkXgNr^=b?Se=3az>V9DF^@x|^HU)USnud7oX`{++B`j|D2T!Bl#bCqAda z^!cCx-EUdIf+PjcbzTf_?ZKbzMBc@OkZF%8iog^tZECZRfUuA-J3?^*9>CdONYxAF z$98Y`d|Utc;mv;Npu!a7(+&(ey4+RMy7jxI)vZpW+w|MuJ52L|w2rv?nxczic$AQvby_Nn;$^hcTDNjqwFu&k!>DOQVjg7nF$*Fil3lBjWj^ z<(uQ+eRtmDC5c&Pe}N1YCo-X*eBRns8VXDbXQSpZzcw#@c>@A-NmGFe4-;H;X}Qyl8L9P)0(GeAMo{r z?FkWQ1ru78m<`9^x~~zMX!GLS$_=Q-Yv;op{XPpS{eN2de(7zS{h?)>WFqTVm65w@%6|ZAmW;tM(W71lkPq z`Va5!(;ZgN83|A4OAROyizPBoo-EXcA{yX1Lo3DU(M^oaHck5UFboRiWHg zUaYaVP>P6*84=qlA~zaghbIx-uCgPy0|uY+mRWYuTRYPP zEe%d24g%k4dp&FvKAld~T7C6QbbUxQ$aNxQY)$XMu%C>zj~EQ)Bxy;P4#FG`Dv^f@ zeL!pI+y?)=j>yQkiAchyY(3j2*_}l%3*xI$Ejex z{aCSfs+G-obR^q#RC=wZi*abzU5$`L5Ilrw=auTn@bhLss(^WxGz&XoGzk690*!qe z_2qNLMQ4kN%A(>CWi%i6x$-t&1=svoa4cRUnt=e5(&x>|Aa_tr0&YMsu?d+{@nqrU zz6Je>lh`112I`QJbCqx@Q~}<_xN8PB5_=q#Lcy8jG|F-f#aO>HWA8g6o}X9vkgO36 zql|6O+^LA0l&(lLFvstdf{|eNzhPs|er8>lSL&Y*T{0^qh$NYa^G85=H%HmEH5T`uJ>5<^FPQr11-jir^xP* z<G| z{Gnejzqs`I5LxadF@JJiI}Is3dC2k6LOS$9Z0U3Zb)?Z1)<9 z3uLtRfd)(m`M58DVRIl)2I@(|^3nzGo^9{Z$8HreM*Q`H`d&Oq8GLLu3Q37KN`NhJ zh%5=fyrZi5qptBa}{+TAAcxm6shw`|WiXdJ^L!}FxXW|3e9T{?inyyeHwy^*QU zX%d#AET7vWKpXgF>b#v|0|j60#9$MJc?YM~K%!)dQzAPrBWqMg7>pe^3vEJxwROQ? z5z`J}^2|@bn_*`RjGm}50lUqV@&|O$ZJ>rzV8VPRi_qtb=sAh#5skb-T*X_0ia01Z z=7H)?%bQ6Sgj491wr}O`)`agq^p;F*Hv2g7r-^P`F=hN9lJ{}g@-xL-J9K4!_PII% zZQ`<>*|G`oa1qKEtaMn-J~i?F2sQRfiqHp6ktnsGJ-E#SVSJI~PvG9(W*+>xIY2og z!UuAD1>pE6WAilq=xgeiz;nIrX}e6gSoVFS(`_;2UfdBg2nuTW$nS6+??%>LY*UvV zuoc>Ju+igDm5^~8%c@l#JXx`T5E$M0u*t={-nj(>;O-BtR+CvDr5pN7r)eVLwn zD>%Z!7S650fxtKP=o^HBl!+?=T##Q9F6tr#n5D|Ju1^;pAVyfX8q`%jAKb>F_-P6| z@Yi0c7(P7w`Yl|%nH)J&ALw3<_qboOYZJvw=aGA;vo{;; zU?{TQyM=1drQ~#reuATqD=oq_RiNuXF#fUTY|xCfNm7O7P4nVbJ2^;pV2-IHwW)!y zY4_}C3WqBIs;Rb5T;2ISqW2EFx~l3t)~A-ajL4OwAKlHVA58^~#1m6-8pdRS_3Ysd zd#!5+;k0h(fo%~ms$4H2>2jS==Bg?Odv2^oh)q3X^kojcUjhm3@fO*j`x~?Ywy6q& z?{39vl%eSvr}`Cb;cn)IKlFbq{ixn(o4`1iZVg9CycYgee}~;DkaxvuaIf8{9w*K0 zyT*?a%<&=hhSA0MM|O%lFTT2m#F>3v7SYcyo8FT%r?CwNBYgoelP8CEu1;Ybk_Vo| zy<*MHPyv5HXGc}nNJi`Z{hzOD(@Nhms_OXGn*<0nwrPDKK$0UZFsprs8S7DFh*uwK zcZK@2?=Ut`FUAT*?fR5lKzV=o3U2wy;9+P-@~1eN zb8N*HFNg25xL!hmf{Y|6m5xHL4^MPmVV8g0QoH@HI!<%)=A(AEA8*KvVGT$G3`iF| zPVs$@z5sfTHqT1u5;}RTyEG7RHP4SM&8lP7)8?Eg;sCuDxBUqS__c*oYi=HVS*%HZC*U(ONPgGYd$VWu7xtyhHPY)lGL2l;^?3gFOj#o)FYXHDmbo-&bAvezZ%+g1m5ief3AX1OVNps>pH_ zsv(w(an(~NT2UJ$XoE8k=j6gKodoisWk3efF3>uvf1f^?C8K=F=F=BflI2Bt|Hwqd zrCvM0lLgn?W#m}5uirQFKH;BCSHVIq%j`mc-feCOZOiu@SI$Ju&hM4-g6?ZvE zcC3L>N#zyJI?c{LYdUs*hY^Y?EAH_XRSptNEhZoF)>FI#d;kPj7EXEyjwJ|OrGH}4 z5ZKD)`TSYx>AP$gJRA#27En4@Q6Q~54J<{gwedqF`xD^qHOUT#tMhpjl4=`_PTSeF zMz(IHv|1bayfotvK6OgG3MDmr+p4_xsm1cu`hcPNdxCn+qn#tLi)~fz`+$EbSvCHl ztjXN~m-4iEKN0Hy_oWPYZN0(7Iu);ywKs@Z$Hu~!%yW$hXbQwJU-RCPuUCMSm*9G= z8^~3-UQO%w*7m07y%bcEQ2mI7s$@@NnklIT;04ctGyOQS=xW{3Hy^#4RiGZc@lqO= zJPYwzsyUY&Nvyw({(jPC@TJ@)szkq*93|PQt=b(LkU;=(UT!ngKW?LTeLKi-&HP9H z#tvsC=N-AHt4j@5)y6*OaXL)I$pI|zuE0nETk7`hbZ z-M-4GGU{HFNZeA_rqxk+@_c+n{_?h7OnUOyP`POGMy1kL0!*}#&&n+Dqy)^rDRm7g z?%YdPh~+_(r%2yhOTY}^mPpa$Qv1ur*^Qo-d(=Z%m#^HtS%&h=wD?5$M@+>+mWS`g zE93TPr~bRL5oo#PS$>JiKa*)Np`+^Q`X3FXVMU{j>YWan*70!)YIfWs%1yS_W&=t5 z$9ZGrpwey%6ULo@x~DEq{`M=ub^4V8q(`gEDJz}C`sR9Bq;6k=*f~Nww}BoA>sGgzMTeU8m{b3A#I|Rf#O181s-+B z9Kq`?LhlAOTe{l4!$$09npilovRykD%oe3k2b;-ngl zpL!Z%(KB{7rCs`H9uu}ifz&p%FKznuO<#u+-9me+^@lt_ZhVsSN*)?D+a2>fq%!j? z)*3ad9rI2#n)ULW?qKaso2t1wQ&8lr4Y;~V9pW}Vr`IVk1Y=39HA&5L=ZUX&hxc`m z=N~hZhBb;rLk6$h6?baShM2aX7Muen?KYlT@aU{&+{-To@LpA#)QjJw^3>h;3s3Nn zqIgJXtdQKp2v2yU7}OnXt&QouJZtaMug#EQc~`I8Ix<`Cm%vQs;(E{f+)Gmfe;&ml z^8*XtT(t_ANMHbQ)viLS4tlATb$EL33xy}{%K}yAAxlvKVwBY9Ih_qYY3zmKf6~gg z@KbMX!^N~kK2tRnc zt+b#=Rq5W&f!9Lx+x6G3g}my}dA_K=DOecu>zp1czoTjoKX9^9&vYy0&vukmFF*SN z4guhy18??+U74rzEvsL?b3ImIEr#S%-`hR*coR*8STu_^RN!eFkD=j1W;;Fh)F&R< zeI9tdel&X{sJx*{{4$4ByOHfaCh6S|1=A=1jfkM6Hy`#zKO1Ab_4)R5U*1;4FzfV} z12jY!E=*?pk8j^QD9D8s0w_`2rF4!R^H@Bo4+XDEL%w_rGJIQsLv^S?ANz7NTYijF z1W;!d1kQvo@4Ft#!QW#I?uKk<@&0S($e?KEwSEkfghW#IJbrMZ9|O8$`u?*VQ)%vZ z?@^QNNuB+()FwfGrN;bg4zalzJ_|PYpM@7?p4-k_s?+~Jds={QE(Rl$Hvd@+X?uBi zD^l^E{*xQhym!2}7hqZH;-AHtV7TyT9n%}r@1F%EbG7z#Y<*QhpAl?9Um)dKl5FYN zHXk)8?^kYlJZnLnQM8cN8L&cR{nLaDM~&~cOwkFQt_}(A=11fk{?lLz?-HAftpqw* z9Enj{=f3Z65fbfWLp2=O?!~-VW=YkrxQQsfgw(>Wq+k0W^KRe88V=yn>xp9oiSJwb&#vhS zV@^w8h`C4;X1P)6!EE|WilPq{p(vfZo?-Ku30ny3r;sZL$SFHpW^7sF{Zg(zoMu%- zSA|jC5^F2n5}a$pu7V;PZuOdB5Ag$gi&FDsQtIoNnE(LbS->ab^m+tj`$G0~L`W;c z0ls;r%Xk)f81cNbf}?on0wN`AZWy@yV@3MZtps{9>-N*HV7J+rp)FlWU3(_W1haa3 zW}UiM#8rfGSKhupJr36B*dMw(EgW+v13R=gO0s3FZu_3}J**6OKT!Vq^?F5Var+Y$ zAMmk9A?4x8`pHTn;Cbuh!kJaD19~iUy(%-=Fr=swe)IO&#_bdKEvLR6u%mk?S zzeBh7`MmLDb8X+T%oOmej4R~vx#JX8=tDT!3-F=)8SpYRgrI<4MnTpf<+02jvtPzZ zoaUc2bbn{mgdN&$#64@t{CX<~lHk4IAtw4u=zX43&Q{~;SuNzTb~`i~52}<}C&F02 zRine40nFx{P!lo_&Gw4AV7sEN#UXU}*5^jO6L%#%klAMU49K_BhpKxe&dq~I1RF3P z<8f!b7{^}`YW_H)(eKY#Yi+qF0#Qw%siTcO(ixz&OSqSbf7XM${Z<3NrpBvUm|XqF z_qRqNNH@m49r^5oK}@U*JI^6~&rmfXj0;27?4V!``|pK5DH}lsHt9lNhOBS!v%-a+ zUsVtO`)K`yN+iBFH)EqYv76KacbYz#J{1ZoV zJZ5^!o-q#KW2|CPO1NpTy7}WB4X4?2q@Ssrk2 zx^0a1&Mc+9!n+ab#K(BhfC05$Am>@63NyH0LEX}1`0IlT7q&ZGK0&=@|2P59V@q7i1uyZyJT%;M$l`G*w&j@yT z#JlxtT?e%=6*U*Na*gB-{1GhnG2}R0I9oWuuZGPhewux$e0ryIHRR515T0HC@>N$1JLt!2~!Q6vOn+d*RElNZ}P14>kyQ+<04S0!h~~HEGW_Eb zuFf>sz1>u93!scu04$+RU;z$$(QCl7t6XCbn;+cN1lHOKSXuK}FTUq~94-99WV)9? z{zhS+ora*_aTsU($I1!lFk{+mZ)%O`iYVRdJ!c-vd37oMY31h689Tvr(}Ih%9c0=Z zbLZ??LN%n}9pv))$5F;?Z4`lyS_Ru`_5Q(jZjZwO+_LuUrs|J(=hk+LXOo|1V(`F2 zyVNkmaVH~M6Gvacva9&Lc-veVHr2-wg7V1uzu$iwI#gK(w-=ue%|*{7v&m}%S^0LD z<+F)pj+O==iuDK?dVod671*D1guWY$4c9K39 zqChiMf+0U*D4Ftf$Skn6O+O9 zD=miJJ1-R3_w|7Y1bnq}i48%3cunE_*vgAw?%=`3zQgjB4vAls&6NyHm!gx~eGAQF zl~8x%=Exn!n2JO6dGb0 zMuOG!MbH`C6H#2?dC+n?Cxx%(p^MkY*yzt}p_O5px=u|lmyt6~UyP9Y5}C+HPo;x0 zc4hZ9v&OSJCt>QUFXd;JW?W;F4sFk(z9@L}*hmyjy5gpF{dA3ubL3eVIP|4))z@3_ zDm^^5;#o*Kth}r!A)CGa@$Lg#_Cy|wFFf+h-KZJQf=kKe5_E}+NY*%i{v~1iIIoVdavGK`cV|YT;=>98L3zeWQu+3j*4a z-V17s@kqWpz~-`(^9W>l$>N<=xUI^t%m@(2SUkmlns{XK_P)D^m)By(GrlEr9_l6C z;IAfqJHKc4B0JD|e0Rxy=%vJy7$uWG#GWMez3mpN9%sfQFjhoo4Z(W^%#*|-gc`7 zs8jh2<6zu5ifV-AGgwV>h?kk3U>|I5UW+0@^Lcf&EYlo*pUBC4_G2~y#3?=DuhVB` z`kE5Egr?v9(`=3J#|rsEGVF12R#cgt8rHZO~?tLz&1IY^|#gr&2%h?~B6s7>Z>jA7sLwuOrz z24PL$9%FeT_SDMKaL~V5Aai|F&O5-9-NyA6^I(3Q8;CLgmi}fz04Y6+l;aYF{@kD` z-f{PA)R(uSAeu$^Ap7{;&rTECUlZi;HspERLp z3(i9!*=9@vzx#>S>zVX1I^*--beM{dLj04pLO%-;%NYCV-kMiYVw#Kd*_eyW8i_i? z#ao+b&y=fXn?(pPbl|#8Co7@W;pS6Q&lfb49Fdb+Gf2q6HkD!3L>tF9A=-VY z!)-!S3OiS{dABkzXH%!|&Tv%pu`o?Lis7T+eiI@COXWbyfc9*&2+7Y`ZP>Ojf}dB~ zm8tqsJP{?IJLB$n-IhAr|*%u+g{xXdn$Co)Vs@`D^pCh7}|Vp?6&BDoTtc+y-z%A$kn ziTU#S1Q*UuF|hXN=k}_dOqQS)UFem{b4F8@*g0?uUy{S{`?!U z^6#gcXT7O5{rPkvV;so4be%_3j~uqD3l)|T)2?PQ4wLFt%%^uc*nW(bjjkM+pv9e7 z;=CUU4!k*+rQ`7Va=@x&R({#yyldCGZ_{5drTFx%D-sK5iS2Ifn?8-}u2?smLli7G zjqjw`DYg$zp)459p*z`QBc-CtT$DaVqU=6Vw~A%Y9?zICxz>>YA<1bH2}?IpG^MG`WawQXGa-^ zuIi^aMR0LPB}UdyvJ!z`v@eQa=rrdTNKcZ>nPe3LlenAT8cRQ^SL>0rT56K!U&t8f zU~>M!X>?rqK?_i_)lwE!wGKkr(}!LSqbK@Z6iQScZz5X@%cH>PW=!QxeF; zd39jj?L$~}_xPsge7%?NUWCL=571Neehd7oC%)rDcV4C1Hv730PMj1{9d2f+KttT_ z_r<#un&VX(r*!xfeP6(9Kb9q8?Vww@b`N}_Xm%BjS}Sv$KKXo$L+&;|WvmDzf?nV! zWWoWvQL;r62pM~lQ$hvU;0tZtu*3xNm-*cbSUxYKdhf5{?(5hTXO#bR>Hos4rkUs> z`YC{;J7H?d+1>1O^3S*L$_2k=qlGr7#9<-~EE#5GWES@NCg{TBjZ}P0`QT&Xv3pB2f%DOVcNi{pFcRTxk$;7Td6#{M_kAvU#4)!|^zT&gBg^`KK5kV+-|;qKBgEn^IP=5H5RExPKu zPa$C!C8*>uE%#I+#>W#oaaz7^-1>{73@p6?h29`8YtGorcP!Al$SMFegBF6owj1tb zQ?}`{Pg|_9#pFp2Du!C+`heZWTnCj9x0#ar;gTmGNb=6_hwe*yV~m(H{VQ;q`u&W^ zK!pKD{O=0Oo$b1wJbYZ()O-yx&O$is7zaHqONd=mQAD>$4(VT9d^vQaj{DSYcXR=~ z0MJdD^R5I^`eiQ&dvHJ1ST)CibW_*5?hMTjxuwL56lgAB`u*uMPmFP1iY9^WOEiad z@|%Lyd#%FZQvAuzmP72HE1P~?iv=*Y7an}*eN}lHz=eYr=FOXf!~~BJK42Y}4GYaS z+}NLOYzJwp475+Pu1uKG*i25Ak@#qnDdH{ZdWm(Z&9MBC zE#cnMm2i_)dd9csY!kpT3B$FD#?|Rhf9U|-A^$d+E)09XAC*WjI>x|P;6p90?E9%t zKX)jWA*Y%P;=E(lC9AyYFvOR%P)$7wOB0>^VjAj7&Wtr4AO0eWSbJO_<4{?Ym073U zG6FO7yW|}`#x5`+!vpg}kV_~dr>e60Y|eZmf^@A-#qd(J#*tOniN*(Z{;J{IF*aIq zA4iw+r^-*PWS{r_V5OwzjJRE9k`Cf42*;EE)UTVFn{duJ-aOvdf7`NLOc@Y};1E{g z>rQT9&>$_-tNGK2OSvm;b(D2MQq(8{9^eBOv9Z8=(tki(lWfw|Ql+Y_Sxe}pdoOXr zdQ(`n)~SmlS$C35TE}mH!y}+xLX3f7y7335nV|C$E6gI5Gw9rn*q4AR$}nNoJcRp3I=*5jmxPj1LVpZr3lP0y4JZ0T1 zQTJhadT!1_xmD39%aP3yjmbnz7+r{$N2fR-d-x@xD+Wb20;!%|LN%)a>R{C7J%^w| z;IJW8_9!xe%y$ZDF{bwUpHf5>SAnUzrO_c%8X!@%wkEd_0nw?$wxQ*qD*@PHix5Ut zw@~&C#-F!i=(ZTE0r9j=52|9iCLER-zn$@gfqbKH%{RQl*HzSn*Q`6kB21PKl{(~g zGVKAncI|q`!aDp1uDrFCWi-@djVd0p>=DL`aZwan zKCWi$c~u^|n?}$GbBE1(W*xdG&PQE6^GydI340b$MsDYU?hFs|GVO8;&n_~_Qb=UB;BvO*O1 zd9Av(;JWc4(;k7FWd17MUgK_zZ68LyMJ8v~-+f~Sgsc{}d*a?sLgkD)R3j)!Mld;%yq2BT+Cm5=zb_(K5$~xuJ?ZDK>xKym}^w6(x+I$ zHg2VJ_CwjAo@@(Bqh)FsWEihA?mIy>xu-$t&b;!m2p_iXjdJR}?y zaxF5lmK6vPXel^goNRjyO@*ah=+YIR?i}K5k{J_9M}Jsp`tkO8MfN-{c>Ldml}1wQ zt11qzTYi%PzY6Sm7ZEpteR`d{+DLTKE#5s6_fA0m{6Hz+(1SG?ruB>o!0f&2)W{gX znSS>^Xy5S5UAU{<$`nPh&z~`v%KLtS$Yk0q3JO$$M{ghK@G5-BL81KZrS$T@(HaS# zx7tg&xXUy>Zj34`;{7q_;p!G@tLev8>KGX>3Fi5I@qzS3xxsEi$Ly6Ak(a8KQCb7F z_S^q%Y@*$=Ai#^^eWazJod6GRnDM_k_5_O5JRG7KeM2b{Dy?^KS%@PX>i*s6r->D! zK}m|%1s8M(_q}!R{OjyUuP>nijfNB-DtwEy+c)`PR0mZcF%n^H91ph$5?TT?zCPwl zJ^zY6>x0>cdt=mqgU zDUbgRkgY&;g7Jj=)b}>Id*=D}*u-_U@=4VPqf_g!GdgQIpfvT8b7n;-zUR-z+-9O^ z`rbsZFL!oqqGuP*DtaQz9melag@~0H0v=ZJf*<`fQJeL?hYp?v$X1!9YW=0PAVB=d$nlR5KZ29{ z<-T)fSWi}a^8>**p(6ox_>GPh<}FpbfRv>=UpAQQlY3~Lfd}k29N~@PJ&-*_=d|t( zN4*)+VuuG-E!tJUNFZ9dX5oGYz2wTXl20|Y;pw_u569%o+8Ykbt?|+4Z*Mqa5yt}k zTK#*}&jmsP(I~3k)v`NH&-+vc#@K4Tx!ziXwS{@wU^NV)pFe0TL7r|7n9Z?4S`7O~ z`z?WJ+O3}(0L6hZNqpu#_LXF{YCja-8wN?*z}m`XHG)Y$8dB<{1g^Da2HNGl=)l`5 z4iNG$s0uA#$1S@sKzBHCLazwEc%Urih46lUFhMvL?+CjQZ{``|t(s@C(6>p-UAylOD?{+u@C>h|Ts;vNzvQMEOj0%adUql>S!vr1W>D|^(7?%?)_LxrM^ zmom{H-Ux8hm>Xm7oUZF9S_Rn#n?~T2QGR|9!MtQ&4s@eefeuwQ|JLh!szLiz-q(6jjQY9U>C7&TQPdWyaEYWec zUXsn^ZQc*?<)CeQeTx?NbaX7NS6lx2qH*|wq;fNaqcA&mpYFMfyDw{V+eJpaAfG9U z+I_>=2&7f&1nb*Qp$he`emttAM>cH!z(pFporf)Jkul>)hvEA1*uzmerl4zFCpYMj0`~u7>>cAH*`mJD zm>oM4+qN~aHPOVjGqE$VZEIprY}>YNsTU^cDkL4Be9jr8cpHU8TWV7r$HDTSw$x&xx3BM{KWT9x z@6vn_Loa8h&Ir>Va<)4huVdQhrz z<_lupsL%a|H)T4)WJ-w-yrx_jHJ7c`%Owk88z?Ot0Hlo$+}5 z$PQf28DUP@nya9`7*k;0LeNjueS|AMgX6;^K0^{Qt0t|6l2S6lHfSGaV8=_Eh>|L)tV~*0dQO{@aPQ1KQM~ox{-CdA-YS?>56}1Fz*a$F6H`s-~E=BoT=C zUeosY+IcRF1-6Y~Wy}f!=&b9K>%2hjMx(OuNt8n0C68N-ftzAKt}7?RFZ;GGFXjlW zu@x?uE??lYL1Q*m9EF8Ivg}wyZgHSSVq^5$0SP01g3#_?^SCF6We!CHvI~ z@=N*pwM#E^SF53(6?Z`{D@d|)j<@?R9dcZ+BRm!U$r-4Nxya;jr{2%IJ;bmiGyK!k z$_>*p9h5aon7Z74*U`YNl}l75UPsyjnT56?Lp=deTu{z?;ySyJL;={6Q@JWkJt)>% z-XFBe;JcHc!gxB}AsIG;&_-aeNJO89C;A)?T=bAD-mjSU6yqTw1JR4zZ_DQ*8;e%i zhw0CjJdwprNCa|bcQ*lPFEyZc?Aw-CThproL|@(Gt~IF;DVzx-e25IY11VetD!rl5 zg9~@5`T_hBJ8oF31LW5N{-x-Rp`Ec~rE?c?(mNG_CV$>kUdhD4p!%{+i@_=tpWC?P z2jYHLyve-@`?TPFSv3GP|7%QVSdV9M03>~kCs)Qj^;@WxjSOmOKd*avF0)%is#h0I7p^ zLdzcbmL8pE zWfA_Zjl7{xvK!ShB<)0knFAC)8a>~s@0k>}MwN1`mMtM_g;dP*S&N50!qg)Cyoat* zBeoPhnnk5i8BN`)sE*AbW;smk;i~s)J11iV2Asp%S#D6(b4}PA9m(|ij*h~2!f4ZF zIu@ZJg9x?b>gXGaKsa&RF};v0^S8*O<`J+|N-F+0Dm1AXyOlXdin}r43Q`G+75C(5tuWv$(P3DitVEQVzU2oHzg-lg$BQdr5MpBqx zEQUc^gmLhW;~PG~ew66-Z^H(TeZS>KJdEfG@FN=8>TNFC3gnb*LdV-F7+qs=@2}}W zGR(={rKO&E&LRByqI-kUw1L_lcv&c>1os@~As68D!@4S`5T`lO@rkz<{{1Au?n-;8 zaqw$5(yEJ=;32z#9_`TJijqgUUZH^MKykG>2 zN}8BHl%KzQB4^B4{1&{5X_l501e#huVU3(xkJ5#2iz-G%zAB(Y+5UDXXRVZ06;!mu zG9aRC_Uo{E1Ws!=nL)h!ZJzf*OXsfkcp)+fXZp9G@qxGmaNx8y zh1C3B>jl$jBc5ykef*qW+czp_tNUEiQ@nKVohDwl=k7xk(hq!~7g zf>`RV-HJNEJoR{>xUSPS5$;zWglt!(iWji zy$sT$0V9N7&KERqFK!>n%$~P3HA012sJ#A;YV3K3c8>ufL_JKHzeKdWuYTH&AZ#`H zag5M%*E|wmP>=y07n8A1LeUvf-Wd+vABTaG=JZp(=CYkU1UNqEqm0+{VaQiiHGz2A zxAn`(+v#u66VHC2NivCUw^hv4+oR51vJ!d~4^>K~ z{_JK1qYgHc&y}pBpKah7)~nw0D*u|DXnB*yuddHh8ym1e-SK0^CH;EVM;Es)_T$?y zk7g9_n7KDbE7%69QZhtQvxG22OaLpU(umsj|LIC{FA%~o=#{JpPx!n2+#TFWxv2T` z7Y>gz-lpiZJ>99nUr&swZo#ytAw4X85;}YAfmjveV?G#d>hyW+R&*uungEd*6HV++ zsVckURUVw1r0r!g8aT7x*sa78(*y~zRCuAGj_7(y@`o~!l6!XReK2Qpu&|WVfwsa` zjQM&A$KsaShIU}W05Enq6n28iX0T3&AE^XHnq9$mKNMdTA=ht%z~zRQPN;PI3$J|1 zej>iou4#p$1e2_R?LY+(!?*=qVQYT-(`rPb&xhU_;0zP6)?@$P z57R+mBjvmIat1d`2rQ`y^1%5#!k&#?q=VGaYIt{l+~T(GP{hYai7iZn}*J5?5-=y7$+r$*!hV zQ2KTpkw+Tc7eKTgC7uuKU|l9r+>etdQkY(_(ea-BK4)dBW0e2w9U~_W&eq~$m7mnCJGhqk=4uK+ORr9wr`6lRWDV1*%7% z=b#g^XhLipX#stkx!?3u6`ly%xj_+t`tv8G~F{w!yHNjtVaktQ6=Dl)BFG2Wa zXp7Y!Q#T=)wY5s}S$p0za~fy%V-Z&sLS;cuEL}S~!JzljgD5r3OwSxCGcCkOMY++T2`Ubq0c>Q(0m5<;bw{k<)lRyeVzEPB4s!O@RO>1AA^g( zX~)&&_?@x)QAz>Pk5$+-$6hdiVpJ@my>;-iCTyM}S@c3qePtrGD)Sr8Wpl3z6%*fM zlUj3a!D;4I5m2#)ZwA`SY1YuLB+IKNn(**K)2Q5NQR zO@TutXk`cbccFaImP_fC*;P4lw6@icDORJXqdFNhwl zVF;M~VMBO}zdNis2W1gW26>`Wc_HnrL*XkpC&|mt!pJS@E<3Q2X*n4@788*rzuzMmIADDQXrmOE>XCw(?(vWuszlcrBvX)A3frfNu<9Z; z0gz_9wgahY4a(T-V3y!yfx8VaEl6V^0_4L`oQdVTq`3?YP+GXg28}(&<8XgLkq8p) z@X^eqFwui>IEpUzp0+!1@)V8 z1=RKz&oMem{w>(YizHWRWdp^oWiUMcWo=ady>d)CPyt{W8kyj== zV8#olPU-ua&7Ly1<(UehhJ~~5PIxk5QL4LOy3X{DG)__J+7;yJg+nHNE$dl;JbVHX zQ-MX;z6joZcM#fmHZmQv656++Tk;`TpM%e7-qmEZNnrYG3BvV`F@QKpiDHAWm{xyS zNMBI)(2y5*VzCgqqsN%`k!(*^9;|O#I~4+zbS5(j+PXH&20-;g>sCnfug=CqOKpz{ zm(d>R_mLZw#HW@Up$!ecHKhIQfR6Cahm^q|$MZ@tWOw1ExVe6ed+wR{=NyxSb zbY)kS^RLc6_O@V5Ze^~P=3cKxYaZIJ+phenEBI03^X5?er_%V7tA?s* zxXyZ`-!->;!lbu6VRUt@EyIkp^}o5Ml9SAO#*Z+8E$9x_PjH@W;qaI@{e|^4kIfy$ zi8RN!!IBp3s=bs?TV+EhJ!X^~*(~Kq-sogb~glcUD*D%hRDHWAgWuO}v z6o)L=)X4wkizt0C>c<*yhG3}#^A-RZA|F2Vi}Sfan}S;}9>4P}@5KdV=lAcKW~NNl z8RUus8uW*2XIbo;x+jLx-VLXD_olEm7U$Un^JX6`n0j?li(bo?4heybjOt~*SQqIe zma@UBp@g(l>pFOUQT@Q9Q(??00KQQNp!ry8k@Xit3fa`b?4xjzGBMxXQ};A<;fL*C zh+s04jULvg5LJ#MZ{e$u#JG709Fkh=)n3V8vZMxb;v(c(xxg#Yf}5a*{&et1qn-RIh`tqZq*=xx*Y7w5o^nK^HVsD!V;R62 z>cnYSP_AU!31Gi37gzgHk>dBTT?4M;*s4RSBozwEWibnDER48?2K?Ne6CsurP3OZt zCCC`Xl4dU^1W8E*aNe(5@by4&TB)J#I0%34yuxO^B(H!Plad4i;LKtruz5n)t`P}& z8f6X3H8_@7;cyr!#6ZRk3TMCNryKaQ=gGjX3)*8yp6@FT*Uz(4x`GVC1X3&O(1eT? zloG8ZQ+N-5ZN4SZfBv!cGHD^O{#MW=7w7Ed`kQJPD`eL`z-n&Rt>~&rU;WLMAf_px zIwi+!AF0y?!*zdHjYT7AFCpm1G&*QEVari{UpzU2LsvRPblsK zItq9&M+|FyNEFBDmgP)Rh95MWdBNA6NeQN6Q23OEo84K0*HyEdDT z`VwpBpR?9tzrmzljc^i?_YKWz>?x;crPFd?-L_QTP`qx=Bve6+z`6ab^a$z*sW&7$ zX%NJ@?LP~e$aEK?u#4*})=o?wAu; z3q7O{cpwp-s@30*J-%jM|17U*S6!ttLP2qVQl)>DJV`L>z zvK>F$>-b@hv2j?HuR8WHtv8tDWj60IFC zo(EJxF%nFF&uD2Mb2;>65%L_~&OZ4Hj3&WuUf0n(&@vhc9S$8M&#Q|u-A!eru}p#bo6c}^!ddcBB*>Y3AILr`KpEhf{O@2& zf|TIXJgA6PfG}!$=x6&GA7PYz2E^J&RH?phP80zJ?S89WZC^G_gG z3DRGRJ_5M^gmH)#pSEs0oq^f#&6%Bn(Uj%0JMr0^y%=NTtjKyQX)Mx4zn{`>y|R?y zjKch5d$I_)P1SCl&=`&h^Zzw9)Zedo5Em0xcIo(gs9)Kf@G}+rp;#POkh%6w zz957V?9`VJp69`p^_XL;*|T4~BX`DnVKU}T^?6fW@eJ|FlXZ$vvfOecvxs??9cDx?zjo4mH9+FTfh=fgM=P zupubh?mVs+d5VLBQGYSWKvWfZJ;RF?)>VYZQ@j-^OFyv3OBTzeEdf>=cCDDT)G1Tc z=vdON8mX91J|%Fgyvvu6jrVFgbmvJp<*Tff#he!`ZcXADDK7I<`wCCu<5BAFyq%DJ zwPSV0f%P=YjmK=mr(Re`v$Hqa|K){FrPRK%?zH}T;G~{I9-##C7w{{@WAh=JfXOwcO9lgV1fIcUf=$ z%-hwb<&@>=#r#Kji11FuaVGuMQ2n_sIs&Zy@qk#Tp*up;hLQCB>LXwnHzhUZ%7Anb zzl*5u@R1s8FEaZMGOp3{fo{Xdk9}3UsDv*JtH*Lq(D?{d-eBt?LVwKtF=0HzCHs?P z`Bqf(LaNhGlK|1Z28(HqQT}Yjc!sXD!!M1vO&k6YV|UJ-4gdRy7fY|)k3uF&2REkC z@)1uvo*~e|`0aMl+uo@ofvaD3pLi|;u2Z}X&$bK4-bPV>StM@E4*<6QFP?g+<>aY+t6xM+cS%3-Y)KB}P$n*rgA} zlAO2j%-|BH907YA0Gt*Nuw%YJ$T?V-aPae`@r`Ayk~Whv5u|58g7{uEKGLso*C3zf z3EL*&xG@rsLb}-;@}(NL;kj2ouDM6e#iNG88LMB{P?T``jQJLBY+QXIZ@_Cs{5IJD zB97`YZf?e17!yplMK_4~(Y;pTqw{AjE?xw&_uK^Fs&8fGf{D2&yK75U$i)4xS3rjR z$Sv+v8vbC)fc1Ss_6qm6FECam*Lvnb7QoQV=8czv?jg1gIm$+j)f8Hz`kLKz><`&_ zEv2)X?4LI%7Yr;0_fds@=4yk)b!nic=PX=Hv%;9OC=AHcXf;MGOwr%RYH5B`Jb`G#s zo+Xq~X|v62uX$4*a4w%iEKY3e7GeZgTjR^0wYpKY0tWQWa#G}67e?DUxaz=#B2<# zKo=jSEaG%_MLyn5>+le6xY{&kyRrZ$IMz)L5}9YW_bR4%J8~Ec3alwZa%$LfkbaV0 zf3J!h2JWVR7T6YSUe#6R0}In*SAFpalE_iM+q+cxuwutZ3E3hrn2N1%MfR$!93!mR zBmBe`u{UG@MZ#{aLAQ_D-?q2FZ!n#da7!VPg~fH6GMZ9*5;+{ZC!`RaFUNOTdw^-f zZ`6J*Xi1@n`8zW-M_JmN2%~b7DN=WnlP+G)H_8@2!HDP|*cGLxO0dPKXz=GXxaSM) zF#^~Ay7?yJbngw4##*h5>DgD==cd+bKTh%dlIa}`Qfq)2yEUTC4L}fDhWs606w6#~ zN+_xF6ek2kVVM>2OE6IfI|$HRMO31}}%(ipoVur4&uZdkc=ej>uZCuFz$&}#UW zbuUnNl8ma<#i!v`tosK{AmRrx!XcbJHP5B@J3`l9PS+p#ht4^H2!O~vZ_&wXVrTp~ zu_Y4|3qwp6J(kMy8=}z*LN`7h!l3WDZC<-}&kOqFuOQFra2iZs>>W5%s~8}2#~sY)*9}W;t8*Jc zPO5`~M+dB)?KOn(Lt)lH?zpRIGjS6vV>2GJP;A;Yp=>_jk_~4hDW%Q4nq6%XuFYNV zJr7Y9UqIg=$y?EX#Y$#>?0tUhar?ZNG;%eo9`)_erEhw*`6VSDs8)}|Hh}mgB-B6S zGB|r+C3bT9rbp-Yn_&T#eM6GOZj(g1yo43h?W`q-2?J+MuVZ{6zI_pA*x5q)`lt9x zi=!|b7PSkbFLgf%H9)+>Yrk=HZMiR4xCy_w+la2HJAyJ@)PgC4>cS|t!2aM3>K=^9 z`f+`d!#;V9Ge_1E#W*6wl(x0YZh22cqXdG}U+0E3O?pc7E#T`L+l|Ov zbOy#HX-&_;5MiJ+jAQ$iiwsp`z&;@+-J2XkYyinRDHU#xbf+Yu3mIrWOeYeEl%{9^ zruW^UC-RJ8EDv*NSSH^(;Pd-7M#}RJw1_?$;IXr>hVn-`FpF?}fKwXzldfM{jUXWG z<%wo`fUfd%_0`ebDp&@zZb8^(X(3!CD8fh*$*rNB7X2iQMdpv*;Ps}sT}D%?f05R6NpUcjA;{v)|w}| z1t{=1gP2_O-MT{}y89No{rUVA8#buy3;~b1M3p3wB5-w@MZaVFX)xoQpI3j&2FlQv zc+1cE+cur%-YhH~Xa*im+or0X*6*{^wKAn0Iu5g4=C98^rsS6FfYK9>9bFBw(}Tu3 zL=Ak=WYs^?D=hQ%F&i)jEQaHFT_I0gt}-!t3!6I1)tyvHkFz2;`GL2~nQ9s~>@vh! zHBLV0H(|8D|03D9O0pd~vB;VMV3I^G>bD@W&f8zPBr$uyqSZgSW3~~TXAC)r;t?tL zu#vH!9fu2~U3F*9R`nxXn^)kLwGl#mC&&5(cM9DCo>01AaX&no8#Zhn1lV4$kiDh9 zofaAWHo(8So!aS9frPG9kN7(Phq?=^&Oqc{uOICNopuW>Y?E88#R___rT-QMXN>JD29xOuOLcA5T|mJ6nr|1oUFY+NSys~ zXwgQjzb2NFMwws}gGug%lqSTL9)%oY{lTK)4vb2*nUHstu8i9BzL0maEBWY(M7v3B z0!vEktVLrqi>$#Zo2B(LR8?Zb2o;UjkGaroMRd%VncJ^2C4O;slEk8YKM`tkc~^)_$bmegoTS&F~%gs-=6ik8&&zb9%YmuSrizCT`)uUtaYpnZ|+_*KN|XqAQPRB49_@>9p5n%jdt{lxS(PI_5X9j9Co0%hTC-G} zPz$wEW~ZH4LUXcP;|j(L=QcqdPm>)Sr`EBGv&IyT=Mc_9(C<-EqmSD&f^sf(>Ya!L|Q`-TCnpWyb7*Cn%85ybdY!M*RKh132+)sk~K^GL6A69_gq zztEUOc7$LkK(*HozH@xPK`IPhU?UG!`wqOBNA`0|MlPir0~MHke6Z5;G>6@yu+$oS zLp~RD9=X&Y(hw>^or%Kf#{Ue?r@IkvMtBv1+yj%i)?I2_0>48yuZI2VKn{49hOf=a ziGM**J+s?{xB%V)D7zaSkax(urvpMI`zrL@^|m>!lJh@dT|>p+yj9B}7Mi0uFXIe(dF3DTPI_00j&+yPu=gAqZ&i-0j#7=8s6KG%; zFQy0H^l~j|8F}a#X;E0w&Pnh6)HaH;D7wk3tQ~BaZ2^r^sf;@@72}gWc&<@aXcUW{ zNN#IN9P)H7TcNS^eZ5C>yXIwkSWTs-&(<6f@f=DS9P{B8;< z)h;jq$1T>PvGpSrx$9dNFfZZ_0ShM;z9SWydsk8vnUz-YBOoyL)3T7B?rRtt>9n96 z6CSe|lTqZ=1Whk14u^#zMARBJT!y1AYh7^G@2!cMt_h?uS%#Ys7X6)0Rr>IN2{xZc zk+>kO>ZgtmAT3QQg>Ye(#p|uoKasOgJa44D(A~I10XRQxGuhyg=W6lC1#0nRfms&O z3jI{QTuGKBo+%>Zir!ufZTd`TjOy25^LvV4i3)(M;< z)WAZOmt}ZFHP)X4SO^fTQIPsq&Kdlcv zKc4x-wG%{O=m4!SX+^9)_pHn5#gm$JU@!#j5|wbTKa~HVRS~LmhAfS+)Ge`E=E(wS zoJ|BGpoG?Qt;3t2Js~U2ssNc#O<4GkQll*_JXKHF2*g0(Ej@H?4XK=?&Q<@y%0*;9 z_?MDWq*a1FHRP(EW3QQ`AA(2~&F*vA?2xZqql2VSf8acWt_>lNkImHR15~(PC25?= zR~!J3hA=g($SD`4p%&>nz|_xb@QNpn>6tW=W55vwv?6?Aw8kIV9tD8j-`^#fQvIQ!PM z*NlOM+fmB|dLVB!qBOR9kAj6)uS)|-{stf^Jp#7cfPxXm8et9|S}Y_pqm%)%6Hiby zl$EPYqlO@Mo)8xFCuNAV)qqO+)1 zsw5K;iN^qfy}x-L6L1Vni=O8eyexBsF9p7&z4TMF%k?}&1`7(WO6qg2>_Med+d-OK zNLHbe%LJ8(4S|Zt)}IUJ0S%H&4-+-q0aTTyTbZ6IcT(Zw`2M}0$dDRE<4ygk|6Uq& z9~~+*b~4K`t6T*Wv1eUe=$r@A-^a9|_6$8(w9uUEz&s8$jEn93=e+RaI+59i2P@AD z>|?tk5vWnx0U~uQdHUs>gbGI3Wx?C$Od@fu#GLn(`Dm=M*xbjuISr13_}oXk`KbMJ z0rmN?O5Vy)a6hixlXpScXc*9PEx$~j3t#TZW+oBzZ^20?eL72Ng?X!8L^0kZ!9VPI z2xk5TR5>|h{(qHW^MUTQ+1Q20|5XAEWBzN~=qCOTTP?JZbOY!E7uln5t@*nOltE1K zTa&q^&_B(v7yC!$fG8Sh8C7foXB<{6@j0XVJ^$@E&X>(Z@_gogm^Gb+3}@z^iZfkW zJQKKQOlQG+H22uYk;6f?V&lJ!DyE@KHuo@&DCXI5X5+5|hS-lTmS{2`&8^EniK9<< zs?dpH2nSy_Wa>%Uz2oph9^8X<F?})XbpB!Gh-6UQsrl;fpB-a{U z50dFD&PF+4Zu~n;nRU@eA=yMZEUwPB7+C4#yY(_(FcVw6NsrX^qO`7Et*xePT*O#k z&|W^$Yrmnk0M0MTSt6EiVbc>7wAQCr+AXbgT{#46*sHlRmh%4Aia?E_+Ur*=ktt8p zzQ{%E`v z!Bbt4+=@Ax)@qP=MtqSR>{`v))Pa;XMSh)ZWp?VuyFd*`$&3OXqGHSzk1!JyCU}pe z1^{BufEhUv5-&D;GL{M278|{o2q3M33^hOvWyEQc#QtLv=A!q+`W6O}SPIF1PI9N1 zah2lx&WcA2vq6#M)j{+2Y+ols0-AWlM>dld*mclMogZQ3PtG?mp>(R{QV~LDVn>?d zY|uSrSfXe59qNE*HVQo7kU9L{pzqYQ-Fgl7{#4D3E!8 zUiqM8ek>dqlYKXmhVznPA*#73v^VGxHR;6Vx< zvcm;3gVH)OgA{NRM(#y4+;8lb@gS{z0mVt1KpK{`;UMzes^4|6nxilJHb`Fx+(>`l zV9gl5M}kcpB;XJ+l#GKoxSK$QuIbzq(d_n&x3x4hciPW zGJ^A_KV9W(1y>=!Wwr>rO3=S{7xFsAgA}}lP%a)tse-h37h2W%i_DB9okLebumf%; zpMvFwj&=y5Qt2T2t1pkR3gkEW9h^OO&=0>rDd!VQcYSMI{5GaDq8FecPm9S)J!3WY zOarkWs%&4T{%DhCi>3zQ1lBxh>6eP_>n&>f%{P@%zO zA`~1z9jHl}Z@?7%r444uO_^Jlg=u@M1y1`y*M0`AI;M^csRpGH=T{E*7g&VmdH}4v zF2S_JkEW~|LlGz45HtxC1HP1o{K~If0ard_ z%kpdpsnf02{83!%k`eh6VELVWltRSmF-khJrAk)G-fm$vgekkY$J)-4nLzj$@lb!_2fsPjjN_G<)k1q{Pr zjBDKw=qZr8wf<*4TA*9Yis;ddKfji`z;4dP-J9}WK~G_Hr>eAY2yADuwj#J}!_NHq zYbXm)Ht`AN7!$Z!qlb1>*7D@K&?ZMw9HkkrxBfsyJiEfVhZU2%wtXHrawH)6{`s8D zRxrCU+v9dINdGIzk@HhNS&Z>I9&8hO#jZd}BU%7S9KsU5tCo=`e8!l?TOuJHg4`Tu zAaDzzq4`EXl1wGlZ|X!}p!tht8w!(qo{-t1?M4wn1xfx3mB*Kw*S9QGPd9W+l}4<2 z*(PzLWZ90KB8kPW(we@p;c)$WakNuO#%hun$be(l>eC+QOqH5x5N!W5EvVaNnnfSW z8h@>1jWFROq2T!S*_v*dr@0tT+Sk6U`yg13~ z#@j7+@JGn;_i%`6)DZDsCu7l33vAdCeDZH~`9g@4v$Vz%CDJ(!7I&Tg-_)U;Tms&0GStXt5va zX52byCh+2;Ecp#abp3Sz0-mvhB+Vw^KR78+U4(87rnp{5^Z!-3H(ZgPuN4Ic~eJ@)dmx2iko=3hDQzTbCj;k`04$}ma z{B0^Ag@1+{TRd|Gz)Ovdm}-hmDJdI5n|+K2Af2=hL4aeKQ__-FEJ;k<`l@p@h3)Zx zK%C>JZ@bcB!WG^KK;^YdbK6u-bKRVl??DZGK(;21ov4Q_Kv|%tg1@nb?ezdOArBv} z1kAvkVI~IuY7#TxhtY;HzO(Kz?{|ThX3VbKhl6;$?SOhzKAQw@>#bouuOe7R2+2Z+ zgK!NtFkAk~U-JzJ4ISnjuI~vMC}9PA8^fagOC)$x&uC!@&v}l2PU|jXunq~(#&!e! z_Pmo^?pC^yI^EM>9P{UbhJBmquf`6*1;-wHyV5>{2EYZV!_9O@0vjMU>o|7f+57%7 z>$_KPsjB|LDUc!lQ1Uf+$$gF7vyPIBXqWZM;y*vrFvmp^%k#_4BLKFLQox&ITD4Pj z7d`f7Td(PX@h81ImCrLMVown_^L*;>!O^g)Gd^?%dBEC!Uae#PHzuUu2(-R!ck_zO zW8Jt>?!%QAkxJn$sI`0#I3E}q$00xSI^+bO3bLi__iIrYtA=miT8+Pm8dnb6+^+Sa z1o4Ugq%>062APOyOo|MLYhHwXGr&MmuSc$vR`J{w|K$gR=KzYFDZ`g1GUb#AI+xP^vw zI`4OJj^>QRchg+aFImC*{5{Kg62C1Pe{MoQf1|!!nWL*PjuWsP6I%kGc~hKY==36B zfl39v-=lEoKCwtLV}#|2@VpV$2&n5w20nBp%Pji{RAuc8@Tem63Tphb3b>x1qoF^^ z#R+8$P-_~RclJ1U4!`|b)cu{odm@BJm)Z7Xh3?$v ztO|GcOmzlXo$O$Qal5MecMSc;UKT&$l9g`DJaZ7yp)n}+v!CGD)|DXNrm5>m+D&Uz z(PWn5WQ)FXgWxKnZg9YM%)M-Sx57`?NodNoXwUT&PY zKcw4n0E49PU{$}yTgE$IJ#=@%yyo%;n`_58b3?R7bhW8(*Bo<`x8uxTY~9SRZP@8P zM4mpp;HLeC_$6C^)>s2%=q~{oXSn|{D*l)8=YJTb|HII$S|g z>*)y{P!&-Iac!Q#=Mr2z1kWfuzKY;bdV2S~9`@+k3AtA_Glh0xQJ1*G2dYK{ZsX|c zQTYTdHFr38ETKu`O;Z7Ou6TDf#0_A4aYqqgUcKy~LOquJp|d)p(O(Y~M z3V87c#XPP6^a=`=l6l<)%J*{$GL`1P`1@l_A>q{s`7jB;ca%y3cYL>ju)8UQ*okgF z`WNtr(81wm=Nv@u-X%aCqIV1Q5hT1qMIS{wa3ZJ%kx zsG~z@qgXPZFIw${!L&iXfj<)}xy4{hM}6cP>W)_X46%>)vl+}uZBf8Y)rnl6@57TK4PCLXwpdDjnkK7fWg$RgBu z3wROE+r?=^fbrd;jwJ*DPuBNaaA@j8!g-nG$ic_wj5xxEv%K=`|3Q*W_&$iV`bTq} zGk~wrQ;0+F^4$5^1|bK!z=V%dVS6>+Z@>8}@I{}Q$Tz7ADftfmR^s4IpNsrUeMDiY zSxV${ogC!nubyluc{_gp3pda&E%C&CH=$8qGq&d|lNaDBkff9JUoz@=!EgBQPvo0$ zHF#4AXAXQ~!BZg+*}5ya{8*}+JGvMboXaV26mVmhLhmS>3w@h-qnlF}cF;26f_vrp zcW$kwc3wO{B_N@jtxA;`*I z2VyW5x<2vLWIuzRP?c>#uPsl=3;Rz{mAf*(!&q#t{3B`oM}qhNNmRsvHtY#N$@M=H z&i^D9FeCe_y+njsicxz8Kbdk@)Jd}nfP1+5_nclR`TbngV;zaeH&L`H)eoFq4xCauz{d_#p- zg&jQbs%4A5NL@h?Og_+9P_ypc>Va;0vqTBU`_5A>@i)pxLP^63|BK2Rm+io8r6#zb z<{Y|-s^Sr~?Zqj-W)~o!q`~nN*$Wq_tF(-Fza8US7GUx$%L6ypoDF=2w5J+h|AR`0 z1AlgNiXPbwEjWo;JC3R%Giz8ieKsjvV&^toNu$E>K-?g!_f$zkS%(*HOzz>2m;wFg ztC+!Wy`u-J=9w!hIIF5X!eF_;;&-}lP4?)?AKjS23%Z7!zVhhmnLU(nV~5#F8V1v} za2fS1&wG01`Zxj!(Y+Xd{{?GU-Sr{?B z$DbvBK?1|Il~%aS(|Pjx5IsEdS>e$eOh)#BUUQ zQJcr2W|I~DIV8Ajr12w2!XB$vCL0OQTUB<6>H{w(^On(MMxvf6*Y*0s6%f2Sfn;z; zh1UI-t-qy&wxn}C!eDZAeau0D_;O+gX)n79;mwh8G%)FJ%7X}yRp;-Z@T1H7FV=>o z$)$1^-PB7)>nS}$ShJMbhl{7>#IPY-( zN~ij~4yAmlqP%Q~mDnMCpMkq+#c#GbkvYcmf-&%Olg zp3LBTF5nOS|Hb7q`kt%WfC=h_(t^GXf2HWh_)8je)wCgnmsgPdE@OlaakCv(atx#Z zJB$)`gf=C?0Iz>x(B&L9%SlT4A`0iKM_V;;XHcJ9N7RN z2@Zf?47;@39ZPnu0Ze}9p}xt1J$yt4FOJDN+n7}Cr*vs_umR7grA*^~q6tPQ3P(Y0 zT))^!*%EO4LwLuxr5mt0!pRHvSj`317BbMnhv2 za1oI<K%a%Vo*(BPiu zUP$twcANCe2tt?2*c-G>Nj#BNvlP!P1P1@814?bS#JGi6C*-<(rzBD^RZWg)zC}e3=ERlv8Yejuz zb=KeWe#dTS1<(J;{ZT#a+3S7L{LyB-A!1Ri#F8$1gLT^e%4l@N7Z_m@mt`qqptg3bchT-}OaT-zQdtjm8NuqK1*@!XB zC4@ob0rRa5RHKKY)&Eo2m4`#sw()0XFeFQvES3G0j~JR5QfO1zO7@Bw!%SvuVFoiI zBa&*;6n&-Gl_Ip=!r-~IdD_x(J7 zJ?A=xj1G0Y>Svj^rz@DNZ_X^eYTQ}OoSsZdBKzJbC~kc|vQ8_}E8aGO zBc61}r1x%;D83=~`=|UpCR;|Olx|u-e%xpNN~?GCBl;W77jbz)<|)QjGm+CP2R|Gc zxswnmR>#WZtGzis{&z1Whl`_ec8)xdeik@*! ztYr~3WaM6@ll@DHMt(vD;lykC#Xwazn!`+ZDOcS;$w4itcCEOn(x0MyVowV1Hgtq6 z-(%d{*URgKowMbZ4d2XTw6r>JO%%GG9af@+_9TQ)@8{Peb;vnmvRqpbr#U8jTKH=g zeLB5oQqe}Ac|R2AE|IqEL>4S|Kq!|Vym`Pvx|^u&`p4A~;`Pm^A~Y`9dY5Xt`A;SD zi56tcZdozdq~@{cw|ALfYG{O?KP`2+Hl^N9j;;#Vjo%X9Xcr#@JZrkWzy8Q`$xE+R zYNUB=7xEM*zGQ83QVqkstR*}m+d${xj&ClYnN4XIT4Z0nRm^j$_4hP~X>~A#F&e&O z>34=O2>YxR6Q)ConHvn4;y1RymE3TRox)Ggtv?&LcMWgNsutAf_cqf|RZQe}#HRCI zMn<~rF@}s7y9VS1ithNN37*+yTwC>(%Tlst?~-QB2sUTE;T8 ztiie2A3RdpEJR99;cA~r$SN03$?#08l<`2T$Y;QL-+Y&|t2jt*<#KFI`e|v9>J$I! z&-fD@TI6>8I=cR#wq3H?hOMERnY9R-LG}wd9RxKO2bgO zsjzQ4ub1h(teLtp`a_)ThMa0}>SaeA=bnqba@M8Sse~rR)0kSV!W6fjRB%j0j`tvx zejH(q72WMvwY$?*UP>zJMO57xjMDNA<(M>XT@8V&y{r1mklyadnjIXtpQ*G><+tWLn-#Lv{d-$`eQK`_U5;)t1x}8HQaH5o|>S}iv7Tppcy}Zh+&9-DqY$Au112mD^0Je4D}fM zKvrQaCt{s$+f!O|%sH@~Ym(gv{hC#zBqp^Dp-@who4fPn+aHCdv2x-q>`sf#n$LSh z{IvQxUDeN;BZ|stZYfq_Y#rHk?iolvYf|J%lXW&0xI+G%m;EoqeP zCNYRpJa?1)*MV>EAsQlYR@$?% zbubX0C<&H8Z)Xh#jne4ZyFh9Po)SQzp}hqC+Jg+#*Fh7%!vRp8oeJ5U9}Yqz22(;w z!Bjne{}4YKKGX=WuSX=%2y@S9nwOs-oQq>l5ghV=0gZ)lt@Xcy^CuDo;pD*43&2G0{00o~M+pd_FV3D` zm;7)qBo!$n2zkHhcaYRy7eu<@UY!+Gj9erDY71DtYyKT1Ic%}&9*d;0V2EN1gt;(< zK`sA^XG`!U9i;e?1XFl1qO|fPRFA_e1;JEW{}t??dMs$YQmAF`G(sP9=^}x>84^JC zowv`?@7rMjYPev+25cw>?GxxN$V2b1el`^nbOp*gl&7BtX@t5xnJ)_HR05jrzo<8x z94ks`Apq=$34^5zoHXHLfJmZJyaVv-(B!a1or5qmus}hw`$T7#+nmjXyB{X@Gn^0g zP=Fvwop1Nds4@VYx)0{{&3W;|#s0S>$+X2(d5ZUZ&KJVL;Gn#~YR*gge^hy5ey7VB z?0zIbO*qcSoDKas`g^A&Akj&|UKA<`Z-n-w&;r(QKLl+lqREo;QRk8ycUNxS^QTg%@q{5w0HB~t2igGCnF;_6EDRis_WS#U1RUBM nXtZ{R70t$Ow^xv(E!`>Hk+jRt@(?!A*xK0F#)!HNIz97WOU5mH literal 0 HcmV?d00001 diff --git a/hls/lab2/hw/exercise_8.xsa b/hls/lab2/hw/exercise_8.xsa new file mode 100644 index 0000000000000000000000000000000000000000..4f9ff6e9d3c18a390857dbbfddabc915b0636c14 GIT binary patch literal 1698646 zcmV)hK%>7bS`7;y=iwF zN0Ki5x&15ZojK=b9%fHc?AtW^5S|85z0#AJ2MyNB{Gh)4Q*;;QD6atu@!ZTBTaqtW|0i?{hE? zCJ!6l(PX&gd5!Vd&H;+dCWD#5i{_LH1a@6}S z-rUo!?eDhZx1Mq_I7YyKT?J#`yPGfj!6aC04f$s8CYXEtfc`sJE~dAGMKBzU$6vi` zf8x&u3x9+cpYz)O?z?{vCd2V^DJAEI``&d-@l98`ZwF{n}7T6-$(vc zF!4RQTIa{d{pR6^{_$D!hkon$XWYcKThD&2dD^qD)!wGRclhzpyn`zpTJzj}C+n?F zyBm3{_T6{$1+eS|lZAIXnE%?pn~uk4lb;6TrN6eU*Sx`KwBg|oJe9w`;NkjT(!Wi9 zBSp)lWT8!bw%7kAR>2J48QwR^d?E<`gi|3ez)UalN@{R zy~;y{8vc|0P4i6uXi~4ONfXp7^Xz}T_x|6SikZ3hf8Kj*U+~Px-=FaP*>Yh4Y-m&T z?Eg|bJTyYVHSykcY)~Z2vrk3=lWvhC4_!iC#yZ z${+v3Tl;@zP$`f94-b4v)4>0f{+Rbd1ju;!b@Px=5bZT4jJxreCyhSdTmyzcFucC~ zAN-&H@H(WWy`xi_#rgMk?5TfE((KQ?cl;vMx%XdQ<@4d;+jgZ=-}z481Ca4_dWV@5 zuao%Gchi|SoK6?q@VMxeBhAq&tG?#574(5)E~X_wIwqXnH>n{^1w*!!b!RE*kQc>BdKY zd`F`MyKZ@G4veyx1gCrB`wIoMc6NB! zZTB|3lScQ44ezJM@kM)G+FJ|RcY_)~Z0{YmTkXROZ=>?C*WNj(GjG!{yFbOW zWnz@3AqNtEgpmG12I#*($A#{2x2$+xoVOaiws&~YZyo()dK`HpA;7)Pu`9t9gZY!? z15tYH4;M`5kxw7plI|c)a(@#HZ@eLs{>t}9b8i8onZRukpwFaf$Q1Ig`orWXm{&}a}?{=DaC+DIm&ETs?fN3i5uL-wz(-}+3^orX9jxGm;tWkhb z&%nL7PmSew;_!gT7;Q1-syyuMhP}WTm$S*-qxR8=wCP=b^=kBcumBPQni%Mwc8}@C zAC9IZUXv*ayn?$KOh~2TrJtH-p{m>P{?~H8;QQ0%;%>PJALS2-hEsF9o_fT|c!s1-1RH{3>^rNIWqtBr{TTt@DfOV$Fk}8Pf&Vvoa=M`-U;) z$0He2zmEKPNya2pwL3kJEVXt?Lotgp8^o5g#hgAMyTZ|oTi&M|pJsJ_j9CZKCo;ti z12b_4W4PyFHibrZfDm#kpW57Uypel7KeekawX08}cGabJ^+l=OYX3gyZ9Dlg^nUcT zqoAB0FFWltKen4cFcP}GM(;wkem2F?X?fEj`HsaV1_jj(MeZ9d9U)W*KrjGL0k36U z)fMQm8EFDD!_2{_`d7kGcPO=Kkl` z4w1S4Y1$z&_rI)mh%;XAtbcgkiu2!&4JEY51DTTxDM2halk6@EZ8HhuK!w|I)IIA| z1eb}+iIFHlxRrr27kfR1x9u7ZrVg;#@p(&FXgLpW9vVuwXhO1p)UlKi_}-mA3+`?R z+E}08E+7248BrN#*x5Hkt2-VFn4~N-xLDE#Nu@b3Emttim*fga#bKw>^qPksOy8q# z#P|j;#{-C#X%1&tA(%p~bXzCnzCwqYz?#|$BuYB75ZR3HeLE%37WyP0SND3N;HEPK zj)(=WLbwuCVn|gNlJklMwuJs{HPrU;8lt2EtcmKN3|BZ`7lZ+_dEa2B-#%>|9JgC| zFXM82Wd~)hs1Y}thWU1hW@(^}XfyGv@-W=n9j3Ib6tZof+Zaa~fvB@U>=U~l(!~OS zAI-hpW=VmtV{oOx0yNMC;0sDa_vh}(*{RoLL*`tp&)%5`N#jG~=oG&iKb;-5ybs4m zz2-;n)5rFyciR5k^N!B&)~6%PG765YfeU(Ys>ZH&a@J}abVS;9WUO&Q##H+-rkAS~ zD`LCeCCP{~V;WPq5R4A4;=PQ^a^j;PXK8m_^|uBz5zl+ic>Ie;gQ33}UHDO@A6R4l zOBt&~!DSdHE1M-|kQvs=DrQLpH)Lvc+s7dyQZ8$jG^NkHu&RUK^1AoIVt4~TtAc-x z0x|e75*|fi51Pk6G@ALYlchT&#A-xU1sWZm`B(nTpA4hzmQV`Bu{?=Y>xVR>?a3@z ztyF8JX35A{A~U3cC%_H77t{$N*JYO0_|4eVSbNginuS<$agFr5+g!=DwXl_Pi)+uk zwiY&DZgK4iYimwZr54wysrvUBjXh;;E!L01#kJpTZLPKgIg72W?e5i@WoGtpl%d}f zTU;}sUQm8lT3pjEM}4B&?|XGE#7Vj3waQDZt~s43wY*k&sEs1?+qbs5<_xIR@|uHH zDBZ^fGHR)-Yn587%&hG6*^OjGm)8{53rh3~%WDPl{6~x}-I#RLIxkR%Et2ca_C=um90SN{xAWa#{_tO1+nTfTb_dW zZPwYOM;QxkHZZjELR$iCK`i#4ccE>^Q0);5ZAmOe;)n*Q<%`#eBbHrilisJSwbg$2 zYi&`~6fd?_LeKdrYi+S+3m4ncn|<0sTP?ZJrYfzpKoqaEg%Dp*8XD&pFe6IE)f=qW zjTE%1jmL-84;d2%V9BVux9XOaSS#hC>aLoO4{EirdaU_!QFXWZSfo2AtR8QwR8$@K zeC91HY5gdSs$2D{Zp3j-D6JCwuu2gjO1*n|}<}sW{ zQTv;Xr~mWP`>D~g0(w7s+EGxi<_11Bn$CC#LunXPRxn+L9Rd&x6vWcY2Gg}4S@cK` zrYCxoLWyrIn4T|jf6V>QGxtBgb|@c9kM}silfO+UojcS!>mNrV=^}QI*|Opc(}7wL zNcWx;Nk2@Bq#M8NG^ntD0;p$|KUled(t79%X!kz%9wnu8bwcMO#M3Y<0Tn$m8fbyXTD}s zHN;)HsOs}mI}ycWIFF+CHycI&=cV`a#K|)0{pe{&LA{zA_{>ps461Y#oiXrYQS=gp zpAtPvP~w{_{FEQGxtBgc33rvo}(Rpn zSb(plAb&b)wa-e&(SKs49u)(tI{{?XIJyD&vT=0V%5M`#x6QwN96fC6w~eDm`|&Nu z(Ro^XWE|a&GBk0%@i@BlIBNZb6%2ouadeB4-!hIKcA|6~eJ|_<#`ulJ(Zd0~Y8+jv zF(%{adu8V3u+Of`5|5)Zs27yy72@dm()@=no$gDAWG?4RKPzMMwQ3waoiX+6$d8v~ z%vIv5`JDNhan%ra<>IQ(PwiFX=sDE>X5;Apy!3vSNLe<$A3g0Ts8@3YpE-_>L6wf9 zGX`EPj=tm4W9N}^^qp@lj-D@Zf6V>QGxtBgc33rzo}(Rpn>admC_Rq;)}m|WIC>oF zzib@+t=*dNh&XxzOK$Mc!n9oR(s6VS9+nQIbLUe6>0w6L?=_Gf!Az+@`V&u3NNcuC zAbsciJsYNbwphB4ogZzaV$Lq_`Krq-JfPYLN8twCpafhFJ>iCbbhfM zxzId2?RCz`{5o!S$R7A`)a|u9MKX2KJ*e~#a0XT4*o4Zim8+&qxWgxx*-tcAP;1{| z)WQQ6lCX6O$T+{@Szu>OFO>&-JZXhbZ{Yet=J*D4l*7Ns=?zKbbaRhzsJH=8R~xDt z(9rPgv8N{xVBnO3AbDyoq2bIk*13w;ECYhd=yM8{n-O&Uai^Kr|?U- zuGDC)6RW-h5JTg?)@pwvF6DdPU+epS^Q!WK_t)JW`eB~X50@>D&Mx{0m@y`8kB$2K z4F2e+F^FY~>~T~}j>8?sU*A@#uiDkU-LhS+mg;JE+VoofopaRY$5%9Nof>0g+lt`Qd*Vc zCLSrJ(b0S}LfSn)O1F4lAlB(N^~^#Vh5fujnhHBtNXrIM{sn|Iik#nGNQrUNg|u7{ zB{G_PA$`pl%K1^+OiEpN2_b#4nKTOf*@ZL-`wt;aL(VrKr29{bbVf$=%?N4p{G#7^ z8yC^O7Z*#w4B~c-tbxTWW$?JZ+-7>fK4vSAB}Um4aT{f`CrV| zmC3?e%m$OWWKPb#>nWhyfa2kK3o?&CkCBEhUe~X zPmad4i~RfH%GyGWFNS0-H?IYpxM z;&V|$R~_O)RLZ1_k0yUEdPTzy9XswK6Fe?U&u`a7+bR^Lm1W6+T_j3gVr}4GU6vf= z6p7L+$Wn$~cUV@IoYCZq5<`3)QEDB0i0#ehu^v2s*wJmNSd3N^qzLRnG5Vc3ND<@| ziqR_w(m_U?p_GFZ8BM+zy`p#2Xq`0D!uJQyZ`?(iDj`U#$Wat_u^|1fjJqguiUsNA z<>)EKU34`0g7k`}-T86qT6OdJ=OeeJ5@NKH97SLkuYx@pc8-W9jmCfJD29uiVi5&{ zzpRWlGnTh&soeC;oZ{hnA?CtWk zA@CE}+u>`4_E_$AM_r1$Uzo2Xf-RTwm0rbs6&Xu}uM9i~_^avu-qA_B+iRShr*T(! zQgoq~PQuC8)s7KU{rs7j)u|v3{(Xd9V>vgMze_W=0hi0)kLK(YeC6`DW7j;J-cIR5 zuJ(R$y)B1RTX)3?$d!<e(QA| ztukHZiL-*skm@WX<_h&QOLbNsa)tUurCJ$0)f%hpqF|m^sMBF*3U$>oouaQ3FOY3XMt1foOXW_$=@){XUuCxls*OAr+vXoAqr7bBtCLI)s)@x4z+yr&0u`x&F_4(YhpxLz7U}K9Tget ze{3A*9kb`q@QEG0T4Fayq@&cA&jMD-67Cqm{t+G?ju6CGhPn&c^5IVw!3-NmE=rB^ z@Zva+CNHi}v`TN?_0{PIJnLe85{|~S06U6f??aoS0o4l~5~B)hUI2D4LbM*AS$PpjWMoAVo%# zAMRp!uOv;aPF#}0ZLh_Wq+gejB3y|`lu8Y+fs~(!9dS`;j}e+QX;E;G6&iz%5(0zE z5t^4_SltL(aTyj@xp^0;jx@CU zC^?Fa=9>|u-r0HgQ~#uKbQ+hWFm=38l43v#Md^1WNpaK^iPB3flEnK^BuXzXNhY~F zDM=+3N#dg^5~WvLB$1BA_t(mR%lo-;C`H1QIO)fgrMS;qPNo#xx9jI7a8w{w&zp^% z(T4)5dU>JJOo6yiz0J?Y&KOO;R58rgkt&2h+r3M^YG?1ddZ9!pME4 z@^8daT|O#waqW zxI;jo7!bQipt4x&O2NZ99P8Q{K=Fi=kNjDkIcweXl8sm-Nrxd9P1KSI2`>@q^^L2={I zsalc|Qahex0)qEVFo7J_^mryk>}E#i--Yz$)4tt|GDTc zcz6We^E&?Ow1O}y$~zWcx5Ehp>{jlA)6a!rU|_D7>xKbQoI{%EimtbLgV zqxJ9pca&*bt&Vqedel2=93TDC=pCJ%nvo}7Yo49KXmhy%~(A_nryQn5XHzJnXc8yl9^`f9{{0wc2iv(ymGvi8w>R zd@!Eg`||~N!J8~^Fa4Qx zp~ko7G^8=TqTsLvY&gBWBz#Mqdo(}xuLt9IhGWijJcd1b_fv&L&!|C=$1?ZapM3!( z(cn&`!Ge~M0%+S(aA>lE;8?WLYL#yt(u5@U(ix!9>>d5o?spoeKXmaz{^f*LyRA;+ z#JgP12#aHXa=o}=_H?>=;65XXta)op$NBQ^ZaM=!u55P9E%j(!1_GkRKiy$8v&6<9 z?PIJJ^GLx(-XPIUX_%YbK%vf7rzR&G@ZUS@USmA=rl6TZ`!X0WeIW%{PH4xWI41(< zD=y~2KUCu^rruzP93Xy5_)>6<6aAWFg|{$xobR>Yx6=_?Q#D94zyhqHN{n%D6S~&G zMhDHE?R}DyO?tk0MT2DkG>bwxN8st3!5nW~l7?Br2tcWlO>A~xl!A3a z&2TmI|GxAm!>``-&KGsHWt!j>4uFU^U_eeRM1?k)&Tf&4mIm~QNx9=SJI(F80ZrOp zi9HsxufU`~!79qgqiMW(-sm(HT<^HLHJlCm@_L_N@5{SD?D~c`8jt%lvOf1CPG}Jd zViqG*tiw%!n;B{9y{Wv3WEMIT;4xdFr6!ih)FR=XIqCN)I->J=>qin0Y(E(-ATEOi z`pa^5`85;@Rv}P(%dwdYVqZ?f7ons+VsB2?8?1|dTn-2uhD4dK0$8ZoPp1p4YEdtF z^H2DRVp^faMZmD6QLg4I8Y;FQ(+qnzW~r|33U&S->0Gj%$F*RgCEI z3|pdx%v1`EwAcx$e#mU2E*$yJ`w$sqT;jbz?B)oi4GCfdZ=SUJo!)8fsCC>{f~OPf zL%Y#woqakjrwAN9KpL;Qf&NU41|@Nyd$k^71H>y^Vp!b=bALk~Rl`R|6Z@iqyC#XD ziJh#gThLX|IA`AT?-oRz;7PFh4@u*TlDnETK1MlvaYa$Yi(QvLMY#4FH|; z0X-pvj%1n9xF)6>>f(A#9XqrX%1qQ$+2;S$7|%q>wkCt_qIH>o$`C ze63h<)(Lgb_-gVcVoaiz(nW z40Q_;k3K!=%aivsMXe`#$9}l&o`M?&VfU`QbJFzziN3ySXMOD=&HM=Rd^|ELe<;w6C1?RpQ2}(J`V?*5G$t;?!Lb1r0P6lk~nXska zEsEAkJQG3HcD-_V(5|;QTHCBv_N$dzPT)W6aTuhvAn+pu@k&A34w8Q=PMkI@yVTX# zg(fNKH_-6xhA(Ep^)&}LV=<2z&WNOm@g74aPuTFYafsOtfH`y03H@ZuEo54e53}&u zcC^m-axuN7SB9LuHMBm?0PcuRIWVw&iTs4!;5dmUhq(hV(-XS4@U4|hTsNR83r5vK z(h!^jGHDj{X|CrvEyT&~tbfl4p_!NM$C+$SNL)&fqdTSOulaSDy2hmipeWb_)MOM|x_ao*@J@;wZZ zC5!>6Kn?T7)Pxqj`{_*BuhTj@IhnI(!}uHy;P;Ri4W~0|{BEk?CL=~PsBnpZwDyg| z=N@ZDeaZj<4v;idxFbSC@BUT6)!)_rW}Aq^zMf5&cMO?jXU5zef~fxuUg*6~ZkNHG zhDzyS?Oo+>aU+i$<-r}|KC=Mg!|trEgs@=qf*fWkQ|1g?T>;Rr-$^i=P5Fph8qWn| zY+Dd#!x(4F1^oD<$rsW(8eB4bA}G!ijRxJoyi!-2L|BSFvjxL=uhz3 z{S3Z30t(}=OkR2w^Vlpb$^t}5U>OcA2lsJeFaHuM-|#8BAzrIn-bd05G~x}rSfk){ z%_fQ~MLG27EjY&T(5*o)_Y8@*mq?gJUliP6#v5U^f3g^X0LqtO#EG+8Ui)DHxa3-q zpS--a8d?afW{4wcx=0VfD1R-xaZC@Cf?BeN+t}DLAMG=Z!gi4X$9t^3aGs ztnx!vG!KW7hYAh=HV~tb7+EC0EY3GrV8P>}%UK8v7dY>4e4doL)2jvYiapMK_<{mE zGUW}hc0{biSuN7&w(731A|TH^b{67G{6p)X}gIqLOp)zVgCP{^+ zF)g#uVZlf)KWorVvqcVYXK&ridTDJNF0@^cHbrTMt;X9U9dSJy+=4L!e5K(xg%&P} z=CtgLnx;`T@|JL%LX$z`6&Z|qnSe0;RNW6QgE68L4(XHQp%(h>Q@7ih*Hg!XFiwYbDC@10 z^NzP>iIiA=6r&(M(8%YRL!xJ|F{FqEz9rrj37~?LVWinQ8h(?pvB#pLLj*2+P@R77 z=kxq9pkA)$h3;EV1PyFUi#qFu&niZ;TT>PnjZWP{KP&cEnM{Ds6!0l0Slx=uRRG#)8v!bpjh9(taBt zHID2)wu|tzzP0z38r7vtGPivs%nkee*Kqu+7rMW}R99wc(wOkaWP;@IHk0!kzjB#c$K}APRE1K1w~~2qmg1$ z2yi=4a1SJwx8SE>q+B)f?|e8bQ%z04tkLhC^%}>rc*qNfIY?3r9sJzOLl7=U7e)BG zG#4xTI#^Y3DFE-!1PMzWp=G~6?T(@-9%oBMljy$P>Ij3t2uo|*8a zf{U>y^W_%#)Xe1-OdHius7>EClrU&6kcJdoc6(_J8T+)5fJH3sMYz1pQ-XsMA!1LK zyTXMs`y9TRSyBl3qZBelg5zTlab@t>lX%!Io#BXGn)@_ZaWTcIs@Nrg!i zMvYSz7mIP+K5ZNv=Oft>lAeFdHU^Er2#lcpG11dnm^NKMtcUYuHE$8Po1%=Up(wA4I~%y^q-0{nRqfoL9e@9hl3+1=BTJ%Yk!nmV%2j*s7dm z5*!RTHzW$vDhxdQ!=D)wIL<&cRC>|_S& zZv7Dl-Q)q$&c|K+5&7=U=DtCzA8gpJ(aQan(mj&JZZm;n(F)_AY9Cq4y z)taMG^KjCw0@KkYhT(v%1Kkrqk8h`6m@?eGjx!oV5iht^G9q|LlRIy}p#Mr75weN( z0&?#`uhw~M+b$9C?8J$HM&mPmxIb6^Otk`mvVny*QR?e<8$^%w$xuaJRdD8u_{&O& z5G(+ORM59F5ibbucRv~QW?v5Cb@50BC|O1(4tcj+*o<9{)By1VF)@Xo=Yua$t!~u8 zW^*~KJ*d-&_zO+=w|9%L@vJa2C1bjeXE@NWOO9e|pRi+%cqFqMX;uR%bp@BH+eHo$ zZ!>HD8ga9o)JU=@b zaZDw8uit3)o8A6Jx9yr(%+c%{pfT1qbIFwT!?}okGI0zUYZ?cqp(kyAI#o_IdKp9Rg5M0d zOEXHJQ^BGdK|bA)uVQc7I13^wCNV1xU=weis05s|1aw6LI0i)Uk?@7B>j;{!PuP;jOC6z@(-9}FdO zyOPD@u;>qu#8t*N!q!nY)3DD`r8#PJ6kDR^*rQRMrdv#D?xseGCT1#H^mW^`1i=%`EQtYx<{xV~)>J z;Ev{AN&B_h?ep`qPi@KL%~ykN!1;=Zxn%Vh*=cb-^|2^O9dXbm%P9l1vUAJoM@I)y|b%6S!gVaLR=-#m?mKng%Lxkf^#uj5~UHS2B!*+=2yCZ1;hfQ zZyt+M3ogWL36vW1uNa{blpd4KFX}VCOrS56aT@E+p6$J|B|O~D$9LH7{Wdi_gr2U) zXyXnI<{;K6x7e9s65+4B)3bBvCsJ!-UpagkO|=4-DzqG4b$7&F;^-KOkOjigmPUZVuON;1)sNfRwV#G%zY}lh`crn<3&XvBxWfA2$81FuZ|ku<58a50!m={!lGS-P9H;3mX%;8W2m$K*{A<&SoV2$bz_GYmZdiLycQt zmLH7o2VXI4XZ=SDyeK#bl7zYYv#Vi$GQEYp;e;SIfX=jNH6Ab|24Myphh&Tt|L;qQ z6M&Mib0Tm3=YQ6)a22lR7;xck9J8{pCBb;z1@peT9?1rByX5pm!D*K`9jLHRIVwQG zK>-_{u|jV+6{WH}?e53^Nu%@ODA$g1s&&FBy@5$5EGA62w&)x-saM!(H=laHPL$LO zYT{^}H&zRuj=TZ3gAe9*&){@2)LNPW_RI=@nU~j0U$?ZqKJO;_b9J2?o_k-h9Srud z0XN`z3S}Qqeb)3+Nvu8|IJ}YiUVvuI8hAlXFS*yjqTBFe+*i zel@IoIiHS~JYky@0wlBz`zt-f~?NtIubHD>BURI@b>Zt43+A7@@a^mfQr& ze<0FeEu}f0a;z5f3eOqJ^ePQjG^P`Olev(HFc>euc!sybeS3F}>?t^{v!16W?FPH$WHdbY@C;+Z}SwNj( zfrrg*U&3znt?z+Kwz~gY!NuK`DWZ=5-R`#bzTd1JZrzQpY_@Q1o5N61eJT_DomEuY8L`yBdlM+NUd;dQ$tthx7V>roT0~${qtBpgm^Rxk|(;4d# z8vdcp-0-~*)CX#9hV)YXcEhtMhUSuP-A(6MWV$93Ck(Dujjvz8o&dAzg@GCq!v)x=a7ZC*$a{(h|gN1%# z_zo-}b{);$w}S_e3pDu>Oa!wk-p*kbJu*GU*FAd$f@yBNM%;oz#oRen@Y6WbKjt6YfQWG(nV*{H^QKZ}k zhEIn#M5G~4W#o?DEl|rX(77zWI55$MzjN$ z$0oh?KwMFM@YZyR88(X+?vuv~j^3(0;687}mCtr?L$>K^V#HJ|7SyYwx7Q+58=zJV zp#UWL%}&}kZ88qOl3_t2;g7j|0Avhhxx7>3M#=^+z>3t%W9E;}uWVD%U1zf>T93Jr z2tvu0F>8`xsg*pQ`KH4L6L{AAfDI&$H*$r&Dp1HjIfbsWj(?k)U2NDIqB|am8S2^`VW}_hp^>S?<|8XY zlg1AOMS}TDqe1yq2?1e^MqJl90#WlR0zM(=3AV*Af`JIBy}# z`ndg5)}aIr#yE`hrut^X9<7AlTh_VuCmfWtNkmFF`ObM&!Lh*^reEQU?zG8y`NHT1 zpfmG?9+*M0fkwY2n;#QW1*N$0$wu^kHRFEG+_zygY=Lp#sGB!*IMnYxhGahsvpjV{ zP54K_VN=al8&(R(!!aahk!_CH_!3l%;ZVyaSs~7oElJ_tsMulhqaEd^QuXmIJaX#z|Rx^f$X?4dC;*xWV`kM1sc=n=ymmEhtf zZ57*;e(Qy%DGcGY5 zFuRcpVaHV?-~)GfmjfwG$9LofC&Dd(D23*>ZPDna4yy!27q#d^tjVbg zyPo+2BNIN?lbOUmyA39y{?ehjfCPeqBS55^3Y-zzihCKGb0cDCnxQCEt*2j)7yMX8b`Zlf=aSgljCb&g~R>9Y#a~-wFylTAcHmiK1H{z z>png%?Lq$}`h@9?mq$0lI?ySv;gw7pN%Q?4f0Umn=FC!vg?ekmRqO9;h7apsmIG^1 zOzodE5k)*5L zhNAecNST*t!HhN85PwG+Jf>uG0fw>?!YiqOy|pXxqCaocK5y)NMy*Z-C#!W@{%+*M zTIHSEra35b~zp`^s!YquX5g8~N+*K&AV->cW&F0|;H;ZV`&K@oG1yCk?KAbHt z=Ud)Sy!SnvQuO;Re>jxl?(e<&n@iM71GQOeTqwA1yWcta#Qf`DA?TMNs{&(lzuW9w z90=C)E_YKkb(6cGJ~?SE6HUS+cmK4#Y5b&3>RofY)oyvyFAC1b#_~&=#pxjyF=V|& z*Sy4A!}Q1T9+<9I60ZokI5{r*Z;7}BUyiGdel}fY8`5u;1&KY!lc_p~uT}~Z-%R)8 zj!e}#aFwCFCd<0Z5qs8=>1s)T#}2uh26Mt0M{jCUwv07AvA}XGh($)BeFx z?t-DqCF0C8r$_pN(ZT_iga&4M)K=q?6`H+5STcpzj31&FosB)vchV))rK@aLt$}SF zm)vpWT0>>IeU)JPo+xO!B7S>0ZjZ#$4V2#^mL3Lh9EJ}MpU0GKHdKV^JuULuu-7q? z>Zw85(7|$d3K}Z%{CpMkXCp2qP8#0X&=~th5^gjw8&+-%4Kx-ueeMAL!gGkg)wQ6M zx{nxx)D|!-Y0dD(-OX15HXe}g(J?tC7;iG5ph9YDUZ62ERJFBq;hC*}e1U|wp+;E; zBM~M|laeWqO}8-8rr>lUA#o`VxxKF=uya1V>z(&$fNk*9S?LB~NQ>J%J7~LxkKE?9 zNp3E!oh`+U1q{;4M` z`16K>>!5C0mPX(}pyWEoS};2)*`6k=!ik+(ykZ3ig@!|%rC>`&eM4ZzP;Ph&9Wj*n zx^3B(xl(XvX=@8c#_?)+Nu4_*U0O?mKSLBrv#>xL*?A}85^HoOS-2=Vb2pvO15;8I z)fY9qBv2AV=SUQaGXHhwZ@^atNsem)qvs_mn-yZrO{DJ`onf{) z3%y_fNX1i8h~c;iEzXF;z|w-lt0Uz6zd@00OITzprW_RJ==jEQyVL7`Y8>_Yhi9Ga zdLE8v$$C-^Y;&HDjQ-X~j5L_vqNj$no7;`l*}zn5gvv6$brv}0^dun75M}q%QiL^) z8|W5bSLD@z8Urp}8YB`9a9WsiREp`G)m(g}48Ou}u!f?pZo@{(SS7UIc1%1{*1)zB zOQe97M|8hJB;HNnlOY;8|xeSt?YMGwNh_`|XP5~nIn>O#3%=y;olX86rMR&e$$ zs3Iq!H+B6hJVFv*L^O&Sr2*lXCWRQtAZ_GwF%U|HA|guRbVSfcs(vAE&aM`lW9Gb~ z@|udc_`3{_UQ%#)S6zt2s{)pEW2f1AGmqYNzL{Zfj)H5PgfE7#grb(cQd!N#yUJD} z>SLUzc#kisui}|E*)y*n!lV9PP9W!W)>@%w?sPwN&MhGP2m!sab6#_ub9)5nPtgTU zw$nLEt`SOOhZzT6j_qdzNLd~%~04Ix@;Xd35DT%#TA*I{@JW{?jl#HJ0Zs;{KLC3(|G0kL-#L{3J z^ZK+xLkU?u?$Ih>KG#v_!KOa#uw{05ba-YgVKKz-rgwJ;5-7OkVoTCX$p|(D5HbO2 zxWL)<#YG#2L^A~^Y{}{2Y#*{$ChPO=+@VF!B!gTj3$q{<9KWR=SvdLtl>i4|S1vmM zaOk7Jksbih0xpILQA|7(4g2ctD4rR^&PG-Kz~^(ChDfJDsZaG2xXhnHpMrA&oYFM* z$~bUzYvOGB4}ZdO`az1FO=76vtTeh2mb5O(7|j#LtNQLF69Zd?4tTa5Qs+u(%hW{Y zV7~`2=^gn;iU3%2T_~gASRb6h7F3m(#%vmKQ-?_qM$q z+(RYx1DvhnbRRtg4eT%sVYhXp?z7TE3=q^^frL%}gi_$Uu%)DH(Qqso|J*WM8VZOdyq{%!89 zooAc|Fhl6!M(Q%w-yu(kIgmG#vLCyKf}Z|NxsCN5A;I)cun_q3ZKrL4wj&Ae$(f5e zTbVe*!wb$>=0qaQVC+_qsXGY98=Ncn#&zll9V{j-|88;f#%vMcaJuQ7^jNn|n%uc~ zSWTCp>6P*H9zv9Pusp)vyL`?!ZQR=Vacw6+e-)f)t zK5o_wxHLeg<>A!jAaN5Idwhp>6p%nraF6KFt~s~d9h8DwwNLwLun35PTcul7XqE&` zz5fry%p=7r-L1N(zdxR&wLD6!(w`_GfuP`4>QFs{4AdC~S02_*7A)?Mf-47VH{Z;> zwppsVrlNpmuw*9oKb{@8WUp8MbL5yr469h@qAI*+07biSr_T(O6wJ9jM>BlF~6i9ie=8EqIc)N2C#$KlrltI z-XYx_z()QsKsfFmHmp_;XEVxfVp5}Y$p>`nf(&K=8{M4wC~b{=A5H<1{v1s*x-(mv za*u6P+x(&J-2~U1ZYy3;7Sk#;Qx)3eD^@GD9lP_1C00G!wjVQK}lkrYBYFrqImq=j}&T-5NHRoi`8gZ?s zHE&%0C|nqL1GVFb05$3%itRB_1-J8fXbj7QCluTxq7-3fx1tBf8Yws!nwP|J&XGm% ztutd58GLnqM#cj1LH{$;GXHYQRHgEjC?EA3%Q2Zjjw|WeTxOkR=Cw%n%bcmD;37mT zN3;KYA7ujOECtu6FwSC$Xzg>*Kmm|JFQ=MW~D_cq$7B?G@USIiS-n z%>dwliajgDsLcrR?3}quu4apKHJkP5R`44AuTfwr$QVK+!NSnoHHGndMncs!5^UPq zX}l`%0!Ka|wM?-nqNA&By5I~I><9y5iH3#&(iz8LnFBDhS)0?j2M}6Zb(CkFaQ?CN zNDgiBFAk0|OAhe1oFu?3nAqDeus$s$A(f}9GEtEma$1I~Di8JDT(vR`j{?n_pDdbG z`hTDZg-AlxqZV%F~_Hxr=FM;N`5@ zGB^$w=&37=XctEcE*DiR;7GycqH1LvL7mZnN+8IK;3!|2t+L?Pl2lysR`y608MkLw zl4u1^jxviR;u;w0@hFVfQ)ccmU&}7@9iez4@7W47%S3-E^K8g$n06MVn?Io75@`f7 z{~E@Nvr#JDYyG3val79*?2%*JX%qf(8GxK!YsvI5kf_4JfUW|B295EeBZ?j;7#)#< zOHGW3?DDc^jXSQ0Jqtrt!6hxwx88%dX#OCUOBOaxaAZ;sYu)|k@mcc+(!=5C8{a4}tM|QsCBgX*CV1K&^MWKnnK30Px32 z#|B=vyaVE?eW*NWv)1vkNgK3zBhGGKyhf}v9B z?TSKk7o|=*6{knoabDPM%ZuSy?dHVI)Q`gr5~&gz^>9E1SLMOlU-^Py>g1FWgf{!#F+r#!t8Bl7Anard zf`RdRg7DTA1Uq^B@}qGS5fch7B?3o!^p_v;QI0tmwc`|AnCDuDLk%9Vj&cuzeDVvPR8BdB+GAy@~)#^IO%WkgcRf3qP6#g_~?)3qs^i`Ued#e!BnyQTZ6^XeQBPM_LTM!e;XU)jz z*@vNQ@{R-eC=K0|e-a=o7cjXs%{<;JXhJZq}lzX(>1ZYE%!cV zeRfW*jjVlDXrPO&q%gpdDHq;a$E_N2C{;s99(i+>&5DjJ`6{%E@m;Aqyq}UcoZWL2 z83JZXW{sx2)r-rG8gvd83qEVf;SBE*iI*5cGqRb5L*UEB-Eu)~m_>QOhZ2j0 z$#tD0-40d$Z;*u-N!<$@vinJOla;}$p{GeCpoZj-9?!qJ!bbk7aJj{CLcVTP_fq-Vx&Q6+H9DKc z*Q+vc2Im@Dmt@|i%}`7wd?BG;SB}nyogX^3LVW^GMCs7$49?yD0|%c1Fk**0xGy0aJ-&$Z4ka8 z2VEHSgE{$z92~@fO~UxWCX%F;{R}H0CXJ3P{LwqFQQvHQzd>ZL;$LUmU4Kmt!0JqDCvw8I}DbE03Y(20#b`3!Y>ofT?qq`6^+vP3Kq>N%h&HIjbblAwUgK4%cbcaMV zl1oC1WmI@w{XoU4}Sgu&p*&};bfnO?C1{#7pjqx`orppsDd!OnxZEXvS^I)s3=Bc zP{Bn-k?FTBBxV?aRstd12HfI8%Sy#Hm+4)+V?kJEfjPoyfqVTm(%(E43EM|-gieTQ zux$z(Wa&mZ+Ur!oW$TrdG>UzE%67pu-utI_bNl`*yn2gre#v%!1m4+qGif=P_dPQDPEjf_m(aBk8lxV`P8 zG{og~KNMX%-k5<_HH!2wlx+nE5f8Ovx;AiZU8cB`RAwbW!A)31@e$}2vJ7J;0%uL) zExZOoo~q05)E@G~b$Nw?af=3OqICK%MnK?a+)HELlEDR3N;`<){&a6X-!SQnPG3u^_5P@Qxf`h5uo zbOWWCD%wBtmXE)~{yCs*fpZMSU%r(eT>r*5o?m2v-0&`9Q9J9T)D5eR z5{$`J^#q0iIsR%spG+s41_VzdWBJyC6A&0Dh!l!v1eC*cda#qFcs{3fdyNkt+MRy0 zo5yNypc(8E-!!Ao%EbE)ovNjF&kU}@s->pi(Zm^s68?C-s->OA=?}4ppIutvZLMzV zYSs~5h)zWItw&GwR&a7^{Plo0d2s#08P`^XJoBcQyYLWH>;^@ZDx8+fYqp{rxxlo7 zL#H%uVdR3u|Eum~lM= zCjlkQ2R0|TI;rSY4kpP`IFWa73$>wIi?CB$G=E@yU@}NpYo@?7gkTRa0(45^8-rTi zdJDKYAT8>&w=%O5PNS&n-DI7(!1_=*dtp@1uf#g4d70vXr~EO!y3$gf5lS*I$}9Yc z^^^%vI9WP#=eUm@w(=ris5jKsF&g1f98Ym#?7{JN4Fp$k@vR4$dk(6}JqKuzj6i5f zV zqyMSX|Ij$cdl^^dVecE$S#l7!RatggeIAwdt3lecsI1r`O1{pTjS6*^kvvyt>1V97 zxNK;7y`#_)+Q(Hp0cNwE1P-TKmI9GbWXdLZdoo0nfV`41f6fjuS*ctBTtthUxSX3>Yhn`7w=+w-fE zXYAic%OtI#WF3@th)Ur~YB_;Q1*aIbIA4c?miQg#PKm}3Pl-azfms1P@W;WmI%j6A z2q2g)E18H3zd)0_up~Mo%)vKq2D~BYY7nqs*zKIYIe#XBbAxQ~?gZQK zT=SKiG<(CCqY*DE@h1VNdHYYk(NE`l}c_%aB_HnxI=!4usmXeKs(DDptPt9WZ>Am*r&b+^Q@ zVWW(%9}Y_&b*yR}iGZrb@k-uRd9bxGIvDy>9C}Uus~~sJap?EdI0_34(NmB3R5b+`?&^Lg zrK;4sS$yhv?XlNoA1qzi2)bDVh_uJd#{y*$NuDcaidbn(c93PPO<6u{=unUT1+ zYCqk6dC={7Yto*~E!3fPh(I*RXb)X6HV3Rt!58xsfgetJUnXdzeI_}^f=PfQBM6mt zl0nmkve9k!TUZ+NP%fKHrJ`8#6E!T&kU!wHx2a7kQ<%^G;rkT6;tnh`SZ*U33JNq^?%WCUdV3e3ZE=5B4OtMW@kSqnQzh zC+hqdQMrZ|xmvg9ATo&BYz&MoG%N>RTN~q7|89YL_Y)vlH02{THILIO+f?l1mq zDyG&KaAs+$E4Va&Z_Q$0v%0>WBJRoaMirX7iz1II1V6i=s&hFTa->hmBQ1-mVl6DD zjOkWMG(}Wn98n9a!KG_yxLTo|no*IdnlawEQi+>&1=MlA6-;)!!W>BFajj+(9kc8ibZlF(GE672Up%4-WG!op$CY# z;fy<(UQSGLrpjNdwZCzQ&Z##KYlFEmkoYHbJa=%78u|12FeIQPBlGO7bhxB9pyus+nEwJfw$T_Z^0#F zt)*c}X&0HUCc5C7Oyv;84%ib4I@F|R3^v(%n z)$BUsxAhf^0YLzIBW7;$jUCkhIM57Rq(x08-`fYI{Sq43^e&%p+nlmLKJ5J_%u9F$az;1)!kT@B&|x?;IppN@sQBn^nfLT5ucNeZPK z+_W#`|F9KqQz{eZUUP-6z?|Ey`GA2flr-@X@E*Y1my_uS%x(&fwLiyIs(7AADvmn$ z^sWhlEN*5Jsi#+{O$B#yk|8;%BI76!(HUmXOjyuf1{G>HGhwiLDJ*xVu?-uUR0g;T z_$t4X19CW@f9Ep3XVz|_jNdtS*?AQ{R&Wd~gPoZ-*;FXz zW0&ZT>(;-S(o% zM=l^|5g)U~wAT93!;&{)x@99Svd~cs$?XtMsNhPiVgC%$5-sU2sCA^^6*S=hRd9f9 zGm7vD{g_U~k>`&xJd5}oX?kb(+8ybpG5KyP)zKHr*<>IBfRC}xMouIL={EQ;EIUC= z6x_&E9K>QFmq$W!O2mG`B3Et*AF+D{_Z%U7`epQ9W(XgsM7xYB)0g*Nv(a^W7LwbN z!gSwcv}h;c+fIVNFFAe$;xqDu58#YiYX+56W@k z?o0O8T5VE|?e^)`i1Tjk(a-D9`nW^vVK`9DABA=)3FTS#cZ&8+SGx*sb?uv~b`1}w zsHIlzQ@I*eWQyC;rlNP6Y<8VT*0g$^{;_vP9i1U85MA%;br8E20^G9jDL7XK6NYL; zC?Rgv$&r{p2gEr8Alw5a&`X20GChw7wZU2_+bH<$tUS#H^Vz~4k#YrBBYxek+CwSKbk+ZHL75G%O43+j6m>G9OnWXmnhWl*a`G$o3Mn2 zppYde%p~_H?ACd>RVmWM3b4(OOc|>8dwqVZdHt#Da~3#eLCUC_HM| zrZjssXsJ>IExCBK!;42{ncZqpsIGV3qS0ywE~Qy&EIuY`Z54G_I(5dz=hEl)9erA6Zm)7;SoN?% z|EucU{+3+ndS$oV-0l|CwqST}w_sj%Zg*;GSF2V5xoTQeHHoEiqx zviSpEzC{3Uz>7yH6ampxaKT9TP?-bb=kp~<(CvKQ;ynSVx+ks4d-DZv1&K6G?;3V+ zPh!^XFnnsbxNKOUG2Rvygv8Nu{^lv~hvp9ouKm$7xl#C3UZxkQMfoZ3<7cj-Q*fF3 zjujmOrIACVHO!sd#%Kn+TIl*MW*qKo@#WM~Ob}c=>wAcdBsFlv32qHy~-B&|X-1m=XaDo**^@ZRF>FtIJ=QIhb603{~6 zGK5!fsoPjrB7B(?D(8?#Goj%WB;;nw#x+>GOnY;bYWz2+aC(x%364-`)LBUw6%|Vp zg4Tu-qMMxo`SQEym;!rEht5QXcDLgYJ9-WQD&kb&(AvU`$?Gzk{Q0nsy{x`M9aJn6I;&eLM)Q%`P1aCCJX8*KR z!DCIJPijUcXs_VnERaq6H6^$|AI^eHC`BwsAR02TD!sf-TWkp_GvI0Al{onzZV9b$ z;sF^8Y_*U9Q@55-wNfJ^rs%{2+jA#r(176|7R;+!Le9Ad)v8Sz%$OKkzJKSPvl1*Z zE!yDLqo&2yc`G_EI`yebPmBr9{>>~Gi&Bo(y44d>PB+D{47h15Yr!*x*|TJ0mt_O! z!wdOWo-L#nXoBYX_HUBpar2jYR@(kmX!1$^{F!b4hD@N~Qh4D}Oknsi$qSES0tJ`C z3n3Gfr+x`jxCHfC4}0Ck^sb2TLUPlsRLaMIm0$vcVFtsfG;vf>5($X8JfhHCPFZ|D z_auSN@Js9tY$UxCS0)PX>3qZtq|lzuM#4V|E`yC?o0-coRkK@yr;4ZB6;6Di8Oh9( zs1IPK+cF0X*`7zITLz=k?W>+Kr2TQueW_N%M1Z*T33snB)22vYx_G5cwaJ-QBuBxO znrV|RXk1)Yw<`0*#m2XvNnXr0{%4VwJ(ibJGqCHGCfGprXZhJTg$?3Lc!k+l-Zhp; zl0Q~t4Ar0tF3T!gktGybmQl7UM;O#)7-di9h;kaVV3*Sh$1IVO(H%*s!0J?KsZ~nu za&k{vvS92F2J@;Kbl=gSwQyPXbGLuk==R=;ghV2EMEqZVY#wjm-(6-6q?fEQ>2dp0 zXM^`hhOX)de;_+`;hO8BL#7*%&9J6#;_SM6869?YcNHc%)%A)MT(ky&J&kc5IUXV4 zn#JQ_C^9`2Mh6&86r?+UWmWQHHe51blC6Pc8Zn^ZrATZO?(p!%6{U5IB~g?`DtJ}on= z*0fTF{7+`pIyU{5^-K06l`<3z&#D&8tIn$5yR&K}BSVX9nY}uapSI~$-g#BB^uzm` zUiBRpqz!MSB`Bw}V-|tG$FCifGqzjCGOtRQ&BnPd-LiQ%$%Gs64Q%S5)*E#bNg!|h zJFI%WmYI^WF2xAVjO%uUI~SO&X`6IVYLZfLNl}(upYCeOBnr*atW-8RsAEJvCgMp_ za#B#gE7Z!pBDD@WOv-Y(I!WA@BV{RkXBq{P#6BbYWwTM6MD{K`i-_sd{4=W-C9 zv5%{pk_42zBS9RL(UGZRkmg+ zxSO0ETB~f$QgBSga{HrlsMd3Mf0(yTE530mL(UXhinOKege=JzSYV$8ENK4dTJi)G+9Ofj0Zx(n zD4hv0{^x2gCJRtlj56R0Erz(sxSV==+{w7*(d;7l36=S(?_-%GJ|G3R+PGx0P9uzh%V61+ zCmjPWXVY!DS%@5{trmY~{dUQML@NSm?cAf+G@-&pzpnH77`d#4IC(lAqP? z+5|5KpUQR_{Kkqv!MXZ?)A|@NQok5%*3O>9v}Agh&1yBUn)J2ka@MDiGxm`_d#Cl7 z4bGCn9HJ2Ub#XZiMWz5RQJ+>CPa;9VrQ@Oq2?8`6Zu;e9)5~7ZRwFu-p1=aPYzUSy z$dN67;_Od6`jD-4)2mfEB|2qDPY5H1fl4q(0YVgJIP~<(sS%u^e^%M=UpHq1*2Db; zSX+}{MhUryGIG^Tje7MKkD)A=4cl^U>nm1sS>QsY@eJr z*M9jC6Hjm{kJb%0VVOR9Hg)UZ1M%St+!wXtO5I86t+U+ z!ve?yWtG@CKLD35QBX(Dm^@Oak>+D_BzSsf6`a%OIk}G#=oREtw-$ZsE_bxg&M2{E z{{dC3lk2hyE^Wcytjo5r42#Ks^~G5sR=;)B?KduZXY?CyPjzk<8j?shhLsoxd}-jcJHoRvJTem`4Ipi3}Bj5#`XLje8FZzvvE@hCy{ z)bGMxE4a+guh?q?E~E1~-HvkxSVEz_C}VUxpYih;ujE}$_*oglpG@VXJi-{^l)6kJ zJLN63^P2&zR};t76Q54_RP$ecBzt**Wm*L%OSVbUxFR+{fjS7u0!zK-TpJX-=b6U| zv@8_7Z?A4jTx^92v&Y`-|kkT%#$kSRsHn#<^O; zcQHiZ4Mv87GY31x2)#0i6TQ;d5^8N9zTa^^1b{PH8}Dw(xI z;e!p_CLp*O5qWvgaGvbE^G>lTM8U=OhMb_ zoCdLx3R1ykN823l-fpYP=10@JG`37v8>RI{4;th6?DRt)jFNwm$xsQ;If24;c~;Nv zjPNP6aDq>x3~D--#i!i_pR&Pa8TA+|4VFU{+7tLR;-M%whu+;Za+jsEf-53-Svo7Y zmC4=xh~$|V@R-e$kW_TIkr}4sm#4PSEm*5 zEyu`+Fp8zqF2%_95UvIpaX2)|xN8_Bmn5?*@yo^ZmQX3h;EYL<&_fC?sgBaE+6C8v z6%mfA$%vH~4x3GAY8kn5T-R0PU~3f2`{*J$p6{!M0^zwyN(KeD8a2{&4DKqpl}IBx z=IFH7?vO_4f95_WugXKcHX7QM$22{&O8j@9*Bwba@TKvWcD>eW7OgvK-$OlPfk^Ph z0C^of)6&x2p`!UdtZ)@cc@MV((>D<&Flq*8`r;f_j?94aoATRXVO@P^2#S8N$6%~Z zA0EaZ=DOLkl_fSY!h_oI^NTcQ=DM zK^aq5P`plbnK*mlnYUrNl$ot#!s+(us?8`hx8ho~)*5LEY6lh76r3%r#;3t@)R?;x z_TloYeEepfRW}W35N5EmTb?T{E|LSyZ4wnP}O_#;F-MA6vYafaW7X;2bd(qI=j1-)0X?I==`30T!43(8u==f$cyne49?)u#sNmeqvMm859;B3>qv?RYslerhHMZ6 zE-T{f5Tw&;HF}NyMYr8YV_BEGS6f!EEE(cP z@*O{p8w)jcB45-&FAh~uaHL4qA_QB197+wi0q+aX;Mz2dhDz8~zm~tBpoJavYiN+6 zg{>ON(Za6&RdB^>xD4$Pf6BX@a# zuomA%NGnDl!QWGn(F^ZPNr`69>{v zaG&f*fSAB&IrNd8VZd3~23&2cYMWr#j@9>Pnj$%cO=;sIP%%I_T8DfnIEXGix{U57 zh#HR}l{YwG5Hd8MtCJcT)r3iU^^MuaRJd1=l>kqj3Qd?+ENI0bX{i2uG($yrsEDc= zm(rnxGht*v4a|Ix-`Vt9CfKhe!F=i?`!yznz6L1I4BiGL%;{ zB9G6ThtUwWdz3GmQ<#?MP13iE@m(KNA7}Y&d0iCWwyvK&z~*wgxN(Ze*mF|co#q>f zLT})$)XWjsWHcdwXqcjm`i;z-)5-l{Hk!*8J}%gT{^08YiOYlaP)YLkh(+%QUsD!F zEH;F#j?b}jmA`1^9GCeMH$XhhmJ%cvTA2`bKls%r?pBFrizGgF-cT3d3_yG2;|%Bc zwID3F9BNWEphQrZAOpu*ACRC^-F2cb56Bd%oAf;AK1$^5?zngA__nt1-olCNwYL#? zZ|UErbY->XKH0_hytozK+XDddiQIep^zWU@_aRh;R(bfIp6pk@k3ekz>TZ2M0`|be zp!Rkna8bZ^_w8G=02b*r&WEVhtChV7Y*eVN?bfP05#WdP?~BQp6a&o1o`PFpZ7#KB zkI}aZu88f3>pnGpXkVQ7Tj!ZcVU7hYSy^)y4{WItt_q{iH(1%c8T^X=Y0cR<_qCnc z!rM~U4&ghSXf^^4J(B=7Dz#i`gtQE1N}!~DnuiWt4oX&$#7OlER}5#?3wRDO#2p3q zEOKbm-Je4Y>7Lm&>OF@X?nc5xPn5%A-cWJLsnq;5afz1Whpdp0D7Ye7DegUSc23W6 zIg#j9I6Gr{!Mvi-o`x2})JYVOiy{GYYd0K>@v~zCrj_;#<%vHi=VKD;Bfy@@~|h z`G0qJDe6&_vVBp(Ar8+WeP7Dh$UZ{}sYL;)0+djIT_>VH`lHdz%;n|_F19nlI?smL zF3FJR39xtmESQcY`!toufQfLQA2Pr$a_2*5CVysJdEr^B13q44bEc-OY{n^xNrje= z&tgOl6t02`Mucw_M5YQ?p`hR1Z;1 z*0zD*r6Aa5Px3bOxwocA%pwEWA1*l=i*%U(#g|+JtH!)wG)9ePTc$(A$gsjqaE)v_ zW_YZ)^2b-a+a1{k)J4+)ZP^@d3l(xRAS0f%^zA^w5vK>YcY`5H(=ep}pS?G2ZX-w5 zh5t%L%!iimvD)0U^?Ccg!A-J`sl_C1^%4^m6h+BAO_3Us@-n~vA`?p`stPF7O3jRF zV%m~e%tRs=BoYq*iCPdVNPHy-A*gagy;||6EtcfeLT0cR!DPe=upnZq+9SZsIkHcn z_I(g3r8|`tz$-WMi=u+T-{nv z?(f+s%l>u?-2*FAYT=E1QIPW|)4#sM%j?;6#-?B_3`(F0hhYhW;c}x@$gL-0n8j6f zb%i5NxWtm(V1QDKMO2RKUodHeu#EC#u|c>Og4?iDkh@yaKfUsvR+y;cy89H?=a>#~ z*?u~C+QM2|+HCXS9Ed@r?U>TYOJ5S!m<3BTMj4;r}AOcaQNGm-wzv6$BOj zi=t)@Mo89;t;RUNnE#VU4~e!yEUtn)h`ED8amly~U-pAzAow@Mbc7y11JQFme*o+N zKPgCZ-5^(^SfJwb%X8+|R~OfV{^Fe>DiDq#iVi!*v8T1Vw?|2Kly)&PE?4K;FTCO8-|5=un|btoI6 zF&ry!^dvJEnI5D7_W?R?eK+02;=KhqE4DAr6rtPr@B(f&>~%+WEG4Ym2|7vrs-xkH z>ewJG7uvDk)}?mr%`mxRt!N=xU2$@2F>JF56gg$LRy%QVYizgf)<{LUHBza_tvlx| zUngGORdH|#P76bk7R%*`Cx<%q)*Mc8<^^B)42CuSnIOks;k4utJ%XgHJ0M7v+0Z7y zAWb%ibNgwd4yYF7Pyk>ABik?D#qa=6vu@WLVzl|LD#n-+z(68V;FPN%rx4*abvG|k zZT@-q_o(e*r!iN?LDM*<(1(mKe5*@h#|E#(^elX+S}xwn*R_J0tpCOJY&}KK3UUGO zn4Uc{_Uz3tQ_uF`^jAxlvd?4slK++Vo*-xM#Kr0Xip8;=sduAn9muUp43MU2x(NEY zX76X^0I|&r^)ux+Uw-BJm%`0m4C@kM_2;m+vn3^=#yKvJQ zJT$Gocn4OTBhl&_6RpHm7v6Gvo>keBOPjUnqJ2%)TpG2Y=qomOf)TzyKLu3#8m@E# zyTMGE*%3dsjeJlG?{Fc9BsGrs7MEsS9na`>CL8wFA(kmN$dC~Za|1t;>&XFf`v<%O zgDNx-lMNsUXE)09K$#xe67D6!GO@7TX8o z8K9cTw*{w*$y1Yu+zT$;CGBi>w92;3TkZWR{_J0>)3j@V+A#k zq!#YbroBTU>Bh>dC`1D@DWujKt>@G9xolj}^RAs(mpvBqf=4YxSgA;O1pjl3gnCg^kP(qkkf}5hlB!3erWQr^z0>E#0xul;Hox0) zs4-+*MjKQnI9)BCA93I6T7k&<8wZfQy`L=ZGt(916nXx}A<+H!JXwQaDM$-yu?^>x zkG!z^fW?ZuqJE(Jk0AGpcVKrTNAHkb7jY6pbgv(XiAszdYI!&@!Z(5x<7(h{4&XJ@ zLuMzX*h{Mh?HXsn&^GgIdG-X~o0_RlZ71HV1&{95Px-ryj}&ZpsM><{{v zXXE$3$}#j%9%x3_WW%RJvf0F!*%D846T^{0(9FKi0oJ9~J-CUoR=ZkY6J9etWm{mQ zBnw2#F2w>{P8KKLd%6rPkfd(AB1F(;RA3ZP6K8cA28|&Jr-p1aX5cy^Wqd zZrP<)dzWNLsi#(PcG;xarP>BiitnA2LlwF9kJM=3%Z)#ubkm z6I=y3oq3Gw8j=m~M9VS+wQz&dda!g|K`v{qp=!GvV_qcXIyN(u&m$kKL1fK`xCSS{zVN zOXG$%{}bfWxS`GeWY?u|L!19ea_(+ubwEk3KtDW&*Gx~@Y3fl)eu(~EiXWbYea+@% zQUyouzGibWK`w=_S-nh>OPE-P?BxhvGd*S73l`W)uotw$Qtah8i@l^-7JTXUatN=P zo}?*DQ+((&W$8wzET?IvEKTE-MUkm=%F-fJmU_8QwVm^^vh~xKQ=7+ql2w<0ejH&5$wGf zt-A?o2B%At3TdZ1=TC*8w*<8UG9gTX1i1n-A+Q;#hm46(OAl0a`|@YG6Ox4V-r#_Q zr=aG<*}>-pIjfUiej4?AZr&+XV0BWHch(}_sodG(q$%7}8oA9&<9aaOKLs_rm%6*B z^kz$~Nq?GiHCVPW9R_wQ1Z&8k}l)?IC@;alPxiEdeJD+*xKyf$o13Ct)=o^A!oT27G@GHPbz)nzQyXXHIj2tJEJv_u6ZS*) z<6+{B5~|^*3A-Xw={S2x$60z9Fpo(PPGB8*s}d@aYc<7&%fquBDvo)FvD(MS9wTzkBpY_%+_2%Dy736+x{B+Al!|7_dncu-F zW?=pEy|ohUYqhI{DqHu;BV9iO$S z1Me9gQfabyztQ>YF#s7s&NePLQdAZMxwKxMGV#ITFEQ~s48>I&`pzw`ntL_|_~FvC z(OKb+d$yISXKgsOygl2@)U$Pcfj+{n`krlO>RB89DsRu)wpv(vcGqjJQ8_a8tPO>f zlpq|651kSO1R))V5(NC8TY_*%5(Gs?BnW~`r3u0jO%N0aDU$^r*(|VTvcN{d?v&~+ z@W{ymk3tq`TZD9*ESY;Y209(|tkJg{30qdG@7cplJ!@O8ODeJ*i4UE8yPLDfcJ#uE zY{$g68!owKXs^`6diDIIYtT{(Y6=&RZs<$!a6a)A(I&XgKLt5=v*jBA<5_Wntv;C>rf#LhBVHN&C5-Oe4>wRwkfRRe88+A z`y4i+poF>Wf2M+LGvV9{vQLG>3QCv($LOc@;%z$-la*9#b~>8V)_mqNPPmNmo` z8nd9bjkV?UxDII##Tc_}TtT)h$RYYDjV%YK9`UlVrB0M+%V|zMYII3ON2?OK+H&;T zCt5c~I@Q?nRd3uqJtKx3TszYh7s{->FDs@@_9hxu=qO^)d~lVAfKJTh!IMmzGEl)` zz~XXe`SIo#geJpHbe+L5Gy3lb9`sXVzg4TfJ7_lF9UdONfo?eze?P8C$G|@yi9gqC zhlg*FN(-no4OChI75p8z3334y_C}Mm=un)ED*kZb{g-z$^sk5g_66Kk{$E~~sTB`X z$3F{l;?rL}K-6!$A4H!$t!IsPmqJ7K-dQy75^59s^0_- zM>X(>HEH;1Z_CuRTJAkgzQ1|L*hnaS;6p@xW0YjUvTob9ZQHgn-P7IEwr$&(*0gQg zwr$(C_3E6v?z?O4UA5y!<;uv&Z%0&ywD0UcX+FmM{Mc)^?1l&(OIc3wZo1tkKtf!B z=d^r%0a@SRd1T)9>n)?uXWvow#5%EWb=4o+*1GOTVAs7+Qn|XI%qd z#-SZQ$5YlEdG%%nr|^Z!UL1mv5wA7jbehqvGUi!=LtO13Dy=p^pN%?w;xU~?2N1#7 zKQ%PDIa?pRiWOu&e;#(V_Fd6k(4xi29RyYL@2_?EBV-4C)t)B|BUrWwdRlaKi|^b| z7y-(V*+lO8o3k|-bhBdu2brT1*BmqZ9*@0}Y~uV0(q_Q~_Ph+7+}mg|4|0MM5})0C zkctD(S;Ia60YMc7Rg;Vx*+A1lZ*EDZ6QwB+97Xu=NTLB_IOU_+%PDb{FhsnPoDhYa z%Oq$!A;?mIh}U_|L(yvm+Y**ZhVzuBjw9M!HTrB&_{;A&TB^v>FR~CZWJd}%L{c`X zU>mAeCJM3J88G(OcG*n-jbx3Pp}{bQ+A|o($$=u5`<{Xc6(cxAuR3CJC0GzyszN1{ zv1R(w5Xn(%hWy&Ez{t~iG36a0&XK2jz#oRoUgWUcZZ0>}_}_7|S56iOw2f@v$0}uf zVPLI8Dbk7;)-bM%N6<{0%que56zDM}tlYw2e#&Ar6TW{q6dLr9&jiW?Cn^4xYP%!qjjt_1Q18YqFP-ZtTw?ORsYbP~K9)oTy#yu%>Tzaf6gkdc+T)Muq(l zsp!pi9B?SQA26EtJ}arTa0PS*XhfRtC>LZ;2C`JuBjawF}_;t<#3o zI)!S0Paj5-?$!0lTFNXH{2#iXkHXsR!QF?Rktjz?wFzWW?b~f(e^o8o2$%o%Q46;O zJ@g}PFQV+Bq)Iu7zm2>atJ#b@fw0dBT%;ZSn((NW=WW7o%l@Sx-2Rs0!r$Tes{_I7 z17Akk%4napq%)V?N<;p+FhDWF_2M@(nMk=|(h+#U^@ne4Avk1tm^~^bRV?|xmj?E0 zEJK-%UiRS0Ob#t5+es1ASVjA!aTqIP+|}3aPhm5zK)j4o>s7iC3*FU0;{X%&+9#?t zFNa7<>tGQGZ-P!WrSaC`%dP5FI;d+&u}TW<{82iuq4w_)Tp|eV8`GD>lOZ)|6JkiV zUD|$P(j3^xUkI%k%I%=u49$Ix67}xDFL8#iNke+2mHm2QztjGuq=2@n-mbzXpT-}-cBzQblJ*FGNG=TM6Q{pobS~)S<<53>gzjY1-f5S zcwyY#OGE|88Eykr*zDN|GZPu}(3!wG6N+j% zemmCKa#!b99?=?3b+GA<%)hvt4~Oo@_pRz|UuZ|%YtT-0hYIeOE_nq&=jgZ=&RP+#i5D9AUc(}A1k8{OOfwjYK; z@8EBTrF@;OcZXdY+s6DO3qWc!?#%3;mH9LXneMFhl+_r69tfPAorNDOIJVC^_fGiAdH2;Fo#VGBxoe&FaSYcC~3 z-aI41(rku^QbJGScAL1J2v8IHNpaR9BM;Xj0bnq{950j9Z43nhukh*> zk}&$;)w+8tK?QyN_z!XXUv3#cEAn54{y{EQ^0<)TBVUgnx|KED1Z`LsUz})Jt|CQq z(CQHCAEz(YU)YNd@PG72dvTqoV6yKyaxR;@0Jo$0a0gYIfS-**{E{wRp*GmVMZK~0 zof$SuT?i=O79sTK%%AeFp1shY?KYeK690yd{IlxpfjI5>WCK01C57Je*=Q((?jieH z!@?WptufvajenVPD8sJsLKO8M zy4Onsv~KA%%1_M$Z)4os7H1=E^#|=GcJVnwH({d|hi$V#f!}1U9Sr-*RfDgaJ-bYM zC^jKa5DKn_u|goui3X4ovZ)#_0Ro4xEjiB0g_}UuS_b=N&U2XcwY`9XEw+VPhTb52 zko4#8SuepQU(W}Ou$8xjGQ_4b@E-Q)v%pQy@tA)I3LqvxD`p3~(F(((U1587ng~Rv ziC&Z9JF|O_thh`}`R6y(v0EQ-dU1939ibJc$mPuX@KD`=RC*1#UEBm9IPX#fg0MY+ zf7|LGb1ZuFUJT83x#=L=u49vLCLM`hkFg%*<{FwKO%zDK{Js}=X0X0pJ=erARVs$4 zt^JLQFQ0s1-?v3S1laFw3O*GLUazu^7f5x^$=>O&U@ubXWZrb&v@L$dRCG7i9jviq zyVgQCPtSF}Bu%U)nC9)1H;GMV+i`}$PE{Bdbm*`!H zgS!oD3QX!HPl=E>W`gzzUD!|@p>7WIvzGv4~e2s$Y;bDbZY638d1`*Bu6j%2Pe#@WXwcB#j-RMgv*adg_RGekg~T+!GKe`;TIJFk)RDc z=MR0o!xaiL!;DkPU=Iy}DqNkbPgEex+$W?X@=J*=?qMFJ09ZX&i|Y2#yjLan5*g?& z;}0oN<3|XX|Mm#%*Y~N>l6Y6_wxchs+5?w|$c2%g@ZwF*)3EQ??oIsfj@5x$Fm`Af zgRI#|%S6tguLHeoH=dww#G+5nftJiwF$#p_WP+QOi@)%{e;+^6^FP~|S++MdHu)WH zD&g}aCfa_K+M{wZ>VMcMNP-2L= z)~yCtiCE%Ioa=fO2x+*^;kT^b4FP;KI2wT#}^dQ_ZU1Qj3h4u z$ZY`0-ecg3*pj@A_;Nv6)Y9mCx-#WOL~omE$|Qhs<}SgxJhHFT!Q3VAu0fuOA>OR{ zQMI2{fK0%p=}TMV)M)u1l5~DPeP{dvZ))Jn^llp2*5YB-uAL{Wt|$gTr)d-x!S|e{ zM_Aa>wOn(xF<;+ITn;}LPj3N6EqTz8FQbp-tGpt_xWSu>BSEzKHqbrc;@T9X+UD-3 z=jVDvya&8djec_7Pr@4;_Xt~g!pe%O4!(l+o$BmmwMM=JtQd;h9MV53{thj272qyx zRJh&@KVFxkW{}Je5Fi#Z?)O{4vM{_Bp4o@b`?)sxB*DWhjc>7=D6v8FP2PPgjsqzB&kC^?Hqwq zW2OE)rhCHGmbVJ}j+@gdK)FjwG^X2}I$1$)d8G4~&u_#kZSmL^yVNdIFDQ^?=8mfm z=jkWEIq_Vk+cCk`w=3g=WT66o#}MdyX$9W|JoQ83-Gf&@jf`AFZN(UEtKqehj7|{} z+~Oc^{u=0fzQ*NRTX_S!y8nc^biVi@yu!0UFaQ+Z=EyIbfB$|%%)vhYT;A~x7=^nW zfiHxP_Z*=^>?MTi z)6l*Xcxsn)+3uaLADH<^U|k1frTYCDn#gaptRB<&LN3eT6rA7BU#c^!mMc$3A0|!~ zPd06kj*5{Giy1r-vf+hj(i$8CjsZt|#v3EN_}jC=1YSAA7{pscUig8{&CF-Fr{^y0 zOXVjv)>jair?9Q#cb5G{;bv6hQ3s7>v;9N1Nd9*N35p1^k6U!NZT08$V1c z&OTt~%+8TouaizeE(}O^*fb{d0COuBr_au2L)lzjAG(1z7N;? zfU`)y{9fAx2HQ)RcD*>KmB6kK^fn<_5HzGmK})ctUNRg+sgs`v!pfa4r^C9?E8@UR zF5KOF%jkmc&5Qge66=RQo+q-;1-nx`xVz(n%qAC$ZXDwUb^Ou2=FP1;g!iR&kQJ|r zTHW|vA+1t&Y@0o%XQS`7Pd3z}fXqOzhPA{OFuThE+Pr4#+br0+5D;h&Qs1tH5IA19 zz7RQs1*5;4Hi*-_-=|+ov#D&iB}xki2C8ubI_g|{`s0DXxE2HIC*BYEB1BBT0IG>u zV!u6l@cZfkqQ#kNm-|#@wcrRhy0MnkHe$Zq0Q7(!DCW$Sx>3iYU5tuKW75H$$8)B8 zK`aREaF#(_R%AGBoW|sWs7}5f`8l#rjIJ3NwVWsT!@$oN_;FVy#AY$mrXYEpLuALj z2_ABzw5TPf`c#tt3zLwC{6_Zj51i-fU7SArAcXsV$8mk zYtN!Ux3+B3wz^}TI-n}oaKXd$t+OSSp0HU@e`eV@!UR3L#@W~1(dusd)9g8HBV=a# zZf`-)ud3_Lw?p7WF9Ed-UR7*Gu=CmOWSc%An=y@@j|JtS1bkqF^FNrO9r zXUzjw+{xJ5#yVt&A44{RZ*R^ug~foB8C=4fdNUp60i7Q#0%<}AN&nLs)5eC6k2TeM zG+=_*m46267!B@8r=IoO)0D7(lLkF;ICVMZ-h+ce{k91H&TN4Gn7&%+9C~Xwqa4;g zKU(3>9BWqHv}!4IS0A@-A?;N^_|;RqFPvrd=o`Ujob>r7kSEK>6Zle$zQyjG^71Vm z@~ZQL?ba(7u5g>tf26e$<*+D9;Ac9nF1g#0=%fVcqwaF6%D#c5}Vn7S& zfpN^ccAscMX9HU*e*7JTsjugBvS81Kv3j5v%kP3cqjUOUE+LRnQsY;}+LDyUfiO{P z#jq~04R#hmt<~=(xDK}F)=6IL10IWwdgVSr8_W7kSbTZf(z3u{bhMS)rjn^L=$pQ*6P%kB}}kwDnCXN!E9<{K;615Vu6Z1=^liZ=ji<;~=9ywD_c{MPC9B0q&I(!41(huK`&f^n>|M2(-yX^b&N?QxeULG4o#x zi7b-pqGolT?~-oAU_=L6qo_;-Hcs(_|IO9dQy8bxM&L4(qisIfI8%K0c!>X`SSB~rmivdwq>Hh(^y6XJpdt336p@Bt zv9u>u^~%t@F|l{=Hu1$PTAF^%!-;JJl$ke zvqA7SZ-L*j#Qn)XR zaMoDjAC-cWiF`MH16AZ4+Fo^!LT?b`%F9kW$y`C*+ofA3Fe!6uprnH7HGJ>V)cypa zcs9Am1e@m9jUPi4GM#H6FJmw`+-m-`a5W(O2a_?oC&Gv=c&9@3mT z1Pbc5IGI1XA*J%vd)&NikcdP?o(OLw#w(u4BVlcpS0>*o3B&bipBRhj)F_{+Vc=dS-WEg$2!#t^5wRMh1^ucttN0NVA^}E;GML?1J-&7!B>QcKVJ( zNIV@Fv+j%rmGp)ITd-ic1gp;;am6d#@d`6RryVE_^O^;O+z%_ZG_C&Q_{Rn}Q={Q% z#e18&i5Np|!3~g zB6Y*+R|h+JQzheG;naA-y4{#`m3z@;;d4fI7tXwzFoVrAjR{mqRlSQvgSzNC&1liI zZsLNPCFW646$t-Hdds{-Qe4aZvIeSpSx+E}y71p(S#A_{@v7NQ_G+!b$=}b$TtPAB zYVX`*#!f}Gf!ed1xi)_sHP+gNIMbXoMz6uz;J7WV9cjjjW|WB!Llaem=|v-PHoVtd z&QumxH&qj&VeiYVtw9OsxCYUF|ekSGD&Is zVD-lIE-WW{VYscO4zR%J?sx!AR8MFT9>JSmq;T_uVc20vP&0G& z);OL_W?Ik2T})j%G4<*ZTMBm%dy2HRJoE!))-a{^;mQbdMHKHTRC z+kX1f>>I-wlmO<&79@uzi6;lhu5Dq|5hv@<^q-ZFBtc{)~_XW3$o8q*6%Wz3Uk~+tA9uhM5|X+^K#2h0K5Z`k?Kno;UlXgNSIO(8$v|~t;NRU5NtWhn;=sl-Q z>05D|fkA&$I<%_f&mt=#?e|EDB>i=F@flPZ%AZ@X9xp~^0gGJxhvy~&L_}ws^^1)=&>S6aK5mXA!SsWJ4|YkPT^|aF)EsVY92)WchP`G z#EP4TKjfzb7#~GB99~9*?4lgW18PXckx#ASp&cxzKy&Q<-Ua&G1zO+<#ao~KXo+RO zs(Jn`VMA4fnzeluuiChqq3v2^$qO?yPh#uscnDY3^4aN@Z*p3p}`Pe9?%#Y7|&^KLH? zSm2Z%tzH!PN9K1HR~cB-l)y}6IABnyVA1$r2hFw$Wqs8Ag2Z*8*=b`6Q6Y+jBl1v= zeP}>Dku%F8Q!f1gs_r&It{2)68Y+`X!Z8+zvOoDYGU-jde?0iNZS z;`~hw>?sJh*d$^%C48_I(Gd(bVYiwI7_EhRkc$cR%1K%^3U)P$+Vp!2{Qg~-Gw(4Q z8iOg~NEm2F?oLCKNA$2;8BvX_8jUpdO1bqAC}9RyeiC2eeRNtC2(?haHc;1PT1n#0 zcAq1!;h&61%EM%#q3QVJ9^gVmU*!G8sSAAoV6M9bqMKbTqnsbit58B44WKx3pZ0bPWW zUsF&qG{NB=7|%Q&91l+N*W094lUNu4aH7iw7ZE{w6{yWqDM#A5Xsc}im_ni2t!(eO z7@D=VBKeyI26&I530GU|G&M3U>f8;j+OZ%Sttj0dI_*PFKoWGtCe}umV;xJ$TOEt0 zEM6c4%BIqZPMu(!#eg+BB$RWSk8Yl&=ynnj;-;ZMXN(IAFbg8JU1o zP}|KB!&S#kr)(CZEaT;u#@!|WCMTii09C^lyz~~C7YwdD>kb-;LbV2#9-nfe89yfO*qOsT|ibNHeWYiDT2lQ4`zsJ z^n>Gm5H2u+M~)T7HE>)sR9OiIwOruR5ex5~KELOh7L9(S93KEHs&&94I~qLzR?Cn5 ztK|O!D``fUc9@#eE|IxM@UB}CT>z|<8r7*Z*IfhvuxexU&ALI4RD(c^0l*5AqwbK@ ziSI67)^G!zec1XUooF!X&q}a~8UR)y`A7eSmB^fKp85a43Ml#i!^#Q$|6oO>`CnLt zMi_Yk+&bP8Uyg< zM^1&K{Kk-HZY?z05K1rRAuPMvN>mZ!&KsDI4Bn$krP&zK5s=S}pVxL6kZ&RJ%93lI zj@~UYmoGupP90sq64L*Fa%DnCqn{5c{_IN-FrFm%9>_BgAdLkMjGEaMPC<#$~lg{mIYt#$srQ z?PB`0L;lyoyauePKnOqw=9%*$Gar@KD6t7oa~my441Qwc)+m}vuQ>uFtTYahOP5fO zzw%3D4#5>%+=w2YrsYqrxdHhuW|JO`N}xZCxu-jTHz68nfc^?nZbB=a7se_#)~qV3 zjuY>Lo@jb|`hXF4ny;~-PNQhuYdQq%&mI)ODtV_U0ivi5{|sQ{104R=+Hp$~o%q6Y z;emQIX!PrYTS9ZGe`mGth342uy|I>q`@|m?Hk{DY4BzbOh(uy(XAprPO!kI%JYom_t?Z#wK*4oWY2b(ri+r#Xy%1 zSHKnIq8*0_%}D@a$obD#K)|yhn!*s4J;epUaS{cil)4@{M21>rSl%FVeyICxH|$vR z?4B=ryfF{Ir&CmxLtDNXiotf6BPUD(^g}GVGX(_%JuQzQ&o49H1U-s=khfpJlqnX6 z-i}T`W4{@6ef8zBrj-Y3p&lUl}=|w`&F1BwE5cYu5AqR3Rt+WCZDC zjicr8yG&K1-1z*iLc~UoBPOpJxAif(3YcDrmMMBknTc(=q~~DCli7!dT^2qrbgY~d z9!ywrB^jk}g%79Bef{N6$;Z!U-qU9-~fY!L)w$Md4N=&)n5{c{;vvru|` zmpY8Yr=_6oR^B+}PB$?BeNI25_yhh%qH1EgLm69HWM^QZ5}!G+KXD$=w5yD<&AeAy zh9Y0PuY59SG=+n{r{@ZxzJ*Bo%C`rd_5}4#lfhj<188eApU!IM(kjxy>jd#quHvNj z5d71M^+yq%RGLFcE)ES^l^&1m0znPn>V;1bDrTt&+%8c=cV4!NtK^efRsokzGB}1! zAWMM*A1l=U)wE7PMk`C^RdR9=)sQaexpS?vMO9$Cs0jBEAar(FfyPmXJR3ds%imWh zR%s~v>R|_*`;)cBypU)ag}WBgU5=}e`7_}4;pt=N#cSX>q!6NF_61e@wp*{ZjHVlH z2k4o%e-X{fnr|6{>{gO^c+hN81xWDrF+{xgYb=mGBxpGmydeTPANwDvO?PEBrkhf= z?u5we0}2t{jADIcYo^bRVIpCn(OeprQ@k0~nb*Mf+Yq=D_Fukqd2|RX);|Z9yd*pX zz@5SJ(CfVrXrK3rxIiqGlpu5c@3=@d6V$m_d}YuWE=+-?-QhfGwgk5og3k`b%`1eB zMk#kzJF$gFkESnJ%d5LBAs#V6Tk_4Qe$C#PpAx>0J%-2;&`(TS)5}oJ30|PJ zcH1wZxr@jjl8ZDFtg~Ld;$W3UjaNAV?;QGc^pHyW1i`wOU__&*ARd;BJ?!?J-Ym%U0_Iec%+O#U9^9%fft~(WfdzO z1Bvr1hn2Fb{X!yBn=Pm$#`Q1TrqyQm-rCLGV7yp*7{K%f$9-#fvEbhM-gj{@cc}}n zYlH^vEqLxSaGJBTI?w;)yf63}9d3*Z8#g_=n=N4!#0mok6CpQQ%`@a%3~9H{G6pf^ zg7D}1NvVSEN?G~==cb1%y#2|@Yxv0sb*##2X}D^^cG4eAvv~FwcZR~5kMv;H0hwp> zr%S#z7Tl>qE}+6=&ZQ0vCNgvT7!aowLu~jbhp!|Z_Bt} z`fP+{z8wQ9Jw97^pcJo&9B_b0_@Z_7WnKn5q6EQC{Yo6dw_^Sx4ZBdoA$f5cu12bRQJC$!Sq*)=~aRHEl zZ)b03=#FYmf2kav7pNC<6eypG=e2E$AHbsu=%#fmuT_t3b=0Hvy4C{0KY%BA#jj0| z{n*c&JNO^k?QY}HcSSrK<{mF7d0@YYyVf!UCtDIjI77Q&)n_(JPHggxyY7}o>vQD^ z`b&|<&gHXw4~gLh$}gvSra7HLETatu*p_*JDp8~Tq}cz~?g6>d`V3T3e4=gHNp?fO z5NF5vW$ith8)$a85*#u^38(U*BM$EzkUpPu(|?D)%ZKQSL-<0E{=@PV-D?sasKBZ1 zh*~qgidji~1C$)OGXB7;>sT!3DK<3?vjRLgAA zd!}PWC#(A`PZ`maP)2Vhhlfw>v8TbB07f2z+w0&WYG)V|AuxdmIicamv zab^VI-JZUQ7+`+d=<7AolOdblb}Fcn%=6+v@V%=xyLgkiDu_fOMEodO8OR1m!XRi{ zN7N%ubk-tVJu47_!bfwqY)QdtO7~!u{*+Bln370EXI7b0DA3pvyY*v_#bD6l{SyBK z`DB+U_flvzo`IAv4NR>t)?`}rPhueuB+u8VXl1f&-v#0J8W?gkQ;4lwm!Os3OYufX zPxnJfR1bi!^#k7y-b)uqLT8Tnu*q1|*ZR!)5b6&t5_Pv?qDs((YxlTN3uGMr0>=JM-J9DQRPYRP<~A6-8mA@0^G?I4V-9w6V{aNw^5t*!ZYwHTYpyP z%CcXqY!8OTrjR4$lsbXyXf-@B=;1fB!;wKjt{=HBm#Mk)AEr%pBt$A(8hQ40O0U0a z$5l3e5S#k`at3!BK6EvyHRgffzm^Qd;!~pDj&5@6&%2uJC%k#$pi=R(pk`Mm%a(5K zm*?_Ra|1

((DWe$r4g&wWBZ-KrPSf$L8@sVERdi@iCraYpGKKU*5b>T zvZE&eH>Qb{G^)Z|n=htWsjzE!^0j-iiBQ0+Kz;V{o7C-AxYzmydcH}%=L$NzIGy;+ zhJ*oln=sKZZq3<22;?5TRpp6(zTHlU*{Rk+TxoIVH%(u%M9S1`TY3?=D%DP8G0|>Uo>*oUj`0@y7qD}H9SGHjoTAc8{y>lP_H6j z53Lm``-G<)AdWiW!FdG?l`1=U*oXVaa;Y4ZSWEo@*_G^Ar?li@!o-F|C+Kxsv3kLN z+UJya?M(|V3s&I_!@m#>%d%Rv@RkyCKh``U#E0ixpNzA!?GY-k)K@Th>Q*TiKZzU~ zCmXq7lUdv8`D-tEkw8vJq+`O6;_L6W7!%oLnW}RLb2=}cVDz!9SHswLJ-Q&m3sS2! zS6yrHCsLYjgxk_;L&UCu=i!eREn2fX9Dhe>F{Nrk<-}~~4=y zdVPgKa6_-@h$akU{=F8&lPP$_;%l!AM=B*$l8#)+X&AwQEd(;^L187~XiTC0g1cOf zHHT^|Mfl8f(uZ6ORoQ)nbh&%UC6;;+wFN9rKwM~1otf@a;;ZFXVUTDq3rdu}d$HB0 zWe09PWcL7n-S~X{-{9M1-ysU}dHaZcS86~~{4bQPFvtcOVoJB4kIB!Vfu>rOZWu=g zpdl$#3l%v;YV7)&MDaF7MK_>TmJ!V9h_A;H$`T->0BvLDItfuqLJz5vSp9`SDLHU4 zB54LG@Je*xC#CQcycw|mp*G^jY>UxjK8*&vi#!j=45gi=s_wHhqrTU1hu%H8)ejrY z_{TkeW(QR`ucbfCIA0HL>d^1{c3FCD#!3eB!tdu}`5c3YbJr&xdO=_ zU2kx*0GHda7%Qrh%nZ3zz8ukZIMqV-caye{k#f9ANVpP9L;LrlYdV;Dp8O#&Y;h6R zUulY!uSM5LdvUAEBvoYcENL=1{DF=GK!XprzoMqD0pjO_1&W<@aBs@J5r#T`I6Tlr zWijzc;j_UBrS3cAHit|G{5IB&R#loCzSk7-L;u)mSeA@q%vLm)@+uZdKhEDhz8VAh zXti$^9zl(71v?8+2n``4qP5ZHW0b=K`zWZvaP8(L(e*WT2pelxe}{-0ah9n_iN2Q} z__+&`3pCxZg1^cg9u~%#8~k-M-tiq)ob{{_@t0wTIh&LI&Ci9C+SCMyXmRZGFN(Y? z!+Cga@by}Cg4J2%6rg``XkHAk!kAvJF!Oj(4DKtLPE#1VKZUc+xyj3SJ?U$P1E1(l z1#OS%q=NRM8L z!ZhQp>YLQ(YKOn9ohKo`{bR9OMTEU+O+DroLAq+?No?)bSj<=xYg9Nq;Z2ZYI#feW zEN_a!I#k5~SKgj6Bc6&$tZIfsbtdOY*+au{0dm*x3vx+k^Dg>a()dV_cMVyO^S*Oa zjv5F@&#cL|bKb4#9+B@39S{3w+;6%T^6kCmzg->N5+_F(HS24G87v$Ie9jmZJ-PXBd*2i1~&0A`NeI<+YV#p-L!tT0~gPtsb0fpKOux_`D-HK6Y z7o&=CQQ<|q+(P^X@56r`6GF(NbqqsZHLoklM<|L?$rg>CeHIZeMy&65f%=YFQVml{ zRCM4-7lJ)?4TqOEFK#@9aagDv_<<;QQoT1yNLApuDh;4|7Re&>p|M zr%b=^`@3Qb+yHlv#|5|AXkMz3#oeo^{T{}n!aes zYfsu9e|x_10GImhpkiU$uCoONkgb~VX>!6g@(Wc@yiV2vY{jO|iw?tbK|VuIlFg^hX| zEuIXCni!a8k^3}u7*TTm>&jB^)7+GaAe-j^OYweYDO?O`PV+zJGs<1#Z~5VnSS`pP z47utW=g8tPajOG}5W4)Lv`mLw1Z|f@_llIkr>xCINqPNtH25K%KNJA7m|>F+E_ z7!O@Zonph5A5^-(7SR#6?tcfnTi|IfrTvD965%nal^e!Am~zRZ4Dl;jrTG)PLG#Co z?VMfxhr=#O)fmusL-c&7FSJk*pSci@;?rFc)*iO>^%9p8l=2h<{wf+?!TOgycJXn- zS~sG!t3!e-9R^97g;DI87#t$=A&D{feU-Tr!DXM*~`QPId*{v$&zdfT=0uNf@8UJb+WV730|h>yz?6!Ac)fg)`r0A(fw@T z*x0T3prB)y8LYI_sPvZ_bCv)pyteK-l1XUPS88OlY!K;7y2U(lX%dmAuz?E2gC26w zdr*Q;TItqLECO4d;T?r@)_IeJPEsbpNowdEz0jdG(q+{O0sjC=vF49HiOK8b-Z_&PR^Ar0m=xIJ-HHrEL1L>?duV zIM1j|4e8wW;|kRWhum|@Bi;PO=!@jXxiRYwQRKAnkbK@m;nY{kh2`>IREOkTj-)9% zR<)QDflSKD!BRhe1m8PW)<#HEr&Fwn0z>dO3`~J%T)#@4Y!P7hscCSOHzTj4tojuR z7`|+phC|4?zlL|n!yz4=4!rsF1+JYLL;3ymb^NHsHM9z8{%B; z+lR6N0`}}lJ5ILDVS}lJpyC$ZPH}NP7j&BUz&&=hhqQFeuGpfEA00`terEB{%f7Ho zKI@Uk0JWwetxFkY8#%k(jddNMvqSHhb-zUOA0GI18SwMG11bcb1kqybe&I<#wEW+J zXq&)Xs^2{0vu}L?>4c{gq?k_os>+Z-_7OR1W`=2F*{P|+p78^%f$$Cy7SExzx1{hP z#^h}{M<`a8F@YMSHQb|1XemU7b}&(d>WcQ0bd5(3mUSTwe*|AVvB3ARG&xA3)n=^d zMUf8W4C0YYeB>kAA;8e4$r;GQig==A`P9H1|7M#ubU4R2Kr4>La2wbLEN#pk(sCF# zhd{JR%9uylBo`1=EXQ_rJsd4OJZF`L@^VS4FB!74SWD$ZEj-2LuXt?FzE}NYO7cJ6 zC-X=M3uI&c3px-@I;EtaW3S4Erfu#NbC8=;FUQZ=*lxDr;{z&bU zm|jBLCTiy`kvfNWI&nsLKri}dp6;4UFX<%^BWC`M(Ga&%*S`4}x|?Vi}T0P6l! zhZjEq7I7~?W)$6gKhX%2KetX?gJFewf?deO(4=bhv#=zR{qcrq;7RzwN#i zyLc~eIhc2*)@4zlJy9v5NHKx87+WP)-pF!bZ`9kobqPN}>i4yj+b;e|5ROjp^G=by zBya`_k}2vPu4FDUpYlG4DMzFr67CtIHm5?`S%$^MP7A+*o&r%;zB<*J2BlQP#KkI5 zXZg}q3w1@PRu)jW>JgZ8*h<~{UeX-&=yRsC!t6!njguCOsJlO(*NlfgRJ^2u4f}d|brXx$T({H`l+qUmRS8_@|W2(RK=oZaZ_>wJF4vcm@)+>RbTB6`cWi+a@ zRhry0yWLPWi{+G+?8rmvR}l09chcQjU^%6@;bL=QpTlqAcrmTXr|ISmaO#x$9&(LA z8CvqQoQKZ*3ZdW;VfOuBTleh?&sUZnSQRz<;&O&l7JJMn%^EC%%H&(>Wx(&BU^c_vM5EU zTnLmCkhrod{{msCIaN?MtL1B>E_7k~!gZ!N-FJPXb@Kky%_LOGI5;mNAr!Q)9fn^%-fRwY1Qe!BQ}1U zwaW8KjA7VL2BI*}zqmelXIe`3-?0MHVzJV+ovJm|U$oKV&DJe{d2xpWdP1bAzjS)l z`03swHU?HD#f;olmAtvejvHs==x0`;sJ^^7!EgDfZ`AcFX^%N5l+@w?8O#o+ZLhrH zxyjcK)e-LQNR^+2!FK()&agf(mYP;jf-r+^2s>fZ5>%8U7i@v)G&v|C`}NzsctZd% z?a$He{uKOd#0CX}_N(}wK{y=0xNuDeG7=}~rngNmf7Z^fE}NE(2go|vzF7pWuo3ze zUub;S1daawFt*1BPuHCftjRR%r()3`r)__D{yxdZ~e-f5TG5MS|NKQg6;!mVK}jX9lW`rlpL)SoU^RV2|jg z6uZcP@m;RC;H)waHGxTV!3jyDY$;)*UV)NLC(4M`sHumyWtx}iPil6YaE4N)HQxjutsN)=yd8^?!xhbgE6?QR59z8tSa>3W| z1Z7LT+=gp$|CBw}cA@ab^O!o-79hhuy@hLqJKR*z>jANP0880C2^#S_urTMvX>%wj zf%sO|K=})gE83!AeA%;M!>n6R3{KnBc9K6#;o9i<*`^zim_vCn6zk^0l}SLdh&@qb zBlpqMX3`~59GR#Q@X1x*-~{U?;o2!Fx$)=oDy^PY(so6Kyq0;!8?E56>5@yrow6_} z#Mx03DwU58#mlW>O0U80wuE|%#moo+c7eew<39Trx?}g?6K+B6CK2xg{e^Mda(6QQ zQ0LiWW^!ZGAu=g8>ZNyshiNsDh-OZVfFKdLeUy!Dv6yUgdaE_g3)ma<=h9^O*Gs?6 z*4pSPs_u!41An7~0pZ0VoZ>bfpD{h8Z@+?7K@*&rV#C;ShqrHMj9{qJTi?^FvhsOy zMQy&}OpOdXYEpIp68(Th-NdZ~xgkCKjH;_9)&TIZtmk&lYJX-FeIVYp{>pZiXPnHJ?uzeQket z%vpZhm^Ih&6!OsaP2mJJL}!nMw`4ubNP)Srx4))d^^|iuzoQW1j)-7M<~jKF%*>t9 z1bRb4wi=P8h7r2r^g#B;`>-48)A2M7UxSmMT@*hMf6c6UUL447;S`SJpSdVR^s}bt`|)KhQC@E zFAuTV)UQp>z{O+1zrK7K$3~z=xjc3`yZt;;q~h3O8YEzC-I`^inI0~{7|}9#mJ{n0 zwBb?vk(m1{$C#%TiTpa1by&_YF|h#GtOA*gr;IlC#R(tGeH*&s1S9nx;VsgN zrZTDn(>M;FY)Q#s2b%dJz7ADi{#!)uq(eP>KHSHsRYTG+@GQB)ojRkm_3%CyzZQQj zXR^D?brQlm;aMeljS|wX(8I;|>o=Ce1IfH*3%SsR{WcIPbYl)4X%2MkHLWnb{5pEt zR}JR}`Q0lhZ~KilLr*)cwePF;lY76hjIbH^6YIGn7KiVWim-*g+(;7F$q$&))_ql9C-c=sCN!gC= zV-@%Zsi8M3Oo8k};vL83m`?a@#)(x_H2y-0;Q5vq?|HkArmL;0XS}6YOH0S;t5)77 zLbG$Ys&}2M5*G+7fk)TjZ@I{*k3R7{g`z!)z#ytD=mFHp#g7Hy>-co!n~uo>Zk zYH*mx+?A~t4UVD~DfN!3xU_{COu{+F{pH@5Ed3OAlHB${;jHKMxXtOej=^fQBM@m> zu=-?Zrkhb?gXz4~{kGIYuHW>lLd!gl0eRFG^*KKYkP{&d_MJH4_R{U>u(_QkS_6z4 zIPGBd5u(Wi-TnTz7Z_`wP+>OIrtyYA5JY7Ou>jShJbLCnOuIO=q4fTci1_1>v8T3{vDdIEZzc!5 zInnY(bq|@`647wTR0PXLV8xoZ2xe!YM3W_&xaey+gl085 zz0Y&{(Z4YX<{=^Zg|dm2JwFCJb8maChM0>vZpY`=?JS3*pYS)=ihX)L(po)&9kO=S zz%;{gayi^Nrwxx|k*l$^*3(xl9NF#tp_&I$Bg_D?$9{g-?W)TNeq)L;q9o-L8bifV zj3i`jBgg6Hf*?yHmL*MR!Fg(cWRZTA2s~JK7waIKFWDptLcssJ0~iO zxLb>~((qM%482H|pB6dZ9sIWRiHPzXd0ONng!N<)SC_G@A)8*!N>-0~9YEqbEWxubmSE*4Z+t0brrbHRyOlD5LV8P0&EL1;MY~|MwN~cc<2coREOQCF|qU zC%sxmaw+IlzJ zGncTJjKANumNYBJ$D}RpH=r~wC{{+_ZOw}3;%x#AZ;f3xwCe5GdY=f6A@=s3 z&DxyPBkFDT{eD(W-!us?Bvkp*o5nsWJJy%|F|T!|88jH5ZMxXz=?7j%p`Tuv!52*? zyY>3>9hms(jV;>+PgxTazv?C{Q_IMUT82!sJC@Z&JSOfOzvMKgS6Wcoi2%=)3Dwl< zNsl(6$>r+rxdNS=D8036-{VvHgrO6(B8K9;Hh#sEbhKfRRFQqVm#uAViw@yy-HpzL zC-;s_ww|W55FAH4?wlJ;94PX>@o#iI)_Ph$fmZgqzi<04y~SJNO#(xq?%iM*chBwJ zic1c_CUak77YGW2|HRO%k$KK97EYtKW#QW1vowAQoX)OJKJDcHT2y2$oqEV$!TMq> zcMZJ4g^TJ9?V0`PFy8yIVTD}#dfJUWAyzgaIqBI}Fctwh_+Kuc3UWFKzKAI`JtGG! zb+>oJG=aF-`eUqKXg!We{lY^7ZAI26!>Ks8Vu;y>S}@HY?-*d~Ot^d-{mn=Bs9-R# zc#9a$YQ>H0&K{3snP#Rmscn>t^c`PC-L>XSpSAK_PHNGG4PYMSZ!&mlhNM;UX#IcnLJ+a5Jb%)7Q6 zOLQETzTM!yaXBshc{@E4*A=h!#Z{dk|BW@wrAaf7il#yY^cco5e&=0Dyyp2mv>iz7 z;PZtI@XEL-P)1Ip!0~w)s&r^hqoTl0gHa^pyIE&@1Kd&EYgHNW7}eJt%F4JcZ)<%t37kKQ{BidoFsH62|Fc(=}DN&Pg1x2q!>EyH$>4A9m@vvkA$EJ?elJ zL1xwDTpum=nt~hOo<}NkMwNdpMl_RPq{}8uvUk-8)+9*7o;aG{dR(+ys3e$($P*iE zY5mJuZAAr?z7UYqNZ**;VUCDe<%8{rvWd?0Bc7X03_$d=~LkdeCVRx0kt1yHX zY7{&b1vJ~Szi;nj=LmQXtd_fAW9$Km`4MUtju7zIE>=+Bkkt)=f{+Z{1#{IDkSJ^} za6M?#a{Y92qzryjFT2ITO#=L`!}W4ugLlzy$}D>5!5<`@FT=pPanHVrE&F*xo`|r_ zE&)&HE)lGW95|+t2!`O)uvd8(m@hi`J1lbJo@TZNW99hnXTK~!0KYog*9_6u&to%` zAkuJo(jgE?9>D^u-~Ve z`RMP&Yu8^Nc(Df6@ien_kve>cb*}~Dp5zz!F6RZOjr{j=rI&45HLA)_$fVecO{(<+eIyBV5CVpv{#m zKd6sH!nInQPY!&Y+?QJ&ljYnFr{zA~DcLBAnF;9L90^J7EN?$WwA>UOCw^LE{5qU8 z9yd6+3U50v@uJJ&0g4@)jg)3^9HMa-Zw(=O!oWw6$ zYQ3rZ4ROs-93|SE#&xzX|D7pH?Htc|QtT+n1m7B4v@~}L(vJEvldoZI9)%odK=wm& zl4uH@0}oX|uZRNlN}z+yfc&p?X<4n-mmX6{8(hm8{w!oXGa*w`flAimRt4>bWCWdo z0oZt5eWH=mHynYNT8N+W@j@2{j4$Gna9+x8j^BS<9TpIzO!A}V#=M6Ks3!ij2rl~$ zx-e)S;Q~4FMiYl_!C$n`mPV{q9JW9w*{UcpWq;aLll5K{-k7B^%RSegRtY}BnqSc( zrlCguX?Z~I$^X8l#5bFRn0xvX^wA7@o+tfYDnpr7j^|25{6$MyV0|~S)OV<8q@4Jw z&iE5)s3MG$(O}L!#Zf8e0BgDVk%ZP0BkNU^%_XqpY5FWyi8WzM zIq{8iA5+bN3TyO@Z)J{!**XCfw&3K@Il%~x8m9k*3&J1-;Wv_b-<~97+5Fn68PNqo?n!a(G)`sv zV8(4G1|2?Z*z_WL)wFzD+E&7fkU{^Z9K>j zot)&ZtaYg{ID`;UT#?IPIK13fjfmU=P6}-$F~Zs3wwZnf4>)!xg?=#k9(jwtCH(zJ z);K;pdFDJX-L~?f`9mnBg4g2;^QiCy6Fj4gL~F^AV65Rg(jK~TkQIm{_k$uLjU>R= zF@lp9Vl69@zg~SWb>Af591kL`xHb7O;9S=A{RXUpWue)wz^o5J{xb67D>+YNg=XYOz!BE?oXx?`utHmB| zcI%PvwcmG1$XSrEgU@)ss^k+U!Cl?CWPCr+k+Wk!*a@ZfgIFhHqY`42K*S?5lL^5! zK>_5l`u28!IXNq;H&P)bKYMlF5o2{8jre1ZFkM?wFJTmMFuEYK9}%k#AOCo2R&a92 z`H>4h6%~D^BATD{@ChX!>pPq*<4>}`ZasJhqQ2)V1CNT4SXd{9>eDg{4;JEZxz>&M zIMaP{wzwQ{??6hIF*l%=v7pwl2M{Pzv;HxITrHJWJ}Cy2Cf8Di!x{5l?nurPqSOH- zmv7A+k)m8-u20c{tWJAJgk_170?`(KQXeZ|jXHFSnhm*c zx{F2b&OD6Uy zh#95lx{7b=&gbBfWBv5<>B&0gShJ`|-v;eEpzj^Wc606$n46}dk$?M>ltB9D{^NH+ znyVptPg3CNamRS}?9 zn+!%EVS%MhD>A%;4%E7ImQ@(sbS2SsgSTbAnn_xgdaCn1z*_}H_sF7Fu(T!=vc?^W z2aCev54$>3c0ExVoE7WQN^)u(f35cnlbyjm)Xbm&<^yZkL4HzsTR)I3xYmq0{74>Xf@_E zonW1Raq>B%&?F-h?po6Zf#AzOgn=CSyZn$3NU%$|5Arrk-&k8r3KbV8<_AT_A>fZt zVLB@~f0UZ+@%KEO6xu4H5Q0fz83_T=vSSLth{zc^;JEi1wh6;Plz#{Wp+Tn>WP8(N zE?BRr-HwREA8b0v0Sgbr2dW?w2LC_-u5}McrZ4G&L5`ugk(h@LUX%wUcDUX^7Nm{@`47r@`HN8 zw?#azCWXvF0U)CNP!L%UeQ_;GHfP}-WbJQr;3a256V@=3LZl`klR`_iqx5CWP3j;G%yTDWwN;oO{h|ptt19f$vK+=r%r{V21A&P zm~%hf&xGZa+CNn;eHE?~j;sPkm~5)tiiOUFRr^gewZ?M{i4gIy{ui9+ zlR`yR#b$egFkHEjc|pM$eFXFz&hd5srbRRU0m-QbHm^=J)>?iLsVVpAkVrb_8^WRw zE~u(BbJilUz1%AL@cy9C=pmo0v{sQGbG~Vqjxf;lw-X$0_iS|TAu(n|(>W2Cd@e}f z8lO8H@(|}+$M;|T;uJh@M*W+%yeor1p}SRx+&HN-EJ9Zw;%B<>&S*=)1JF}hhhrT@ zU_=7dpa~HXEXQZw3lRo={HsRV0LCid1>rx@!{LkqXIh@Ste}j5PQBl2%x9u*71#5oDWw9%*Pt1>v(^<;|V1yLR52TA68ACQg-B_F!GMT_SB&m zMV<#FY+=Clg)mIQCp}Wk^eCfjStjTKkhh{ zd$Gi&NdU;vl*bO!mZkwW`bS=qvNqH>h}21b}Ge zVerm=iJq~kYKax03c1q=f**6VmZ*)P_X(`19yb8`mYb^OE%TGoKgNn z5FoZBll0SU=yU^Q6D^Q4ORG_O>;PC+eE4#BWTj<(knB9c8$#>SFc4YD1>kO3696kz0i2sCy*UFX-0f9?A;fr8@n=BdE^AU@ zaaK5YFc7&b3Is*k(!p`#C@>OoQ)f4kALJ>Cw*lZ$LUy1(WI+#tkk_DBKhP&pm6{al z{i>9l6j!{RS-k?UwX|Jy?Gb!m8*aOAzeAh0-rL?{}l`9V*J z(?R?aPWN!iTQe^xdkK^mBs>BSV6L9B(-`b!Brdyt>#e1ie4kfR0ZOu#^t^$jxeDAK_Bri)hGkwrXDY`XP|VX z*Nusw*SSgu964>Yg?@rD+2i_8Dfkx=^*cBZNR;NM8yx|WjTwMa@wp`zxyHKC zlAx&sR*;Lfd@gF2v`TrP&ixY5!yA2wFs-Gu&u&jXcCk#}$ z4@)ybFkJXc3Qz&&!a+zY z%JI*JBOLz4Ngn1&p;nV}4|feGDWO&XFv)=j2JpgpK{=g3`P%Ogfk9q0VgW6Ur&ti#QTOLT z4{WXVfzTEgh)&~If1PXq5k_bBRFI-B*JMy&8>=Ui4U;@L(Mi8Q3@I7myyZmCDl8Eq ztSaspK3jSvfdFcG0?IW0iJp4hw_rX8?~I32W)AP9m<~GoAV)Vg9L;)1mUMIQ0tO=W zAd7TFN)nag9+V~vDvo6gpk$>&_rtUVN;>O zHU7>pQG4c>S)d_&=!E%<#?rQZq|{%sP?G*i7A$hHb|EnHWQ&(DY6e7O2P&Bp_G*4> zxXV&PEjOVDu~*OGQJt!-z~%LcF&mqJ=hHT_1hSuEgt3c_XnCrEmXj~bVQoI7bB!%I z70SZ#gtd7ZPH*m-bqHlm$GQaQe>0yVw81khnTh2M)+9Aou28{NbSjV)IdMKp2+KIp zsTbb`;gI}PVEUT$I{Y&duw-yU#xjGie zw*5itWsFRbzssf<`&vR=YrfG+F`tRI{yD&yWt~c*Mgjc!$MV;a>()I?e|99e{ZG8h z!HtlWX@DJeMY9|M23w)kbO>$*63TL&DU?kRzB5;zC}9D7SK$n}2FMP&-vOdO2M7>9Rr1+rY<5w9YDE64)| z?sLa@0*JlnvSEtkUm6?_-BrR{6Dzw5-D9 z2lr>`^17E>eONfw`>W=muq*9L0Y615n)p5nB1*39p_>FV@0C6qo>0 z=%M2SV?$U@W?cbaR*}>sT~@iavW(66kLaxw$qHTV>)Is3?)Ern!ho(6%KBdg?p(es z#h-&?bO;TlgY%Knaw*iEAe6bX1$&4UbAr*irHpYK9Uqo%l2pJyaw#HeYF?Quo4R%~MmaJu)E5D1P z&`^zH=QAEBHJ{P-Y@$)3Cbk(_QVC_pR7#0u-}Cl-Ap&N}xR@*V$U`koPnLX;rYMxf zB*tb>mZxnhKWI*zECIioo+{~;k`~UQH37V@YE3Jg75b+`bCB}`Fk2BVoXrOujY!9f zd~t2b7R)aV32$tcM(&C2A|qcnf#}FWIO~G)1jUB- zpI%CZ2dwop5WNfV00Jt$2ePQrv8ntQK^P{zyWwJqU>3YCfGhAn7{UK6jd@K>JXZPF zLh6Xi80GgJ!dV}F)_jd|oGR&hRXwIhzvAzNv{%nGsz?WI4dQ~)x);Ovn*teN$^)!Q zLnoT`5A$7C`NMptN&w~yqTkz}c&k>a``&jNe29oV{R8fwLD7j(^Wyf$YV=+3P*kGF!h~ zDUk=fU>0!nB4iQ-h=xBEKr{+v0iqENm>ft`MVTPYy?@f-+7SS#|0WtRr?_7=0ipru znw^p_`(H$(cD;4P0?a04Po|-86}XxAdh_3oLF!-6HlzoB{Lf|eQ}4@>7R}(yRRMr+ zXv6NdZqN+W_=Bd!uOmx4sp>!;k!O2dn4?diRq4VnH>IK5jQpXyQza5rT#z=)@^S29 z@Oy=_Tv;QNCBhXz)Md+`Z9v$Jgp`A9Xm88GKH@E_Sd<$#mH+8FN` zFRO4`05Dk`4R}9NRtymPUq&%i0x*hv+5a1($di2l@>?521YYSch&^=zzSvifV&CIs zou!)=;gdC2UJoWLkTrqGzMX-Ve2*L;`x?Dk-~hB$K--LXr~h{^HPelu#C#s-L>K^6(mFtKz%mrd&YvVrCqfe6GgO$8^H zm^pAV1M0^fTSvH*qikO;TqF&SS{QrE|NElKXp-8pK{qc>Ja(da3|mE&Vd3gdVVs!jmN`C}8w7MX4+i2da-TY{zh(aEPdZpIRTBJ@4!*WcG-yReIA{EQ==dood3+F@ zQJ1f}CN{D(S!l?OLe9|%$=%H11Lv{4>VM8-Hh92!47mAU=dr(@#ZtEaAIpv@348{B zpa-x1&}1RWezTn>%Px)b2TiM0UPruEFJAK~*h!wqrdKm?PFg7I8XznGv<8-cr@s%& zla>GfwZhN*0~S!_f5Bqre_w#g1Db_A4Z>Xh1!q16Xq!ltCmo>Jx~Xr9x0%oU+5Eo| z^f%l8=}l0~Z~*BF&fzQFdFk(VB5-~yz@WI3ZOqLD$Q6hTgV^0kE!zXHG= zGG+g(CH(V4T*!j465xVYpHPPaZG$EnwpW+@A1(2R7Jpb4TRM>HuPp1(;(t$s{?Xz; zIA|$AO8#^Vpidfsjsbx5|J^YFg0orab>vUS00{U0?ikp3X8wiH$f=UTo)@DtovhiR zDVM45Yu#jTufq=cx31&0D?1IzKu{_fYcBZ#mR_cYPyqk4C zj$XI0;;2lces`Uow*-8G6s}Wgb2~=A!E-`xE(ax?b)PRh+9mvYPx5g@=!=in-@7<30FyPibWxf?T_T zd3JV#NxXEK_I7Vj()vbuq_@)KdZB8s4;@?LC?D?FVG8~D#>FI^vVs!?vQUEuoUusI zidVC`!J@h%v9ip&mL&A**3cP#KAAP?w#bb7X)_RC&RaD|lz%teSr=-h=vv_;DGsQe z$%{cXZOg5@(mn_pTX_c`^Ze4`DNKeUxTK!SqC;cwAqeQO-1D%>Y$vEU|r5&C6pp|-omXK2W^^RkQwm_a(=LYY- zxl^S7kuOKPR8%s*(iLONs9(3BwPa029!lDd-o**T=h{Gs_qq_SDcxU=pR9H6*7xtO zXISvMc=;p>Pk(qcLb)K8R;4iLRYpd&;qGp`^04s}T&_i+yC+8%&-(Cp1RJ^<1 zvgF$MaavinSvkC7AonXObuvd@(|VTEYmhZ)Pwne*0qU|h*#o*K&RsrF7yfGISRWjU zFFk|CGmgLYU=hzaej;uKYI9T~W@Pua}7x!k2ddHsp!?^sf z4T8PF_-}1;EVx806k4WVeq(5fcj6(ipXMmf9N?zl94#!Ze1P|VcDmwcPrEWIhrgOb69UIUd|GZXMBED z*z4y4<0c>EwbQJP+U4<=7lc+q6Q4(>PtyhmofX|$7%rS3eNS!Qh;L3tj}c618}b(g z{2@s=v}_$Al%zSW%uvZCSR)J-K3dxMZ|4bOK1Ur83|kl)Nic#XM8xnLi&)iv8-G{R zl7-}@RfxnigO`S#JinRxJ|a6J%Z0Hiw7A4V)(#U5Ix34nza^9l^!;#kPrlA`$M?`XVcQDU#7s4f6Pxxw;*d;lpbijy3=VaE8d~OX>EcOqNYW6De@+y zCNnpfC~Vub0Qt)aHw;tvg{}|Ms{Ck(-H)HeTfaymsPKRK{dv`4T(hc$#;OJ8?8l4N z7hZ{(?<;#h8@alL-Z=AlE*`i;fOJ~W(X{7b$*m($o;BHOSKeV7)WB1R;I0P_1ksQRaAEclSi#; z>|8D;ev5#N^R~|TXo1e-7^p9Hw>Wh1G!1-*(rXghU7Pz%$8KJri4nxg7owEWb5(H- z!UW8;0B%T`l{69%z@yBzwbRe~JK4Ma5II*CVQe$OT3zTgV zDgRP0-6COXG+_yO{R)2jpl%j`^aPVS(4VHBHdBCSr0m>My~# zn&!KdO=g6U?n2<8HpINc$kWSbMF_=F-5u)AH9*0d(d>Y^-Wg3$n-j{> zWct09pQAZVh_aeNaTwgmKNR>Kn8c*Y)yQ<`(PFCT*+tOBDy_Wsi;KH4{?pXi4QP7| z4Lzx>bNt&DJzDjKa7r z+Uq%zD2BE--IA0eA}0E%mcxn=R56wj0{)fHw^>!uI;s&EC|}H=2!PueD;R_PK0z<@ z%=jw2Kd_Nyn1{3JmQx$N8J0o*t*a@j=)R;JdKQ&gYU;P9y&q$}c={!uMK~M#`!^{k zwN?iz$F27JZn@##cv*xTk5{OzKr5(18)vM z%Qvh$#Jw35so9#`{NHHvSP^=-0V&lm&j1DNV-;>O+)NEf01Gh%2XQw#tE_|;vLaZ7 z_Ov>nn5Ew9jAZPM^`Sv0y!tP%niWBy*$hmJvk^A^N!twTBT%??YgiFr5KqPe=`<5q z5mJ5h&9Jn>UR4w3_eUjNIS>ZF$K-C*4_6ce_H$2}pvNiH0+cjh&iU-6FYtxHLX~hf z14?9ra5;lw4ZJ5uGf{5nIEelhSRPtAg%u$w*Ubv6cwuykr!l)6|4ZxM?wGKrc=v|1 zXvpdr>i;@AB9gbZ$9ho!YZ;(C=V-d`0fE7^ST{irS7By`Mah}Wia`9i0+3U|1sD@v zk1smt8vr7SU@T)##>KR}gR8NQ66XvI-GlTlc##Z>pX)~ds!$1nv(cWMDh@f0p>hJ4 ztqQmnY?DY}rGmP7U@0S{N9ANJ@oTVysiJA%>ozZG6@YvEQ&^=b2!BjvgnZwl&DIPK z*Qt5cNg)O(r4=$kKkQlYnrR)K zNEYxF;jiJmnh^r=8fX7vls9Li^ZV#CKnE>-(?=jYXDQ555r~a2ft1oG3}Hp6jC6ao zl?1hSKYDc*D*{A0pfoALY{s7OXB%frSshvx|vFGlhz_PY&rot%BTVn<-1<3nXJnwaW*!s%;6n7L0@F{`=Kj{vym-a zN@ew;jk9rbdmR9=HV;poL@R?5wBUV>a?ufc2U7#sSJT4209Ly&0G6}X01P?@WH~y) zNJdDU)*N8uvOh+)lT`Zs8cZahA7j&Wr(?aD`kfHG;jGd@uW@ncRd=sg4xX*anV2*f zHkhiqKh~Q^>tt#GW*?Vpql&SzeFDG|t*fb&elKSuHER#BMbe8jAUq;TGHcYb0TJ-M zcI}$p3^5JrFMy;|T!}ONKZY}kYng4@fFJ~7;uLT#lA%4ixy@$CJh_N5;9NvHz@rcd zTVuWTZ@3z%gVbVP;b|g+LTHG&y%fdURU61RL~3A?T}qOdl%g3{s2cEX)P_&AfDP~8 z*@K`NJrcO@h$rYFkak|9A1fXA1qIl6IAd>mPy@=@lvG0k z*so%HEh7YO0u?@Y8`zfpP;!kk4Po zZo}+NElP4UwUGWFks^|(ktzNNK)qhl9L>o`wfXx0C@9Fg^a)klv2jDRb-E5AIkC2a9t?&0pJ?Jx?B@OK4HJ%8h5L6Jvr@8WL28+m(hr zozHI@qJ2Fy3tn7m7*kSbm%F}PMMc9`=4eS=V2f4a*Y~Mr+{dyWje5i^aPT|7e6xMR zCvNvMYI&~4EH^n6QyVQSEJ{n}j4MBGIMy(iF$!a@#-;mVCu0RNvaFGJmEcmR zDGc+rZLHfjtyVkJYijptA1}~5Y1VusKGeZVNk}9zPaCMQ_r<5^Ltm`^vzh4wYF3u;RSA-=laPk4EW9}HYN%kh8Gg;Ym^`|Bz5sdahtptjct7U#!xNBMy>XX^_L&&uiDoti)nZH!rTvcH)mZ zd1P>D9Ogg3ZxXg_niRV{HsO!lm=V1$QT+l+9m2^(-}!2Y1I-)=2!TMjKxLClM&dl; z^|~d0ECOxwy7xC}uulTNWup1*?9;PvD>*}e7ohD5DCn_aw9UZqN6eW)G=r&pCaTUX zG^KhXqh3!o{hrR1nMpNo_D=d%=`>pr`elui?^cRjG@$1tak*n^s&sqZ9nVK)OSn+} zv-tTIm2IE*5Imwl`Mn~NpXI5Wr9{W|j!2EqDx(;TfX-zh-s9}@8NvConU8z==QyvD zlV8LS%L0{zr^~e+wLU-TG(1mte3_Aasmy-Oy#G%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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≪IOVa0|K-c1Is|I(e!XC@g?}(*uf@|FI`qwoW^S`IxEgRIpRlxwet7I zgcmm{PgK^2Txai^ko|Y&2{3gD5Z08nw?YTpbr>n_@IOwD-PR0D-qX+&RuU;96=d0{ z1WXir@jY@s|Fo$bKB;$)JXg;Tmg3*og518(G?a^3iZ<4y26EiO@YDA3gwPkVf* zzUTkVuiLdaP|7s1hKrMss6dPp4755ht{;XfsxsELG$qPmuwTnCMRy1xTk2>hZGS~0 z|Hy7jbL?wF;MnjV9q+SR3mL{YrrxI>OHnsqbq^?7ji&hn_*2J~n!_|bUpOA& zAKF&6k~`w#y>%M~R6Yk!D09NtkG9iAhgK*tJnRwK@791iW&ER07=?%yz*rimI9$WQ zb66<>JJKQ=#&xGjr>$J~>in*ArfDY|$!V^E*F|VP!mc&t&2Tg8_S2J2FLxWy9Q90C!o<1+YGG?^ zQFgusRLV-h@2YbsG);g9>6}L$o^h4(z%W;5UjBcVyR~&$6Wyv$TK=?=MUG}5WgLs? zIR$`Se^+u8b%$Vx81+c&!u@bOEUbutv&5EAF-m(5RBjZHtz`6bh zE<=@ngA~hzC8cye#~i|VpDj<9^mPb;rj|LAGJjY`aVMZj0v9oADzEyt$y}akT4VQ) z@IwUDo`oRA&n!eKL-V}ERf)F}E8u}HY5rOekxSz;FCp7opC6b~#IHgvKP`wDMe{#a za>wuaMG1R-V74-qEXh_F(H7!LDH)iu#qP&5k=lbTH3H@ODXcIBX)+-4GUoleKaZzB z;b*OMz}<$D)A`#B^#e%@0}d{I0`2IWpTc3)sxrTcb0Mj1n+#4%1fiCpfvi@9>xOr9 z44R;IP`$GynKj4J24$SepAzspdd_?(#JZ4Glaeswb@FAruYR!Jp%xL^ub6^mY|WwA zFLku5a=jM56?3>nv6a0CX(pyczv5^-aej*Qtkx}r90(jn7d=fViRQ|o+ovG3;=$fitt9&bt(cJ?Dy8e@;+HIy2LLV z>}t88iK_9dH2gPl!XKmr&TIq5xdEHDneTt*-TVqC^tcGAs0G%g zqh@EaeUi}B%YmqckK<$Gb|x(cAMu;&#QS)Z7sNW9$!vQ`Ky|le$mGC9){?SMBzGy| zVm5|;opK|@kf!x>2qNfLrB4+pYJ5q?=tTfm zwtL7StAE%w*3qb45LGuv2{yO>&xOl>#SRn(9wdt$dr^pnXIXStqLGoG{9$(>2MR?# z79DFMADAF%A5H@s?wkv*OSQxD?bSet@|LN8QD;$xHfUUXACLXsgaCNn9O131)T^`` zYMj(Rmisdzyqrg299A{U!6Zp#Tvm-f0y9@HanLg&OL;B^&lY>vj-gv2hCE&vKQs1qSV2+IT_W zYcJw=^RvT&#?}}kB;m;|BWlM^Sklp}#AgLYw#4JUE}g5)HWPiUUlfzje{P9p0F*9I z?1X{nIA6qeH0Y|s%usi0*87D3u#-+p9|htpojBH@*&x87Idoqca7~b18kJ3yd06uX zyAdPd#7f-s3_WV>;O>k#ty+#bo(empmZpjJ`I=CnULP9*+uX)c3ax*6!83JAQMz7R z1^E-Ry6PG2cYR<0*q2j%vkJx$W&x^UjcpJ+)q?FfXzhduj_2%2nko5L1H^bQ^I}Yz z6QmDjwvK}#z8Dg>Fm;Hg#0s=X-C(_n4=2hA#<<@6;2YE$I}=Gui8##0&;mC}2$=rs za_$6(@yHYz|0BkxfrlAxuf(FLyF{V&1SAV#f#Ne)s#Gz`(%Ry*dF`&$r^)2Z&*tnk z8qZPKNw@c(tkj*w2x$0?EOBcQFDC{?DS zmg2c-`UI|{Yl#G!=5=vOhGGquqd8FF?CS>e8(&zEtU^bkC{_WY^q?lHYhSaj;<$3x z0A4|@*<~URkKp}-@8w&yAgHjE2JzfI z_TMOeth{P~w9IY3r6*8g*B;|A=mBd`6JZ&}YJyEGmn5T&*ckWny4Rom??2@Fx#0289xv5D^zkE#Os8O1W>E zcS$;Cef*|GAqpy^HN}zC+*fXkGKbZh?z*M^`3LT_K!)3Ze@av&NC)Pqx^tqbEu?SM z5MHGvw77`ekw9o}=(h>9{Wo=Qae>ejl@xiZ3`#YRl{&NWp26-5YL-iYl=Q4K;@#tF z8uU*#7kip8*GdSE+f^7IQ19#YdUa#R9eYO6dqHT!Y|34*hkn}_&#+0!V0JBjHoLIo zOtYhp`b(~}BVCy)6R&V3JJTZ5VVR^!A!A;NR4w2js@&rlN=vQZC%u-(@lE(qs;c`K zg&VEzOo5@0DTm~s8GYPyraw{blm_V=zMqMI3S;Q7G zL}Xum=YXrKeGx2H@C`u0mmJP3M6%falzrCI0x@-{!yuq5bdJoK_|qHNq!r-_y0c2n z%{mcHL)6hkNY{=piR)q6x<(HG_D|5jD7e+kuofukvOGVA#F}UDCUd`Ueu?Am9qaXKA-cCU!@`Txi{p>M0LARt1A0n?yvl{Ro%&0Z@A^ zse3tsoGGM?V%v+MUic(Ixa{f58#hHI<>8u~;@6#Obc_P_>Hp_;}#5}7@uVlSNCiwa$V5T&vxwf0p)L|o5_`lB&3 zFe}cqcHf#M?@4lYfbL_??t*~rai>5~wChqew&8eL&;&)Zr@4%Pn7Sd23@wY-^v3`J zPAMwT&-g_yPvD;bAEXYEeAPgrI=X`sDK5W23N@r94LwLZzDxfDC>-QAlX`HJ-rvr+ zH$$GtKhzt~%3qN~GjeiS{JisRyFkU`JY9Ujn(HLB_Z&v%3OLL?fJTuJkcG7b^{&9T ziJMw`%%C_L_GyId7Ve?~CrcfAmC$PLw<0lAL#Fq+D!b59fq20Nr+^sut>U(@m&c<| z*bnE9flGlyT180BSy*VE{w^!&0MEq)Vh#uis*F0awGP{3SPV<}&>xpbkN={ZYLK{1;_SOu~b|PKs3cj}4O{G5X}=O%Z{pXA^3)8FN|CqBq^_R`%bUH`h$Y z5Ar;mE5;pv3RHb-L{U;ED$E#ijsG#({3Dj4 zFR8?LYSmH3I$q)d6DD#Uyr}D*6SXj799xvrpr0dify?ZY;!t?#isB?tn_d}qmdzVK ze?V5Qycge%H()VZkXTv+mK!D1?rdk~wq#AMBx!c?yC0>_@kycWg5~ellA#HhQU%)N z{-9)@Di(ep%pPvRnl>v!}!QK|lji zOny{+uZSi?PgC%u$A>T|vNDa&=&Y_Sy;_wodjf&v|wvUdN z+;YVRbN_=UvUqJ_ji(n2+i?bj2rb!W7zD{fTs&hnl;0}RIk4r7A`>Yc*1+7KV1Kfw`q z)(+H-7#{?S!DYUpjYZ;Vjtbl)KGjDnjOEA^bHE^Ci_}Gz?;rpj%{~PZO7|Q!PNbm% z>$`+q1f)@m`OiULcn*l1!RHKQsgd3o*(J*snz~)8ai~4xb^=MKiPMaKl>ClG2(MWD zZExmO=MffQXZ!jRVOUj}x{;3%v*H4R&VJlT>e1o`)X1B8k{7gG|P?l;M|CFWfJqxirXa6utv#KN~Af*yjYDc1ZS4JR@o?kFy$h^YZ8 z(PLEdrGDrMbR4~~Hj>f8t7DSj%6~Mb^a9z^qIZAW_mgT4lc!8_)?njf5Vc?-VK(}! z>|(8}nHxRoIE0uomC)51qug(e)6yBddQe*T(s<|GaOQX8PNScI zEeiDI;p@#k#09D`v=bC>$7i+!u4xYEV|Rd1|H)p!93k^A&Vv)ho)|tiKC!eV*d55? zX1Q%M$KaD!fGEz-k+wr)X3__pkSZtD=EGMur`QP0B+@#DI~=OmCQq;kPCV|AbwAgR}FSkMdl&yOhPC#W8)rs+O?xn(VjZ9gX``d2FEzVRBoxvxRe> zru2=I%E_(B-eC4gI|!qThQ6p@LJo^FU?me9F5(Td%?-(R1;;8k^eLcnLQviwI!s`G z7 z1Sp$+ziZW za{ng{z}Zkm8c(^vLU5Ibj4z=O^u%-bKNT(nG0HJ_<0u`mD;N&|OO~kNed6rIen_p_ zvr*IS_&NDXyUE-2F@AYc)9c8qmG5lN%9HZ~m>=-V$svE;*N*`iLGKB2?2z9q=zgX? z=kWRY|IFm+ZTNh1n`0r0WlT+F$J#hWl_F+&-Vf;l%(3 z!(JF;aY;D6-Otr81W8Hvav$w>yHd}9AI_a8cg49YsQ$e@h|Qmu4t}k)?$OeC+(^3r zE8I^#)O%~;vfJ@{%wdzm$;j+|f9J9@<>HuSLP_P&u_(sS(sT0R!#KT3+IJHa9YQwgj zeZ1vxg0WmB^pxDSzB_*LuH>+x@21(Gj|<(rIZY1qn(2Hz;iBt)JRy2idVI+P%8}G+l1ly7BXyNU4G{;{6^uP$<>{4RMy^!?|hg0eKPQd)P{u zqiRLtdn%82+u=#O>HRk&^>UlL;d2!IVW8zIr()dm*~B%$OFBO-KXo z!zPIDFqXa6;+`QDo*&QgFMD?C(#9lr$76#RpoDkOjumD41oPD8vUL82&~j*|&C_d_ z>+tw3^Z_vU#ibbh7M))U7>HaA_{d#*1pa`%;_`dp?kt@-gxe~Aqu;r!EB^fjTu=w( zLTEPJ{GGaeYMW2THVxUNdQa77>q$18&{w|x-2j7Gi~I3y?S73pd3gJFXm5UTT=tK* zH(wXz*3%n1(Su|;eie9NzwB}kKa9jVpwFxY>C6NopgtJmg4{F3B#V>+H_BvnojAPa!q)xh2D#~(`IC{W&U}(g{bq%j+{RJ ztF2iognlG2Ajhf(tB(?<2kcm+91MV zf7bW8w6wE%&El;0T^%exOYoSR`w2AUTza9sfg|GW!XAvy`dkU;Ps;ftzIrV60gp%YHo2aQ zbkIm6wo@Z*tw&&EIEgFr@ysJ<>LYG4`*-58DDQoONBGv6@#R>9>no}u8rl+0rmK#2 z#;s@fYAfYD_fa6_t#y~zZa1gN@H#Q%#posp~2B~liSa@HHFXE z_p~@Huy(y`LqqSZJCOY!Ke$)UbYr$Tz<%hvmP$DF9DEFa@wT(+hF8x#vf=Gw4mdS_>x9Y( z3hL51I{Edb{@IeMdBfEcigKBBA)I^U85NtwN-)m6F~xGkD52%@$$`{_x1QV zwmE&FexlCtw2Z6b8WT_K`Bz+Aj7RI^X>rBhaG+VwGx!mkjrX@2JnQsguJ*Y%?Tltr z{`*(o>z~5$BoAk-+a!|u6>iegBrGM-X9FT;IU+iZaI#Jr8kYAh3NVYBY9$opDK*@| z8rS4;)u2&$)!jG==dSNOe)8_eJlV+mTIf6puhA5;%0UNz>Qek+W%#L{;2u4h{2ZI_ zRmaaVY_e!izA$M>gG)rV`2zLsG)l&m3+g7Y0XrQWjZVHuzFds!^K5BD@1$g_O<^{im(i^*@K%W)vkQ&mwSCqS z>O6MI95 zV1Z`oFVrhU`Vn$^GFn-tTv>j!vA5)#rerbn-DE*XZRW>8uyEbCP)ff_BjWYq&iY|K zmyg#pArl&&Qj_lPe5c@hu*u5{gU`?>kFbpOu-=ffdp@0GJB*^|VZjz(O>z)MgA^_C zcdcEgtuDTF%0lyzs&2Sa6c1sTdMp|77bd*tEs%{cuVVorTN2}?yrG1^u6yp7u#EsP zs}swLE@%KJ5L?(3oNAmH_f5SS*84=~{{+nu)TSO;#-r3tG%a$-iqBhdA~%EhUj|nv z;3_kH4ii+Lm_Ez_oBw%qIx~GbjGBFipKYEhziEMFB!!JMc9Y&7S&nKYxoh6`Ik{E~ zs9;nZ=1-_21lgf`63k2KX&>96EU8-=#4LWdHKSzuZd?wuG7hwa?A>fygW=-Zh5r>R;#ek`)DScBi%EV zD72m@Fgg7%cj=T~6a5ZGkN(tJY6=^WwlY)vuKAe~ryO_zVx4&02DqvKq6uv86~G={ zoR?|uw+vwhecal|%cW$uQY0Ume z=PrL40e(EpQhHVTQi1WDBac@w^u%zm==x<3tO+$mElrq}<~%J<>I*Gf%~NIlcRP>A z^YGv0-b^o3gP%)Q#{9A>n-kTrDB}xh{}9Cn!0v0J`;*qzx$3>x)1K6?rnU#Zqw4Y?Vx|PkT>??mw?$g}!eWA?*E2Q*>(5G#Xy13BK zWQJo-pjm5oK~^E$b;z?qNIG}#NVA_~o|El!KQ34N z)cSmEA>dAZ8~!ewJ%|F{+pQrA(x`gW0|lFcB}RmT3CD2CW6Yv`K)BlJ4rUo8u=@M% z>^m7?Gjp3(hfmT)9;971z3T?hQa|v)eN3bNOrlL%EKuyOh(T3&GPL!!&Q zPLL}@Z!!B}6gmoUSf*qbu1{29;czijRLaEBmWc zfQu(8=$DO%xKZ($@I&PE_R%7SKC-7L&I))O!2Ei4Lj&NtS->|j?InkvJunZGcG6w6 zkt|cqrKM3m3^B++Lp$VoQn=i!i+MWm!H(f#!QBbEQn`dVR3vEoMEIVLfB;f*wVv)QW=Uvkv+^{dTv?mItO zAC;fgf$oVUb~i*{?vIGLP~$|{z`}RQ@`jpJaVRU zFy5nUGE6t9rv;}^EO8uJ~F<$2vi1YGuaYF%c35D zl*qJh(-$}oTZ_QQZ4XP$$#SSq(^4m9JI;kqMal)FKRo#}$+L$82?m1R-*;#yS~tAY zs*KFA;jYU#J9wq^a*$iLVJi>gLDmuf2N!Z{3Y(IPV$qoQs15A_BZM^@SQkidm6gd) ze5^$y*z?=Uew!aFGxW2v$mPrbZ(=359`Qgfnb*XcIf% zLuX5KWH)0{uEvHLEW2Dn75bI=ZKo^AK*ck{hsHkE^0nc0Y?rS*?5t$B;(-k$qIa)W z=8Pnqzv)B6IA@8g{{WNOsa#=Uak4>vrM4^XxP5O!xL}@vR7C{>PpkT z2`7wVLTdi=MBab4_cKEcY5PM><$DAW68QJGW0f%-B`MM-;#IhPV2sG3bjLhA>|E7W z)FDzxvh+1IhEOTf(TbzHtt$e$8*Z{SGH$)-tm6y%Ch+gEtAM3xu=6x?sdoG+n|f2v ztar*Njb2)skJ=o(8;iY;dZB8Bqcjd^HIgK6#9@yV62I4gZK&#sl3jjE+kR}PIu{_5 zI$rjqXrg>0ee!U}t7lm@?qe^k@)PukrV|%BIJdcY&0aN->&ZxD8L5Ez+eyhZOHk-u zbf^S55K;tG6Rl^gy#9wctvF-&Ty=M?0Tblwf+o)!W1db&`B-UfeNLlG z3$am{WiZC<<_AQwHXceUW?o5U1hZh@Bx4I8APH^t5BBW^k$*uQU2ALxnZJGMe)j0YF&anvGp%IwQ<+8h_hTS(;o^+EhVj z&$0;}b-E$C*!wDAQ%tsk!HKv&{DsVo#H-*+FRrJPC)$L2RsJ$2~-S|XJ z5!Cn`39EHSlv|ylW?%!ylr`jg#OWN-?$y8Q;b1zmGtLZ^dHD)ZQJBcc)Jkmxf7&e-<-ypOJ}CGp@FX;$M*eBdJ{&eXn4CXt!I=*D8J&r|8zL3 zqA?3R&ax+VW5~%{4BVBUir~F+(A?+SyMcw%tap5VrUjY-Ea{sJK=)@0CJ>vLQmH~w zljA8Z(wC$sA_@0JT~tNC>~P}lk#aa#599l)aId3Xir*ihv?&q(mPk(z*088rsi_iq zl~8=;7o||y?nra3&%p_p0Ct?5Km} z3Yz&IdJY2nLlFWfTbh~eM@t#!6Y-Q?|6|H8{Xj7%S7=NV1h{Sw_1yL1_=MzzA$Zms z+S0Xe%Q<;wG<>iQNixe? zb^&@(*cmlIh5Uh~k|AW}gn1uZ?Dw<*V7C{}*(ag}zNu2cP{gnqPIUmRP3A_L68rVVaA8Ebl3W$tn)HY>XCwFjAfT&9Ayb8i$X3J&IR{n#rtGVy z!23Yh^7QwxD|0S@>c2@^|ECRloVY5^FRz#Bc@qiVumsXhNJ_fq0h?VitWD*dQV+40 zi&JWdcT}&OVI(ly+A8bOtDRp%qY@g^3r zkSh5o7Q5Ad`1NzQW)+V6>X4zOl8KlK;R&yAzH&Eg?W&4vfapMQ?u8j6tks+Z?WBXdVm-$GPX`U7Vt8^H97vJ#() zYJvk3dXmz?J2Cbq4nG0$$YlXFT%uaBq^2)0Y#z^8>GY1~u^l#M#de=M*;OM~3FC&+ z!4X|Y*>p>2N+EWMB=0H+rkvXI9J+j9$KXGtoNoEwEDIf#pWtSRho^WC`s50`BI1Tc zd|Vj=`7Tqu3j&jn5_I;`j#<8{}!PMA{pc(PE#6IL^CG0{h~ki!4j0BHR^lCfT^n(Hb=TGWS(8@ zrSQeqLQ41kXeNH84EM4~KJNa%P5%W9AeWjzXEwr|GHV^%5%jU6hTr22He_}E(2|`4 zAgnMOhm;97z2|U9FUga*CJi^J<*Dvv)s>Ga1QiKNF^!hZbNwqAGY654x!tKgU@HTi z0tb{aHrGa2Tk2zMtc|e#|1R&7fO3e9-2b^rUlw7u{NKRL!J#lXy1D!UQm>uX`g?k2 zE~|;S@&D&tP2xL72QT$1=fIUreoNmN??#M4A#62VDjp?1>wW7n>n`&HIKqtrf>=@B z2x163Ui!QFiW=(z@XO(ZVHK}N7q#}8gf{L0^NjK;q6+eP;fSm5uKkvn9SJrl5eEb*WI~&z(HAw<<#la?p zRM_TnkZDE^m$iR+(;1OIRoQFlu>pu5gJe0st)-kDP%otAm!#<+y3w;MD;2?{x-+Y8G_EurTvoa2b-pvkg!j@94ozs;8v ztoy`i2kG9~L=vz0EPsOGa^uFZh25~tidG@6V?_pXm4c);b+<_Ic0R(8q z+riLABac|W07OW>I)PG}26i}pEj*Fp3|ZJb?<$t^P0#E1>@~jU57;C7292Vv;cwS&# zh?O`-=JV~@^39-VGfZVyx(`;oUFhuh^AF+sYJc`+KDPo<1g0u5v`S`vN|NQ=T)$!| zD^Q}j@Rc;cCf(Kh-xmW~@!m$q@bNObQoKNH`IqmX1>664QBW+(iB5D-CAT(E!SA|f zb-Y358+GN6)#TGIHS+^g!569hOw8K_(=Y`l+olzaLF|OEP1X$!D67>J!%^Uqt1V{h zsxNAnVJZ*>eV)#L$+Pe!+|ebv@_sY>H){4rubjv zfXeyrbwer0b-Y7ar#maZ{tgBkBzIvYY0M4Y1Q(L-DEDv3;ON<~QIHP}l}pNl1^e<; zkpcajq65B8Pr7EXhKDK(#Dp%-$Ya5{&q}FHrnwTypz(c8bf__nAzC6>E%!g$M8*HX zl|asF)yd<63h2;sMpdwF`rXg{s~a+;obM6JANTy@eWOO)R%%7wY2}Q{5ZElWX59nO zGXL)twOH@mv!B!z6qU1bn|Cm{$usi+(fP6s%ciANna&Q%`GQ)EWS;DQ>CWM2I&tJq zP)*8JDft!AGJ&vXqJ@eUwUN{=>sIs1JC_2_7iymeD8gVf6`;%lGBUAzs;R<+swBM# zNy8?U*mEs7)JAW-#@R%p*i?{1f0GMK`CdF#k6XVra2tTsHAu6-{|^9&KzF|p9KJ(q z=}3d2TfYysyx<$4tBhq6(Be*90%D@|GOY)?%4iX;8qg^n@(Z|o$dQ;agEJB_u{zOM z(E?Xa7qtv;qe_TJogpn2#A=~^k*wPier5FWKO}n3qpJK96i!$=WVkhsEYeZdi|eNr znP;8BwKOHXzGEWLK`-{k>unA6@_vm`f0^Tnx@P>;Gk@n4qSIbjXI+F4mzt8 z*Whk-ArozR;&W5bvceyKj6DD7Kk}St1wAi|BloRz(bhrp>4NRhdcAd(QGg9Lp&*i& z_EA+bAYssH#eX{X@d1=SYgT$)WmJL9IuX`1BT7aBelL>6Pup04lT;8{tcGu2A975!UDz!*i6#}2T{)&^iBp~##YC88V z(`#SS{t1@(mmgl`uLrFw@G4Ox?5T#P%&-|~NVa%&W}Pa-&H2dQ*l39B(KKL_(EHgP zuOj;S@hbm#U?bW_Ye$57g|D6~q%Zd|g%&4=ld?OQoDVeBbAecsP|xL-x9}{Q>UqI9 z^yRjrMBm*L1lFLOK<;azAbB};z-&ghh%n6tCC`b3p2iVw>4b>8sEcJjG|Ftl28M>h zeXu&9Hy91VZh)Tq0XN;=tuj8Zhp~sDPHB#K7xpH`b}qV@^${Ay6b%zEJ5yd+WDYhB zq^dG^7dqeMxcnW*m&}|uO|<{ttNbdO@0nZy%jVu90y$*G97e-2^n`eT6+AZXo+S+~ zN|=WDck-Eu!H%woMdWT*H-)M)d}G=}LrvuB+zKl5u3!J>cf5vZ^3F21bu<*DbtKEF zTM4?#2q1ewXO@x@3qLBXz=6CAoqMD|f3^qB-(A`;9(Q>8K0?3V6N({w|k zxJxBE<cxrV5*Fj zk()$AZXce_o9jKB8WS74Q5rwYf_!X5h#|Fz?R|TcVPuDXU0j~jYAi#V-|EJRD&GjG z?C0&#t+3|~+zij2n_2<=kAt6>X1A@%-%yy)Q&osURcc_LnQy>kAkcg|13vpO1lT(6f(ON?wBu_$_lPteTD>P85{nkYf30qs9>qKYAt_z56So2WuL5H$} zv%=%P&st>^xaj*kz{j1r`VGNVRF%A?7O|09it3Ul3;sC~xUS5%pzg`#-4y0;Qllu3s^2H>76|0edRU>+j>AnB;EutsUmgb^GspTc{DvxjE5hVQ z)n#NwYZiYgtW8RHl-o6+RYBGn5^4~xh4F+WmHPyRub{}M^TyE|Cy54rKMdJ4s48Q1 zkh&EzF`g#`$v$!NW+clNaezVBbXnG}aAK~5h_@c7Dq~f+{tbWnIi3@BRQa0%Rb^}f zo?{3yjpV^+o*fx9Q-TEm+ZZ)K!yHdM`@i1v1frKcq{`o_NTJF+Iy6jaGKte^a8(ek z0#jvdDh{4~*2{=qyt(txt@5`tbYU&h%#Nm; z4U8TPL^nM8LZ16KwRKw!Y8N}1Zl@7N5qfW&j}7bI(c*A?tAF}QUp?}ZWY66~mVs7h zZW*v)XWN5}u4mo*ZlXt>RON3~^eyIOq-NQWN07e0;dtxva_GA2%A-X8+VITFRz*IB zkJEGLqKM9nanIkBBUPZPj7>)W;FEdo|M?T=0<&&l)7B1^rSV)J%u4Tb2fA?IsF+JV z=s4*>{CuMSvo+s=Rs+qyNO~={)Vo=#IT3Dx7Dzw$PVRee?5^^+Dj;0d2Bn@O8mF-| zk<~_XB8?ThdKYgcdcjZ3HPnp_X;h03Wb9txaD3J`T0qD6#rG3^?07FZY#5>nmYB0| z-{Hf18B28R*zVoKM|+O#IZT9*69ZiA`{ci-{96H`{DCF@6*BMXDP%4|Ckl?q|4#~* zAoD$YAahzO>-h-lD&YHJQ3hCN@R!-tn>?_TKn(WAR}Bi_D!ute4P4+cnv zS9bVX4ciJRw*b+eJ4n6lW zN65C!Hx8kdiK3oku-t}BbnF;3eTgX(?cE!(-^U5#TbL&N&7luIf({gW=j!8}*mM~^ z$3&wON_u*r={#CtnvXnIuf~1QFm^(Xq1Fv2bB5P*05U&zA`Q-dLS>%oIa!&XKzjZY zCi9c;w$9z`@Zn@ngIkST;P@_oO}?BaiT>{RX1a;MzVneJi?S%ml58aLG`Q8c4;I>G zI;1PyEer!^8oNkMiCz|_%GgxQo=vlK!hD}-{g8?{Cv{H9t%YpiNBw?tj~rpx$=nrTd4EPR;K*%rjCNK5AEG)`#7@dw5*5 z=kVUWM~_y+Jc==G89avi2GPAz{%Y8Xh9Cdfy62u-@Y>F|lJ{*eHILts`KzzLeg4jy z?>P_Dm2bQA=1}H#gd5_POx=Fx%~!q+ z)IH}FGN&cT94iFt17uE1kooX%HEd-Z`|$C;hO8C#p}#nO;u8yARp$E+u{@6Ko;u_H zy;GO&Kkpt;=iO7-mg6b&OjS7+ZEfG-Sw!1Vm46~5)bqg;HEb)ue&we( z-~Z`si~Q}s`FuxB&3lae)3f?1CCi+zC&OEI|M}&Y!#!}o`$L)Ed1>2J zA@jYr7c$>~wU;HY=c}K`cX!jJd|leIdx{$LdJ2IQzOA<-=#{)Mj-{oQA({1XznMwy(IXn3BM`_0MB8_k|MlTkmb zcE{VbO6a0fIArWGL_68|uJncI){yB$LEcSXMz}0`Zkrn-I_Wp7{1XyIFV3kMOKa~> zhwyovY>w6WMT@aYRR-;zi|8}hxM(tpvl|+(YHNXsXEa|5IV-BUPA-S{-uiRjBzlv~ z(6$y-=*jDBH2*rgsq4DP(4BMIm<~Nn>0#=hQ!YkqqZ@z9nxOFc^98;-WOxJH>Tt&X z>FfS~_TC0Qv#PomUgzW_a}on{5~349WhVp-R5TJqt>ep1c))-3`-Eo?)t3BDOPS2WBdr`t{u zoA0huIWp~|q$hbE28CGJtu0#^Z%iW>Nyp290vp25^#Ak^iJk+4cZ|SPZ!<1ck7m!z zFy>48SkyDqhtJL(Z!Dz`CHGJ_UX13vvbLKk=h-Nr*l*#L=!ju)o2y#rfQLojHh0Nw zkInrH(Zk1tJx5!e|2lAiqRCL+ZW^|!O&dwi*boPj&Ia4?9y~KOb*fkIX|?|CRu${U zh&$Ed8`nIg6!S?7H1)~e0rw&1<%~N0D2A+50x~^JF1HmOh@45NHyfZ)%l$M&@)|m| zQn;-k&iH~0zonVIHEf+Q{LsOFCi>`W>hz-+)iydfC7XH|(Kd*FVveGrC(#Au=J`t9 zP?|Wi4Jy~9cAJAE^y1uFGef)X`1y;U#S5OBF+PrZSUAllAzy^Rll72WS)k=?{sfkC zG*7m-<0)No$c4p{#hDc(Z7qzA10N@8k2c*KKX&5Bh~_tOx8uhFr_wD+OoGl-309kH z^uuV>*Vjh_24A0NOOzkUErley=0qlnmwikN7&viQpyKdpnTnl{&SPjj7fH{$u=fo_ zFP^B=4;M`EI4aAkre{7_{b_;`w>FqFwbQPo>+u{rgBG6<<>b9GHo6iPc4DSYOuS@- z%C_+w7{jP6HffJiLg=DT#+SU`0R@> z;enVx2le=13(L0R0SkpJ*c33OD-$?bzAw3!C4U=PI}(q@uZf>v(IFN_hLWLtA~u@M zXBYok>X90UABVnzh`WX+X-H$r$x3k2$Mx739Cz#ciLSl3Mn0@Sujhd(1FjNMv_A8k zsWI}-hfto^vL`{*V(dK$$YUMUAEO^e5Q@efI<0^cx6%fqKP8$m=sXj~ zk#GZqa*z9o=r4&Ldv&0fu}0k+hI8dmz310~)V0neD!Wi#Eu;+|z7`)?ST5b%w|Ub6 zS90@)B3L$w=$Rr^L;c&_P29P*gq}}+W)IPsZ_Q(x@*V-Wa$o}$>L_)DuY^>QD=w6t zgWX}_%&SF9Ju-_f>vzv8vR^-HYrwq1Yz@_%YdM9|!nc3*=ZSuEtWG~V;m9j?-k1T= zMC|d&w}EMbV>&76Bz)xT5>OhES4nX;fl4P$=v0v5K?$pVAoZUS4SR(VGHGWRokoP} zf1VUSk7)0odTKL@atpMg9Z9rM7ysS3EW;KP^Aq*qC+W!gtbDsAvye;F7eV^4D_K_g z2%;W;5!cXDr^*z=|>LN=J+c zG!d(XZ_Hr>cTlvhJA9*9rQfR24mYoJf2nVDW^aB%LyPjRY%7-w=Y9?yQRMvW-#zji zp5wn5!jZ|N9w(SO;ZUe(Q|!hJ?uTa9QdiFmq92B##0M;;ol7kAJ_k9t41*(%N;>X+ zgUw6`A)PNzH>HUO9}6TYD9xOFNW+duVTQ|$9qv{cpEUdeexSYe9iRFR(Q6KA&&%V| z!&E|zlHZj40w-?K)85yj&~{Kk+bWSz6=LE6t42FnI1kj6uR0exASKK5ZV%*u4~#g; zl7@bG9~FrF6=og`eeU8! zR8ABW-E3sZjG#|Jk#D&5;byd$OO)s!cyX%W-k&H3OMXxI+MW;2ux)uqiP)}>Y@N^+ zwocfHMy~-^ClK{o%M53!TXg-s^e`mgaw!LAC6i)Yze|L^$cD%!sML&H zVj6_R5w3ZdQU8#{qZGarkgxa2OpVE;1P3RhfBmT!{#T-H@-|2lT%E9CSaDs2)(WN) zsD$zksc4HS^4LJb6q#u#;dQ#rY%-l>ymm-*y^?5A_7GiMt*8d)f34bXsPh_yNmmA# zuxa+So1Xsv&`<39^*p9pVT+LmxH{obXj9Gx0KTkzh6S+YD33(jC@E~P5Znt%`9bdt z=|oEEw0hvd+B&6!*ctC-8+7j-C1Ry>JS>$>hU}Og3Qii; zPS~{))>9yrSjas#csxnN_F9w}`Ngpnp+J(>4~|-Ocxx~hW9iZf&uSbBLCeQTkGTh> zXf(!F6ME^hA0yfk9{4k@(rgJel|Zm)l*@hV1LPX{!8JthY(0kpUZ*Ofah;ankk~*u?f8duMf>H?5}nUh#9Nd;{)6$x6VPQyI<`AD zfAYVyF`IjGCITbG69 zT8OUAGZL(`sDMd93>GFs6cr{5EZI!*Vry}_6CY9Rgn-n7TfZH~m-rF(T`I-LmSncu zaJwduMW6Y%;^;@e#ZTf}&Z9g{t4=Ka;^gl?i|8$n<@A;)vt&#D640$pXf3`Cqt-Kr z0-ByUOdZBR;VhV*hQ`~jX^~6b9v3`75<-@0F-=g8Y^zuJT<{cXQN!2If7_RduK3wH zy={i}c>E@z3QQ%0UN(hdY>X#UCjc8Oq6sasf8hDg-%Iq<^0xN>58+#ED#RZ*&Nu@P z3fwEth;Bl+k8+qgA;5@RwpoRLgO;p?D!a7_XPwYDM6_?NLTrz)7COpc3U8q}xaptF z5M+|F%`tg|^}o*lYLkrk*5ACcq^r-|6mW&NG_}3q&R=;i(a-4>)H>kmgmuH!35Nw1 zjma;w6ED!jFK0q3m8%1BR9f#dG|zxkt~6cGg7B- z8tYe-4a3w4B-JHjyjFBsl;DZbEXZuyZ$4qS#mc3*at6^P>^6J>xr{f=xGq{`@tep! zX9eEN6Q!>8dV%q!AN>*0FRuGsi_#FOVGW)oYK{1?uUwl{>fVMWwVtiG8acci3ETR{mG6p`(iOB>^!?PAVNu+eu(IS zrSG0k^z}zVk^rw6rWEr27GvFri$oG7?e&Rj>J$`itI%Q%`Fi^BaD#)-@q&&0ltwPJ zUp0FyubS6y%M#Fq+*-)zM^_?xaf0N@TuEf>3!);gJZDhC4YMB@BYMl{;IGfX>mcOF zV-|9f%Y9o$`+6uy<9@Uimh*(e- z`8GIsnk74Zj%YC*(wMk-Q+G_wc(gJkPr1ysXp^fGsMgcg>92v~{T?7G#hWY)F-QUh zXoSK)VfuvI{_lS$y6uytm;hJ0fo&=RD+O%ft-ue!BaW0F=o!;z*wkJmcsA&4c+ZAt z*&k6yGM1j&p*BFX=^dV2LBQ>LIL2*!WWrrNi&eM|7;6oC)ZZR?^yPC`{vOfY*M+bR z9!u?onqdoH;SJOhWfQPx2!$ z5(}v;KJ{i1aL@{UMT%&&UyL>=bj1ENPLO@~+=Qo_#b#ocAlu4($xJcx;ln%q4v7?mC za~ke)FlIvuBs$AHop$GM{u$A~=I4Ps=nO-VKbTMOe6 zafXYsD9$p`Y%IbP6@zgiHM|NvhR4MX$eGZbOL6QCJ3JA%s3cuQZ8%s-V21I-iR1ay z&z&w!T(JNecKuJLxiot_=Nz4m+@PliNO9l&v(8TwefC5pIeFi*(%IA$4sT={{jok+ zL!uQJ4QUZ^9$WY}3K3ihd@(eIy}s%jjuP;XoQDXNqRT%M73jwMj1RW~R4+D8_g6U2 zy*y0N#pT?1*4oL#xm17YOX1)wp8T2fh~9BeEp9Cs{aLTr3>-}?UUAj8Da2Kk^nQc) z;_z&9BJnC2)QWiS57~NbAqH0`1h_gOkSbO{NKh#8SS50-3BFc%=CwEd712!>`(Ry* zYLITtjZSMED*o^yVawrY&Plb7L<5~XD^$HD;9M@okw7!SBXE_F!ua2keyLaA>NQHr z?1&t7LAt#2iG8H#zK18>^Y#DD>+|3JgA%ELDN)2*3fEx#Z%gyx3h(A%+7Bz6^+o4n z9<{jTX(bsi=^|&N$RGfxyTSRFqHxV%+VHtv)U(Lte}S@$>q&v0yMO6xM5q2?o!&b2 zQ3$NU$4+BzCnOjRkcgifoY{d+oLQW8(zGn9)e0C%=iu}5UmI09mF5lR&ZzP`i5Xk*L|4imf>p5(FIrX*EQkFPZC7=MBb0LoLvGI^HGv@{JOxH>fSvo$!dm5CooNr;2Ge zaRLzx5jI%n5(7RvSn{H7Ml?I-xt4u8HMzW;5{&^n`H2TY>D{tdutI zN#ghQ0^zWrFjX7JasSsF?ExMX3ulh7P(`Nw%R&%!$6fhJ(w*xbjD}nzUFGL+ zV*U2^jq%JmMAtmCPCr&KLU-bEm1N4Q=82ogF0O;^m`c^W1OvDg{cHPL+?|uF4_<4SI70EL2dS+T4URFT~`r(VIl7g2xy&frcP-Od&=xj@v8P1In%Nk zvBgzLn%Qt?Oo${0PfYO7lpON6GSs}d+8VY}+VMAEa6HkAZmrXg8So|Fo1D8S88$C3 zh~0D+O-24$BG{EF9|8a2S8^OsvVm#&xRJh(6TMFMTaHCo>bf{16Pa)TmlY?H)0tpy zK#e+>YJK3xkDeF)%FQH)G9H_lTRL&t?;YXx0?DAVA$B zT%E9Poc_D7Fhqa;raJvtfusHZO^SaE5ay>s{i1yIN z^!)4ZK9A_$uh;3v3ij^4{hA$Y&u8~uFZO&pTkX!vcd=&g*m3#g9q0C4k8tPZ8guy2 z+S;uTG}HYqqUYs9c*7__x6ddZC}M#&{gK0osc=g@?G@&S+yTKX1ebn zx-T5>bIf6O|0mAb!S)<_E`;s!<@sHOo(GwuH;xj_biXR-`LT%Iv*&zb2ixRc4L|HT=*6nGu%;XLYx&Leb@~7B z^ajxj{k4BJjfR`)KYo7*!MC5S%Ix0PmrkJR(+`SB@D)YPyHU; z>+@^Cjw>E4AG=VYpQGNHK-(-T$2t_pw65zq^cTLg>#aoR{BoUsEJ2!_pM7`?Ae)%R zj8rEdOEBUTx4P0~DRJs8-8&NcVf%cms}nYWg@4>P$Rp)#b^5V_i3D$JC0XSZ=F$1^ zSVdL1OrLK>-vnBgzfQOhe&Cx#zw!P${Xg&@SQkvmw|Rd%v`gR4Uq&^}a6F8ML<&+K zQ~28X%P2za(r*Rr>n))e=;gEbHtKJOcIn&s%c!Qoy;_nN&Z=l#PSsyVyELtN*eKf9 zTSip!ZQkDw?b5gNmr+fFlj$hD|6W4ta;p9^+NEjD!$#4*-a3rY-!yH=T3OdAjHFkd zh(HRB2?uE{k&ju&+PZz-dcDmk^6u&WtM?H-Tu&gVm($FD9UI|c{Wx^J3d2i+#9<`J z9HQ+yYDI+>U-2MKcIxJ!%1ldFdACc5+=Ze3lbbfH3p$w@S`qbM#^?+M`$Gb_&(!@h>oPmQx zQksV&+}pO`&6UUu3w9Gc3`>SDYdbGY@RFn)q_R~&zy_QUBxi?&t5(pH&yo=@J3o{K ztR*;zA;x#;HM_hlEtrcPDHYjpoklG$XNp=*o_0?i_RFfFgA`L1-A3#7M{Z z4?VEQ;hnrVa&gw_P}^+~)}$8g^G5iHj#p2Kg6W-{9YuG7rm+!7qS z+-D>~)Q`Ru9~?2W0xQy3OzoJ)q?9aHm1uLYaEzTB(5LwI9akqZlBfWS*78iXz)>q8 z7!dDvmW^CGKgR0r-12b_wtN)d6B%MQSz2RUSZb0!lewa-V$QH|regHPq%0F9MyUF# zbu`8y4oA!0U}a@-I-BC%JwARwnd7K;bYnehD|V+xu8ivxn+WocobEq{tJMX z|I!HvIECRxP*C}r7*D0>t(NemM$}t*quG!)SGt+|?9ROGFl|%F3%ZlfIRbazv-lOF zAH2#ZDcE3>H|5|laI74Uq9G@J8e(d&{Fe=z$k7mM&sChpaapdKXagvTA&yYGK`UAd z2S>J!&^909N)zzoo1b-1=kfr>cAAxe^c}Ckge~kgZMB2muLY@?SF4esB%9QiDgSa_|OQ^&$5wY)#*ZN!uvg&1sXcDl3gr<>0je88YA;} ztV z1l9_Uq$|*>AyQrQBIlUNWSHV1a-&>r%DvxX6>K3zXixh{$Qm@>fVZVbh1OisX1N-72y$ruz^-28O1U zAg2jq_nxmrjJ$A>)P|uRQyq)tuw2ga(04z2C)@I;fk~j0nn&`T!`25fIj3<{yCPq~ z+9J89Na2>Yr^z6G8#cKDM4U^wIT#G6Sj&$sJ8uCsH&?Nv>9};`-)R!; zdF}W-(cVhWfCtO`JIW@F=UxvlNUh_V+)5T@F0RZ$tktleqwurBtlXw0>Wi|<_NIUZ z85cG6&|rji&inEz`~tl~F&GvW9n>d-c|x?Fm(@0VBm3+vFT*h-y!x1vk5O=s_!UNi zxrbl_aujNE7ngb=I^W#3+-0eE0@wFl8b4?(bB**%T*T{n zy8C9MmsH7gn-8OH09*r?Wj?0nocnjmQ@!*HS*3$KB)P^ZIq9F5E{k^#Q+N8`+33X5 zCKJb9a#YT+!OiAssj_CzpE(mwYbsx?(XVlv;+#ecG98Kr3>#piGvkbK;sZ1IyYS zM*bRbJ5p=3Am}h7&a7cIC!96tr{_|ndm_u!Y!&a-wN$F{|joSc*?&4EOm@Xv7&UM!=Bu+bvM&}bF`SWikO z(42_%gR`bXNIB!n!P6GCCR4SZycuPfN@yBu57{G(ld-rL@-?h`{FBDLvXINTpOz$T zM13#gpY+0zIsYI?DxFaPy<*{kQoBSH0j4S&()yEmcIGoY_L=cSVzJ|6lv|GBxsUpn zB1)WWmOSvSN3J4z)>lQ&!<^s6q6R>O{Y%2e3D3I}N^r%?S{c2}(}#2DgEN1ik7)N~y@mQr-0S=_Of*>ZPpQ zqEG-xCKB%&;L`L62bQs1cQE$iA~$j53lrLM(LfVCbvQ%x)4#gsbL2W+Ul9GTg@cOp zg<{#?N1Usg3Q*wq+M>dg_@*4PMTbVz(8KziRDuG_qru=W_B7QJ@=VPsU&ctH1oj~2 zMWb9f$YoBF%L|Y*jax7rB$Ra7(AX}32kw{rG!a^|Hl+*qc@6tprc3;g=nl*s`0TooOc%U zoP32QF#2N=9oB=qxRmpvJ)G3QQmw3jdA&ZG%Fup@mr5BXX6prk9YV`9CRY3@btf5{ zUNs#kl<657?NF;_7bjSSx%;jk{@WLb-Z3mS2&Jq;z5vdQn*DJ27p{9&=CuTwLHv;D_rdEcf7JrpnX;6e{m z?hu&3NNLv0b-*{*TQpaW(val_M;5cXMQ~`UYb@y;?V8-i)x8Gl5+zsSPUK`F$(hw* z{6H>Ki7`wxU2OHqA8)xPc#;wc^U8kFW|K4s`_YSmF-BR3J3+N}zSd*Z;dH{K;eKKI z`|rBxJw&IJzD-=%Yn3d7?lSYd*l=F^Jgi=Zt7QVi=};^?f9_6*iCdPgAYmFg>@XWi zl!=I1plOcC!2;14vbr~^8A{pEa3FCc7fdYdc!;KKKP^rn6n(mz`e%qvqiA3V{G0iB zh}FBZJLVxT7G9X+7GMV@hpd3Orqm>~*qhAZ1~y*~^D=vGW`)zHjtN=kpj*Tkdt=vd zYPbM-RH0M~cSKL}+hYcn={4!YUwpzxxUc>mbSv6Ox)~#g-C&Y7()j#?eVvwRqY$=O zi3nRe);CpBC;&8;#sVlf%MCmb(cVN4I7W4}u zGEEsE3GAX+zuRo!*gQ_t$+8e}%Q1GV$>^q9uVGr!2kDN4IyvjEL6U{@Y| zaCIUL7Ypk>ai_Efc+!HyBqJFJGKxie{=1Q232pJgGo!Smou@v7QE z*z~+H2SNwT5dX*DOK2o9=YiT#4ao6p{Aak5?amyJ@Vox$GoL4Vefjxwn|oH6MeKeZ zv=Hx99IrT;ZB~T)3RZgK6U<cKJJgnvsrih4J(2D%-|TAXYefKG_w|?mO!fkMW_}A zWhreWb|rE=LnLXs5Z%Z&AvRZb4$v5m-KOrwh#h5{0;7+Nostg^1|-Sv#SP1&!yQMX zuYKhupXJ22OKqG&YO-7pr%#h%_L$-G&)=3z+8H(-7Rt?1z}6&mxS@P#(uwG~Ik4XQ>^Bn@&tZLr@x%3oP7FRL498plQfJ76o@ED1uSJBQWaab5SuEZvm z=QZk!q((eAU@fv3!dyg>g)>=cvmq5SPpC)*L1c*tT#^n*FO13k5*Fdd5TRPNXt|rC zU`6@IGE)Rn&3 zmSWFPFXR%IJj>graAZ_7;t9=7xT9yqCvJmTT(J%7gB8(9z?2CU#1^ha`%~GrQdt@C zUCBmsF~wqb(QhkL;%IEa>4#X%P&P*$7bcvbM>*7rBUYJAIv)4^!PLvZ7`FU^Ho%tq z>9q{`4%8VOwZd~BYeGUpk^!2Q3R6**oWQ?*Jc+s$13`3(YV_gps#GMO+<1X|0oRS5 z6MNw6#7~FRDg@km;^b#*yX2Tuxs@Pg82J^GY(u$7Rk}HpM&Y3my}qu%`d`^OD?^gn z5V9zEOiZ-IU}Z5OT~R^m6<8A5kX>2wUFC8Is4%34-oxdNRHi(wTh3F@MmPW{SxluaaXx6l=lHW4<+d*u$NMB&c{nOe3Wpd^^| zU4ro*FIXhGLWayzh7}MDvN91_40lUUZ1~$z8EDzRKKs3&&+Ok!XrjI>9+0+1)W;c9 zBQ?K*<_K?`Ma3gdz0BMMO>_?0Cqn1*Z>=YGLVl#TY!CuA$atts`^-(cSwd3`L|T!M zly1PHms})tT&(?XbE;Yj*{kpNcOB6khQ;AD1wk~0zb!JEF{E6- zro@8Xz{6(OTQKVrw?pU`(${HyNS9a&liLJ%MoWIcw@T~xeNA}uS>TJaXr|RT?|5ko z5rFAC^?&{1d6d5WKY0>5%4(Swq&*v57ymPQz2mjIWK4lao4hk8s{fhP<}~P)rLl{5df^ zoWU~xollS4NOaPB0>SzRs5P-wCY%;6&%4)9>1nSv3COZ=(Q6_HCqu`SzdI<@09A=r z682RlNRjVJ1b_e%Mna^#E~QDYFrXQEy(CgF5VBbbC74R@8mLUIx680_TpD!-=|*zb zH}n`?qHO9q6VI{AzDGq^7Ad?={94b4FDClkA1GbKBBr=UWMYLoL2SLp2zU7?@@c?K zsKkNj^r@sK`@9xhodDpnT9Ns!C?F>aw8eP{5Bene-IY$8VuNfX@Zz+mN`pdMf@XP{ zwt;9PK>;+gbZo-Z$x9II#8t5^J&Yxg9a*wd8UmO9qX! z)@EH5E?h!L@yJP?*YPO%S`lM&pUHg{xLUZ0sWN1vu9N`2Oxl{_DaLM%YF~gUyiI)~ z$g`?P64{)Xa5d%cF{iqgrdExMZH=HXRO8RqGG}r}C9G|Y#AV>5l&hi}GvE3I+w%EW zlxc!2#;zd=>eal0R)K@#TO1 zzy6fy&z_hQys$IhxRRnLcwlpyWPZ{Vbxk0&)l$(|__qdWik1JKA6ecs)e973*#&<| z?eX>k^*4 zl4g%-DRV(wdWu^v-+;^pb5QTCaz6!U4TQY`MV1&1ODUH0nhgtLo2StPzE=Ht$IQ8` z=dZX@0)evv1A)cj5rjye56Mw!gewP1XexMP2-@x;i*+qBlE;%@CW1zt0kKbqMnlYK1(}z#v7P`EtdcN%)$f8(ij|rzem`{WY2PQh^ezNPG~2L7 zt4iQy%LKa)4Ng65NN>#OW8vbSL`# z#}=bl8KEJTS=a<9%Z{ora1VQnC`Wsp@a*P7}_Hx^Xbk(VSYKP`~RPoY2!OocweoqFfO* zj0RgUNczAx=t%2oaV=r%gm%b3UDyJ-#jtSj;Jy(uTIn=KHmVg&T~ePB*M^8gzy=St z8W^&lx-9LT$J6fGlUyOk!W2y4wuxj2j7zqJ7O(s6D$z&2<*BN~a8xsFiA=e+)x51B z9m>eBB5jD-7%UuD(ZOoXrW$l`a1*^h9}akq)1Tad=ZTati~rMN@H1_3yB?L>P;w1A zS`dZAa^~JW`u!-YL*eADaZ=59<9h*QriPOUB z<1=f^kS|k&WjzhnT4qukF+FW$GudcFlZ2a{+$%GZE+nS76PB(4uitWJZU$a6^nHqY zb}J{&kJ1FphkSyCl3#de1{ldLXMxPOQulmZQ*ET?(>zx{)o5 z13?^+Bgg^Mt=1L$3Cz-*KOfNiC%k}n|&k@wvG2{S)S5<(XdlVirkngDi;R!503U$|(#)czEXz80R_%)hBYFirIbvc4|Am~( zg~IaQStNSy@7((yq7(mL1eXx8)Qx!f_<|D)Suc2_KXD)Zp8BNiW<+j;#x!q*B#C48 zkHmNf8a_d*zFDdh)_@gPg#!OlkdLFeuDm@?f6`@*b(lkATtYjQzK}ysw)(hx??WCC za@7#@*gS%*hf5c%EJfX-UD%e;OX7oU%x5N0eCncfDV4XmvN>YUB1(5t+%-$N(D8Hb z?(rw`8b{Z5+?**R)+FU+=LpUBvQ#;ri6G4=wwlUoL`j{;3a?OO-T85zrUR?g5^D{tK#|J=nD`};)F!X%cTF+*cbRszM3(Y5gQc2rD#72ZBp zTVpFBfu*KttTn9v?O@-S1k07@yFq=a-_O!TYl8o2P%__|rbbaQ^p)Y3{2)n0PlneL zUi)$I=C}Tf#x~MrY*1!w0s8C^22(VeSAgGNxRCywuV8T=7cyBN6{MkiM;7ape3MQi zq%WmQlRO)Kavn7G+B&omST8LHXEEo+fC|CNTOQn~s6Wz&xk-g%Fjjd@kuHwn1!=t# z13DLh`=oO;gi-`SG9~zmIvjdCaBqb*6$=vaw0wX!aZ5eRE_ZnPZnA%%8!V2K$>p23OTOn*P*VWhB_Zu|9l&VI6g zpUCKs)YZ+`SI&q0TP@CH`~QlWdVAIXn>{A|7^dVNS>jQ;Ra#;E4b`xt$h!y?{4yI@HQ5qb`7 zZgZdIFm=MA0c}i+x{SV$3?>ZW6*g|4uv&pwZAvHdxrt}Ne17plYAOB#J~03zn}ZED zH**qC`x|Fz$aY#X&!)a1tdU`x<1UK|l&K*|A3?t!C)$2%*H?&saApW=w`2zWC+cB@ z=p@c}r-ftWCe-5$$8}c)6=%FWh=+&BFG!3yqS_991q%CzGzyoZP+2cctoN9j%JI5Q zXhoANSj0F{yly(vB#s7g5{_-~(#9tCs)xl20)B!be*_Ndg$kef?3?$Q{{4U8V{=Gy z5%p5OcLOGt2phgkPcmFllP~}tf(JeUe&s=Tr=&n{-Ile0B7`4T9V;>j61I@N+^bf3jvdpa+ElA;a6xW`e_mGgfc5VL$Mnjo&gU_G<+UtX>9Z` z8?OVhDD`mk=@Xv$tc>={`dngtq7JPuG)6I89>McfHrqg zat)>&aBxJ$4c5M_*m;gF@eac)hb@*XTh8Z!0#$;PDa#>CSc~GK-ARlQH|u7pr&Fw# zoKfC*59rYZD8SL5zV(H?&?g^^)X?Yd^@NGZZ0eJry~BKRhGvCLOM zbHP{w`Sj!=33DtsxP~R4IQ4H4sCtrgD(2;~+vO(c>;-2M>fc7`am?%xE#-U3ruIwy z9~pfq(Rby&IfeGD%fp4w_ql&g+(8Z|kK6!!IhzE!omUS2VfVz9Ol5myP*1NR*(Nxs zb|R}le?r+MH>3SC3z@MGP0(3M?CzS#Civ=b8JB{EPL%B)VBhmgKSR^scme#b5+QEw zIee#7AX~Iq-QKMmu1+{KEak6NI}w>at`*6H1w$Iq4o+NS3yLpkv%oet$@|}#iLRni zUNrKBz>|1MxsqkLT)?}U6F#wwPveT*fAcd>=k@t3UtCbgOVT9X2$o>rB%4(4tpnD` z2zLvCRNBgI3yccF&3|??2#V}g)fDYfmp~wxzu=yRpc^C9NBwDkCoNdZqBBbkd520Mg1t4Etc0;Sqj* zd3oqYW@#7vk{TY|39;hI;l$OQ0rkVTS=7zrI^YU#xJd@MmiDa$DTl4>$E*WQdIbsc zkBMn8n?h5vE6q=k+f7}3&2=G8VZdAXzLG?`8fT|5^a}pN&-~KUiQZmrhQje*n%@Fb zSTO7ntkvTUOR6ntBCM>Gqwacqnl^#|&o_;l*eQtX=3!uoC#03-%D5T3MZlP>Wis^`)XL zRwS-cca``f3QRG5p5-dfa;HJ-nyBPG@03sOBznQ0REQXdmLP3M#dxd$gQreA;;WtPH1xH z6~}9@0jFz2lc#F`i0^uln5meODCH}k;e{mXq$LyeWC_hB6RZ?*hxJETTe*D5D$n$E zfAB@j&&bzvWiBL)&cZD?n^S=4;K>u-9XyW%9Ls!&xng#4jiV&Okpy{yW;itk+#*L| z@v>F8DL>lSYCjZZX@<*AUbavajZP-F*pN=|Z1I{BJB1z{UwrH|qQ~wH;T-;H&%7@} zj$G!1v+m0;%pYmUv1Iaut?=MVQ5#X)&{rFQtrKwATkNK>kY1Xmi*aA_0y{Q8^R^6Y zlOD4`dNwYOyo?MkBJz$W`u&-ExdqRu(~u@6y@5pE!rzeeB*byBGgX-gEUGoMIN~ejso4 zZ{N-qC4V62n@@f5L#)*w3gLh(`_{Mg&I{59#BpEW@y9>)sqn9^Lgq!>kwrM=X8hdM z)m^*3{cWNj{s>`}IhA-^55|Y7Oc0TQ^M3>&T^T0Wuxb(g~v+Q2Yrscry{n4IF@2kqZEJLEf zfB&`LCc5X=GOdbg`tkAOkNo6|C>L-Vw?Xed_(MBYN&ftJJkIoR7@v7wERQ zTf+{~bCvm5pB7|}IrWJL3Yo(aTz6eLA9H)_KQwqT|M@C)Z4~`>cw4a^6g94X8SeUJ zPLCCN)yi%WqUXE!UwZZI?9;xw^T3{cv$Gt!Z_mDH=d9Rr05TsND`#V)_^Chtb)x_B zf2!2AadgOB-}rQ5`8qFGDF(aaJUvJk{*#Y?x{Ocwx4*QS{!sqwuCJF5|AC!%+^}~K z*A?yGy>~Cx<}Py4?bqC}Z*Ip82Q&@az%O5ZdGKqQi~o4r&l6pHF-lZEqiC;;4EV4% zZ>~#Grf<~0`EsV^$x8TkjVT@IZ2n$e6OQ*X2exnU@r1FOMON%QaNlLK`>;n6EDQXf zIA`0wZ_Hh`Gf&o6*UVS_tvQqEuPgSv7#UC3=XH-F?2@}HRp0t#e)939@%hqn%%O2z z%WJ3uJFkA?KGDxy=8S7@KY7o8{>BpzgjB0v?y2?gO(Peq5S>wxt?D^YpK*WuP(25B zm8|4?WPW^E=7&koFOBwye(v5sJBzhB{O5ck+Oy+7M{DW%C$qN_HNH@$6?%U3$-J)T za?6YSBf|kRT~&I%QFoXy)0N;*$KxL4f{%NU9%P4qjtl;5f{sg&hJmLO5_}LaoJ7fZ z!Z)wGl4wq@;XR*uJk~WM987Rho%l` ziW(G`kFU<&un)fLx3h2m4g1v}ky6*HiEexGJ#5tIzPL( zTR%KX&pXa(hY{2*T?usn9|gmmt|znrhNU&CczwcaYg=lFPgnIA6fIJjeW z+dlCQ;De1;|{b3z?s=|GB%>PozDuCZ2r%Z}I9-41SRLu3fEV4*KDcdC>FfbH z(DNfL^UiUajikiB?d;nfiOktgN?jA#{+APdPF63Em&^-2KO8bItPcE-J_?Hk{tg~| z^igO$0IJ%<^`Ks68HHVA+nodUTH54QtyqWn-!!CToc0h^H^VQYy@v@#D zS(%@(|AhTP*6Xn6zkzM&uZS0VK0Xea!~RvFdXC$Y(3$!U!ulb(QU2=I%4vt7=dkKW zR?lI(17OdC9bbn%kDm4&D6jZe*OobRzGYb*ZkanOEG&FGcfxY>WuaIxXgc<^5qI!l zbq^Vrj)lLlZ18JYb(_}8f5SeMbNToU`&MW3%Te05ueyh?)Q~s&^f&&R7mO=HWU1eO zKjyb^r#zI8m?+wfxmn8Cy}PiaMVe4%mA5J#<;V;zb6PQ1uP1NWU*W9;l*k&LP{NjQ z6`Bq|o*FnZ`*nW3c<|&sdY@l$h%vQ$>EDPx6>QV$u3aMYW-!+xb9w4PeVf9n%0>BV zS<{x_Wll2VuR_n^2hZv|-0;^$2e<7j%Y5J3HvOim%)OpBYV39!B#r#h=q_d)Myrw+|By-VOhR+9es2l|+ne z0^?T3s`%>h>&4+Jr+}%13JIMOyU7jWBD2Zk4dPYm%N#7b>&dt{Z~Eb zYmR;%pY=|1yFMj{XI7z7c1|ysY&mLEP_As1xOMbvFY3E-5JaDEzNMk?{bE6e51>k; zmVyyjH=K7gpPcn7-AohDAZ=4tsjG(3Z!~Tp`loNhpYSv=)*EbK4bq0`U?E$jSQp}M zFePVXVug0t_0P*8sP@A=EK{#18#@A0xL;qSh8#nXvy{}&&0$prdM{1v%-S;su>%{BMP`Vmc9 z{J59~Z{A8d0j3sq-d&*%2`te=?1xy>nUFf93BJw1z;V)BuP_hOoO9Ns@1yAfk|!%% zDJc?GLN`A0_xBRL`D_iPIOICjqeQE4qi}mL77oK09W;Xm<|JJ@m@V&RKw424J5HUU+D0ntYAeHf4rnt~#WD~kyJl`mkD zR$WPJ%7H3cx4#T6({j?u*h*1+iF7(>-qN%$V)R$u_)VhkJrjOTI0JLuJ~d8oH2jmm z*%b8E={0KDI4W|qPBkpGR>BEnAs?umpC|d+b%Agd+}04RjiFq7Q!FtYeAXqjXb;i8 zsaO5uSBWn3gN|oPIrnq1ng|%>zbM5w8ma?jgIGa1osMv}46S=0uOD+_y6ggXMeMgZ z?xuO{sI(cob%@D3Gz_+=hGmX3s`K##+*I#2M$!e%BTz8;)cfB>^uh)BdnO%HvA?G& z^@{!&IYm>Bo8BDe(4B1ftm?&Q4!X>lAcbj+}H%*8#P(M@T z#QAAM>Q7ZZP2x69a?pf^%gdJGzdL^3L-&8O%@R? zT2=<4U70Yi+{Y4Cj&Vl9a)}GXdOEO`za;RguABnzePuK;6MDjwiMperB+EZ>)JbCt zLk(PkK}s4Uh;8r?=$799`>*^8(dQmE2s_`B8Z3qM0DQIuYbE4y#+0a1P8l1qqpn?r z@u)#mtcO7>iM0$DCcGpN#W1iJ20N-oMuVi0za(^-QL5)j%F)6?L|(fK9{IX@l=NnN zF+}JY%m1R%U|B>atA4oVFNPtewsS5a1VU(r z^}nV>qiTu4Z*q$9iXF$pMN(~`(aI6P^>QZHpm7u%gYix(d2E(Saw*3dJwbxAA%Pyu z=c|)yoD!O0Du-k00!}Yr z{~M4tr>sfW1ZoNLZbvIr8tZZg5F_C|K0?B=sI3sK##m$h&XX5Z;KBcpObZwsjw)3S z7v6d=6i8FEtUgp@OW6yrDUm8odT`+1b`ZUBEGLLYpaUH&k|8;Q+zDf`D!AsaaTE6- zNj|R`e?KaQLZB3-n^KM>cM7y?Vmmn2Fky#BoLffm!x(O(5{df!x#PevIM;?i2FT|9 zuBr5l)_n5O5kT)LZUjx;8w!DX=lp#b>tr^TOg{Z~Il^!*EjKsc*z zKEyds3s6}vifbg=mAcQ#+Q{T7nxQve=+^ z3}Ri66S=~BmnfizbxfTcqy@_hoQNzo_c9!h7U}j>Kfb>jA*VXrm6Ix$Nb+;S8KRe2 zRyEd(D8r|PXsAb`;xWGBjYQ~{9V8S;c2)`c(o4Va5~5#555b}!jrt@F9to5Wj>oD# zgw4kcHylB~nCaxd+aT)-!nz?=0_BE7jslN3VZZEK=JyKabkE43HiP*W!2s_E9i_yb zLdtxL0WVy&f>~teKy)PKL(b+E+DMi|-%Ok(PoayJ=2G7@{wYRdDyKDgW)&`X@}VT5 z0)Z|wG;^ch&x*Uz^ATNmq;Q+=5yt3Wid(%%4-60&4(7;p{rSML98jjIV zqAYxIZbB1#M0I`&xxlX-*^E|1SMnA99L_tTy%tW4i=9NG5Vz3ic_c9jeThjadZo9K z#3NIV%|MzBTcnZWbF0Yp-xpd#h#sj>1HTs04VLZ0WG8XKo~GSHkTj)iXB_sG@f6Mb zL{pLegD39)Hm?|O*W7RlVJum_k?l|8CRIO+OIg?Q*1t%~`fnfiO0Xt#)HjCw*y>r7;s%i&sZamaZ9LW7f`P#ph!C4%elRKWVy3sa zp93X#%z4z!zU4II!WMaX=CBWmbevp1PLlFq4rUWW93l(-3pJ2mqw!9ED!w{YI9!C& zuC%2%gDRvup9pe(t2T6#cD-h4p&?sA7u$g`WiRgtJIWZrPn6xaBr_jkPEZM z$Jvmm1W}s=$UJ7}Q#tCZQ zmdGI=S2!#1(sSb6lz|~m>0PX7{Sa*VgIOghA@K4yT=O#4^QV9UVX`_Ie{8FyltQbI zTlq=QK!2@Imh%?c59B_ZlgiNkRpfFkYO08K4WwzB%@fa|P$*j%2^OTE;Pm2alGzBc z*2xcFNiP^?Bykuo?7M(hl>lE>8cPqsD_l-WPT@#eYAD0?u5;`k#GK74G0f%jg{ZW^ z#!|C$tn-nZK;9U=0Li9w=6f6OB>M8_kR+8p#uURpv@i(&MOaZ_)xxos^~B95xaLSE zow3ZRNetSeK&m*%()cMjf#KoHM10lIaSLNS2PTl^v|VH!bNoNZ!NV3_G?!N&+`eIw zokNm3tfYxE=s1LIsK&=CATAk_R@S##0&b4Zi6B^FZD0$pNUVbVliZsncc2K;6JGT~}s^g#Vz3K`iS~yH}2vuR~ z1c3$DUONf%phH&A|3anT3b@>t;(wb|0xR6Gl&2xyz?H>c26lbC7kQt`SDXSY=mf&f z{H!64hZmi}o`Q`*z|qtI%t9=CI=JN>83@3}W*cem+h-$D+Tb=k`tzq%8a2j8rg>9F^+#Z(l%kDNSp`O1n}@A1Cac_B>`s&b4>^>33qgg~ z79S_sjF0lr!<#~$dY2b4bwU;8&T3T%bSuLwoD}D4McH*n4nozo+KVo0U{2siM~{;X~iFYK*ETr)tiUBM|Go7 zM95YPZX(yD(lluD;IsF?`7=D5mQNQoK~i3#z6C~@!in}psS12`zFUiwhj{>_cfNf| z0nN(X7M?>LG#KC!rfyKN49Ov1*XqL)o7P`?l^3>sAO)8Eu#IIE=Gd3@Ws%W!N>mbw zg(Kr9Kr2L1@G(o+hr&h^o3a5O_(ryrgjFdHF`7Y@N6{y6?n`^u`g~do;_GFELV=x88m`(^alqFX#uMDIy zlplUBH7)oJeZCgX!ecCcTCp_1DH1hoAND*J3$wGu+s z`(TtQ@P^AE+nkrFmBHp*DbN-+cw+C<9~(sOv9@Ba2So{oENlN?|Lna)@BgDZy#~K< z1WKF&#Q<$RR4aLFXpz_DB*7u`>gv0IE+~bb!fy(ydUG^wUpebNO-8SU7(*J3!R*+I zuD*Ki_dJw+p6I3z)W~(XHvWx3*s1l{VL%+^Vs0U=F@g;Xj}mE0^)oVT_E3o_FP)_L zvU)0eUxI;34Sc0OZ^G8ZoN+nbnRz9$u$TN5xIC1e znH3X$`~y95-;6>_;W|x$lm?VB8GimH)CvsI1s{LGH;Mj2-zSQ(?d9Op8pZ3OG5F>; zZgp5v-b^XQFt@<+KWtd~J*_-OVDR754a6zkHw33cHaw=K-Wyxx^$$@uA(EXsnUbjy zjnXZ;CY-<>lpextgd(3nJ&BW6*~EN|X5eciAj}8rWzTZMbGf92Hle{8Pow(cEpgmh z$I?hsx@0=SlIbPZ(g=hg5+c297Rb#`2L|Z%pQAH~ZvHcnld!%vi8UgkC0ZJ>*dqX} zT%xf&jpI0(=}->*p$3F36J}N*K2FkWC6S}hja;zFcb9JV>vKb+$>KytmoQ@^NMj|Qz{{wlfXEyb zGyS5_AbX=FTB&wr$&JcRCU@*|?*l2+8w%M#z09KQJK*7Qj|Z?B?jXiTU;j4Nq%L`m z%l4vKTpvfVXk>Y4otwZrF9MgOD>N5cn?Yj2pW{}J2DyWpm?gO!UO|6ITUp|#JA(`e z8kw+kDb4B;l)*Xgfqx&{u;6?Hn2S;xQyclN8U$i-T^?3n z>P1k2gJX(t$tx%-`?=@b%Ious|2Bk8@Whau_gnOz?X<{fh2SFyog+YNikaVEhX}C( zm;1CeWdyB6cQ*l7-CA79+=`P$OHem$(%hK*pooTVjIr{Al;W0|dSCE_siG}h$yF$u zHn5EVVEr!!kVS@^khkl;zdN--ZZ&+vOsV;pw2u4(=ehg`#He@%5go9MP?_Li%rcr3 z!S5;&<$y=ICt_q;rd&e|XU9gwq>q;pnKLySsj=*4$?@pw8Rbv6LQxUIa=GAfmT_?aiZcsH`+5|}j*N2mCs5v0tr6=m7P+G0yEOnGX0 z<#m65DHH!h2vnBJf~K<4&Q#x$39DTqFYOV8Z2gsJ#0J#aJ14Lo z!EqA}xs75;?rj~ff(#X+ba)L|=@;VSo zvD!(jA>V(4yPxQ-;XP=DP5n+ihFnHd(fKP}XKE9Fy{I}94WbaIgapD$zz&3ALGt@5 ziNk|30fmp@G?c=SSMLUeYgoU4X4n|Ih*cV%<7BGO3wgE#_zSxXW zMBbg~HSHSzP@E5`Kb2Wpx{MNsH3BwI5jQIF94Q6aynJKI&vbV&9r56B*rzd~35HmDzNd6Xtk))FDFwgmQI^};|q)MssP6U>{zOXAu1EQ3KjeJD{BrS2-_9Z-{I5;M(f(pr>zFtB_YhBJ}t>C{aG za1t|ROp-t`r~6w9FsxEzY&BL$Jewt0AZGzPC83IOvq@zg&zLo7hnH3vx zMKm_P0PGDwQ$F1bSs3%$_6buLUv`Ai`k(B zLXtL?zkcu3@JVG9EGUsZ>0#(5T^lT8$LHV-gw%ZCeWbDcMtie25 zE~)e_i>MA@kjD!W&R9pxU9n})P8qYZu178dZ3vIi`4>XSA>F2(OJEEdHuGxNSMAnH z1Vz?Qb%~m6FHI2hETesx>|=)51asn9Bd9CQiQ-zAh9}6-lA<`0(y%3>v56)|)Ct!; z(Y2b>GA^um5|8I!gY&pvb)t|1L}%osN?Sqrf_u;^zOC%oPm)9i4bw&>@2E+|vbD=( zYkkHNW!@g~v}`Cc!{~j(c!1j^3hp-cqe8rxkLM9~h+!d7n6f>h6Sy|>Y*a&_&UdJh zYk~?(>mOy!+>-L*N}=V->TEipNp_zqJ4-*{-p1_9tdvJfX{6`lMP=(?{|SvfK!})* z$MH{A3Po(`x%jO_PaPIZ_;e^ec*IDGFl~<_eW8xDmRZqL_!43NhHgvQ1|-U9VXGjt z9KzH9T|<*%s+T~Y3mc|0<-9{y_7Y|beHMA%Csj02<9=XTE4xVrK?9VDmDcG=U!Y(L z23!aiH4jQAB$}-CL*t}Sk#xEPE|ik1?0<5>d1ibQwf3b;lkT~l+aV8iDSwcXl}Ruv ziNX1Gwa5J$(eK&uxv{$^g6YEXzwW8tB>PU5gQ?5{+G$epjz<7DpaQy#og2( z1Z;9cFc;QJP2+-0Pa~`d|NWO@bE6&QwtCyChly?LiP4v7VM{5pO4Fhb)*M<% z_avffQ7zVljg$h(l6^LZ?UjKPinfoUz#BgqpBu#0q!P@!U)I&Y=Q8zClnU-LBZ3rX*TdcVxE=U~fWA;rKy`@=XTR8j(%* z#@qr~-Qh#FTo!F?>(ualO}FYiozRWB+}KOdM!zt&`;UmekB9^sF_Ne zO@o1g#j(ysW|x#hDN%$C3FDpkK_QRLq#Z6?(?DJ)Oxr&9153G1#*yhCJ@{NrrSvJtb$XoCcU|? zOG;6CNU;acy!!5wiSDeW-ilBKlY(sUoR9)bc8>1G&_=EvwFJGv#OU`&SRa@eoV&8O zFk?j3$>2&77X(wVyz%#*`9`+N_pCY2Fw>h_Ar=+VpcaqmN)0+g zn8JLs2=uiI*?$=JOA8+k!&yQHntBk(EX9rIFv=isWUxBHVN{!?pswUqD-jt(NUf+? zK@b^i-kXDict`p5_Mb!jC)OsdU2!W^HmE#}?}<1ODCYoFaA7qG!*wwz7KMRj$OC_# zI`$!I0~fi7Po7-J9kj@bkQGN11c??GE;1gS3FDb=6#)_$t;rQ}XfXD=&;Hv7i9UQ$ z>O96#hW&1dE`iKlM9hDiZqwF*c|`eG8+g!G+k~|cH6*mnPdEd5`KRFxyqBlj4u{U?Z%Q{MnBBmU$XrtcLLdQR&isaX-C%E4sh{D9Ogf(3RKi&8LX z=g20d6`^cW7+3qPE<({+M{TTotZm_lta{Uca16O6u>RSA?1lxs0EGB&$0bWD&3!0~ z8>pJH-KLgMY2*zo%9?#2{KN{jF|JIZ?c0Tam-wrq|MgX(-%dLl zRuL@_M2Pip@>nzZ#>GL1?_hNrW$>~ffB(7BV{45C_E_gpl`J%D@%Tv?AQmEC^3 z(4+AB2A;i0uNSiV%f+dM6Rg&A-t<@~&QV&l8D!uI%=L4na}3yMcpzkF>Vmw~Tp}tb z0G%QaW%~xsLDbCxS9oUbc0vb=YGHRk{W`!-S*Z}+GMYBrB?P^bE!{LOk9CqH?(HWi zNa&c}usdNLhw|D$NnePz6w2`N9J~yP1VeKc#}po4i>X^7u^Gu{x5h+xj(G{YnU@;z zZGSJv-<5QsGe%52tQ!&jhbH*)irRmj#;s8fQ4PQ`hwn1!R>@hs109bhW14kH2>yA( zCp^$-Zy27Qgxr!Yl(JXpYc@e|!2A!XyXgs1Mpy=Jhp2j~x6fGqqe(RqC`~Oa?rw#O zGc3~P+;iA&YY5dS7b3O0Q9sx2L4;*Bbpql&lX?~V)M4`EQNqS&&6<2v&0+~g)yAe2 zp>S-K>`wIPl&zs*#N9R*1Jni!h?0K1<~^*Keqo@n3X3dah#+-P9<-P!31#fS)jkM^ zxC%x%|HJOBped>a4+O>_tLKhIJQp33bVHv0jiTVk5^6IWM+0ya4^i~Ihra*s+yaM@ zV`gFO$-0&LnW3mH=+%KN0w9Nmt5bhJ;^(;nbIl?KN3R2ST&8a#)bT5LbkT|l9P%~C z1Aq}}o1D8?bAhmqzL=s1T2Y!TH;o7gu3EPxKchh=2`h5K^cP!RNra~09F5j&v*2Db z3Dkw^40ejouC;JtF$FV0j26?;#!Ov2BEyCN%dI>{>QFQt#r>nqc-I_v$#e*YJ#FGFlS46=?d(5L2Zm##SbB&mP=5mmt8lntqic3sRtdja_ zOb2UY(jpV&44rQ*uMM+Yu`s}Sr`D)FvYU%h{iB#YXgtj6XDz`Kqp-DGqbNk1uoqNu zF1ayoF?1eN=P2k1WZgm!apT6SHqTyg_ObypCkKIgqDH}E)tXCc01KuDvq_m@)5SCs zBm){o7U__|L3VSac(BARM@fnit0rn6;vo~)WA>*Y%`pmYXeX2`4Pp9bexK<Iv>3hQKTL#Az1|B2BCrPWP4y{8S@USRQV?3bf ze+ruV3>Q{=+o+tNPm`=ZTL=vjRX6C3&gU4rM!6Y?`g&g3mk2AsYjE7lGMOy-DWiBXC+(7l0+qN7>wDIexi*23# z0hc^$$FTd7K*@NPaV6RB~XikUYP-(*OJ5pDS_D z%NnkeZiNFETKMng>2{>vKZQAYpj%KV9F~&(Og#rWFg`@2W zImM`LjCD>hIL4#IUKF1~&Yqrpx@C&BSC^UzXjG$0$r!eqOZ*=BcGF|I34C&RYy*3d zT`w{8HENH#RU11nL2W!$c2oYr2Hf-OmL)qT()QxIY?( zPUISz)Oavsq8fK1D(X+V2RS!JC;iF{6YIb8gI`Yc$Q*YJ0as)@ikM=adk1xoeZ(;p zaG{Rar&xxDdbp-P`v>pgdFwNt1kY%+Z4r9Vz@Q~1JSVs_q7f|(3Qq%)GgQzXjqVSa zI~H_*Lj5)FP1*0MIQXJ1#vLA>Jh8TrSB9_| zJP7(RP2@I?Ir9`Z(lHiVUld?dP86~nf`LJ#sIMj&VLT~RcOfX<^~ks%|7V1OVOOT;tf6!f}Uu_xYi8W7%rn#?< zquJ=ri=Tus%j1zp&P9!ToM9emC5gTvK0Ti0p&10*6Hdn?7&9~5+^8lgyqoCV(QS4Z zuY(IP@(Q@Vj}Btj0r(%DCFFgCZoXq69>L%)MwR8kb4#d3wkR4K!_i4Pnw$+~35$oL z8`>y*HxE3oy<2NN@iH`%c!mevjd6-5)REL=Bc9^28Pho|m1aX@ieW7;IK zzMhrI?5*J((QVT-nGDaOnQh^gIKeywrX@%s=&PRDVHN8wD3w_a9;WD;u?;){qFX0M zdN;6WLp3~e$yEOsr#CR0XwLf#_h$hsm{XGBa1?o0EICb6TQIuWFvhB_X95E?R_A7D zMyYx-=s_d8rg z`o_Xb+qr;w$dgQVV2wJQ#K19T)jNz{D4e43GSeoNiKT!^5&tI77Twc*a`*`zKcazd zxRAPA@UUe7t<{{(%{v{ob%xk>5z~b{*cyItc#f43btJEN$A8|;b>hdu8jgHowKEnb zlaaBHYzFAl6pn?a>l56UaEN=jH3dq|*tNWHQbPgq=rDYJyHyCIb8KTSPo>Vmx$dMZ z?r#bIIt)jnXsp&XKxcHBWb6~2)WPHIuDL$eeu{=KY{%R*R5K4o$YB8O!1?OuVPp7- zFiE25vgk32`u^5z9n)_%NO{9GT|?a9$9NVn!TP)xPu21It?G$ck%M)W^kF8~8)4E2 zdvDBYhGHHJj>bI1jh;QG+Y_#ty<^?xBn_Qt;?9`>$EFXP9Ez#G$#7A zlgsi_ni*m?`)Pt_A}7b)qbiX{cq1;|K9)Im_q{wDi+g!|Fv^XaV`XhPJb__ANQYke z*jtGH5!7)9_+=UZrVn)S0KAdG41p{N;Cc;L@vP*6%qhUOY~zFy-bV8qqO)%1pVrh(`3qhAsP8Uf5~A8eAIs$uVC% zxv4sIBl_~f1_e`YE}{{Av0=+TmKRoLOR`(5k)Is%#gm(=LpP!?FYHHO7@vFJx7%;* z>=;b8esN~QjUVfLM#6**Oz1iHi!;aH_|X>*GGS&z=c%2~*!m6j`Z4x;AA9X=5cYWX zIvAh(jhXg5YzK$^;!xEi+AsT#@3E_Qg7|t&xDvx-F@cN z={K;~v)Su&+3Trk*cazvZ;-I3BJ2%?urJm{w8Bo< zTa?-(N60V_;b?^|Vma{~t*~3~-+KSX!#fY|Jb3^8Sb!ibM!DZsrffXC@i6=l?K~J% zpk>F#Be=rJ3`yHA7|kxV zqh-gDBe|{vavw$bE_sNewk*2WQ?2c*KXdU(M8Ebx>Z9lf`rHCKo$XTBq0e9D>QwGG zMb1H$Yc(fDq&Z1V+qV-PJa~kEyLJV^;lp`Y8&gr{K8iB0C@!hpkom@}H(MLLVE84! zMRdFN>44QO0Q3uy)9GB#H`VFR)k0C`M2At=OUPwjFH|dYrXLZ#Qs)ktx3sLi%%9Z% zCl3+*hVtov?Lz_dqeM=puer>3?qsR$gv{%uvl24*>8p(oJb(WL(Ldhp(*di`0qAtL zOFf4^Z>{UERtpQsoN;91;qBYmwV;sPJL!Xy5o(?u%S5q1&w)C6R0TRmY0Syjti-L*~KefBO-+ z7b<*+4tKePZntKkR^@PYu&~VQF}BU8tTeKfh{ZBZicAxE!igIP>+;Nnri(MtEHm=AG-cDoutTBcyODK~nOXfc!A`dFd~*_T{} z#&M?9wT3C#hPd4&eBoQ(-sQ+6*G`!ZKQLwPD+x{u`)y#tn`)VP9!!4e);oya*Vs>^ zIAdp8Wz@;dOLumVMh&xghZ;1ni{Jo@Ky<$o`KMVz3EfR+#@OvNT_N*`VkKm|W4mdX z{OaD8_n>@25$Ak+u5FgSKS9`W>0u@hYDdD!ME}%)w&pc}}R!Mc}VPz{3@6etng^akl$EwaKdyj zqi5uiYh9TDvXroRWDPETkt{_sig)g%xBeH=E8P439-u)723|8FZ}mjbeeOl3wHu7d zIT+Cp-Yka%shBGRcWn9}V8cLtRZS1*bE-uZoHCf^#FQhF03)f@G@(m;1ZRHfRYZ5; zV6!^t2$9d2S!>1V>Zwa=SR2H#9N|X|%s@cw84Qt1_LJQhswh6UbQ z@gVQ18Hyv7Mzd_xH?|7g_sF#`A^O1eK3xEjPxQ7?5=S9gpgM2z(aGmn5v&2E#O-)| zw5p23CF;P*Wr60JfvRrxL|U=u2=Ad{gQ>P}5qKEXBtcX-;XBO_l^esNo^7I%GmeBm zIKq;zTyL=}8+r`aGoHv*p)b~ix8o)9`Yfyp&;qr5A_H=*N>u773%0Aenl&efMMC3Z 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 E;J( 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
  • An)_kf)zO91KPAd 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 !qv{$7p3k?Lx(VHO&%!*LqsOck~?1NR@z)2 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௅x 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%0D76qFGdp?$;p~}{v@Wyh!Z$m*I>N; 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 &KURb%&p?a2mjPsJW||7C(PZZo!# z*B9V2@df(C4`>6k!k($8PCTL%BGX4b9G4ZiQVF{B_gl3akGOab)@!+7- z1<2NG+&~b?9$&zUnY4y0M0>VNDgHE&ij*CTaRPyk#H`a>J+1sxjQE|cOc;QWHY}8h z_eV$zd7S%?kf#Y62t6c$h3NkX)sU=fLqen;PywhRf@+=}T=V)6S){V;ym?pb*lY~6 z#q~UFOKq4aA6NPw_>xVD zC`eqoA}{gbzJj$)-ELm&^7|(p-JQ2WcOLF}etUAdTH-K&bt_cl*NIiivu~>xLap<6 z3Rt==^LJQTf9=@%9RB>W@4=2ug~U-V=?+8fJJa*MwGf+FPL@UxJIzfSF?aH3m1m9{ zj-sp9-%^)U#5s3}ewKKPxF!4)&pKl~H*-AqF8E5+i_7IG+~|8U8i!o(IQntjMEH}X z@Fy+kOM%@j;btcBw_hA&sUP0DKQrm@aOv>ig}#oWDuJA^&Z-3y+c>&f)@-Ax3Vf}D zufJlF&OTv+Syk_^WQ=EKj%VHlUw_5s@&>V*u2cj9v1Lo)Wi9CIkC>7B8T=979Jfi6 zj%}BYZC>c>uUG*P8|JDMH{00L8Q;jcJ1)+3_CAHAn%sDF)%ir^dOMEf`|2y1#6sES zht$6fPtroi;i*$y>34?>^|K~};N1_Gjvmmy z@AQ~s{h76-_e*<6<2N6VeeTUn(qD_AIx981`QJeTPru zaNuC0yc5wdXNt&NqUyOveO^~?9IqZLiBIE2Ga-3M^|-n5Nip zotwWoddx+KmA6qf%w=L%#J(1Kr6Q`Pp z?RNzcKE$J{OZm)qbW2?L&4OH(+iC7OV%0)5tc${7((f=^!LgM-%iE(+yY;s2U0jaI z5(M*E#q6(;)8;Epok`l#QqRgQySYcP)6fQCDa34Je{#@5cZiE=d8GU*Jmv_Gjr<*x z|Ch1Fig*x9m@We*ueAg2#Ar*mrD=CTf=z1FxF6dQj1s}hb2MKCv$lVcfM__g0-;D9 zgSd&NeXyjQ|F~W3q6gE!6NaZa@S!Mwe7}f2>ROD!6 zepd9reTWm~(fKHk#~y47w$ognu)Df;);)8OpN6WH|K^8c!Fczj$LFK2&o-=ug@rp^ zw}X5SE5`BC+?Ce^`Pi?W$)?a~r+-WMs5XEak8L3)Br+i+-{Xw7fQaHKp^wy6h3BtG zzDAjuJ|jeac~X6FqsfA;=`umfS8UZn3bP@BnLvwV9+IAK)i1t}I)$U;*{6qyDQ+uY zp|3yxy0@uQk1p(kNgeCGN$j*x<)Y-XY!2>5JVL!IhI>Vwg`Z|B}w}j#$b(~u_c5>#ouWvMq zo|R2~YQ{G`lJr6rvU>W8@}T!{!tJno&mxG+Hoh9>TpN`G9xE~HdPLe0~ z$AS}T_KpPQt-#r_Hch2&}flx%FTt+hnH{QoEG; z)Dl*^1grg`JXj2vs6KoNsj;ED>tHoDSPdEf!%No5DSMZg7+$vY(Z0@^=ntPr1`BR2^T+aN?ClKUIrBnqQ5M*rw8P&n*`;(Az zN_(f(2vMLG1lM=`%hok2&SK-&T5@yg zjrywvA)!ZmC(UMFzZJ^DKdSTjX6DdHkLwVr=4gIpZ?5&YhZkqVAY1c-W5PLnM4fLY zjwChN(3ZZ*PAaj54nUSd+8dp`k?R-sO^>NA~;GGUbn2Kq=E09{0PUlD-2}>5|YapRtl^);C z(?oiYY#oq(vtT=Mg2HI<;>OKnFFkQu^b~hR;8_g50BVlQItdaS$hOHc5Tf6*;A3}g z(jK;&1^EeQtXA^GVs#f3vXPG7R(ueDVUKj+EdkaeEUQ60d-lW#s<proQU9Ixxr7AnjNhIx6mJ$a? zI6PXqrC(naOrfx=S-vXhXjgxijdaMqjMmC7BdU$=gKW|uC5MN5Zw;U0M+>^oePv9?>RLOD_4J#m{KOHTZjZ>LpKJ*FWfk(_$OkjSa;kztjL@wfQbU%*_q>ZT2i(<{B67%=pyZuPjl-?H^mtE~o^}vFyBsEdY7Q2k?tZ__y0GaGKztS}X zrBUnd8wp}n9A5)Gov{6P5o4m|ucgyWZm%GyDnR}Mv5)Uyv0)&_AYLF?v)_(&PUoOA zYF03{PE>d-jBo*gG1JRg{rwg%RdoIn$>nCnwx{j9NN(HyL^u)?bU=3^qhgxeF+ ziJy`gZzZYHE#Rw|#ljdB>bo!_S}DVrd+zIbel(inBC?&{V19cA-PDl5otk1TH5S2N zb-D7LgYnpws^7ksc*)W&OXIdZoSAZrBoQoG9C!JrC!Vp1tREyvR3?s*q=6;1D4F+{ zNh+%YHXunF)CG(rKP*|!aq;yddVQ0f0Z5WRmFx;EX$niasrl7hAnE2&-iNEw2Pw6SDUiJa2Q)9|j(B^Ru*Tk-sbuvrkgm+D*10rW9&W%{;?zb2<)5|DGiM?9y={R+j)roKDayTdSZj`@J+Y` zdvMyq(SBV}>b#hua{~D^day`ZQSsUWdDVidfMYm;^7%O}Qi>RRM|#OXRI)1~#j>@~ zlATzUF`?MhEliz;bG-8TgL)mL_gr=B0+9uqm;p(vA#%Nh&O$vIHB@U!gTGd3@~NG+ zNs*?M&aE7eSL1wB(o*(yXNxzyWIg&dFT;RJoCd6t22@(lf0$}wFk}iVHmzqh8^K;Y zpi-%u3tJWWW41Uc;)95>>^i){PV9)(fyAWx21dl(9K{76lXJr^>wwGc=y(udPhmC` z$aW(7(ZB$fp&M=9jcCDC&-0Mn0t+<=K24};dpBEJQLD~gq&^jQZdzd2vV*;@%lD(| z)R{|ZIXnB0alF_bb18ucR*@W3Lk> zaHG00E_Gp-t5JSrH`c4ANFkS(QxEN6mj$rPB|_J8yCWt$?2yYsw$%aHIN4C#Mmy4IKfw=q85@)Y z9b=PYhG%dkY05k;z$y#W7N_F95B}UFhs|#G;_;IT!djg4vq>IdWICn{O~25#cVlM)sqeAN zDzYTCA}t8H>+u&6%-OYj4yWTi=k638a1&e#2$Q38Pj95sxw_kkby3v9Zum!5xF(DA zC*5iPZNx3n7Yg=V*-vsEkbbsJoyi9xNa}>v9-PG?vQ%7$YqX{jqluDIiul|D+FY5mqNLvk?!ikb+QNKeLC-WX)9fywk3=O41cV9FUGJ}_(z*ROfpj{2^qNj1 z6sLn{AoXGS0#=jlgnXBl=w%e#a z+2C=@G*w)%GmB?t!ykH;Q-dQun>w!Xae6(^>li_n!d)22DfxPj)7uYE`tZG#5Yy>! z=)s3jf2^>21b7dVP9Q?qVAHK_%h5CW6SBS58OP^+^ThcgZ^7#?M7D7z^d~C0&VAFYwDPEbzJJ>V|GDYrL z*TbfiuxWx~ARS~{@F22Om~frZ>KMVr^pqdGF1}ea3Ew|jp1LT_wNq;;z15`n^hO4` ze%~7bWbVx~WLN1?3sNp9Bisv1x)u8pCU1)IIt-@ zio6w=zI)|cNHC@In2)tMGTlpP1DUW^HoOqP-I}?_iSkac)Nb{jqm2k=Wn|KxeJyxX%@Z&r=S|Rrr995gZLgnm zWm6U+nhwWuWPrgLF?Y>Odz8aB+bw_JyAl*>XK+9EAgGdICWxDE;sV&hEzyIEGMWr= zih!-yB5q;WO2lY2%vQ1k3-ZsAs^$Z>A{r)vVJp3k84z3H%uayEvf(kozhfr2J3ijYW;1q|u1Z90(z(IngQ2Y^UZcXD|Z@$nXF z-@rJh*YUd>m)z89Cy*wqYNElm>2W_33l56AszB3YY8wf}n%2I$ZK$cP- z`4;3$kos%>bzhBfkNd~{nZNGEFz&VNY?u{O86?&0<0UkHg9 z6G=jx6ubAC42lcdI&qw9Bwul^nD!DPDX#TPDNmB=NhO!l(iMG(l4caW@8T766I-xm zD+=qT?ZL%MixLz*JUB~XScZCW0?0FbPitqW@z%oUKM|m36>;uUxFGRHF0nr(S;+ou zYjFVB39{xT-&jR>oFe-)9!Y8xz!?oFdMDaqQ3P?VJw9I^9tTOZBBQ7xH<1szXDAqd zyjs-`amIXb%20~bQC5?n1q&&a71b_g`<%rnz)O=Z4A->r-9268qCFM1XHOU@4-hkN z`FwBHiwe&+++q1R+Q^l^6Vqllydw(!cL;x;mg|&oz6T1*HKXNR+w& zE3neFIgY#N802Ci>u@YFQBGcF1R#iV={$fS;T83_RSTNsTdJ9xgBjlM;m;@u;4&0H zCyL`LRGc+aEJ;~nS(=&!YKo~-0D=HDC0LD!%6}11M zF8;D!kQzl9HGm*M4L}f}7Nc6w!Q9fx+yT_UTWv9{mVi-HElF7=%MH>FvUkxRen{gQ z8RPdwD_m{546!azel$03$#mHfg{7&S7IL6IrC{Ej<^8PUKq-x@BVL>aUqg~b zOMw%87}~TxG+Ph(JjJjqjlPH(fDos&fEJP-v6`346A!{s8hkS&B&jI?sEG43H;)-G zKo*I>!T@8z1X&o%I7I_=GF)rVdHy~g2NOUi;)>D$olFcR1&wb3c9LQ-c-3Bk)R9Lw zK|%}}Fav0YlOK=J<1|1s&etql22vhnnrZ4zJ?gnM=0i!>%Fy4Rmtjde(aI(qOQeQK zKw&Isq+^d~KM!fymdcet^w&BW0kx)NZZ(D+tYsG{#Lnc*Rkd_H+wA#mf%mgv42gsK zoRVd&=1C;&Id75Ij$hdOL?Kps>YUsgQ`MEu4_qZ}%u+$g1Bl?;Jg0(Ea$IZsw!gBC zOIg+pUfz8|QgnbfB)W*(A%R82ah%y3vjFk=s}L`PaDfFSEmm5I~b?+UHvSsd6& zgY0lN#Q>IAL3u(R#pl#r?)yBebIWT?jp>q(kYE55;aZu3eFAw0{T64-eEWyCZ@BG? z#OF};0FZ2`yPc~zO3f=)2frgNd(A&DIa*>HT=Q4qNc^ebNO+1#hnXLBov5a z>ze?O_|&Z26fCo=&tj_^wlB-Dvg?YHV*LzEG_~jhs-=kh&x!z$wEKH`=}k>u6;TRI1%TvHUm)R*^3(-(07$O2 z=A~l%ky`xmr@kJ{+9Zv=VfvW-R$3 zhZj}h%C?l2C>DlI!+F*ikN;FSAsF{AV>rG^D|QYjx@y8>2%^-uEBf@6`$2qrTpHJK z&KR%Wb;!jlA?x5p@+wmMDxr&9tQwnxlhYW(aZMf#WmklcC_!cv;jq~W|DKu}Y*u0q z%zgvP!K--S1I&hWc*e~rJ1EWd{cGY}8AkBv&!Q2y9*NM{j92GG7HJ2iw0_2T3>ZtH zgT}TaF=Jg5FA3qXPf=j(3_Ru$j2Y{hIEx355l4ct!n3fQA7-q7!VDW869{)@&^Hrh zbW)7=LpB>w3i=1*2-uuDXvEpdD;?a?>^CoH$l&ofh%ZwtPPt>@`iWXI{B5G~&!Sxb zRQkq@OX8+zuFcinWr#LBRns7PjMZs4Q}R9>sl(7lg*&qia|{!}F`~4pewRc>Su{~uB5dYH z3n)&8DK>X`0;S1dKMoixCo1#7pb^X%7WW`DCJv1a5|x=@^FU=xO9Dym$j^jxeek~s+?~kVU(X5l0d}PU7fc^Ar0c}D`^>vXa+~b zJoYyQXAw+ofwVW-NmT^_GVus=0m!6*@=bP#7d8G`!+gyUu`63AfF}0H{ZcxM7|)50 zW)JjLrm$YqMlq4Ha1`qNTmot8U4TZ~AT(kU=!3ws8szUv#cTS_6=T_mbz=K>j5Y`! zOMu4CazkT5_Fzn^NhGuGRU%S!f#39VG$`Hxec!DYk5HfY*>7pQHg z0czsWb2SGuG>G6S%TKDT%w1x4rT%&3jKJe9}Vt~B?wQ&|AtND{8i1~9@eGl9?*|8|5Bf-gDZ zF5wI{fCJB?O{lGc!=?-+*>`$vu4y3L$TJ-#KW;};&j@)Wl22Rk^ORY)YnUBOkOHF_ z!WnVcXdYuE&%VI^S$DVzL|Zza98xh7yD9|bdLX0ELi*8~N`-cwiN z!`+n0RGIwP=avA?tg0gQ@Eut}P)(4ppZ-ZBle=211jl%>+DFs{-(SJxw{Q|3?j5rL z!Fif89zZHe1!^l&ch`T$v+fblSZ`2YDw80p=0n|SVscYAGuLHb9Xl3RT&Lvi9CHps zxzZRLrDmeRYCUYoRnE=&_8?+}Q{QjZYIU|$pt6FEc>;>kPBMC5>;pMrng-iPH&!Z+ zasz!`C5BwUQabzGh+I9V?$dMJQJl^wpl|BnF17kJQULl$mrHt)SG2u=wP#zqI;bUjOJ*4FV~=ArBLpIh z-NOkxlVSF83BoY$Fowy5@W#+j4r*h1S;aF+9V+I8+}(|XklCY#zsN+^d>dgQ`kuv> zEBj{~*ks7`)gpT+PUlzq+}nDMNXOpn$H5u4dwGVC(}0tBD42Zj*}R660kTx2!{>J< z5u;u*5WrcS(%#)N>-69smsWW(5d25)}86%(eH2fu$Y*1)G!uY=jLK#3*QJ5l?YMdlqkrNpDdpK5fo~AVdxL0XTTQ!$pzL z@6^T`P3zSF2!UJ=a)u$q-*?4*y49&bX0lE@>SukuHQ1YP+6(->wSHIvK!FYqCKmvJ zqTdWp;;SIj6R}j5*kud+2W8hyh&8MkMs8HWrv4aHn*xe) z3z&l5WjV_HoI)c7Wqh93He>iSy_(P30s0Vu(Z@j+27O#L{DVFU-2nPfg3-qo+aL5% z@)vy!1N5N*p%0@uPQYm%QmmgSfqCZl5h(?FdpaAQ<-HVv^B`#a7C($W-u*=%Jo5qE z2e%;fG4?|a!(sGz{&1K(6(E@Pbq)AU^U9&C;A4q1h&*1~GrH@Sv}0hpflU9rzD||m zxgcB#VFAS`ONcg%NWkqHXLL-EjOwRp-Os4+@nS{g0WH0G2GI9PF zWFieC6W71UgdajCf9OV>C_HBIcdT0Mf5t}IFyv$DFZl?P`WNycln0ZKhJVP1J48Nu zjbXU6j3FNu|B#RQ{~;fWZEm2=h0eAVvjDj1s}J6Q1wa@zr>B=;ffsqoixSX_eNXT6 zf$QFT1^HhImT!E;z9S zuxuWtr&kmU<6jCdHs?X?l0Z)7FLGb)$4(1Sr+KveM==o_(x z`$llgP3J-1NY9r4?Iu^Yx1etX3t0yGM(_j;gDuK2?1K`p4*~_4eS|{n1L_;u0(~R+ zru9aEVo-*IzwAfHMhN;wY}3Rh_?2PyK?c}|Djnz>u?^D!eIsE|--t;(=o@KBC@A+} z7zwxwaTX6@&^OXkB44rn3iOQtnlcP%O4A_d8wtZ=ybOuCyykoS8uX1|*DSHPAOwq*n0cnCz-+6rJS;*;NJ7>uNZgA3@*9G?4&@L9Ex)X3#eh zW7^RS{=DK9N~Mb-pl_t5F99`oocH+%^o>hz2%~Vs#Y(bE94IEVdI3HxgLEnhW zs@0N_iZ~dW`e%sfgKQM&8*yosjRGOkQkFS@z7b`CS`gg8@syow6oKW=)SLh48(9yp z)Zp_ylS?BF(1>a==o@LNy$SV=Fw54wlmqMm01?0!DDD7;(Ci{RDTWxYz4}}9K3)kk zj51^)l)*8=3fc*)o7rmm$o-w6Oq4Euui* z$V6DO1VA?QtElnaQqVUt!5={L&6VxM1)??$cR=6B`O*`YMNbJ=M2y8`1w>jHVbap} z940M{LXQ&xX%VeiG@E#UC3yz)jkuxQLEnfs=o?wts~ZG;BkkchC*`%OrCX7iCsGuwx#DEG6GC5nU3n3GE z2vqbD%%EXVv4lY;$1!j<4pZ zet01l1Gje9DQ)c>H=8z zobC_x=B<9HC+no4;2Tw&oOv7Jq~xQ7RXWx36?|*@k;cfTI7dD`-+D$e=+3MJ#U^MD zk;aNhBj$g1?>4QPsR(Ee$=^C)eBjDv2&joSHV(&G;~~CN(}Y@ubvz20`A_FB&nlL& zpGB|X5GV^*CQ#Y1Al zu-F|SCgF6^!t}Eb5|z(?NDjoT9Io68r*2>$g3aEEJ!TyuW%H?C5YGoiIoihn?{W_w z9UMvL`1Y@}7s3Xr?C*Q$;x!!%LOvO<0uu9JKTo9j#CipR{UEoi7oZVSfJWAEJiGxK z$)6GFo!IsAK@#M<9U>pNDt7gFWQWttAScw-YUjRE)&!G_$|~cy+nO}vX9GBLufc@N z107!`jDaImns)ZKt>0Q|J)#NAUIXCJpyfurb(EdaBt=p}uG>W&B_ z+Ad>`2lQzOphGw=Dz?*GnCyH;gExHM)TdX$8$N%P0qD~(9b-`QyXGz4RJ}Ai4tRqh zTh|khd(kF_4?w3%?LGg5kL_ztj;-GYfFw~_C`J-64j^etSwOWyQoD7y3rW(Vo`Kd7 zASnP#c5z%}YNt1!-+2j13Z^Q6ZWJJC0ZZnp`Eh%TH&ic|LXwtjT^+FGBaCF?N8U9j z+l^Nb3-8j-rH{wZo3nSddl*yJe8gFEdU!UAIo!^q<7^h-DvuNcyWE5#-fwmE+=P&{NU@dP>Yqb~`{g^FpattzgD+jgtA>^2EU+=qah~ zd{o1OMgzOk*1vYEz^)FhfwGw2t;5*;VI#n93)szqo|0O(@3U?9*Q_smPFzi&J?thM zdU{orIH9(7WunnLi^DrIBz5SPtc>T!G$X+1*=q7cl<$CX)7Lgkl?%>@9OVC*{ zom0(a*Wsx6=o{`dE#M>9{x=`l{C`+`>!>KB_HA?s0i_X1X+#jDyM~aGlo07I>Fyaq zLXcKE6cCh@ZU&^gq`ReKfFUN%;QRi*b-r`Hb^bbQ&Ap!3_rCVM<9YUeuG#zE_{S4^ z&JR=3#6$+;NasIdLg*hcq4#)_ZKo>IALw*Xop#BH>>_6m+wsIeuTyd$X`p1ztNc`^{3C`C4a3omO z_Z&&>e>f7LM>~4UrO^D+rI`El)MYc1|A)5F9Q9>GPXY1zB9Zd_|3#4~+T0T>9tG9t z#DpF=7~CiJsFb77Uu?C3D?w($+tph$q2g<1m>2K8jSc+VS4qiG%l{#!L*_({#HzDBTJ#{O`xI-4%5W!uM zv@T8Nw4OD7fXdPV5Z>-dhgWf6gc-~K;lBk&Cciy@*)u+^cR>okzq1u7F%V-FTc zfLuOBR$oET%c}^&fRAKPp&9O;(ouOMB7%xa+c^Deu;A7cp9D?2YhP|peDiL|Q%V_1 z1ykzgyz#Wib)~8)OR92TM7h?cM2R`^QV}z8x_A2(fvK}v#h-Ly z<8#2CA-?w62=cj7ltAo=|8RNTR!{GPr0+W*8GS=kO8+y^EiuQdcLWYq<%p4`&>;`wdM+&x zzrN&Q34O-0hoemSS<~jmB|EBZQ{S#dX>82LEH9gmq4n?9#QY*9j|S0_F=5(}7>Dy& z0ws?yv7uh80N3Ag4MH9z6-9@E5M<@T{5W-%ZtMo8FXsyA|rZv&OOvSa2D&rpCK;rv<%!;>4U& z&|u#~SJZs_C_O`4z$Hr9Ir9k2&`yV3Upa)eppa90QKffR;cItU(1R=Q+u5t{=eM&v zQF?c;@7fVge)HKV(bj(HTAm8pk)BG**`vO`MTQp2KZ^%LI~%w4!J2M7(`T-(Z-Fp~ zcjefT-U7;DwX3foWDJ%!R=Mbyvsw#jM77?kLc4Z-g3FA#OIz-CHh1rE)B115c701- zQIZXo8u2g_!Hose(!Yka>-cQ<|N z?0F8I?&`sX<+iw?cF*^b@Tdd5sQNDPDC?7HGhdhn6KgnUi1jIU;`oqfBs0@|6~!MX z50&!URotYO4U0!x>o9F^i!gm^)LbT5w?lauh z;A;A`-AiA&*rHd{%8JZolP|5COzrob!|>P#Gs5+?yGql`nw%jvoTXT)YQ`1&07O7eOrT;v@^Rl)CGF5_^+bcMjKJbK8{O3L>GPww}$mB4{M z(CMrzjM#%x6XePVb`LWb>q@ic-z6|i8{ju3SYP9_;)|VoV_`+%#m8kZIdLgQSr<23 z9BYyBJDxiizG8{oFq;VcO#2IrFFhCN8#IoB9U~8xS>p^emyBs>$0%dhMsBy3=l6~e z3VfXNvX67yB~-Y10{)JefLwhA-eI>Wos9axi2T}m5tH^uUtl6IirAOn?ae7ENcASZ z0Hh}KF2%ROcx=jVT_fu}%vLwr=whUdhV>7mgQ?>tnzw zkAWt6sD-D?D^h|$uV0E{kfE+psg^Y>_1jg#!uJW= zFBAZQcJ~Lon>1+vfeH`8Uz`!`epeek7{bZMSge6;8Khe@=4tr;Pm2j%knP}wG1RbE zUTysK2iz5?4!!7@WGh9GOdJ*Fhz|=Xo+`Azw!Kg55Tx zcU}t+cXwllB&K7NB$K&=ksfynj?GEh%$+*k<9Hm&+-dO<)Dd^qO%26sGME6oZU)AV zXWj5=00!Gsf0&Z?u99*wgxUq?x!DnR^9GqTDpZ2^E>wgU=J2BGn`fSN#=BDzIkiRh1*X6Wq> z^)Hpe8NRuB|0*7VHGXR@Ked;@FqyAo-;I#Dvb0N$#2|r`BP96NK#!CUc=V~IaU1OuS5>xJq@{-Ms3aBB{YcW6CV|aHKoz}#-)IBTR{iHVltTBU=Z@-9sJO9 z-VJ;PKNLVa9q_+YQC!=}1z(CmTr?`BDMMjkO+*Cs0F|+dV^x!d3SSx^PJp)Q8QYM+pMh@g_$b-xntzaEyoell=kb;$&%w zV*v=c(d~ja{g2gw#fQ2E`rf0SzKoCHmSVqe8QHtfgU)mE4p~3`=@^I?u;!{{EvOZv zeI8h{-74X~!WGHko6u`^LEK&k^ap#Rel@q`g^u^~+%n{|=12QKebXWNSi0Dn8Nh}v z#xVKBP*PETtj}vC*0?qXI5rs?ATf>DkF2JH8e+Y2(L>;3)RX%yaw@%RXdi zH!;T}LrI2oO92rdB}8tzF0gE(1jpvAr9KmMj36$=g`V80*YLR14_}AZ@Hp2EH>Qn& ze2OES3`PkO^AHY0=hhGhv&grVW+y_hWzQb{29e{BoAK5)*P~)(E=vVEX(Q(?EAH36 z9eZwv6GRMOMd!`3>1vU7!v)SzjL&~sfeJz=W7X#;`BSPWxH1>#2!M+-F9uc8`Lx7_ zqr`?^zz^`@#c7n*_lFOm0uoayMM>_(c(E+j@9Iw2r<^a>ub`LT12O-!O`+UCtNhft zo31=wpyeR+qYV#QAN?Q-hPJxn zUqbe_x)z0Z5!0Ibl%;RWYw4dejGip40#QM$cU&gvoChn2ZXV2YwTQq62DLzNV8HEI z0hT-6mgR@%<+)i+NM43g@?0&U_7z`KV*BEOT|RipUX)rO8h+8F4rG^Fj!%<( z_*%*|@`$a=nZ@?!`4#dkS_G4Pl* z@owb=geTGJ0DK1bTM>`zn+_5o@?HfZ+b4)2z^1StzDxe5kA`!A@r|B+XOZ)-in?jH zsA+xas|Dp^W(<65QlNnY~!{YB*0KN zqr_zhZuHCbp3}#^OH&t9>kt{Op@JNUgN!#)^v5V2?i1UT(Rdu)L_4S9`I$+8fmWwT zL^-&H@oO{qvDUKYYngI}m%3lY!B2H}%}*fi!sw-ZOe(c8dch|Fae!mOo!u6CTd&-`kth z{34DqIYz^z9J$b-+kQoe6#cpP1UoZ_H_OXMurN&0YBOFqRgpwRL5Wr$eCBy$Zwki& z6LR##GK{e0(9v<6^(06DjcH_Ap9tAXxdQ8mb2xa8-=cP*`#T%68p{pZt#@Z$8t-6D zD|ZCD9}ynjo<8mfo~t>u*WahekGMCP1vsjQaowlm*O@Dj+%O{gqdRA;(xs zTg(i#?er_;JdtbBw}Gx@9ipeZc?>RDQDY*YHKXD&!#whq$94%hPT z>z*ge3f8o$F0Q}sX=9GOroYi6?MZL{&0gS^e#VI>807#$KcaqYVw%0dv8JF8R6kqj z8i?g`Z__%4;l-opwZ-k{PQ~qKtbsa^>zE%h9Oa(Y1I? zB)A9WcRAv~LvXt~p4aBmBUj^9oLm83%q9>S+h4a3^$OZt1-<*Ui{9{3K6sH!T5wg6 zNB@Y#Qw(B&Uw3mC(0O#GWJEGKkSy= zP)lbhIQmUsOI1#IJ2fIQ1dM_Nt`N4p%i1t&?7mt`SeGig6o3hXgT^b)!>4BZnzq?- z2ZprclhTTxrf^O9s5`x^Uq-!9dY#GvwfQlRk!&N*HFhb5GCb`&56a%&qj~>lNPs{t z&5kOZTN6DypY3!z!}ci^Oz-_XY2)R5#mH&f>*cHI;0A)d8o6bTP%&3=nCHqs*&T#( z|K@eI8rM_=O+w;ufNPhd{CGr3?%hQd_aD0SyKAv>_-a-W8Lc=>CH12XJt|tMf3z)y z_o~TvRqI>&-2h$2-2iRI9qX65wWfp`HMQgD1l)d&wk$;Q&)L>3?BlsVoTeU=x|TX> zh+)-u_?D7n$M7FbP0){Gsry2# zeQNMp{79SSeDTljqV&5A8wM}rNL*r0U_*}%Kg_YYiD9{_iJ`5kDM9^V0J~SWa~ZWFi79kPwCyhzP^pyr|;X$+gXRw^KFb_u+6UD#4^=w;iZKod+Lh zNJos*rGwaLcQh4?fFo!>9{O-rXm{)QnVFwmX7GqA=r8eT`-Vc^K;%uz#QYd!f2?)q zIod^%9awy94-U2Q^hN%nf$)^w?7?rL`z^hf)|KE{<2Fc>ckn#z5pWjmgg*-tQ%%Ze zUF&4`2x6%L#UMv_K+n(}Q2zOpKvE{dM+Ko^qFja$1)-wzjR#ELhsu|M@9tjm__D37 z;+U>B$=lqC&k~m(%p-34G-pjvE+;3~^+l>!OR8kEz7e@pR@c}d zEHZ1f7OI5P1e6Wt`8l;~3{96GlQiEs&nB#Cu7^IQ`KYj%MIfq@*&zJ{R>F%Z?ca#_ zBe|5bx&&?wa9hQIbuI71&FJQ{7I)x%49jWYdeIXs$lcv>QweCS6zV#P`y1HIG@6y5 zFQU%?1baz0IM-96d#+KQrOFC@krM`KFSF+&rnTNEw3EE9Q_G;6o8$c*1n+`J`JHyB zW@$_5;?SLIR#(){2HZC2^_I&e5`J855`d)LYt|=)C8SJE?e>8QMf`6cF5;uR8!@T( zIoA)^t-E|j$7?b*FnAw&HjzZx|^+)ELY?2tx$jW>kVg!&jR?G=>%wum@AL8XguaS z+X=s8o@01hn#DM#3i;4mDeHCccd(pNgm5IUf0>tH7u5<#Kzc*HYI+gu+ujGeW=a}MZVcobltppVFJGBPQv0KMNuuJ3Q|UwOukIFFVcw|gGE zzWvVPHA~EUJZMZrNO2s|ebirB0e0f9(BD0_DKf#KL{QQb$sUzBq^*_*F1nXK8*BU` zTkML_-L}fLzT!;5+f-sswZ_XcP~=%%G>(%NSMOS^SR{(yL)>>Gbj?mZE z0FJVVA^MQ(4?_xJSqhUaBg{MqIB&y*O__0bw#^VXVmIbCB{(v;v z3FO2uWEnRjbkmfeo74NZ)sTZ`-_V|6I`7+rx4n!Ph9Usdg9pE|xH+f?N9~?1=qe@R z^cO%6i<-~eQQG~>>Qi(VY1!|@T`IG7JqT9bqHWGV+e~Nc*~Tv&e>mb;Qx_6=J%FJ!OH`LA2bwc~>09-L~a&2Pth?%%C0p z7S+fsV!Zo6E4Yl7yZ?3VPxQ37#3=DMmp!p5iwq1)zHedP1r-8Y7il}^@b%UkFXSoH zlg@Qc`@R}|4yytsiO7`N-DBSQ=@FY*d9qhtSPd9QgH84)YpJ3c>2wRX?lELG?c_CTXQ`!0o_}PQAu+!s# z_x&Y{7NU0^qBv>tCn7CR0~+SHWh!1!)j$2+${HK{Vi>UIak@Kx7%U2DGBEKSlMI?Y z^eun|+a5nR(c7BZuW*Iati&zXL7XX;#hdQ@K+9aItAy7}I^-3qhxrC3L5dR&{(k0kc&caYw)|9yl2M6l`D&P?RT!J?>Bn*)U!qNKkDS#@y78bS{F)= z)ovsaB<}9%805X6*V**d$8&UT2z+$K=IwUUnRcW;vvT%w7fC@6{BouDX>kX!-}~}| zp6}eiX~`;2_;-f>ml3u%N4C7xMp%wVkf?QdLW_4|?Qu`d>CVkZiH9z>7zCy_4|qkl zDFJP{_8pjvVgnT5_v$zR$_~r-6jJZav>8Co^dQ7mjN-8q#~}D}sQAk6s0CWwc~;+a z{p1ytTYW(7TQn)oopFy0ml|UodX#>>1Y>S+# zDGtDF^R00|%K{M)%Cxqo2!S>?uZGiU^%`-=HSZUBi1TF(EfOp?|4V2YxrhLB8wN-$ zgKg7~g2CBO4SR35etL8JJFS1=$1%r0A28tBX>_XD(V0J=YtAYCh7tH`=4To5@mp}) z-Oes?DaF^t<7=;m+oEZ!*o+`W=UP z4;(vvP(r5dbbHX7<*xbV{XPrP2ECosu&o^s>O`Wc=XAd^tS~mnmLl9U!+@ak3x6c~ zOD!*Zgy8Et0@FdMg|~Irh^fi9-qMWd-QqM=wh;zSpn$(`y+N!Lw9mdUg!Bj(oeR0@ z)tFt4xaz4^_zw?MREm}kZ;R2|3ayl+Dq2olv0-T>@04q9!`jP^O z=2D3*!uFx6(R7(nDi7W}h~5ZM;`RZC{z6GSKUqVG0mOiH@~zOp6_xUZ(expJD!J0U zRD2+JRcvz!;CDDmz57K8w7AvZ^Gk0e{_}od)(-bh>*SwC#MaTT{czP9GAm=o!hw9a!8dbT465HkT zSWKhGx8?7BLg4wQjvEaPdO1r>a~_HHB?joHSL+|P8Ik*&2x@>ak=fbX%j7?&EhyWc zY^G1Ax<9gHif;SkOi^K}C=No^IOzuf{<+d$R?*cUihurAX!DC1U;}-)z{BsT)f*uI zaEAcvOLR7Vzx6&$HWP-U4}1;gH1;Fu^(C7aI}~aH-_O4|=}o0cfl9^C26P_Rmpo4M zcL4}bz4hkrkQB)qboDRI9FF~^mvcSLg@aad_s{MzpD)qC(c+49C^fuOyBjL#YB&;_ zP+Gw96<_sS@!H>Qeeme`M1kI36FuU)eqGQ+icPS*lu{`u-gXy+IyG~_azD9+Ba!=k zrLm?0Eo1sEca^?a6vuK140qhXlX&7=l#jGsG3rTp|E=~T1N|7rgBQbK$9Ju~2kMPG zHCT8lD{79Qg~uxr{=54TF#Xz<73B4y7wmFEHZWppdCK?sCWPV)+fK4Tfm=fHz{uxw zacZ!`z$aEs57Chfj4hQNQ$r$p9;><_!ZnYH`g91~u;{2G$pMqM%t|p;)jP@{Wcdr3&xbBSU&Me*orc zr0uGOci8nA`WXk>ejxb3l(yD*C5Ce_lE8JeFIC}kj3U5z6ZEME*tfx8U6W_6 zCsUng-Szm30Lw7eyhVr>Gmqvs|32VEeZ}9_t~`h0Ar7@x$<@2SsdmC-=I%=3Z$ zZ}ZC%_AWqRE5tkQNedV?*6=(S%Y^r`{1oW8d|P?7XS_jeC;9i40Ff66z0GKCzyY#| z@)+#NVpBA|=rQ?a7%#)&a>sLE_~Z-@7f*x3edwERj-GlzX-!!iYoN4S$qjor<~Sk6 zvl%?Q^j=co2$#*Xy_JR$s99FtNkucyjF>A0VnugV{(^FM93JEyd_*6A?R5tol#2Ad z+f3+O@fOj5!MpFt+X~9LV4lU|#i;3#uIU@^JLpggG!LQkbR@yIfgx&yXLkJRKol;z z1l{dxsWhRTnoAC75chSC^KHmm1)pXJr8Sfy_hPfAd-jp&VQ@*?PboZErM zCh&t5DTkR0v!#pj!0xj_=b4pO-&Mx>iuLV$e*^+`6u?elwX1L!PBQoHE;GMPcql~x z78h;D6HknUE_Y_Nfph7OTjKh=QiRWri}`>GtUW*R3ca3$GC8RRMf(|&$6(0)jx}2X z*<2G?p)hx^MweriPua)EorCASjhYrO&=iWx5w(i;1X zOsASinPJo#<>~T@Sd%Lcyxw&+7?R%>RtL+j}jwpD#_KH|? zpTVj!qg}8S`3e==O_C+~%4Bc=D1<7af$0n7lbKrLakTSD8Mm5&_ zN_vIf-o+q=C*~|c;^5y8f9JX{XWBDJ1c~5j%xyrh%wAkwp@+a&B060PyCxP!@Xa3N zjDSAZ*p7RxuOHeoQ^1CBQPuI3xe;JBM^dvo-Bb5nR!?l)t}_L#6-CY*aj!RO1<|)Y zfA;2%1F4>jzeAKUWHWM^IJ$H0Yl3D4`14|mSqPDRt&HK|d1KJYr#Z?`6-}ZVRx^(q z&c54>Xg<8#ze!g8cj@ip$rl~dqa%zwW1{aULcb)u#x zvywI#(pvcgtLQa>Xz~v%HtIwMnLii~Z`j8+FDt-|zI;jrfh<1I@ts63A^<6Xk_OOW z;TdCRJ)ibUh{gTGjO{7^fYQ$2#!C5Z`pxujk3pvyZ2^;tfLH8$-RciyI;lO9B_$CAP4@48 z^hsMQD~x(M> zo|WU!UKObucB(OKy)=EPDAo8}l9tMbkrKFzgCj-J#J4*T)-JynSx{`|o3mV?{xGZn4O2MT&j*YKhnlHKGt;K+mUi}BjLHDwR$BChe?Pgq?& z)`=i{mfAgPYfixt^nW3rZa0k>3Zse;r;5oe0yd$kARm01oL?BM_MKS6Z|yS^T)3$( zpEpP=6RY1f#jz^c4r0DU%uz@pKM^v@;?slc<)(t(dk*{n)?Ug6*e@hF-J48dzxTZU zG}OTf`=jA$N9~u)oyS?Kiips1;z^w;kTJ_ZQbx6wDzH34Q_qS;`H#=wPY3DpChI>8 zGq;RVLPttM$xkyl@ary846oIMg~McC2C+$~jyQj!uUzpp!=?~kx2-%DM#dAHvJpSA zl6|Bmtr*Io5w8~aNawS=`I;@EI0wmw! zk(%shOx;XNUWpf4Dl;n`iyTNSHd&h%*$i&^!gb!hg&n*VW{dRAE!D|wN`Fgh!K*sh;9iO#dkY7t!?PuRk=(UwX zjZE&UiAlSeP+$WCupamZ@@+lL*8^Xp{gCu54Isqs|+hkz@^~hnxn38Jr*fOKFKooYRF$?(<1WD*&_hL zonGd>9{TZcjH?5w4FRv+-c5fLnmG)FR5SEn{PKWR}FgiJaabE zA2wT?nbsAVj+2?0z8yVrH6bMSx>-Cr$@K2QwK|AN=$U!K;Ao%^SI(T}1btXV9DK=3 zUH7Re=OimL)@Oa&RMA-Id=PVkzto%wZrf10UWS+w@@(=Dn|d1dP{oyVF;N*A%AGdW zldGyyIT#!5VDx_9)|p4PRd8vPQx(*4az1(fDBF0Y{!0&>(Bhf4m`rPRk*g5At-MSq zGLg@)rCRxykBz(k;#&%+$Omc4$ zQ|!3WZ)ZAB)a?k*q2DPVQeZGBS#hf3^}bCdae8O)Te)$R3@3V(5bP@Mm`QQ0lX{=T zB(dKAvLX6DTz>`)pgzSPjlDU@JhAXaA*_xwc4)D_Ivs*BVelIO@y!uZA7Ui?#2Nd_ zQJ>=BOa&LW>*Am#66clOLoE2Wnr4Tav6KS&`yA9&Z<$@i=HV6duV z<7SaVRqOkniMdI#uzO9~)KuPNONWOn{i>XcGh0MG*^ck`iAE(6l~g)2X>tS2+SmrO z?!R@qHu@YioSD<;%(J)u^a}9?KU4ErS?2iK*;Oa=Y0?nlZ zWWm-erNu;7fTCg&0o(0!+X@mZr3xN`j=f5bC~)BF!g6n1?M*O9;p7e!-BwxlOGPDB z%5~>yCS?|_2~~1T&d9*}w;!oJgbE&hRhx(NsCM?H+prg3Wd<@bKDpUiCY1$f#T9F@ z1L9o#1P_uVyESPO`3ZjUSM|`CGrTzno2ABimoaBaDEghyp7%fZ$4jUf-#tNLUC+$J zv>wA2N z)x>^(&8^t);ry(E^#H{Ol5}~{mmCiTV(Yrk;v;wY=~RQzVe_&Jg_y^#kMnqI-l=8_ z|Mcgcs_K3|%+-9t?5vFeYxt;{Zcz42BdaiX$cyU?9lLr9+acvqBSak?+w!IRLgAma zO^Xw-FXj=MwmEs%xT^J*cgKM7Fy}DW4B7Kh<~3{WohP;wjvqHU@%*|Dc$gk2R?Uba zwLKI+fci2MF$<_pyb%vDiV;2NRAIK7e}DnIQ&kRqQzjG-`HTblZ-jKU z&Pz({>?_KDHa`W+b~u3VEkoyv5_{?7f2Hs`hUAvcQSQ;F{IWepWLU@)a^vwoLwN8+ zk9edlY^zd5(YNmq&k8%(XK4D&wmuQF89uj0R49ABxrCH7-J}3ejGYQ}&ud-REZ->1 zyBQuZx4&tVDF*4YHvhO?RHhXikL_|o&yJ0${uWUi%G%_AX`#kV&&)j0b1jSS7_M~> z#rL%Fa+aX8_`kTtLL$=Ni5hhvoMa}th(2XReah5j3p&Q>$&9N6mC5~m0+b6P8NHXG z!Rv}8G?)SuHE5ESymfovtB@bN!|>BAIdFxx{_mTKCm*>pQB(RFsFbxfhONt+mp||n zD6C{>snhV+LWS=y95E(vHWuVADbX=2P}7{xjZ)U=a30v8nj8+4uS)OC~=pk_#D9;TLmypmp43( zu?l?>!!?7sg#Qc@%Ems_O<^U2)UctH9LK!JCu9^ojgLf^KvmNCPqQK#Nf6L_2>FXe11MFjnJJYz$BKx+I}Y*Rq~KV64l9wK#vG zT_5ZrpW-m#9$XWo{Ew1xzbV58=HnPHaY067Ww(YncNXKObjyvDAqDE}o%^T17cUK; z8X#|ME|=8v=`%Ma*^;x>(tUdAT1RN7mBmf>?*zWz+j2NE>GV@#vFL_%Xutl4N1_dK z-+<@v_WtnDEt}mpI451V{j~qKucL<==*Bln%pv9L!@3dsZFSi?Z7HDC7kzHAT5kF> z{-)&qoC$qCq8KzSL3Y;TcA~rLn3G_%++dw=hzQPO=G0v8q4e9{`l1hBEuI_9x#kJF zl}EJ_#s$7o0_(o0_|aQgw<5|`NY!YC`QnNG=Z8ws58Z-2%t`+`ydGP4*p!~X$mFb_ zqh-p3c}ykS-$TAk_JOo01HmS$?cS3(QF0ZPTruPi%^TANN`IIN8i?JxhA*GsZk*`C5&NgF zz$LMo4(ee04%}ezrV5Be*a^*T7hjN{w>?OLl;J?}=2?*FB!k9!c$s|H#}m^|U!FP{ zogn*cdYT)Njm;$4_n~z~@%4h^@IQQRr`tb~)%bb)SGQ}HQ;`U~*(~~5vNP&T=JMx@ z&*1omScGZL)tAMGMQ%R20uLIx=LMQkq|UV>k`7XKk&R>eo^I&7|3L=oWMN2fnR@Q5Y;aT}R9DqgXgs^76p{ zJxg(qf2_BR_}0&7>xspdKB7GV@1tUC6N;OCSb8pX*E0vsg)=mO_@DD z%NvkvT1EJkGCKV z+4W6>12s@Y%BZ%2RLJ*_%~+~6YqXJAbJwd_Ki6n)T6V1fkJ^*6ESJ_toH(Oo zwYM0#gz7E4)ON!^BI=d!S={nzYvt*9S$(v-eLJgswa)V86(9L#hJL_VYZ^hh@D;uC z_vl1O=qF;W7(8L-d6C2?T{1M3IIOF1UaeQek)h||a*r6gEEs>h7MIsb@rwG&CP9Fm zBxk{hw?>Gi;QIrt=gXdtyZjB_o%*})mjt$+iZ9;#lFE;#ns12PDr4nBk{FVk>|1e*rFeJc=Yvdh|#>Y~) zFsEV%^8Y;Ldx{fQQYe5ebdO!#B}2kNjuQqTMek>NNc;$EONc#fB|Pvu)mZCf>~5R2 zeO(ny=228AK!%aPiz4N~|H?VAJ`|j?=TW`V0TeN)&T#TQP?LhXOSj}X+r=g@O9o}D zlb&x~iKrQ@gL-;Zum3dJw~HNoGD;ii{3SpytfU{l^TXF)c7h5k^f66%hz@PIxpIBn z{^Vn<;tc5kl4#3C?gw+nhYi8y)Nha1y&#=$mH(9x7u^o=FFhC(bsxRQ3r+^9J!=LjRlW*n;k=H{Cg+wZ1%kI&{Vn10P&VBAZ0&7S;b^sj*FXI=9r89_|SUyMpTQ!VAr_CELPW9RXah<@Y46D{DwBY17KrmSHl)6c#CTu7={ zf=uYL8rry!wYkDkukED7aI-uDe^V2cC0y z>dt=_%XAuiI?~4BnP|!337~&9e|B(7n!NK{) z0kqt6NtMVC*`j|mdLp+|+u?B*5f&uy`r+IPYns;8b`y3r&-C1-hZ=_277-?7yZbvWk%Hx~D8nN|Ba$@IPh|jSua37%$r~A17Q}Diq0(Ev6 zd$e}|lF|Gx1{7Yf3Gn@&YUX@8*?1C<^>OSrWoYykrR=@<;X&}8W^DC_1og0rIN_v{ zOOx1`{>Xn%to>{C5a|vZKWP_>wZbepz3rdz}9dhz#MfUzzkoY66M$G z3z76dm*Nq+6ou*Zgk#aAD5aE=#^;{cN{x1MBTN1G%NFw!iJvri{7PTcGYSTZh9{P? z_;EQ>`O%@D-=HgqFXQ9cPZp**@?<=x7b+hR=ypW;SVASSGIc9ikul>P7X%YJ@B_DtKJA%k4d`C=yu{^|6VQ8~<{5*n*pNC%DzVJ6m1|`fw zRZzwvdN@|7N7_l{Qd}OJARU#1d^z#8d}7ThXruTQX?%lxnPDQmE~heCiQcyuC9)XZ zZ!hS-%6&mcxsa)`lK4oqF3rv6nVr7Dx!|q9q^8`F9qF+)x$_*?%bUY%cB1se|G^6QbU%smBrp|kb{j+;s8t`nizhaZYVyl2a z7q_PX+YG}lEVYmN>vq!0hE0f~Tmb%znLVJeVI1+y=L3gsZ0|5H-;e*XuZO`xPPvnm z4f`~jMXl>G(Bc2f7%9c{*CWccTYMkbtNr9I-Z?P^ERnK(BB!$W4G1N*ZOkmIp|rGZ zR`;PjG?;jSax@L5n(cKBUb91$y+~Au`vvyvh@-TalA%-i+kRC14 z^*0Wzw$Ld+!VH`ry{?^PM3ZxEM002pEq%hkxNav9&Dun!S+7X#qx>5*IvN=*H*-71 zN$De+SiD&fU!T+tD=#~dun(FW3En;uCQhU@*4a8I{*)-XhD^InQzKngZYuh%`DUs& zLA-+QmQ*pK@&rB1dj9Vlh_#bmq*>y~B)xEq2@ZIW$3*=Ip+`!A*jXh_9dp0R1MDw@srJ*w{7 zYDFCvZ+V{!=R9Raysg9n+r_d7^-d}6j& z(r0pRF(GL~JS1yEJS}T7g>u~uO2Q7+|`?4Do`xvL=x5CbBr8klpE=QB;te>}DUuy<))o$&0I|_!-*o456 zU%kJXWBL+QoA`SA6TdS4N8J(j0*n&s@2aZ1Z#Le0d}ncF|K(FyrGUH7Ncx^Zj~IfX zPCS4yf;q*MjHUdb2!_SZtDX#h!dy~YLQeAN?aiixj8OOUa_WtgnNQm(ik9apSbjHx z^47~^cEQ?*MT9Z(Pp0+Q%GEg(y*<2Bix1cNejHfv|DY9n5s>ItkdNCT@M1srM)cL| zv={Sl+&F-77<$AX(P>6tjLeNHv+zl<5U!nkvVGC?wz4Vlao^su^%hlO%kFkgwMgj;=*kjA^3Fld?VQQh znQJksIm1~-@kS;6`D+1X((hE(QQBNSFX_d|wW}PD9%vmJ&U}XFXq=h6R-8@d^wO$a z(wy(o)0&mn*GkJVM~_AyDw1@hnA?NIJ1bZ@IhsCHu#P7M1u(tGt0Uq3VCe5+D-sFbsLcOS@fEwMP0^h-&v z28eVTXc60S{fLA<(Y1p8VAO6>YNExK1+*$5ScLHkf4;|7|6a8)PG3LMo>v{U{k0-$ z|0}nh@+Ol%dbxjyo${SHE%t*NN&F=XL#aVoL#gI_NvcKHPHg}{vR2WF~w?52*Z}XzxFZbJihx8piE#Nz)oP_ z>!V2Xah}=%0JdB5441hfYKI@8-QS&Qy|VZF!6aCcq5e%Okr0zXTc`%3kUiwREf#=V z$ek8DV&%|e{;K-%TNvMynX4*_8DWCR0CKF?I*q`PqVex>b+TGNA`JJ4psyToIP%HE z54B=?DtcI=1mv6;aZi!Aj<_NM+j3LiE z*PKYUzK|R&%YyLQNQ6EZMn91&mlUsh$CNl&Fhvj8o)|cKC3S@px?gG6{>6ns0;En1 z1St^9gA@dZ(G^L+s*w)G{Aw}kLQ=aBZrz@Z%q(_`8mPHY2uMB@9wScK8wnr)CamxB z!Lx(Xo(6m7z}a4(o1JU=+i(|Ld086L#u{!toTwR^fmyAKZehHDkc}3Y;TDfqZf=3; zA0d=Akh|J{aox^=jxmJ6W(jhEze$DSzK&OZ(D^&t$#HSet@T&QQtL17b(A){FNw+& z-Xp|o(FhP-wj4x*AOggS69EbVvq$jvrWBEq-+pm>gb+su=TM=c2_7K;1dkTygU+92 zlvOBXRu9xO7pn=EI*GUB*oX{l(F>2023W)C33}4OS5uAiU@H_`I@7khwz7LRvG&rp z{3SdW&tzqyCyzc7uW5Y)WM|X+$4m`DI%`B9xIptC?)`Pkrq{`~CuRDU_se4%3`-F! z4Dz`F1rp>;4pdN zsiBGuQC^{kU=k}C9e)NOfsTJ0jvY&YtzRfPO2iQlm5ot~QX~6F%dZkr$-r+jeYkSS z5<|FQkr223?Q>k`UkCRP>;6yS{_sSDioC-UE*}+VqVhuiC{1m#Ol7iX!!eMA`^ zQh@(oF#+P%zdbIFtZUTY`lhHCy)7yp>hWporr+S2#aLTX%0R=qQF(fbN!QlAc*4-a!8c(9E3sF{>} zOR@1;JfCfvk-n@P26F_@G-3M9+6|N2DiTuy`bD4WK87>GNwR_Pu@;nQvZ%`Ab^O( z1&MnBD16_Wo*UczWaV@5uqLCQ~~d{}3yF6rO8+ ztGaE&`Af?4oHUUEkI+-*nyOLapZ*3ayHRI04H6$vT8G!VZt+1hqB_!qA9xleUF7c) zN!piozuf^y+COpJK*t$Aa%2dR_>idG=(-jCQ;ZWW3R31O3Ic#xbv(RS4jI$Wf3B(B z2;K*~tKB5NQ@a5mm5Z#&+5V3~@6_saU;k1ukK+`}!aFpqHsom-+VdcK*mZQcsgWZo zNe*dMz8xByZ*GIPiYjYg&+Xd`Sd2*Cu>OoaiA*^v^hp%#&eQJ_*{EbW({BN%)3f%S zLKmT?nn8h>5S}$UP22(1yM_atwwas8>0qPqca?3_PR1zm>;z0{EZeX1n$!{U=;rx2v&AeHbGklqhNVn<)I3=ZsBZJj zqT5kmxZQQ`CytNrJCcTDxIzvSE={db9-<`)cOw%LVF~PbpMS7pf9_<*mVc>kMV`Gg z8;r0dh~Aic_Zbp;cCJ%zI_6T%$~o2Cx|}vY#DMF(6e$|ukj)058}iuicAfj3pdag9F_Nn*_ur7CJY9$AH*mIWS7PM5U!k{9;6Q;`M;?9 z#^BnTr{DO*wr$%^PHfw@ZQHhO`y?l}?c~IEPH^}0{NK8$dhgd;bwBKyU8`rNyJyz= z%}n=9j~D|4q8KeigFq=JcBZSC0k7YRn2KB(uwzdWqvBB#r6O!H<=;ga;UrCUTEtY> z*rsWAO>+YCY}+<9?T~vpkMVDtJ4Nq-%R^!;UkSUWOME-lEZZX(w4`r2{l2Q|jP`XH4wdO2!oG>X*H3F6eyBa&3`J(4G%rY}xy$mgWZaTl7klDs7iSh(`rT_JN1 zS9Yrj!0Gs%XL>IT`_XMPYZtED#^KNc$wT6~El0q%BYVg=G*=PARM>TVI^zdO!vJlp zU&gRtGsb{LJKz^QipiNYiisFCx@?m={zWr%VyNVu+r!!ENiui_gCdWRq~f#A$y?{A zE3Zd^A^nuQgUBkNYj@N1^rw~gN7q-#)kCVt_*uv91qLV-2V`+n2TI73!}*Yx=Ox_; zuTS2=&k17&!Ykl}(VZZwx5znv-0e~qAhz5Bo|=e7yp^Fd_zTA~coOhac+dowixCUB znalD0<~~TYbYIUQ^&cD3tA7$B=~@xCuN}+P>|0`hZ>?wy&DHmw8Ft+v4!;a250sZ7 z`ZZJlv4~ptO?5Ni=0a+lZ+anA{_*APmD+;I!+bN*dJKGHf|@*(q4t}iOEgvxYo2o2 z75wV83;4&0G$4?Q<3h)&Lu>~`g`yn-eAS{UP4uk@5y92_N{|zWUMV$tod4>Z50Xm2 zX8mM!OzbzYxW3T4k$%GfNg@GolEhf#s2R zrcnmE&t_eHAJ_MjBI~+*Qo!|mRj)`KvF*G|1H5gk`DM#OR6h{Z``xeF-o4l`mA2G^ zk;pKV2O`2QKq0mcK`SI&=AYDk2lQ~qfyt5dU7kpPw7?Vryhuy=-Gn`>He0x{5WO7t z`Hr7!Oamk++9rhDwaapGkD`J)I!cT2XMupDNlUYJ?P&Te(Xo=k{bhYAfn7=6EUXif zJR*fTwJfMomR*)V5{b*p%eUP)ASzSJE|UJ7af247lwTArJ{4zeyWwtEE>DVnfVz*8 zZ<;dqYSVLQI_265n6DED){tuc;_DoTUemTo9zP(L?C+%KPtxk5Pm+82**h6ct?9SV zEbq6@Eas;fgQuDCj!DsU)bk3=C}rY^LD$(M^HjO+-AUi3w?i>xvpvI}M9d_{9sUqwcswst>b5lLFBd8ZpoP~qmLvJ}pcQ!n_KEUP#h6h^#o%E{#lT@G zqvS_WZ39e7AV%{b#;drbPMrNCYrm-=h38Txg!KG2o#8PIb1RzYZ zrVf%H>FGZ)kE>~9ghu9=Qi=XsZJx1@l}$Kf6%E5$&IPgJNa{3~+4n|RM>mu_(ZB<4 zi_R+2e|qxGI6yjxFG0eYJ^YNjkC2@qbJp&+vhM7O0T#sGbqiD8e7{;Z14r1oVp!cg z(h@KCe5MLE#E1AYZyt8(>qY{u+P2T<$WO;~!tmbowQ6}8Q`5YQPcKFxu`@n0iHqf_|8!IyyrM+;XX$QB!zuQpaJh;Y{NSsz{aYd4QVlM7sDpKsBpRrnY>rumf6*NLzUmN;mXYZ8T`(B>aIN@^vbp^cORcN;Zf`)uV^b> zXg2hp9+?(h)u!nRVuySUsF>S+(s&;AQWr4+j@EeA%S=h4okL z1}i>PUo4@U4WUJ0C>rf^*4J*UR=+nYqJP<U@+TR9Ip$j z`0`{*!7L_YB+Ti@&Uk;jRxIfqTh)C~MOd>|K3*+r_Pb|1+S&3{Uh0oU!2tJBz-(*% zVE%5WGs~V}CUV&W7B8EIhfXKOHUkb64Ns4Rgu95(?5n(H?9{MpUbXUbs@^YIk?A}2 zf{+)<@(14S8Rwt=ojTT`n(IuM9l3WG{5TnCriTj#u)}ao9 z8%1l_CClC%4>P}=Clv3&;bT{pL%(*~PEcxYV}>nvzJ0mEEDE_@;>w|2|L8!;rzr0` zJ?CLi>qpK=QN8T-wt2bZvTaKa7!N&Q?We(Nv1n1+q!GfrCHluHdvI2s7pzp$CX_Ra| z^V>ZU2H!^>TQKJK`)S=FWxVU=Gr|=@^Nf zp;;~&?ClYN_&RsTaklg$BzkfqtN-Fv&58Qt+1{Ww&)w1>$+X{3Z}DivWXQSUIM))A z(DZ1UQ4iRV6PE-TM+92H^lK=T*5?*DkcG38QPl?0wcgrbp5!%(9s zSCJ7{q|~}d@i)Q)7a)OWYh0xBT(-S5H|ktrGLW|3M|*OwSj!x2n&%Eb`Ecsz3Z#ov zIAnKX#W|Y?0!yR7Mr(VqWd!DpVyrV=Wk8J2$#8vZS~cxrG$?3#Pmi)0V?R=%@RrD5 z5IMsX9LmtZ?u>s^%xqmVDXMoy(W?y$mzi*Si~s{Am7ul!8f8zV=vdN^cXI0XBr+y&^xilBVxaq*87)hxt%5KhJmLeGjMUuxDVEm29af zSXET+a?;HMIPk4RschxtL*QaBO5V2-WFCdCo(u3R8J|q@wH^OzKdhk><0x~G;x%I` zq#C>~4jF$U-&N?Ni*kMjg^=t$4~zI8G=TX=Lq{-ys=r0k9E>|~4)owRSlVndLw1Q< z0mRu0z&M$c0pdS37e+;HOm_G$H-KhpnD^$!}!g**PD(j zCp?*w99|x{q<&UZ^zjG{D^5##7)o4mc*L|_D{`Zn%ikV6 zSCTq0x`QhABzHL##BW%hnZ+s4g`S9lP|v#pn{Z{~1EF#8_9N>BU?5&>1M3Bm-ZyYe zMD(y-xA5IOI8zE=azE5>{&s1{AL6in(*xG*5CgBVxH!WSh7MxaPAs55Rlca5mqk3{ z92W3f`g?JE!6QF3!v+^kN0}WiU?C8I!Hjty!A&4kSTdbTA5a6>a82fl1k_ICwOJS_ zpK&tDWtI=>T~)Zi>SgkSI|mo&Q8{2HU@+%Z%{PTz733{}!h3#Ak;`-_Ni)A0z{j#8 zk(5Q?XZDa4EXk}?+$V`djq86CatOJ3bhL1aVc7MXE z2=_`m2lOw9c1fC`g+h%7GO7#>m&onL_i4N;p=vmVGd zTPCMh6Oyh*?br}f7RUlLTr&!xmyNgQsVbsIezoebLrrqN;NY36K_66992pTyj4<&N z>;!}41nL>sQV(Hqu%}P8ZHNlVx7wsw`##(g9B50gGz#FdNJ^hNC2CHm>N}IYy~6Cn zj<)~Em3kqcuDDh?h6=u_4V4T-9qVq)#j@}`>^omA^7lixZ1l2-)d}ccRzU14W$tM3 zZLiaTM}NSCQ_l!kugd?$UCV+*8M`;${QMWa#+zg0CQR6~W?xj<9b((8I@u?kHIJZb zu`k~|yN0(USie7EB`A?`=k#d=mbp#VXaR?<>lklzM!C)X;`sVdSE+GOZT5@?T>Op7 zM>BHOd4jtKJ_I{GJpw*NQ-|`cc-{j@PJp@WC|;C?OZi^L=Q7f;!u&%?TxGb}zfJ=; zC+4NH)HPE{m_iw8$&H~x6T&hPGp{dTr>y;HAe2?7bTcpX=t2u0m4XfxMU_D2YKA*+>HDX&=WA4x-N<-r2SL*9xX(IinVTk7gwK zXTw7X{AhG$TcP+7F;bAYjaMH)JCj}PG1x;@ehq+D*b-MKrZ2KYJ2PLfYioJMiY;s1 zB3aOnhnZm4iIpErhURg|%9N)KpGEh=#>M>Gc?WaW; zD6}9_z4>za0Z~9^7|C+6{SuTrLFupsA!njv+U#K$89Q|XELAFgxioh7qxW^GTtQ1xN68uJa!+#wPGy6MCyUXg*Me1md1$2cd4d4tXB$3{@GI`3pX zs2`8b`BNPm?9+L(Da=msvpBVj1QhXjOJ*o@Uh&2`gOQ9`)T6Ms>(`+;o%jGcjSYL+ zv&d6vrmt>yl?MYy$W_^qP*Wyd8TH^Po-~GtZM)ADdgi!K>ffPwBkasdt|DFBL|31z z8ZqPTp-&9o&T%S|_)~dd4@VZwY8-A>T%8W=w*4+>>*6+l;pje_96^+vsDY|$`mG4h zU(TsyP&Lzq;v&}6>WYMgDq_^u67r_tlZhh8Av+#|k87f@jHrgv^g zx@UB(tHQE`sCw6}ZNyh14j7qFCK?`IbPM!wCvB*(bm>K#Y*q}S2Go>( zQe07JXn(TM(VRqlcv*!-k~H-txojixaMMLva?<(cM6(QDpWa(7Sv55?lgz;Mif3W? z(3Gi2i{8>{pP}*tA^Fu(J)_Y(ZCz&6juGtYz$LS9As3dh9E20pyJtVYqil^p6kmy( zsSwlc(z@Tm^3B&C(V>!S;eSJZf;hm-#3ZXeUd>dERRs7~wkonsgvf}?G8%btFx{ON zk1@HuR3Bw_Tt-H$GIJ?dVnz`qad+2NUGmE0p_v~z@!2qPPqtH!K?ONXaGNm19`Mbm zbWe`FGlEEO1QT@1Y0e+KnTbW76m|I4>4)&awsJ98db|;I2M8y&E&WPc(8Nabd{SUA z2O>TK4L5r4d4=5C{UAW9yCDihlk==4@hrnI4^Q8=Z^d{N{}hdDvl=q*)gJpfTj@YA zKBp~F^VDFKk6AgAq3M@lZY1tfp=t$E=VC-uP3^mho%=~^h29VA-(~Tsq(S{o{`sfg zAVp@mv@DDUbif%I{^<}IB9|W5F_EV+x0yMOU7ZaXRvTNEH5kADx^;crsM7;@)8Rd7 zDk`8KnWbQIb55*0fQDzPeu`~mYSr9f6xBsJv$PsVnxkH}rNMP#i06LMeKxQ3$@te- zdsbv4W~SL>HWTaBsLkg`=-=)z(8iP5{rDtu)?;inY3N5a!Cx}3s=fe|Yv|IWi1lCt zTmgY0HyJY3K7Rt;Y0DXT_RKYfgZwr&I|Wgsw;jD&;hCgLB03($u`v<6tnnjH@Q$fA z6SU%NR>A)L3k!4A5WgFor-@JMQC1 zJ!8^bvxN@oaOvJjA7W#gTJZ}xgT;@xqA4e{-{oI0L3Xu@7@ixW!%nss9(U0RG!SUn z@p8WG)||FpczTj)+1HJodXu(wtMKwTv0)9Jb^A*g!e1SF!Kliaa%(bh@Iccj9(o$og){0O?O)c(q*y912K4YB35Ch3Ru5oy&Xm{E;VNt6r<( zL&Zu#s>#KZlEFY#dS>Q050%?sUuA=Y3D!M40#fZjnyXpT@2wKi9qqaWlywlZPV3xX zs7}@B^N+PqRv;9M$`LYdm+IroT6$K^Pri;=UPS!~tJUI~zG!AR=qi1|*;=9oU2_iI zfBo(S`lPL9k7dym`ZrUUtySHvw~n0Uoi~THAl#F~gm`u6o^&xA!su+{**6fQH{r!; zvZqnI3|uxftjb0XIN;1hmvVPGmb+uj9qjkaELVDtrm4u}J~&RJzkpay+=moziago6 za9zZM^SNg_h4YjM^$NHHI|9!+?}AY{6i6xjN|xlXLifNBO`{{`XKEYdf57I$W2zm0 zPyK*Rq)-hSMHmAO(*q~%0IWp^4pQBNpi!wCJQ8yXKuWVdJ&^#Z*!sQ8!0lN;p|kX9 z|2D8l$;&G|rq^#z!(r!vIg;40l!^jm_klT3z*XrsX%8*~h`e21M>lm|D>r~LH)d}c z-A8P=5vX=)-^#d*qVL8}5(L_L809`cV0{lfN}?cD90C7;JW3YIc<~s2BYgAWF@CIa z8ANdU=kps#NIwt@?nw032=p|j+1n>}I01j6y6(HmGz+Zcx0YpdASzr;Ztkt1Y(6E+< z&1#j%Q*D3{mO$<5l}0k2+y)laUo7~HqPWEalmej)G@+A|8Stnnsn$reL6@(lB790NyoXOjJ5isp9}5s68-X<(hv4 zfH6G(PZ5CNYB@-5zCU334tnM;xC~Ac$p`I4Z)153PJsyr>)HOP8WbLr_=+B9l4}5? za`<673VBw{@vlxlq&KFOvtHE?*da(&_0%>%tEm7v*!=mQ6_1I1P{Ctn0ZHa(J;0H- zq?t1ort$_u)uQrb%tRk>lofrQG}4RuuQZK{Rej z5`{wocV36kxyq0@qg{f;a>IVkBNVa9VOU$K$3l2l>*txtJ%JN*r-b32sO{JV=sEB= zg2fLnVZqHuC^>aV!819bJXt7`Q@KK0!yFm6249L~Nkh56-g4y0O>#XNR9npqVI%W>}Ye90uu|FaXIw4P>3{32a4R*hj1tM)qN@?*MfUL$Le z*E>?2GLeE~i%TJW`??`moV8_%-(~Y>YqI!>h5Tv-341}hNC$*Afje9q_cgYSYnXLI zqr|EKNr*0J@Wv!t*57V%&_>{1+(EXr_YUiZWye*6Y8IW~Sg|e$9HL8X%q6|LdEnK# z*d6Sgb@zt+Gxr8-1?zyHl@tf5HdrX)aEN=rzJ zoezKchgIM!+X@S;v)iSW1Sfu@GZNYkYBmolHe<`kvba8ka*bHA`$cKbXV5@?X1y!5 z$&yhsu}(Nf6e`5=!h+izfco3DW$8mz^X1r_FD9#c3SDi4iDaq&?WdF9B3bz*i$g3WhJ?zqM~W(?A4;rz|?9 zOT0uYP$5GbsbsjQ@OXB>=`>f_4jc~wjOzDj(C|Qm;oaAbA9u&yZ2dD7H7y^ zTU$x+=5#|jPyy0ma0%-4 z75_f>w&_7=(|pLubX{WFcu!G&*C~_+M&v(8p_|Y{Kp8)e%3Q9D3b)yV{IAoTUBiCP zaW$JKYM*a0+XzSZvzLBOpXVH2K@#*yaK#{t!Wx4hi9j`o>Gh4JTfI%+ks?b4(7j2B zffRtP8D&=BkZ&|kLtlS~J&=yK_Hd~4zsnjiad=YEP(>OPvO*v@Rv_l>i8n;Pr%r`ANU;l;L< zHNFN}zORegmdN1LeC>j}9Tb8@dM^v1&hu;l<8h(H5j>$HzSb;>98loBLc_7jh7m~E z(5MC9U&t4Udy53UU!=drm?;^HU_q$S2}7j?*ZFHgASp9r(IJ4n;Br^LykgVF1?i{v z2r0wlHwvmkrjX0H}XdMcOhw@^3zril@R)9GEy2B9y4s~@u!>P0KTEmS@ z+u3im%39G-`0bVtEa#Uvywp|d7`V+|0B!RTAZ*kob}Uo@<7cjcK(Lnhr@~qk?3sc( zWUdjzc^qRpgaoC-4FGCmEjYt8$a?t zsyr#eSsrf%&Lpu1BeV{F3~zdP6yPwBvnQpt7S*tC9AZFx_#l7yQDGki!jlGm3`qJ9 zlG)=zBSfb=9sG$jH7Q3n4zRt$!iFpwPm9ZO5t6hY#RJE`#+*GXFhg_zwKbKdDs65;_qq(z4b zj}AITQ|M|_TJQt+h(OeCoQS<7UwFBoE}5w=QL6SupqIlC#?^87N#)sjjiaFe+9`d* z6Bv27j)e(?j?8kPUV;YVJlV^~^~qkGQ;FP9ZJn%7Kg$UqK-wjSmm(wL&FnKtx0a}R z(=9>Y7)xdmc!{Zcx6xLX)+Z;EK#EL80pTe++kIIltfI6x>(DIs{^FfGw4T1#J0h2MV zRC`x1>}T2wVQtsOE8HiKOSDUY|FaJvQmhYQZx%qQh5c_R2J-jI#a}N5`pN#ErTL+ub4>JKS|yVkp1$&VqBg&ldN_r;Y63 zC9%pdQ5yR1HhU&IU!A@^|M)0Xn{HbEO4OokpQC$|PoZ&qQ5Bqq0&{?^juW2DxzCp?bf>;KjK zShS4wO2;_N5{ZU~?i^#1`av8v7a&129WQ}2Z6~FWZ(*ZMT|)#Us-0c5fh*N8O|-G> z*LNAugK^&oZkK%FVL^6_?p~Sz;U1ds>=p_#jkkor>fYL`8zAUxeAT;Iw--s=P^9T< zxa>V8AfcT`mf%JULuebZvQNkVsqj~*^1a5|uzxTXI zyT78Gh~j(xJ^twX>sVlad!^k!FjA>$<8tKIsr_jEp`YAe(hbG~t0UujYJdFt_Rxw& zZ+f(O+KC?Y&Lel5K|uD8@!Hev#aQlmqZi&!p{=DZz=k8M?6Qx~tMjlATdrOT|L#uB zCjJFr#HMP<@sJ-vLt+5d$^#@C?ZlaL=H(&jc7ZlEPuAMJ>CM315{KA88Pz7mF zFjOEQAV?tb^g5-)ALA}(g&;sucbGu%fTs@5uKJdCmM;3{4mR`_m%WzmI6spp-?#gV zuDc0jT$NFQl%kgpxiCN^GL7vZ1f{R}eH{dwBo45^I5k8Y{XeH8bg0uKrfQJcw%cnn zEH#D2#YBg*ynA04lLy@ozN2;yz8txFJ9RO%d(Fklm+km&TDWTu1o-957vD|}9Q-;T z@!SW1ADD4<()`x1PdC-9L0`QHA8-1QzUx>+O;7f0q^&Qjesc0^)Jz|C z(Utk5&VW97VCTrz>j%bt&_4Z9rGtL4*`$#^*{#~xG2-7Nz{RkW{@}!wiDsT1z5dw5 znWdNZpsFbYX8mgFs;!5HA@L)R69_9zD(t|32vUA!arlElj0^2*@<6#$C(<7SZ(0Ot ziymE?u!&7G_-N9|5n+}O<$xc(dA!TZ4L8u+L*j*ID;(AR7 zW%P7a&(2g^V2B_+KW>~KHy;7ocJgi%!uGEMZ|3(a1`to*Zp7N-a;2oKo$cAOpeB#n zW0O8Vz(rJ{ho3?>6n7FY+xzqTryO_i!@u@VP5e1&;pKjawR2v;i--3<6kiu`@(|?Y z!oRpj8EFJ*kRe7`ykf_aws@%4Q7o=o{mlI2FkDSduya%0lH*Su>`Om>Oir*>(t*Ai zZ``(F>IYW3%>wCEI?|6ib7j)6X^&1#xD&8jz4+VCpvTM0d$~2m!4rKv9i3Uy=vCNr z%d;EX53A?%GWdNa4K!ZZ|B-)jRzrKOo_*)SuN!ZFZO+ra7T^~Wd(fXe?d3>;`|QM= z&4#`9pq-S?3%9PjYgQx_kHmDz+K!5Uz#s9uf|)E~ii z40yr(YJ7}QkfNvf2&2KD!5zqyC0PZe7VRKV@bb!%lmitATEMx4P*ewvs|bo#!TSUr zMiL)5-vapl#6yfmh#7ANN=PUWerbj#xARtkilM1c@ChF2@?fmOpom+4uj;ZPZ4O$1 zF=O5h*0lWw5Wh#h;)nIXo{{oF4kFkDr43)iX%GA?7KvXqo(3q15exGtfcS+$=eDlo z3T1iAzJZGQGtzH-jlW}iMRFi*w4gy6Au?bErT0hK>4M@_5oBN?R9{zBAa0Sc1NQML z1(D;=1OPIJ`6hgU9PF-rH?E-s%1R3nt^m;uPZod?I|{T}BKg#K86+uObl>O=#8eP! zPN7G8XP||8zL<7q)vZLEI(BB%r$?{5`+F%u(flAWb8>1Bzhn( ztWY;FQNeDQ9D-|tZ9#P3G(}LWT`T3;Z&I!9YPfwdTU&$p?~N>1zYi@v#Y^&}Wtlnw z-iJ%V5)UyMYdj~^_U4qw*nBUUBG?8MwB!?wrWalDNAd9S&G4~{XJ=+zXb^{U!$6fz zeR;zzs^X*N&57fUNs3yVxD1ufVQI=WQyG!;S)B=Ni#rRYC>laj5C58dqg1}Wygj?L zj_-1n{(jK`>@9xTL-p{G)q6a%W&GE?z2`H~Z(MI6y*NJF5muAU;-r{BIa1J0X6L#0 zn30A{$DTJ@Q~?@>)r#k8ry2*PhGIc}nQ9Q+X0rZ#ZWe-ig zcn0%+jK!OPk9_EXz^BjY`zBPOO=^DG`U$Z>NgVhD2dR*F<_%^RT=htV9C9Y ztHWJi;VU=CW_*2mq~UVsac}s?&>4uohx-K>FSs~Nf4JE7rko*1SPM>CczRb5uu=~4 zhTilDS$<%S$DPC&j0TQnau8eZFr;A)T4@sW92*gD{jq|6)h^MAG8 zz(l4qg^o;R4jD=crWILJYP=XG$tH z<;jjHw`G#XFl9K`=h~$LmOE$<9dKp1TdT57;k^1{_M3^?mMnhgKx1l4Lt#adFi@wYliMwOiT{NLp6}O9=}Rb(5PhpMh$z1yeTtAe+~OF`?bZwkrZO7 zPF)nwEj`gF*t5wMZ}j_8_wG#B&~L<OjiVFnJ)D4eBq4BcjotZ4UK&iV2kX&)UErS>ZM~+I5RD;(_!2xguQ1 zIdTtGod^RJJ^9o1^{5(Tv210wSQ+c=ky13d!zOMF`}MGEj6#Pj z&Ss}~a%}TS^w^ww$2y()4*62YG8N#E<0x`O)eh~t-vZGDjyZSf!Vy$oaotw?1h#hw zYkCjqIXk6Q3^EkWZZArShhCX%UFmUQqVb*`{wc={&}>86sAggH9hX#NPiQ~6k?$cJ z@{COXtZt}#EkqPi`%!YAEkcuRG9psKBPfX) zh#DA?Muw?~ZKGDHao4Sio0Af>{z;8m4ry}6VLc?(p@l1j15P%vc&%P(5@D-x*Pt{J zZ=+fG)|gQGRl`T~8(>o1gQV2Vve#^U_0;~!%$UsW?iTQSXZcW8IB!RH-Gb1q77^8` z>xX9FN*$Vf%2*p32+Jht#|Rq8ouy3DMyIfi4iV*V*?Zf=C`If?QDh!<$f=5lwFt!% zB9G*N84>wWOL(cvPd+RO4(#TJjq*2i~=)A?x}vuR+%&oU2Jk=bIlu` zvGpaO6O-%Gbfuslh;7r%b~>#rtkq>OF#jk+xSw77Z8VO(jf1pDR*SZYhg2YDn`&8; zbA>d|o!!hghZ4$R;n(z!GM`B)t2cOQBf$nj4g z`L6omL%hv3;X*S_;-=Qn!6O@mB_&8L&|F;hhZ-;Iv*lN`#GUnEIO39?H0S zdyrvu)1`wrru+oSyG*U=W)|!C`CF}V)W3gJSFiNN^WSTG{ajkaEiD@lH7d2QB z5X)^V#XPIwx#U1S#*zf&EQ)j(s+^K%XP5j|ty6joCDf#I^(IzL`o}j<8aK<|DTBGD z?PJkiF_vRWT{KvrGg?GHiK;vjj?Y%1sT9Xbh2fb-@t1^&!e3aQC2CQ+U_x<2L-@Yd zU_#p#3^0Gyp*Te_%{JZ{<%uws1>zn!{U1Zw0Pi?P9rAk;V{{0s)&%M!GEpoVn@Aav zlNw}hBc1HOW7U^yI^<`1Q~Cw6234?HwJj3a#)rmOQ#lz5!pu9NB$1&!Su~!;E;)H` zq@;fRRu5@#`aO-AT9Q!oU$r#zV;L##<|Np_4(m+6(eKNH0tTAqEz#mq88HU-c@0OA zV@+!F+DJSXZ;%HA+9!c-W{Ju7X{9e^bi_1}R{3#Np>bf$ic%UAv-(lf{e>)YMN8M@ zik_J#p26BIt`v{l@N;sgTkiH{JfbIX>7e_KsosAPn(Y>i+WyO{V0f-CZAIT}(*J)) z6oE%00J(dT7IHzVc< zxQd&yrHD!nDS|R9fdT>wgb7WWv4~Xzg0<$=R1gO+d2_=`FhB{$J!aR1fDMTaMn1Mo z2abhpG!?|4DtsGbCLE6m$KB@8gCISM4NNM1V>TF`)sB@WDMP)ctrXK+GL{iZThJZH zBuoPqfmR$2rq#E`nnNRNg2e>jcCbDK>|NdnzU)6lC~qHah$X3DBvB(QM$s70xLAw_ z+#n{n1?RCuTM4RbuACciX6Jy!OAq*|Sl)4F12Rb$tht}knZ#|dr^aH_36>FIlL7pJ z6=*G#-{+G7%hKzUPEa)|Le;9R5y-ZFv?l9|Ns&K{uo93tK`1BNO$Q!LOiEW@O-usP z@2gJ%3HnPd?W`3i78YVeciNfz2TK|-jb?GQG{4q_O5-pY0gYV+uQZ#E&OOv`I91K_ z{6^T*|9TNZ(m+5uCj-W&^g<>FOW9h% z>q0!vE0smifxc@fvY22O?K2n1{|610(}Al2XmI==G_d;L&;Za*WDZ~@v~C8z*)gOP zBs9Gv6eOTMDf(i7q@}~&)KhI}d@Mk4t5v4|5YWLI(3QgdHiV%RC){BH<*wA{i&VmZ+vcRG13pAzP+0LfwH$ zR7)rVUKpuf@M=A#|JyVv!c;H|02lsF&B7xd-k5b-RfF@TyMRz7oMYO@SJg z1YTd76Aa2w51bd?gA4L_^-F;yQsbK=?tyYLy}9(^^}xai7^sBN z3LpRhX1oO0O1uPyLk(`v1CWRre{0rzqni^LEd7}7!|5P?EQ)l83Hc8VQj*Y*HN+?* zg-Em-Ts&+5{?q-Ynh2Z%I8+6t1?&dI{qi}!Tc`n?I03LIk3hscxTKuo3$|2r;>M=$CVJZ1x)l9Njk2gFXNj@hTL~JI4IP4^K*sH@5jD)hVf`{t> zq@gL5WDg8D(*!?YJ)hOf*Q0ntexLtF4D+v;F<^!A&p)89@&C0I&_|Pg;dhZx{rE?! zM8ey_7nOGev4V#4K=fbq$Q!??&I4gtwdfd`!5kU6`EdL&3EUCn4}=*#Tm@kaSE;i- z)<_IXAd##C5{YjiA=~F2T&A9hjV)RQCmjrQ24Qvf8AuYJ0#IV~eW{cp*nrN_VjQYZ zLrj8y3q1amaOog8Ckj(R5k#opXs{%i0~O+30uBVUBs?`#gFpOl@1ck0L+7Y)BvMcg z48a7x!ie;D9B;l(Dc8ecIfF zhE0-{a+KFE6HAcod}i5#MU-+*`M0J+xlD4(d6e?s=?9w7k5iQi;9!kqwfblni>-Q8 zV@kbRhL$HZyS$0jeh-3mz&@ED=`$Pw6xA@lPYOs-DNzDw8$KSvAPCdGljN6J1v`K; zeD*3~1?zz}U;-pTa=x~~1@C4Le!h9G_M;NVM*G7q?QS02IIy2Fa9uoE4aaG=)%P0I zk2zjEYr;I|goOp;o4nY(D86>i6wf*9j;4+TYt97f5cw@iTN1Ej3sNqj#*_(WRx0~G5Pn>h4-#$Q3u1A;K@Gxu zIKQiKb&oWlL(s6%xWa^LCK}_HT7^nx8s&LY;l_l2u5hIR83%2+(pzsn^*iN0u%*zt z0HWxBB~!b?^6&Gw_EM-_oFfwYoLHxE+uvyQOwEtAI9ljzFtXBHq5>7daXNYkVuqE8 zVuJ%cvzsas)`Aq6SRR+F#Ruw(IL$Y=n3p zHuyNUPN%o_Ht%u?9qTa^*4besvQr)kNzoW$ETt(yY?cXLFlD;E5To}>TVavH2%Waz z*S~?2#t;jf_i0{0V~$9phwhErF)ocB^rP-wrPT$jrZ&Cu2@OE|UeaA@(s&#AO7CkO=)@zlCEOpzo_9CmS)Be{OP|eWfA4j42(@S5PwK@!TVYREg2}e} z2bDHoDkRWSv&`^>4Z**zw$Leoj#lrLJY_prtnKm{;WFjA*y(cJtaij#ZM%q;>1Dsm zbc>9olp~I}v+$JT19x$z#AX+~ii{@=S+ZtVy@TVZegfL(GmdIH;3~uE)b(-3Rfg-b ze8D>wKp`x8*1}u#4<>U^7qQD{MBthmhx&JRi=xg&_x23y+4b@m<_DagLOsDbcT%*@}_ahktn9Z&S)Q|Z-7=={Uh77dxr6s-wGNa>(fIE5xj zc!`#6GIer*0VQ*di&{Q~1|n10yKNymg(eK7{Q3Pj%48so2BJG`q0?!YP#|^T0zeRy zIq`3BI<}$&RJw&59+^gioa&s0eZ5fdAC42p6II#cPG|>BYEX)r)gcwKwaEXlORr7< zuzQ+RU8{~wrGe)8d3@$1M&xWYtL8Q2B&N8xv{RuI3Tt#6HCR{pDA8H;kCtqcXk!29 zsMpy902_58fQ}^-suBO{XsK2w43g8VaBS70Ip}V&Gu>7zsdk3}Ej0^qqw!pNg%yHLOL#4mbcf_WL2_>`f4n}P24U*W-OYPGR&T$x8 zMnZX)MiEUc6v*M5Tx7v=+iZkxr?nnAB~x?{J*(o*%%Gf^Njh+mJvqgV#iRMYOTw~= z9d%*~!g57DpCdzfZ>{ADQ6A7ea=BFWj&* zWpM5Z`@GHs;Uc~Aq$TnjYc|jovp!3@TKf5DvqiwqO%lOkI-~+e_5{R6QNhUOKrmuw z2vklIiHdwK8i0RcVnC*nE0F@~cScn+YVKG9@*uAyVuWSZWb*e23s7p<0T%OsG?yeR z4TJ>~z(JQN%Ab-TMEHkLpM~aK|1IJ~9H0R7e-xlCaY8Z02}3p~B9>=HE(sa>!V^hf=%QyUE0yWol!hF*2h_JY-!0XSv=4ppAT?)&5#oU@ho~YOi zHAnx@>Rjo1?9ZJVHr8YMFSyd1W0+z(0i2G%*F&XCh`?tU;ZQ1v2WE9TPc^k>$BIz@ zMR$rM%49JrkeGw-0?nlb1@6eOe~?tB@IOdOo+y-wiv2Hkmnob$Ti=066)uPuGFm1p zWYh??NRC}xQ%cncjU7oU8qh6}dUC^l_@svC6yAt#lsIbUo>=jwvR1Z8q8O-t{gBCy z3p2J{#}BDw7QZDt{6%*l=M(oz4FDt7oD3 zudlvrMh5Uj_)Jfo`7E*LaZ;&lkfV~@B10#)M=XK*HZzMwwnL_}Q$hDgVwcE<2TCDb zuIONMiR?mfh#d9-Fw$x(IRVJXm|iw;nQKhR-k5$kpjMgHsc)o{TI`TNb>xj$Oob{- zP-R~w_1#@Bxfy^vN~l(0?V{4Cq2pdsef6X?sES3DAT{L*WYlOmGpkddGAZFQ)&FJm zq)wO2&+#jwYNV!EAOi64{B)6EGFT+~$J$Acw*atq-f5jB08E{nsqo*qJXdXD2WJWY zwjcL@wIBIe0`Y(sbSiv))#x=O@=c?11r~Ya^BUC@1*2p!K93lY9ZLNu{h|7(4UCZ* zgtPe6#;+>SYZ#*yXf?4~!?EZ1LHi-bFQLMPFCoK!ej}eELg=Lt{zpg=-QgHbm0sN3 zygLMOU8Ck`IQ<37o*`-VcnA{HTx5m5@~IcMMvWa+U-Wk~?nw)4il{b^U4$UGT*sS!dvH{F|njh=WcX^W!VHt`kNS=TDlCR~n84ygeD>`F~U0jUm&^4f`RG+_Yp z2}O%q9b|_kqwvp^64q^Y{}9bDD>7B+8cOYR3$zBf;|C?mp7f0q#2%$0dBG&%&p>9O zVrB`J2tby|EQp8{q3ghMX2DqIF{Hi6?^;+V)44^HCfJ47PPsJdU{>y912)|nKdcfc z0Pobv0t$(LY3Nd^Lf8P_O9ikCs2V8C48cQ+3=+(Z#1e4FHMUs5b9TMXJg!jEQ_SE@vustG;+VWa zwguUt6_yy0QBGEC4a_Qi;y4XxvKo7!1WlIUQ3~u_Qo8&VQWQC*qZGvdAnhH)D_eqw z(b%?a+qRR5ZQHgr!Ni<7gd*@gJmgrL{|g(WNkr-br@8U*_AG za_!lSX=(H|spsH|qEauaG?l!5%+Y)!R-H4rY7NX8KVbOp9BcVBP`868T{EIE1 z8rh!O?i)slZ}Bj@T#PnlRPs?Cxi3jBj8!V$o~IZOJjhRIvG*XEu###Y##Yg7KH>sX zoD6mLud=k+gJ$y#o4?yIm?Waqe6WJqfYr}+p_JFr`Ey1c(B1<|+IFaD2(kdFa8}GD zxz`k*V$J8~8y1ZOuA4?7dNZ(Hu zszf0x80N7#xgQ0yb=#1_S6875I?GS>8-U5gJsnSl-+k+xHG^!_f`7WG7D)ZgA4l%F zMMb_Sz>GoxRlWc)qhM;#rAU+n%qS3U*=LIxrTF3j*BYbDl_8#?ZIh&aiBXtQiN(%R zB`I^>O5Q8*BdPF*5zY#PDdGrqT;r<0qLKdw(q;JtmGCkpUHCyGrLX+1VekxvmXf3{ zdM5`tDpgL*am;tWMwzR13!N}|dyiU1E~Q`&Kf^kal&B+mM#-ee*HYWU{>Xz9-tL4gNC&H`_Q{Ao_#!9Bt>`KOug2+Y;ufT|uaQqYKAlbAn0-(#rDrx-s;WdZ@D7J`^kUXi?iHG^@ZF4HcJeOWT`xWn z5%9;Wf9erSk_gk9mn zL_WTT{Qk#@cp6Zt`j@77R@u*H~N2h|@Nwu72IFyA}m!MArddI7oQ;t0U!C z$uxz2JghZH3bX}C60|8uU2dL9axEM_=~b1v@`*{Uy61SLOKD)cymPpm`+L@r$b{(k{)yoKm*&D`OZC~MqUF_SkUtdEmECc?8nx8ju zfKIfE)(G%n4|wWKeC@v4aPj=^ha|(FkKJY`FU-2(W}uBkh~H&_tz#$O!{ol{>B#gZ z-Hx$q;%~z`U2f2NSsvL`P%dx7%2YnmwDGl;qhdm+&L6##-Nw4Ah8Sz|LiX~}8&ESIx{0DcJ`=%C(1>8A12Uy>--{Hm&kA<*iv-F5_c_G$I=5b!=gTfAItONTI9zJe7 z=0^8SoREW64?FmNY%^Z@uRT|8DS#&b-zNP1_#Sdm2{Tq_N8lyF)FK-@#Ds@n{iSSf zm6bJIxP#@U2A{#~92VT>bZ3=UXW=JirQd7B(2%V`zl|+a=53HhUMre z0Pqj3*AQIk>=9#tO_<81by%auKM~liY$(#6D<-cvx<--1X6mNVVQr_yfC(7>jkqeKj-K=uGQn%dtO= zzNv=Ta#GOq;%k3~#{&*-@HSri?F_bHE?g#V(DwN+7V+!=ho%-}tPOore7xN6_s>m@ zxVXUwYw))8k++w&oB+FXSKnW6R}VS=z3|51d5FBp?hHWMKI^z`6KzC2Yh(wXXg=(8 z)_C(;<2T{^R3@5TpBk^$T=%bH4Q2M?*){c>D{yc&oLN*ma+FJd4U#2?=2VD!_UThA zr(gi<{R0Qs;U8#UWUau6DJ=aAtfz92Z#TIc9@vaW;vZEqNYMzZGo(+>Tb zQ5m$lfW~GLpak8Y5%<}KGwGU|K%lHhJ@~P-qmifE*kMB9*77$p==t8d5ty?J2Y)ZFU05&|t*P`x%!Hy;%CE zX|qN#78gyNztQmiQpfF62fRPl8X8pfikCQ$Ba`4GL`hRwHd06=M|J^gh8_?6qe_wuH zN+a5_@zdkZx>%c0#+I!BAymgXW&ajw_OHNPFJH1-<~P9LTnr9-f0SrEA^}PTFCN0# zuaDY%px}jE9@TM7v6%bl0fw-g+~5$#miSi@KOa%7n(Q1vhT!UYptN&^`@f2C{*NNM z5lW$L5z|0$9t?vhYh7pi>>du6b#SES<~^U`T-SuC8U7`-Zhi>~&SG-|NrKLzsD_wo z(jjt&;{|za&A|aA+^g8pwSdc|>@&x7PP##fHv{DAc04qu>v@ux6;t;&1jBv1aR@bm8|}x%Yiy~?W`d4a|csZotSVz zx7Q*CAfF9)_2V5u1SS5`r7IXH=c4@g-ifHu}(KkhB`ytNHXxD%4;P@=1K13P#h zmsHVEqUmRIg6oV3UsAbb{xb}F2YpEzRseZXZYh0Z1e=WmY+_j}b-Lfg|2=G|m}YYF zTPOvA%US8Cu|hLenWrj0Jy&k21$EXP;2>-kheU!Xm+{6aqX5OD8++EUk+di@!j&E*%p!kt~8D0$6+yXheX9ES)`7qVIz`J>F;Zuzg&` zoYXe)Rp=HW!mmrBt`snaaHri{LfKQLf5!pZrR$VXJl*H>28k%C_sx@TH2X8eA!X9~ zpB3@}tk_&E?AA#Xaxe2g=}#_Y^KFYaZ~{-PX=yb@CRwx>|3yc5Tr?nYNpm+5RmwI9 zGXb0z|2tY8+W4r zFk)B!0rq8IJt*{kqW(z#Bjm-46z|nG`hC7V*dYOu_^2M$r$a{Be@Cm zI=zYaT)vx$at@*Yc?9e4zyl=CI{>KBmkq^EL;%YUP}K53wHWwXvzYr6*TVK6AVB*G z0}7FePosFn!~BQ)k5TC6{*E}Sb$nRnUo}bQ0zLl%e`KiSLG=H}qQ>iAOjM456sS*L zR0n=E|KS3xY7MzlqvZ0>aPVVT|Fu(;66n7`bA>P*r2kk99{h``u=M6e@+kno-~Tr= zC4klc6-VOyKits&2(Y>QFTSiC|6%qXIH3Hs$G}_Q|6e6lI0y+E6pqIltYTk?mYdd3 zm*{q)Sj_>i&Y4h@RxtZtyWld)t~3EP_T)qg{Zc!GEr@P4QtZOANEhhe`i)*Sg1f#d zb&2Fa4;^+~2EKe}D}8E#7wjql9CoY!nsN`Df95{NnELD0v1R7kkqt@a z{l2v&$v!+y2ytg~jj8gi(B$2QHKI&hVWJk83q|CakfTs z-I+5CM!GKfX#BT73@#hF{$ z=`?E9j${*03CfBtIY9o{*J2#!dFzk(H8q3SvqWL$?>2-lDS_j=brlSw>mW&9diyYL zM2cPO)(duFFvfsk9Obn=xnJ3@3P~p*jaL=z!ifa{&FlOKHtbbete%;MNh7w7)lO^xPSTCM82B?kQysMHf2 z+ek}Zaq$G^81GC8aTG!R$b%SX>*J1pZFVK0xM_J>{Fd0huQN01MjbiMRBK2s2`7*B zr7i>G5Q<;ykx3M+z`bo-bLPb0&cq;9#N{pvVIH4HUn3TQTGT+HOCY@+H#8f|dAR#Jj+ z5!l650*ib9Z)P_Kch2}fw1ZLogpigGF)P0Z}7KR-J+wgjJW zWC&uscI4W64)&{i%;AG}Ax6B4?z@~PS(HYY@Gzw%ahpz# zt&Y4w{HAR!bQ<0ec|6GDWJi74(Gqr3o2>i}+lAc0a6BJz!ULa;J5$ybEic$C7EK4=TxRRrF-BrXt{t z=29Z)IABZmwN&}@(ql(^q!eTau^Y5^ALh|^(9P7!`d&8GjjFH+h0C5xF?8>6{tula z3el+|72RG_s-J2J60f1sg}mZb-WV+1x&r#6d<^Sy(N6g>AfClu z?7h5)*8Mjif9h!e)KU6ry>JRt3^R*CVaC5Ul0-1r*BKp6^}P7l^W@Dwe~dJ<;>07w zBPwoC_L7S2i;(s2^^*0+hRU$XiO3`>1^H=Uqmkt0_nKD0Bq1UZ_42Kj%F;z7O)&zN zI*t;xF?Q21<>N9$;^2y!J9`_sX;L+zXfNVBIqa;_nT z`FK>StRzY#(O-Iws(si#n4W6v`cVtQN-5QK4|>(H+~4yh{;_ z!(`owGbo#06@DEZoT*!B)IREKx9M9Oj|x%n5yhU@>s@NN_UoK#)l;_AeKNH)qpnbv zANY$6kMqwT+6@R$d&??1b=nP$70b{SB>~Yob+@JqXJX~c(wcRsP3DyL@}m5}RyNk$ z%0lu)OW!DZG+h|wD(p?Q1-VjPS#84d%dJd!%1Tq2omeJD%jEb(U>yW)_sb)`W}n-( zN=L3tej|pTBg*^63L1O9vH$~ANowTqTW(UQ31ty{VeEJU-k#@b;d`oatWxC06R2xV z%s@w+7{6$I2qKmW0b*&C&(U=B_4&J8ER7S8gE}b3=|GN93mWLPBy%apEISi_@k#wA?{U=~_lGazQNQ2b0=xnT#v|gKj&3D&OZt<$0CCgOYN8H(p14!itsgDEiJ9)YS zL%`Ka>(|RySZ)Od7#YEt8hM0zBVD}=!TUcUQJoon{ zs4#hB# z@~Cqag}=0CcgJQ8^GW73K+B?uFwyf?2w}t*vyA6>FqS9t99xQ}FRnl<6pFs_F zv5D5Q-jvgYiy?5HwQuYapUiAT$NZBPr7a+Wdn>}3gSP%+PP@bMtljQ?olrqhY_vII zplBb>8A5@gj9x2!!ts{Wm4>1I!cn}G?ZSgkj{#FwDbMq}%iI!d30GaJbE{S#-OKh{ zl2n6rnCxqmsuLNZ>i}X&Y#`Tlb|BStxuHw6kc4{mUX*b4if|MzI5lj!SC+h+cS!h( zI-~$-XZ$NmcWgXOzc!LFqO2xaU`p&VsduALn82{I29=Kr<8A4G!J`H0}nYaW~X`J0;FbB2Cw)HLEF+kqe6WZWH}rxe?VFJt zrE2F}EANINjTPz#LB+s}(xuFDz=4t~iN74m5b9D)=Pt@En#&GZO&QrczB)IVR^et6 zv9ADz*4ZyYcwROT%MbocygsY~xT43&$BN~MLj>~v03Zin_DIuBw< zewhlcXdO!6V|$XzLoECP^RM5d^?$pvWPOObqlu#!^vOcSXE81~n;06*gDm5#&dssp zZ|Iv1cYE`m7*=83y$qxl*G#$oiQB2zor)y#8kNyo+Jz|*qW*v|o zy$7x`HFooC&9AkSt9;a{l&Y~e4ZMYY4rYzYavge3tDBA>7>lTgAh{F2A#8DYoOg%WPN1nMqfHWWhaiaPb87e&6SprxKkp!8Fky_P6g zzucQADdre1Rfq`)s|*IBx*VOgSR`sm*+^{ss5VM?G&YXyi{T4RW3>|$r8-Uqa_TTd z{%PR;%ag5=Z3Yy)d%K8ppL}DSU(OJ>Y;<8VIl4^$HyBc5=`?vb&4KL$#8MbV52j$lAX>l|Hm@}k?5n!uZa8Pp2Dq?T}Wt8Dkyo*s8Q@CGKGohZuv*%g4?r*hhES+D@I; zlhD*9cog>_4wTsy9|oHM;)`JfVjmZI=dvcsvj~X*c-;49ho`B*dhX<1BEG@dV z#=ajkssOB8Cr~Tl?#ywq4;iQM4usT(OLFGMJBN(t*RNQ&Sh$P_^k619-!@QW1_L>f z$e^opL4JsHUv-FQlJE|d?3uTuu{hWuc1EXpYx zT@V@PtTMoGSrcPR8geqsR5Yj8GhW{d)3PZ#8o^r%{=HVI+?i^p<3%;uDkBk%Hx+OE zbEtz_aZ)M}!91L?NQH19D^%A)VXuSaC~*eNcmwZY_`zu^WuM@8o}@FRNyFnzec$-^ z4RneeJf{@D7RkGfI{3-{zE+@zvuVsIm`YyHh7gdVn|){o8xWl@I=huju8Y?9*-MO> zcTMj}7i|T65rFb2f+8kX-AOY=;mR@Y--!v5L_01e-cqOtwk%YE6|@}j}O@C7k}@0OLkINFy{2~DX<&8$2+(D&;zBUgz(wz@oz$8 zMSl%3$it}n5Z8xBEbV*IDbVsjDFpMp7reLv{wmX8vZ(v4P<#0)nFC+geQ{by&c)^83 zFTw8i#|+@#d7!HjM9P&sM3SQ{MACy47()6#miUZ%lIwQ6hzWih9k0JAiWm@MQ z1I*^$DpPIS1tijPEY%@JRR{4n`W+VfzS`uC?N;k~Z1rTrvzk<& zc-2TXmEK~EWtAMXcSQaz&FuHP)kdswD(fF?*D>>}=$^ZP{ikr_rXpV58L>%mhTgj2 zVy0wr_Zi9*AQgn9*|;q4b?Hw_<*5@)FgQ6`^J+p=h(|w!-VU36ey=hrD8~82zLbqF z1`=~}pXXfx7cxH`-7NJJA?sDLeYqOEPp)>F&R6v*+gF0JBT_6bp{LSVoV`wAVuh0% z8ZA8{t#$(ruku7szsWay-W)A-mYETV_)2M(jN8~~)hZYR#L~mMu@sgWqO7p`dvT^pgSre zl@KSwaLI^SUtz?dfR{zhhX!d4cH8$I6U{)6vB6x7MV9LbyF*J^K72S*}-eAu-5)9hpvu}#~Q>=T<}pk zY-Ajn>`_*^Sn~D#{k^Vk7V-54$h}<(qS<#Ctk}04tXM38N~&K*C<+P%eB*>qG7#`9 zk!-Bq0qCz|29`vz7+ze$Ihb+k0wRkWnqWy9VyrJ7ZVP!Xj; zoFZz)m}e*S?%>LaJRB3_I?H!jxw!d5yvat>@$9rd4s!c}FI6~Vo__dw@lar z(HWRYwk42gOnOASeDUAJ7&^%$PPWz9EJ-w&3(dme|Ee%V=y8nd!$xsV0|wYO6U=zr ztXsmTLSd}yJg5-O1^W*R7ob4SLMRpVkfqsV20wUh>oI6ymKQ64@eVx78DU!PrZ0S*3M@ikiFuHIlItoXWyC3O4wr&VoW|POmv7b05 zrN(~fr$}o`0Gq&8bKyci^tl#hw^!AuRI{2Hk1X^aec@vjggO3aAgN&|o*YN!?z}=8hp@CX7sq6y$cg!oV^S<8t(5=a9hKpk_#>hAE zG+t_y+-#{)G-x+*1evddYeF)6aSNKsPdy(<_Aj{YfZ2!YX&r46@BVR`9gxfl$OniB0wWywRIaAeG)PF0a@u`sneF8klfE>@Cpl%3GBW z$3-$S`}fw)u)&?OJM!Ce0&k)kSejRhh(SlFd$fmVccO?d<@t`+rxS9Wv7-XcYU+}Y z1J=x|h7R%$q>T#iW4%ymzEPBp)lpgZ;}4BCBRCHzw9fOX#^Y*1m3z~(co}Z;=F9y@ z3K zI2J1=@PE?-{X@kpNu0|sHq<>zP@wa45S($EfFCM|X;;3{^l%q*UIEKpKw3rEE$YZ4 zu%8+>Ha3CppWB1>zQ3m(s{({C*a_NmDiL&p9OP#OB9uTQ2x}3>&(*OEg6Wob8-x#= z0-@^9G-Axm_}xSorYU=T0V$eirOf8wf>Nc$2DcUOq}lI2dip!I+Rz0$sUZV08aI*` zOkxDJQoWuXgD~54@sWg0Nj+WyV?Sy48^mG7mKzwQU&-4YMBJQ|-&h~)Xs3NCy*g_U zv>r|(f>?5od&<{Ho(7;ROmX;0a`m}NnXfRv`RT3@#IG+wY{4GC#ULN;pg>ff40;zp ziz|E|1kSKf^H20qP^vtPIX%QL+iqCDlHg3Y#H`}X3DKUY4O_@3bJSB2LcR@$_DN_cEWZ`{goAP&iL*55etH`$7ijV6QDRMJHQ!38FNH z++6+o1=2jtUaK9G1W)=3{()k2M|E_Qt9;;iNP8**wt+D$1~Li#!&ne1MY~PE+LUsBU}^ z;x`Fm^&$ZWJ7Fn$|GaC5aD;QV#21yR;*A?M?kqkK8$D*L#KQS|;o}<$!LJEw>txmn zPD$z94HHI+!tQo;zesylQF@WKXtM|&8p{d@tQRTd&UKhyF;hlb4cSj0bAVJZI9S#4 zY0@1VZPq4RlpeWyNSS^e2v+bltYnb2hHXnDdX+4}v=uLq<8FvvK*PUJqh1u4^M7$2 z8NA$D0Jn=QW`$T{4uDHAVZbJG(a&%l2}C(e(RH9D>h}7jHOVwq0lJS{I~3o9V)#p= zDP|b)MN?zIX>;>;i%wOX!ZlGQ)@iqBFx{F*p^bdXNEl)|Bf~JPbU$O$zMMltji2rv zG^6aT_z!9Xd2>{}4JeEk{&8`(R-Tx40p>^S&FI`e~6knL?y+mGfY&B>?@b*t{9k({8DF?=YMcf8K+5^TF4^??&v?b4AV?)Ukhu z7--#AF$|n|mBD|K;m5q?iI$^=OtlZkND($1690fk>0K+K-wRrw%~)b2)trNNRup4U zp|cj)#;FBbw|S%ey|>d^AvT}TzQ`K4vLOQA7_smW2(mDgEsg^7N3TfRV^lK1_|upz zQg&T znPVgyn2n>|Gxul>tTL`q?T5hUh;Z1v*bGB~2pnj$9X_#avf?v2_2Q^-Yx!rDAp zG?V)-7^OF$c>8J=;#*PM`4JX7X2x@16(6$fu%?yjDs%l^`_kS=3-yC1iFS{V9JfA_ zf9x?hx13RMO*Bl37m=Ogw^PPL=Ap$KhQtTcNgx+<_%cU6PW&9rH&-5OgT>e2JzI+a z$ATay-L)XbCA)R9KUA#NrAnqq+oQiu$7$qdU^L5oG80{%SrgP0dDt((vn3`Rq}O zPBcRhUV?3pcUlIPe;M4H_u+)ZWGyT(@9NbdLn~x6mG5=Z5?W)R3F!ur zBIhjxmcBgP5tZZshPUPM~4hDxQjkEPVuWh7MpQ zR$5|khA!YxR@%b@Si_|zRq6f8cAakGiy@x|U#9PAX-gXTGT#R%8A|oOc(Y@~_hz;w z+#|_d03mT#)Z5?mt^S?~BF^3Lt40{IZ-LaSsjR{vd8N6&Lu+iOg2m({Fsn~X+P9^l zD(*?@9NZYo5X^80N6*+pA~jlq2q~)?VZyL^JXb zyrb5pJh#12)V_)2AHl1o=QZK2+F=Ze+s zQsVr*N4U#o80tGJ`vz^_mtZxBk|VR!BjZzTgRc!V^vT^}3Mow5Z{9RNr6!@D zY7$1dJLUM0c7a7Upo*`%?b(A?HADrT8Xr!aTUs>F(Yki{W7L4r?Ev-F6*)IIC>4}1 zwQZXQ-H-C!(dqD$DGlMTyFJ&Ccd}?~#kkQJ2u9%@JrSY_(J?T#5&D8PEwF%Yk@c>PLQ* zS%!i;w_sE?rVUF&ADwNnalx%r0(PhpqcqXDHt=ud5Q^5E-x7;GVcjJ*Q&r4|`U&;Z zRy*oO8`mvTQa;;$@7=f+B?{HTocCszSTj0Q{!iTzUqn<|#ROiLuS*NWtpIK5gedC$ z6IvG}2q#-q#L5lvWg?J9ry{OEcNy)erg7}pbG+TknVr|+$@1~`)t%|vMZ$({-*&A6 zQhseGQvMAC@?%&6$|cIi9F1h4N0g(r8okE3C=>4j@N3^o+!_J&Il1pGxI?#ETS(aE z5n}I=Gz7aCb6w;PH#L?od(nNqoy1fb-Wbce4+Q&crR!pD&t8T0Sb0qxU~5%i;EmG$ zdfdChyQouZR>wbENL5PC3Wz29jn?k{ol!#W3+F|ja0uE_@y^koqZ~`oy!DL z)$VhcJBr<7jwsI{q*|@dzdy}kw1>23DYs=~b5>qD5Q5h%i@~KrdPCB*J8rb_Irq)vRhGkwlA4XRXq3)^L}np*Iml>s*Qv?I@)f_h%`bUD2xE z`U~p*4C)Uh%gx3ZP_CyyoxmEdF7S%TTrC^Oxt7NAJBzFeTQTzE$;xT9Yr=s?jdPAQ z{7wJWYiSR~mz_WOFVU^jX3}9kO7?N9eo|Z)j597+7Biqv5z9Q}yxRD?3dXV8z)$wTty)j@(u6XfZmYr%<2=B9`{DSVWjSA~%D5ZsyghL$B4Iqw78py{A1 zA5rPFd;}Ahmpwepgm4pbR#!dulHeRsVi!@5xt5Cy-;r}zf-o|z8%a2O=3mW!eviB6MUg}yu-Td6g$&~MWyE7*lEpV46 zR|FRdq|dU1vbd|^*3*ILooGqiyqtQO5fr_5Kb+zismAM{(T!Jj7#vVo=r4vP`cCmc zOc7Lm9O7(nVQBc(2AP+HcX(7~uz9?)<2%Mws5YNwtjGF09 z8pgS6QkC8%D(vl&a0mSy2CmE;fmR~dnnA?9d)cg7GpMjgbsPvKS>&%oqD?NfzHaMS zVJ1|K;+%rl+iRw5ZFaIC3xgu=!={FY9wzU8G2w!LDQmlgjd*WXEl;hxt5#4<5s<4| zFhBW?b8@0fBH6x_nAwaF?01ho&a3`NxXon-o&~wE1FvduebyIuG3p_BaNbJl5zJd zqlV3|DsCr9p+Z@;o1hE_#eR!R27;<_sa?MC-s zlb1KxevGSsLF2ZOR;~>nBc$UwImz4KA>7A%M3IYJhEFU-<4&qMiwck-dyZ=bzb`FJ z7T-uupPC8G{VHTVskn?$0o~hEK7vM}T#g6*O5Y>?U3!elIh|F}h|i`&bUty7xs9yJ zP*{a`Y6grEWJSd9G0xw=u=u^@C<^Pth53k(fDqGjDC#L~9+sPbImkzA&f$>u-XJ#P{hN@y)=&rmuWr&8r^Eg70HHGG zKX9^-#(jt{C^R-!;URgxP$#H^F4|G~=>PNNXtA$^iP;~RGP%L1Y^`P4DdnYn6ek+5 zRSeo7c={MJ4R<{_te)2)3xrxU;%Ip^3ZGDaH%fY~3_*=Ra@SauEn~9r z+H&&op*=wfGF-Z=-C)zd3h{auq!~j&ro2-8x1`$JJb{*i5OLiAC>XLk+1>!_-;zV` z5?IVq19V7SF7|e<5!78r)AJ#~Zsiu;8q9AsTtn-R);nb$YlI;`^I3Ag`g?E8>`{qO zKD)Zde5a^86{%We!?aXH{)UFu0s+!NB5OFi z6A;8~QdmrCk4sHuJt4mmrIjDY$3QGCoLELa&0qpS97~d>XcJ!$c0=Xt^;3VKZHMzf zNwb`no|;tci1x$PdoB%ACRXs`7tg|s#jf7jQNi`3``t|GYR=4ZoN{UF`dX+=u+aSZ z0xC_L`Rl`WLu-K&eZM4n!bWj z>L1{jh7;Mkr3RKXx#GCe;xs^kWCy4c`Z&*QZRn+c@1V(A4Bb9=HtP-@=gTVB4TzgC zCIbkwtaa4T{HiBecD#^uP?-jJ%X}CamY}1Hl(s^ABFWILO6(RZwmH6h9qfGmFu1Ph z`LIHGXCl~z$n%HD5jGhcY+$QP`}F2b3jYqZ4{H?W=2g%9g6GricE(#Y)>{^wIZ9%r zE=oL<3Q9Z<3~u+*QN6a$D|T{mUUiTjqk=TdoaU0ysf*%-Z>E+fcPl!6A>>jy8NF9S z_Rb@akKiR{(=0CEGWk%X?h}p6Nxa2L0rR=Kg(5=1z*Qw8=1v9S<-8s4iHv!3jhSNe z5T3VXz9RG^f#!FsWEG_?Oif19sTm%BTK}Uh@tNi-XrA%1*V=ZJvvN`G=rzMM<0{Ip zx~9Jb^5NMIXTg}$&Mk{l1ye~y?kOEy?lHey_SP){iLzUvA_Y}Qhp{xGI8}M$1-Up z%)N=|H(PPm)Cm$gm@9)9OfE0Bi*%{&;XO{=Zv1(hfrpG`7OxaUG8tnpu7EFgT#&r# zODdq5DLc@^hV*Ei$vU6k-dwE zjG-Do-I{pb|L6BAj(|Tx5pZ(MSh^A~XXTy*S20U!T3=|}1%>=}=ty~M6jHnD<)son z{12kN&4E|Jhw{nr7Nh&_HIMkZf+HK$?$pg>iA@*<7{&3Q5Y1fsbaq+^159^h+YH1M zyG+C+yDY@U<5uI!R7Tec%HvkWYuL(>Uh>UC;s=wmUR|~N+4-%cgJ!DH^8z7SYJ$a= zQL~&l8Cirr&Yj-Cr~{mJ1K`>EC568)IlbqgF)PQSZ2kPgM_NhO9C^e198OO0c)(9} zeTw`Rbf=j0-ob0Xy|{YZ&}{q!MgLUYz|PKYcI@$xJWn2EKDe8r^32Hl88 zk|sLPlSy7&h(@}Y>Pp*uy|QNJ8n&vc%BfhPqqYquu;7hhF`Too=87S~yw7Nz1ZmM} zSL{`>rCX4|t;?;K40rwAV2oQl=Um%kH^F6-~k!eiyS-h5m)YLm68pw+nb?Kljz0$!he$ zvS?kdX`0G}tRUTG?s*m$Lp zK#J}ss6@DKHi!8}?5h;=+#PMSA<(+HdX;umggc1e+@>cV{|9S8l)urDKEGo&m|E9` z0h;ie1+LA(gqga}Nua8^1eo%)t~HrG;*f6lMIXmfD2k$HFT)=XT9!m`rCm~N<9Lc3 za#8)|=j6lHA#KY2cE`s9*4wa=aV~6Qe90!724%pP{%0FK2{M4{+*WetK0K`;Q@l7}>TiElYXwkT9g(c7Min`D3pGTPBF#kK3J%}# z&hDyJdAlMfvu)hl;iEY*Z{Lr)JG8R?4vnnCTXd5Uclb(%G_VA69bQ*h>qZ~m-z(iF z-A*s78|QNhrn!QXdUUsXNIJ>+d}9vZ1s4LrEAPQ8^Ia>|%-B`6GKO_Yry$lvcBDuG zmC0;L(@-muRXR^vcGtHo7)csbn^&5w)R(Z*blQri9+lAni|@P}H|=iJw7XH$8qz69 znpR7Z1fD>)W&N1_>o0m{1!jt;7jlI{r0c)_0^}q8V7CLTY*8Jw+J)ITu%Vfi^ZUjA zP)I%{mt1s@$LSEat8a85VbfC0io44~=$wF~bAUjFX>H0~UJ7&mI+kx89c~4Pj0**L zj57szQMUpM;xP;Fzz#_%>Q+>q2q;AT3S@Ef#Ie8URxR?v=}d11PmQ!*k{+h)ML8Nh z(sGUNFWXt>$7K!L{;>Z6@3xk2ADz{uu~|=`kXd)2kU5`-y8}gu^9dri&;&S_P-)J- z;ZFpq)zyN{^VSGPPU{|H9Lstjg7+M9|5RO}qf(8s9=Hc-xmTi_&Ra^hGM15zj3pep zNr+{6TZS}HfoTbv0b~KsFvZKKFa_ig-V`rmrT~XyO=0LJA!Q0JLmF5D`IZ1NyiRh4 zCEy#MUu22bLd;jJC1fjO3E9Y4!l9c4?)hB(Q=wpqmjOg5;6YIsSa#Kwb;naU#RR{= z@cZ3+95b8K3NXa3u9Ddn?RfjBGQhj{Z5+7cy(bS7+@B>zs&hDn5Yn#(#OiF3{&JCj zMK{hYfw^HzyILau+Uc2J3lcl_@6f%%Sr;>^Qufq+sFhx2D)Gvf!NGa4HL$N%J&;$ciY$XyaF~;B z&L%8Ht)(YrggAID5nfC3fa_b3y7VpbR|~ul1V7KDU2d{o!_gZ2a=0Q_T);sQc!i#G zP8%2JHtYM%TJX>t27!hq%(YDFUJ0#L{gpJm z$x$$Z^H}pmQC?reRe=k6wnxVeED6pZ)eW}luK&p;T6CfQn}ev?$gk%2jB0+po#c zwtoND4{Z>Z3+=iw%mlA?_skep>Z`UWd(o@N)ed4NdUfKVf>=jb-Ov)RkP})8EfHD@ zD-l{QOAc~E%aMwO-6Vm`&}zNWp%u8AinT4%m6Aswr?A}v_F1T{lF);GrY4jCLs`^9 zgq0M+mDO!ouyi5bWwM#Aw^fAPl@q+m5qwyYyM>^K>vbW(l+SI;?~Q8@g!sfCZkCJ9 zywcC3Bt}FYi&qcn1 zZ(_;SNwX4TPIa#E)-Mov8`B0|mbkC$>AYd~Im!7R{OqDP>0{0nz{_GDfCq6;%{^?~ zf*@Dcx~@KwB%~8rp%fT!7Njc`f>llal@S+mjS+dL&iQ z-GwTVw_qDlIbVT*djF1gIPEcPPJ(2l-}TE=626kD5L8M!)Sg`|q*EIaWvA2fI5m9G zIlV7)zX^>D0$iqp|Bg@3M`!0FF|7MFmGKDlNaiE3BN>puW-?(a0}_;&Oz3@_K0<)W zghmwear$t$X{SKzBi`p^B9#4unOSa@xP0amNplEakwR+n@d|lWVQb$BJG3B{>5)>& zlggTkTt@P=hPiKxtu7?Sy=U9vZ!g8)Ug6(foA3X1-@p$dX+q|dcM%qondpja>AZ^V z@1gy@XqQ2b*2B*Ys?@5;RT(xjwVD*_=1v{PL<$YklpfK$S;|RIikzFJ(0(tZiIK)s z-8d_Biysq(=Y7FYA}yUS*tEK>5mqO17FBpK|?Ni#(_P#hB;=)qy4R9ZI!B!P>%(Q-Ld8G<1Jl2mtdyh=GBI{;0iJ zrDHXw&^~Hn3`YzT*y*^!5#dF7Ie}gAFlGc{=bzwCTpbg)xWD>pdUrR58#XU)##QK6 zOSo?Ly{&7^K^5DI9E5mPIOuF(jfBwR)*%5C0gBulLlhnYyHzfOnsMlC$!S(xR-Rrv z{x0NEYRg|Dsz+^0c4dqLdFoh@09Qa zm?~F^V!l%{T*IaC=oc~}$e60in@Os4-2=CwJNoX3AR50x;OhLqgzvtZ5;lErh(tKC zY<+8dJ^395yh{jj9njTX-7?u64=lg_G@Xba;A-^N3;AF8(5oD=+xNy-pQXKri$XwU zA|zI&oM^j~|G@jFOFd=eY#Gxry#+7!OcXmEf>%Mn;s-w@4NY?Ps2`s%=Fc?=EUz>9 ztRW{!zhvVw6XUBOs98iB)6_x=0*!MHcf3PBe=6@xBzDhNqYe8>tyO3DE8 z2{2J;L^0PX;;lXQ!7MAx+&kT%D`8*DRb9aa8#YXBfFEuqcwQYpsItV5y+9P>`F>%4 z!3Dnc0_0b4H@t`k>+?hMV}yzv2&JYubrfUv2S*p(BXv(KZmc#pHNkyAqP@CC)~Z~E zbv#4UgsqRIK02l^;F0s$K*~PQ0nU8d*OxO|Ef829@>}`snuq1(3e@pu5jk6{Qi=zP zxmYZIM}_MTsi7D!S!g|m*V*@~8@;Usoo(y1+jM@pEb&W;<^*LM=bq(WD`DQr9V82t ztAuts>)y|p1@ulz%#{R9Z3vtyaELBM(0WwcJ1>E5grrfOl2-OJgic-6jc&Q`H)9r5 zU6!>@IKK9VrBPPlMHwb)Kgp$DY!) zSW8n>r*!e#6c7y70bTvF>Ph>oZZLH)=$`y66W753{$u=MFn-@XBa=CcOr&xamq_F+ zE|bPh_I&l~Ad?c4#)DHaECD8s8&RxNG5;co9KM-j<#E%)c$z%^yY{jt$>ZK)eLRsb zuab#erz1O&tH&^r;}?wbld+-}q+~l6OOjcsSdsHHa>G=tsQC%GX(m?W{DiE(u`+>c zLeeQsr%^>MlF=4*vZ(gqBsEXX~Qf!=-0@i3OOr_D%`9r>IxA;ein5kB*0tO zWeKFRs7Rwtvgo_X{Ilp>a40PH9tF0#bL)J2B>H7{<$^@&6N1v}3&*8stlc<|B zb+XjHXjY5VJl&pjaGET| zC>q9u@)X{MIp?A03qb<8v;6tR<8%BAd=?yzRj*-$d<}=eHZ3`;DV+mLg)mAp}1ylb`ZU0$0PU;{f{AB829=Jg0pDY1Vzgrlu}@HlllKW+c7(owJGsVgo|?hP?qXL&)DA(@h|eS=$c^O z29JS-H*;GCp28`H_hze2buHCfc_*_P=dM2tiXY`PqcFal-Fu^xtLQGjgo~wqEZX{H zkIs4jXRp;d{^=hm3tq+#E+}K_8Y-W>#aK>*!Y#mp=a2df=>%_j#<8|0_oMny*{q!3 ztZ!A+;i^V8gdjSy`1`vfvsKIF0dGA>WjA%B$h+aF*pmEY?GOSz0~dEEnavl_b)N#d z*iv5~@I{0P7I@VN*htAN;uIDVr|>mnp-NLkfVCngKmK40vI9%T1$?eh^cR<^TB16g z<1~7B0S%aI^q^fAh5SCY=;^jcsG)5&F90Iymlb28Pg>bxm4YhvE#{(sqf|E{)jWNq}T?EjkFfy6eDq;qcWTE->`w;|9rX?kYXEH48l_-$h| zwn@l*`l~Aa*xFK6N!vElXYQc)Jw3s$T`E^SRVqm(?Wo%zt2XS&G@@fcD^7$b2#Z#=!W`PO%Ibr8`WS`(;y|O0 zy|xZ_<%_-Q@9{_ZC=+;WDi+tHd$_e7CaZdS9Y|OG1-AUT63|(MpAVGyGQc&7gl|nD z!MoCp)ROS_r4d_r_JopFZZNd!H(on<_uBm}mF&ED=Z;ENMp=tNaiBf-05qe9wPM)ym2#q87#?q;f@cOi!v(awYQR^C8P6Ip5 z7q5s2uR(WW-hT_LiH4hh##cb2VvosB0+E(XMx~{akr{N!wG3odrD9vK3`{UcfK%su z{zYlpEaNEvlS==1V7hq&g3}@?6DgI1AjHbj2G4N$RLKQ?>o zY=#|~5#$C>G}sZd9UYTp!1ajUevYX&1Xm{&+rsVVm_Zg?{mbWWAy%h7UI@$qgRQ2 z*e(*dZ7R$CPA?Z%DR{IR0v@QM-AcE=)bGVF#;6-)FdnW@hLVi`jg;=((A@nu+$#KtL#idWWAGZaZe)_zqs>GlC_f z85TW_mp?7cS3CVyc^}A5U&-Y@*Q{V+z_3%@E0#@rxdT!g5~l&J0FXw{Rbz@h`#L8@ z12;eEs2|h41x{}>1{5n@G=2$FN@3tK?AY$S@rxe0s@)oP(u6h{0IdIWc~*1K>!#+l zjz$UshC~Vj)t-cw3*?B)wtb}O^+0k;gLWxyWfY{l4kd0ksF<+__8LNO;g^uGzG5BQyRZGF7WbE4E%Z} z(z|R}e}Ee-e={C%JbWzc%b7_pamDhF#LVdx!0A=w2C=l51Z7FPiHAE_!fref#9#_)wGCIiA1wR(-7Z zWoy~}wcq(g&01b9JNO1%I9UM?hqCpR$erg5n2=8HU}pebob$tl+iAP&ZmhlcCf?+-Qa!W*fCPu+gmkvV#D- z(G04Deo<3amiI-c-S;Fb&FxHK#ka+#Mo3t(nvVbZfa|?rd{mys0ZhFsP_b`z#lBsM zDaFY$fZ;$-@v9roIApmSHejTf`d3pGTiru7P8=S7etC_jg9iGG_izYGf1==F5omH_ z!|hTZ2jr$%#85{1~Pl&0fI80XI5 z3-h-3$QJ|wtlbkXQ+JD@@n0>;BHl}D+x*ap`21_jXg&iRMu!2 zI0=HT{cfybncl*FQWZRgogY`j?T|Y0&qm{QQ*jgj?2pY0gBQIPQ_mNWNMTS@NMW$j zjntB1(3eJR^x9KJSh>YpWH`-)?5KR*%`k8pjmQ}k^(sVeo%Al?kCR^Sg?A~lF_C=x zcjZ#%_$~vxgkLOe`EB&J8#mM3H^jTqEzUkwv!TfhJBau=!?s(;xBiihCHyiBt?D10 zUk=T(nUxkF(n_)L#tH~LYGmiQWweGf*B7spmY^dDue!S0mdP64-Lvvgc%_RPyzL*H zN9+#H2Z}`U2us3ygr(p;BIrhH0K@&pUL$;CIVp|UTC_`4q?H@2!RSR8w+esK>%OC3 zIVifuOS7M4S5%ByZ}FYvQ@#I-!Fe0ID9Rf7cOZPr%nZwgA2>A+2A=)^*cf&=902fN z?Gd!zL3;z-ceplDzAV8$=R&mqI2^tAS>(rk8=~Xw1@%+IJ?6yb(vjWL&e<0S{)4l2 zPjz(Kt!$8s?jQ~jmL%m4(f|>3Beg7d$QmG;;eAnrv~t4{0@p1{cQ{q^nm{`G?5fm^p`WmSD|xK$QXndR2hwh4@5zHqpfqjZ746aILi#9by9 zTq`TBL&L7T43-FL3wu~euf<;7j_*Z>I!!y&Y0{xilMYpOBefida?*%R7+$Qfax)p1 z_qu~+uhWIRzkN&?q?+{9yWFj3{jbQ*k;D(69k)6C@OiFJ+^{b+uL$ z4@lX;#U?L7TGO<*xWSz|uvKLzyC{p1!thfayQ5u23t~>z56#=9-W$NStq5I9!b8_m z@X!sqk($B_Aa^f(?I9_R*qH69inMZTJnAB)aM5JhQO_Tn>(T&4Fwdr{7NBSdK)e7H z!yhKJ*nl=8X3}=y1v<&?!r~+9X*JI<>|6$eKlc?@B*DLHy2ls8&f7$l;0T>1;0Po# z9DzcHqt}hpGT>NBBQ|D7r6R4|FqDQnDgeh`58;?7oWbylNc(B{6NVN1_vKG{aO}aP zAg>E+@TjL%z!)9_!5?eD*sGmdtDtDu<;6xhPqrj77=c0tqt}hpGQe0$BQ|lb zRflPJ_Iw+)9%o4Wlc1@{?{zm|GWX#M70|@Lf0QnZi?RMWCM)*DfoTnH|j<3z_2Zqgfv3P(fPrvv3OFZohZz0gVX}ZM{4{=wzRipho1^tFb$7tVnv{O)PHJv_)`qk zh8-KRF;v4gixpj`vfLF{_Q%%R?%Rif6GWA8UJ~(8FKKwRN1gEv(GGYIFYgaIB>~SQ zuz|c%Q?djJYy@|`u2(@jM7-i~x`dfHgLz{yM81VQjc^S{4TnJHSWy zhC3{?@O^k(0^4x2@WvYbW}|>GzYo-9tv~Tq40{XCj6@{|_J$pKCs7^Pi&f<%Q5yDA zU3t_Q-!fsJQCQ9-%7MI6ixXv=mnfvb9SDWKZUpA$i2S)he)u;YWGeJYCh!MiJY_0< zY)ap^rN(u06SjuDJ@hQc?q$!uX`$nxT!HYg-}9he{Xm0u3qDkTt30CLGjMLbv%{DVboey+wZz13f^vVYf2Ss|YvT>f&7e^fbghg`uOS9@#%%V`pr8B2*z4i>>Fz-7jQ?0+)HC&tyJ7a zgpP2fzya5=0|aJ0zK#D?{UM)z4}|zUo9-Av3_DmgH#<7+pYFYnK^GvCnE^(?x1&#X zgx@k~A1$ut<4YJ1VHY2kp@%M)$)AoUvw4Gv3_nPFLD~n>9+2w;X%FBM`iih}%Sh;T z&e0u>?u#>w=Nb8p+ap*hzv-TJs|k+x=Dq9;C&KBUmVi5z;-;5>eV;9JFog{eQs8G< zcC(;hv9Pb@WRU(E?GDNQ^n`Vo;1fvr%_re-V%V+kNa#U^+xmW_9mud_{3y6@Ez7Gq z{S2o9qLfboP0FRb&iIz)Ql&&fqm!sWT&dY4s=V7U@+ghi8u=69QMAiY2~?avX>Ty> zvht^Rg(!4^`kBAv0&d%MLq1?{58Q+gyg@7^@~V=E_kogz_kpN0z8T;tKS*#&`T#wd z4#bt35yhKKM?PQ%g#3Jp@PTktsgX}G&8>};0@q0Kw=3X6Z8j0ZvgVwV_w{!)x# zSG`!T*lpRe75~k&V|@45WPGLlbf&=zYIucOxT;iqx@QmZRhQa>)c>F0W#YHPDPY;% z(Y+izE(VXgEe^nMl_8Be2EXsNBp8RJJeWgD9?~JD0PF^w{n*{(_I^W70@!b{JlMc>9`@9FlX3RElN+OX3xc70$QcF~QI zF|c#MXMmIYBrDSHB9`7qxo&MfWL5`1#9_)-^>%>0^b~eM@EbKOmyFAQg;Vlbm zDV#ye!&(Yw(CFMUlvijrw=6FJL)BhX?o`lcGIol_yP~Nk@a5+_Me`lL)2sZ5I)q81 zjIrC#1CU_g-RvRRkD%u5ND%Y(B#1e?q7tE~jy_aNaN_K`OB(=#Jh&xAQUfbl?B}06{zsuK5Zm|{4FZ4TIY(nk}g2IjMky%&FnU%8{c5&#^ zCG-7ywaJE?19R3N2z~k%VYVBLO++jBiOGS0xe}lY0g7N)2Us zQvos-ROc4H$H>bAau(Xy8G^2fuZgw_&g>{y3vRf5A;JyCO2JJN$#By>bVi@ht;x zzC=Q!bFM&Ksl`i<%xx@vqOLwV6X#!-VeM(aN1%?pEQPxz#jvY;S&F+QB?xI&y4p~q zFIcg@Al$Q3=Ykc(?pC;GrOpK_h8 z!;QPdB&+Q2XL}il95yVG6gDi46gGm+_?8SCRf&YgWm^?-rDoG-|C;|3xPPBcw{Qw~ za@IeoOx?(7n=xQz(V)hlWJe<{jl1rAXoW~5pwW zDD!3F8=Y;1@(RsnTV;XyvUAc^K?vU7g4sGG-UeyqYz&68@$~*-Ssb5Um>YP!b!|BB zVB?BD_HfvD=O&Oni6jO>7~2dxKg8itA!H0EDv&LAw@H+XS?O5xv_OT(Q-qI4Cg8`T z5&#r;$u+cEtMR(Y*gukrZQMW?O3XKuWw$cWsi!`vhu@i3cv{@VF{*?S9Nh`SOBo3g z*r+Z|>ds>z7QWX^zCikb~RN# zfi;DmT~mPIVIiU~v(hWq(?UIn>koGAxNgj-=0jQ%g$o->GQxxm3&S!A3rm-Pg(XYC zBIuQAIk2e8#kC9uS+MZNm>qp&)0DmHG*B(Y@F4s97J&%gYHp((Ef6Ms{STHO^^|oCa4HV6I3#y z0Y^|!-q;HeNpO-8UF9?;yHHofv@L+uNIs6h;h_RvMGZ9wJGutJ*!lKV zzqf<6xb97pFN;&af>)M@@5P=!Od(i;nZfQ=`&$s2zmdXV0VAscwSIX+T53CW;DoO! zwPnW$FNhs_2e^gd_LR;6*HVCHQr_X{WcP4nvVVlVGA+YD0=c*r?wL~@WCw}&%#DAH zrZara9aNPoXerC7=sm-00~fbLn1b5vN7!^xQ_hpoP#N-Xzp6>^5=u{vm30|vj8H$? z4&fa+5HFWdzB)pV0NA0cW8Qxp>3lsqqs0_pIn#Ox=q#Jg*fLBqlci2DbpP#~U z|90((!>>0B#bL5QAW8D=!Xvlsp&%LLP{8-(*Vw zk(7;YtzcS4bKpP-t)Vi?DiBpngSS7}GC&7rvKI$*p-Zy*iiqCKdhcR_< z702h(GdtI}XF-P=Y(c0lCbQ|+7dD3X?EpTUFU$M_(W7#8%-V7DH(VxQ=YfXZ`xf56 zu7BjaXl7`1p|7_HCxnTG@`{>B)*YyGAQ@YB)TGmCnc~#p$OozqH3 z`6xZOOI*)iP`-b+cwv~Ycm>ef%8&PtIjR-l! zMuZuNRVhvmCke6P%VuZ}GGxP-&9v1-Z}=5fv-Rp8SR7wCKV?&;TspVzrMU4F9smu;9viI-?VUq1xmB; ztTAcW)q|!JFv=thyE-`4A?4`v`C(5XW$-(Qn1n3(Py)T=GYKG*&qSEc0W!%c!gO5* z5u`Enet>3iTs^~IUcd)$GWL;R1Fr)1VlkTQ)qF7jj{e)ju_-V`4zuZUKARMPk>SLw z4#Ah<7v|%$Pk-Hk=xn)xbHVGeRs6r1jIJ~hEx;J+MUT9$QFw^UUP@lM?-Ev#U`6Ks zcDPVnCQ1}|Kaq~^dR6G&y*;PAWP9#zzn;Q*Ryx?*Fz>%yruteL6)IFe@bVbL&b>os zJiRiTsVGV*!{rbC@J|cw6){lhYk%zg4o6R?i^$E)+o$1w6^1(JJ(&3(x0%;ObHs#O zv9yFcv9ysJ*#>ztI#hVu0LLkEBio`9LXJb^N461f+CY8_SUg$6d*iNe#)J7ay!CxB zn!YOk^8Pu{RT#?DcHimRZE7Q8K6UZR2$i>JSS?^>UU@^=3x162H2NpJ1n$eSW9v@~ zM2Lk3FjRbjz3=K!sNSd$h7^V!u6uZ84h&o&`0LFr3)XXYEF*}k zH!8!fRQQ`$U#ZT#plsrvyH?wK96ql=-$Z)Y-AzKmMlcocO&G=W1JSa$pP4+!%2US2 zrR&WLy!H)u%xk>jsLZ|A3!eGrF3eZ%w$*_HFHLx18GdOC;H(NfX>9tm4Bz)@ktX-LP$Wg94Cq8qguEs!*O6dq|i=+ zuhA1D`uDjX(e+>6KL>Zi#UDXHw@$K7K)=8Jp?a7=HsNA$7=MX?p2OWrXFGwPkvU#a z!-bVDpj&mgFzhO$M#gY)(W7E?E_uQY0_ub((4vGb#}h~?qt*=1%kvxDTbXqN<<00 zhx6*7WT8usP2QjcL(De5jKNHPNA`9-CB|D5rVY1@V6D2gmPrBCr%j;LCrv<H%&v9oj2U)kwTmf$)pfKxWwu z@v>AV#!(n6vlu^ranW#%G{(zc{E>u6W89!4q%nR1W7wthm<(??ZlC8m1CZwV0#N3; zg4aFOYPdov9ofQCOqv1j33g50J6y>HYrrW$&$vV-T-)$^wJ@R8%QN)s09N3Y$51ib zTWi+=+u%jXFu_l~xBmiUVB;A|3AW=GnEllF2@;JGs`{;?c+%PYApNvq=bvOYw@O+x z>$QHfE`+}umawj2Rj3RUMjXRU3x#Vhlw>bW^?PqP{W^MAG`5S~?P71c*xxQ*>q9MX zX=FFGJ)!)5AOkz3WN{r5vak*b1yoxs?KQ~dk&u&s>LM(0pg9PzR^xYKrY+*tlc~MoN4WnHfisYG->fj0;1(vJd}@W^paZ4fwy@BE_}+ixMb}z z@vP*DE)9*0UXJPzK)jSdjcd~d4BI&L-`!8t;O;J~uuCH<(7_0k_-WWdXjfldR&T4QPC82~Z{uox>Em!4h(0ZA*o9{k73oj* zhNR@RYdA4 z10_n>^5O#_Wz^^e8j=GOB0!ev`RinSuv1fdrPGEB_X?!p-Qa5S$G~3jZX&+70{Spr zjwd=|AbStpc8BSD^v$q?9nS4=f2+6z6soKo=8t2%dmHZEhF829EQLE+hMV5ck~Xr6 ztc@(|&$yojNJ?yE$#90BH0T`v0>z7M_7*z%ktD36Cz8;Po*>|z2knRx0dFzai5L** zHlldb+4{)#w?j*CTPO~$>wx=a3>OZ4!(`XH;=;{8HFwDcWb9jzTP&8pYAuu-cG0fw z=1_k4xh}}f6Zsf759C9DRI)+jz|yk1W32ar19 zS&o-QAKtg^meugMAJAUTmbcz34eTyY<YNSGd9r{Pt3Ih;1R5&qFw*;l(39!U1@<%v*(R}Ugf;_@8kX?H=&-)x+ zVDWm-|6~`QZN2qB+Ef2+?N|8itN-pBcFmUm&1-lb%eBhS-T;HfUWMsf_20e5&m~vG zt?~G?`sQu(=L*+0aDBb|w!-$HfFJedb%igy{Pp$zzAfphNZkc4yUoU%3U7G3YwLBZ zxmRKSLH+m3bfV%nOvla*yBgJI@vDTR@VTr!XAFQ&Z$OMy(m|3~?M7*U=d>#Md>VYsGyqw5phDjGqdv zNy|b(PNr2gX^urTWsWr~-BT^wn!a>oi)Z*01ICch%=D+ZS`cJ%S4dioEjJSZC$1tH zzgRN@7L_wv_{~}&&}Fcj34u|-fASERn>3W$DEon$CQ=ssg`X@UplhoF<{IH&6={&TqXXI3paRw zLAjf21LAt2&~PgQ;(C$Luqy-NdXdnuGheMejkl_E0dc)ZXxQOwK4Vgrbwz|lnqF!w zg9cvmEO{RJfZ%^5z2Jo;J?V=M`iv8ioJe0}0xHRX^u>(?RLU8R>Cq+2C@Y6o0VEFR z>tRJjrF@)N;v9@v+8lfYLc}c_A5{s7mdk*|2DCUzUqJZ%sreJ^tm}Ovh^g*`tFEnC z&LM{_9veL3qk@FEtxG!71eec^|AnwSOS`r5#ClUkDh-GJ*1Bn4>N)~f-1A_x| z<^Fm&z$kNR>xy9d0RhMaiP7Ud9=-xLP`tK;mnUImAl^5Eb;{)gMsIq1^~%??k$qz+ zKBQj>Xn21gPbOu}hbN_B=Z7Kqa%sLEsNY@urLc*83cZF~6~nv9f;YleN9;*Nnm8N0 zN8DLNns!6rbrKSdi(w%H3A-prd0B%yf8il_csF~1H$dFzyDx1etR110g>)Hn7ixR% zui?OkJ7A0VAuoz8U0x6CiI1bJ2RwkKhPu(Wk*>jaqg^q+p1@o0-D?4~+gR-0j=#d` zLIgNelH$WRcB+2gzW;T62y0y)`geN)z? z%aibwvc1{aRr2~0TXwEMv%KYm0j;fQv7?N;RRhe$-$0W6FbnF8XIYSEJnKL&Og8d3 zIndJ)I)j5lJ;+jx&=r)Mae94}o4Rax9CEwG2+qU8eNUsILSPk`|5GAK)2kS61OA+t zPbj`PZN<8^`S9jOWwh$EOTZY^oVk)Z??JZM)$o4#pi=D7d_J42j=msQeL1hYu1m3n0$0Nh>Rc=L&cSuL z#o2G?+r{MrT+EK40xrxq8NCgAzTmH1yR(2L;{bAN+7G_=5#tan8p z|1xIQc*i&Dj<9}v2j26oNh;sL;7H)% zd3rKuDi@1ta3XW2c&nUeK;}$Nls#wbgCmF^6TD4nqz|?z-ca?U!kk-}gpVBA0-w5h zm|j7IQn70J!`;iQS1ut!isY&HthtdSdMy`XPv4G4tq`C>RQChb=iubD%hn*rgaSA! zbOI=-j_H;H1tA&Jau|?cu+53mvY`Xo&*qfvm z>`u~?_D|WJ-aMq5=vqQ$X|W{^Oef7wG1LKh?=l>yA=J2ugARAYDnyWWk3?;xqs-x+&q z63xrLqr|YZOPzTBSAk|x9?uyr@ch?L3-@k$!w&aTprbC{Sboym#~0DJn=LcMKDzB( z%$Q;Hv==b=y&87zGKL25wD+K&^mhOL`X3S44vsqK$I5{*UEl`Nkca|TNJD`tq+!8i z8#`czoLDf~7NRm_z=FxPID6KY=_FBAk`b_iFP+&8&3d?U$+O<3qhQsn0V~6o?f+n-C zu+2{*sfr=P4vp^Cw_$o#0b&WVh72+n`bhBtkoo^fy&+dWA@Ruk}W)!*|_t#lx_1XO)V5-l87BT-W=o-){b69G<2 z1i17;B~1%N08a4~BJ{h*ye}Hz1wr0BTv~7R4MDq2_qxgAV7O3JuW_MvfgLKwVQ=6O zwxY2-y#E7eAYTIkF+&7~@GeT5(>V|!D)1^M++8#%+-+{Vb@J$U=&aPBHH1=I{r9AO z*0BG8<(Y${^9BhkmY9GTOH06wrDdU)`8*4_0Awr!7H}41?h+Pg1yYN@!K&yUu z3oc9H(PmE9Q*djBaIpvD*;>yg^$B3enpwa(yj{&E4|jOs%(vkt7kP>8*ZfFn)90?^c8@o$tauqRcA5m-WB_@&t$rSRbAu}%&6bo zH#2SGcer}8)X3j*py`|*4-WPvABt#s7m7%E4~j@x2TFNR#EEsF=%N&k1M5K`OK?%j zleo~{6S)w&=99S4>lz+pYjbO*&AbO$)osRu+zmzbT!^kL;b^m6h^!moNH^s|#QU*a zV>0K6gXlu$T9YSrq1`8PA#}|raiM+Eg~CkD%mFM&*K{50Gu9(X*U{JUk8g@ESQI!o z`rJ7lw0j5doBG->c&+2XmtOyTaD4drjh=Hv3=%$BxghaLe6saK zK8e2mBtE&9<&$Ri^uO9C-&%HRD%Z?&%uFv6myIIYY%h}*jUv)bd6}?g#LT}U21zgT z?r3}xFZ=n4ysX(Qwwm}pqUyz7!25;ZfreXd=V7nAs#kowk?Ga2t9DK}DU*8^KUb1Y z!z~o3uCH1rHSAVRJ>3qLuE4f0%~m@7e-FEd9RObI)$S|2V6Ad_`8LH7j0G;f7|p+p zpnTh~g9GSrMik@gTViW^3?1C{YHC1H-+k=WbZA4Znpy{&wsQ@D`Xzf=0^k*q(MYMd- zib(mO6_KtSv?5M?&|;>%5eG49{X3?-Z=Wb?VKihSlf>F^BL&Zjhved`7@6MYPlpY= zI-yC3NrqdU$Rvd%!>&$bl0uSIU5&^jg(S-^KQf6i$+FvAXnI>CG`-CaO>gr$AJyoIf5af+K~F#N$E}+u@F4WeC-I=St9VeIQltOn z9`w3~2ffbspx5~x)hhMgF>K7Z*ScJo4(4N79<;zCv< z3Ry1336ZNt%(9*@g)T~ibkH)~;Pd6u3AbZ0_u`4qm#ma_+*8gq9Y15i*LTV}E- z3{ZaFw*P82%6~R9J+3v7Lp(*E?R7|_mlo7{O|wt4=`A$CVJyYvM`>=ggcZV!&XkpyoU)!74g8 zA;K!L!(YdJ6_GEi}5wQwF7WIo_<4E>$Bj~*>uPB%JgTYYfmP&Q*#nq^GRIA72Lt) zFD&hH5Pdz+A`M=DJQygE4kV1m#5_o2S{|h_Eeq2GN@GqeOv9VuSq>~t#I|i?!ilXH+nU(6GfDQ%{L9+f-P)>`>b!Tm`*!y|=bo=| zzGHTa?u>k`W_&xa7eie)*{9vv`bf2BYmd)k0eEN-+Ww89Qf45P%3>-uyx{QHvD18w@-z`%<~lDz0ZV^)8b19@Ps>;Sw;>w!F_N2^qe z6tu%z10BfT)-TxgfglhTM}hU?A`q5~(rwCYgb~yDz~AjMTlVCw99*qUs87;=-gX`- zq3rBIA0ox{Sy+%-(o@53gB>QYPj>Yj`C&TTk2TajEeOtTqAnc4n zRAsY~I4i_yOE=KhgGnoNAZc0;#9FqclWOl)0X~a5{o>;_FitlZauL{NSf}tEr(#sU zpxe$|Lv;njA5!F1)9PkSR!Rz9mog5w_k{F>5T!iRLzDR=ze!^jO2q@wTDTJni%GA@ zLS+3~7w@mO;*DO8+AWszC5SSy62oDCHaNpwEhov$C}v9v?&5Xy{^Af5O88LtMCkF( zg4nJ6__SjYixO$72m)BVX0>5e2w6-6(_Y>%zmC0+XA&2GLF}}o8%(>R<@Yq=k&SEL zd{I1|HLUN5E;O+)A?+=P0%6N}IVlcxs93M0T7rto(8zxxw2LhmM zt4#$68*W+kgI5P`H~lEg1_%4Yzv4B_0RzIc(@en9g{&(Z4hRp}d?=H|X?j*L57-!m z#QUEo*@M@Htp*sjAes$A4F443af6MM*o|u=_$hqlGSQi!TP|b6uPNN zP32QtkKN^))*0qSsA=ZZmKpl*Y5Zl_OojpvqaoM)7aRE(tdsc;8YJR*bl)M+Y zWZr@9#(_Q(A^oGzmpfCKR&nQNzmg|ywgXyJ`q{`zRPG*j2_%1esh^`m4clWh5u z7-_Vebj;yhcO7cpUA!DR`|cT0pqsULwMCJN*3wfp4qt=F7sb=)eQy?kh+;%vH7+a(Q#-(wioe4sLr4N3=lgO zKS&!eDCl8Z-@eI4F|Of|h(;$kE;U}M(6A>^^^5J>dKzYiA&0^ORO1^3_6?dRxH$kA zCa~0_P%pb70E6Z1FDm-}nKTS|ZuRx!8Vg`|N+`q8ze064>XPs+>0Cy8lW;97^fFSh zJe|bXw&ixw!MN{NGB&efWB4Rq11U^p-*1gDAk1JXA`9G;76JIFpl0*CuZEXmB+;_Y z%k0guRP*w+oeNpx~lZ|RyR9wa>^UqVi%*XLB-3P2-ZWkLzWsXWX)`~>qhrb#k) zj3Beqd|}2({m@%^@(Y)MTi>$xkq~^2>w?cjWZCM^S|woe^Rr}(^y%i!JG)6~gHRnB zp!m&>Hy}&m+W{qV0$JDTp88+CD}49Hj};sEC!+1XoC(r8Z6fx>B&+{qyfmA_D=2~h zam?;*5&WE^zmOH-D=Z=*OqfNE8%ab~uU@o*EQ_a+XC26586rdE#@>2J9K~R%*(<4c z#Ms3XX$^S}MYgM5{0-kfUJ3CP)bUeniFIhBm?XgQTUviBiHu?A8r^(7vtB}!wIe7F z%SZs1fwvrxL%Fl_x9>ONPX&ZMP;tBr$CcSpY*!OjaR6{|17?L7YX+mtP=e^AY2#}m zX05Q@kT;M;K8*o&(6gP)r^m|3ldwgGwX)-Z7HZfr^C#iLgrayIn1vqN_}G$@iFV@7 zoq^&wW-Oh7zp6Fp4VhJ_u{SoD{I>ZdP?)w8XHSs)*6hGiSj#iL=+1CEkf>VyAU$GN zH`CRB_D%Av1n6yLcBq&pGi#@@aWwT1_;n2$TPLl$Q@nYUdLItM89;W?G9VC9$~+Z; zyY+$*vdClk*mJFI6_kEldU-r=uD6u&)>}7hiJS3QxZfD4IKaOJo@PO;e;`;l89VHb z9#_8qLTiXFONrk1!kfJ}d<0u8^7u|iQmNK;w6!&y6cLH}^mKZ2v$1iE+qrHh0*dqw z9#8w!MR?|Yh?>gk{~7e^`3So?ujlBt^5(F{Yw351k6D%%_le76(sOrGS7}rdxU2N^ z>~O6VkmMv88S5Y!84diSA1A?!d1t3uB?07MMt&P3+XClhcx^V-Y9Uh4&e@!OQ7ZG{ zd%j=(crm=H^IO15p5W`X$|^8loSI2`O50OZd=H{0qCLCHBf4Zv`8{Q4 zuwgGi*mt3SOzP`T;*Gc$^cwf5+Y!3%t!c9ZM>X~O?@&x`tHr_ z(~7r}`=QLP-@3x_0Ksw|Z}n`;mAf5o(O-uc*lEKQ)vb9c3Zwhs&gnhy4#sfnP*})C zNpq@yIb113_USOVURU{8kQkb1jP~*_=^Vs-F7AsDiiv%m*rTXFVK9EP}}ZuMn>f+Q*oW#}pcbk(HM!7?`UT#kX=V7=cr%wcu?1bsPraeD9` z60Egt>-WqLemu8^E8g!QJQqn2YgoQ{aI(5>E$;NLq?XO?PVMrg26=7*eDDY%NM81Xx2b`8oxpzai@r?Df32u~$5Aj~0;v%Q)&{u>)9;H&6R7K( zj^U{8z`LimIIgm49YA!cXUEx3E$))v;*ENDlCU7{&&T` z#Sc~Q(O1Pk6~4pnj)Jeosdv!gOBVUv6GA7@z3a;T9u+&Q{TS<_uyj1k7JZgaXN*0l zdvDn%G443voNJa5|$fRTl*l6$71{a#%8$O3o5zLC2-chRJayjfBA9)z82lWZkV%G z$&^}ug_|RMTTy2{I@GEe-nn44<%WaQ#QUAVvBcIdGE=GalGul)1;egU5r-{-mQCrY z>iwq9*?Ub8eb-hBAikCu9P>*_K_to8hB|H`u;d~>09_a8d$GjNG;~UnlF>)J^26i$pvWSAb0-Xtn<-0_6ZQ3G)T7~9wbL}5u`RVumLB7GU=wtp za6i`+D}!~$BgRxLNkyQwZ5SGxJprRCCOC`DS=o>RQ!~pXzCy}XA)UH-H}`(?P}-q7 zkI0KuW<@Q*R)rx*qH1(qfh{L&|D*Lh8BZdgkWm~kX*e+sKnP}iwJbKlB2Uhny8PND?a6Omr(5fND$6cHI6H^GAAmeRwlTAGC?XL4p-il(ag9(f$xfLfk}rZDz4UskoA}IR7n3aIL^1O{w3s1>w<1p6{UyK1GpOd z^b{>O|J$^|v=fh)8ZM>?R!2~9>2*rVot_rnqoB>S>7YHpG|{wRf&&T>u_DVNgD@O7&MP2DYqvKRm)qB0Q%zm40ydw3KqIHSDqLSbcQg22m72!&D}3Xuti9u5SA!UnNJA#%9( z=L5v$(OrU$%?k4og0dn4LnaG3(IGDq7Y_ULn~m@T=7LFc0bKokRF~;?medl7EHUA} zC}4;KE4#ui$a)A6=_!mY1JoKtk&+E+ZT3%CHoV9|@!FJ-Ln3 zxTk)Qd2xt{vBC=t!VMe-dS6K5(GJndVaR}im}zuL308!*2hv%iB|xEuQXTnFtDfD; zRwvjCf2Y*g4z_?DVubU#)*vKsEeChwD^;3`C=9iRWQFlT4FyumxZWu;?`%$G*}$p6 zjo&e}a^^E>7(_TgWa(GPBu8a*;B_}5e*~o>i(1~=0NJLSF?^Kz)uw?|o=RlH!kJ*! zgSdMJmA~f4VoEBtf3aA=^d(bHHaTVi0i%$?DX4Sf93JNx% zWYt2+y?O}*@GXaD@+^mA0Bal%?@m@4Hz&qraaLXb{d@Jd2cIp(?&Sr-W3Y#GlCyYm z1vlB;LM1k^h1d!B7?y}t7}n8|KVovaVut4>*M|%g!pqn_n=ul2en|kveJz=^9qYP)>gZb_VZXXQF|fY4V0FL}8N{T#m_E#)~WK2xzUv3tAT8D;fRU zzHAiB)9=xe&PLIav61XhOOYJngYV0{Z@`=dt#7qZZ+|m7SC>~fS8Je9*fdog%iwT0 zsTOnBsa3JiUbeVBauO<%0dMU?l0Ubn23TjzzdECVb^dE5TG8(8XoP^0GjIDVnL8CgV^$wkVbz%_ zzSEi5-i-M^TMWl(su-TzR%Nyro@%W$S)Uc&BFpTB!gOx`amY;e)Rxg?ewn%AH}lAR z5fwtkuy<0bQ)o3L*l2NgTJw$zVRlUhAcyp|8>I>wXEUaEb8P16keDeOK(xc+ect-3 zK|M7G-nOc#1rA&t^Q-}>2%=8M8|r!`5k&}Pfo-~`HU|EthHZVpN?xgRfuOf*bU76V zmP@a5J{toPj@nUk6BD?=g-E2?%Mg|NVYcjBB(OG5bg_p5|8!#gev*|YcBebb(ZpJ6 z|7Hw^f_oMD&8O`P8QC6MsBYt3+AR!6E1+UU|EB6A->;x*`V~xg`~_5a>;*(v`t3_& z=aJ?9x1t#Z=KKVtN$$c*@2^kjLN`6U#E&X_Wf#ZMYlZY?puK@%>#~HHEo8bacJ$C+ zZ~-J`m8&MKdS5ypNT%cu?0v|EvF^9Z?aj8Dv<-1O!+aftolBmZKjzBZo;>p_dD=7h zYt`p)-6qIzk2ZqhV$x1I5xezC{@f7q`7~CGRQXmLx+6)57kqWR_u%ksT{1L&Az(bc zvlGsXyW}`#2~Tey*?qI|eecK5WjTLlV<*PVY;*SV_FfR=d5;eBfh;q>pTtMy5Ah7h z?(Y(kH_nUs1f^Po>({L9^?wAVlb%O7IR>GXU$YW&U%FFvMI*E~VsM^KU?}KLW3TN_ zW!H65Xe=(x!LOiX&gZ~u=2}vfpX>-g@wSaH*XYyUf%CaU5gFa`y|`!TJPyiZ^YI_1 zP|%lPR^F~wp_SJ43(LQ?}w)^*I92q_lL>m9by-LH{yVn>!CHf^u_2k0Woy7oEosDOP`Pc!|Y_NT&I2vpQ6C1r3OnRmu&Z;1Kr!f(|^u|GjL5vz|e8hNm~bL^eb9! zdEK<=!$tcJ^<%H=cmDNw`QGCwA;6&Dc~>o(W0-~{fa4mg3nSpnRTxYFit?+>clPC1 zSexIwN?$cszrdkGWwN39<>-gES1fl;7indoSSx{z7QWn~pxl=9s)KP5R%*4&WkyKU z5p|r=4A9Zp&C6?IC2$`8NydlcjxZOI@wF?5Eya7f)_m(Cg+=@0X=C=dyA>*ufEdO^ zlXxx1N7`s;PZjyBF)j`fJy79?O{A>i?FSa}t)1kPTyrp9V*MA9 z+x{g9hz;Hrdahzs%(P`~BO&4wpI(0#+DDA@@$lo)i-8WZPQz2drxbrf)RZL~;_wTb-Ph+Cq#Efq|zhg)J}61zxMDU2x<&4~$B1W&1UXi{(@3qzQ2Zc?jdk0#2; z5x{|Ev+aY0U^AvxT6;6gIMX0>6@XgvMD1X7B=4Z5WqizSPzdtL^0cCc^W%?0v#t(e z?e-kyJi#jkzSh_EKbIH-HRki!(C=^|x({2zPxov-x%JY*>D|&oE7|AYZ07C?Bjn)d z8;aU} zY9M=$*S*u|?Vk7}G5hge-YUAZS5d!}W5m*(cid5azB}V~*xQ#ao;XB@uc;9*}gqvVKvIX@_q$egjL zPL<)|Jtuh8)k(-0c6pJE6xH{1^Kh$HQ5ev|X}oglQd|J1Z;#` zb5Zruj2CYzZEr_(%OObSea*cls+tLV0?Pbi^F`^+!(sNv7CQ`2O&FeAEB!}z1QSN) zWNi}}LeJ!o2R~u%Ea9h21XpW&JE80XHZy_zHf%PHzctd!j(h0F_GO1c(GkS!+$g9* zOy%(=KbLZ1muhaMx@*mj-t?0+=jMwI-kT%(-R6Rd{MbF=mvYnxkY&Vyo>oHvj&o2~ z8*A&7!2H$hE?l86>WPHjClAw;zh0i~7wx~E*90A*hzGqqJiWY?-V*XM^zWeBc}5+~ zlVZEMQp~Q!iPg2wCzen21YAk5I@z4bB_zDYvAX@azddzxt3@xX+B$Jft_saT?b1}% ztN5Ik{INwZ@O*UY=mx*M3Zd3P^V$+0h3&?B5gWF|%$(=CUCjYC90b^!zV=Boafq!5 z|3ZLJs zo{V)2+z*3m6+~gWaKoBR|M4cox4VRlR=i-q3-K+>bcapD%6|I0NZB{o5yO>}2^3Sl zS=LN#a2dV<>%~`V3}Pj_*1+*aAw!X|PiXm9YP^}uFx%3kN6(}A?dRkDa6RLE8qMpF zVEQlLL|}qhzkHKNg$Ce#lY~Tt-s6BovK&nPbpnU~#~{n~+Lh&*$9k1vzVC@!y#5)E zmvn1de^7sOb9xf9uke|N4UM+3zD8a#-6P#EBr_Q3>L`3b`R$F>`u)a@CHu^82bP4n zR~JiC`Z6?LMNLt|X4Uo4%^LBkm3a|^sC(&5r{U!;h<;!(0Cp$yurJ6X9hoF zVtk0T&~RZ2aB{$^B{iC!3J?ONOW07`EflXrjCPC`k;E3V-*W*gdu??%-=GLzWT4f{ z$S*(Idi++-iL0>FtUE$6KEl1kT_Iy*)9P|XLd_`)f-lo`>yI+E{|o!L`5MjLnB{{b z&!+{8s(*cSJ%yL3Z-adq;uN_SYly`-|65g#CQ9Ag^)Jp|_s;CTTVotrjb|97cxLot zDK6N1a(YiL*lbCSuSLf+4#bWXrUA>J6gSWXqXX>e^7@57EZ*hEW>2N#{Y}pQO0SFpQtju*#d-SuFC|hP zWpTY~I2k3$Opd|vVuG`Gkx2e-cTdnm7;bK;b`?gBt#RB}9Xz2hVj@g^mg!*q!+P-a z-uFi8JTcwaGWF9P2+;*6pvUSFxzVp-1_&rry+y+moy6A4$#CnBzLx2=T*#FP?|BV_aPLOo9j)em!`N0B z+i82Z`xxHV1IxACEIdC6Ws!X$T>?9JsRhO=%6(gxv1~HbbvfWWu)OR9d*;g5W;s%q zjo&CSp4zL@uE%iJ&jSv4Je0%^mbLT2rTw`xUvCC62h6*6e`3uW7y#qWDsudx6l@Wy z;w{y#{(=(aKEP}1w(YfLd-a`1&7A^dGeuzjVa7{c?m+1>4>0IqxYYB$mix`4R#=6z={7 zmi+Hjc;I<{g+U=YJ_D5a)RPqYPnJr`1mhXX36B4fmhsu|XzN58k8wmTH8Kq1DRH{E4Xz zs?8N@S!W6OTr$->%ky7RseUkKtWB6q*WHz2TgyJ;x5P|6P&Xwv@K=sHEMe_zAi`~) z+gDox8L1+*$C}4Fr=```%nm$>Cc@!6Fb-Y!gQw~%1#5#)c(P}3?C50AByXxuPZiEa zUb0Ok#YV;EJ6Kqf)*&zTA zgJ^LjA62Z&?FD1K?4|x0VaqE3jG+C9_Y5OuH%HIcqMOb)=+m}q-hK-Fs>fH+aj>-X za1u`#c}AC=p`&AmA5stb2z5*ET#%q0*NKPZP3(W~pd*%R|uQv8Tqa2^Huz+9>_0wFEd9j@7$nV)?Dj}Y;uSf-j# zp9nCYS^hoRc{*sHSJ7Odc=_&V&n@TF2kaj{*Y*p+eno_T@E*3Wiea>Tp0$An>3$*@*{N`HudbqrvRQ72gbjV2fU>DIw}jk8y3%58kQ;Lzh z%HtpJ$I_F~w$Gdma91IEz7N!`frv&z@KKJ8U-6QR!p*9d?+^F{dARxBoi>xsB?No5 z$UHbC`Q@1W`2|cOH8+4vMjtPho(eT~K^}8l zxOeZBS96*oh6{G?O{a;owTfx}Uuq+tzIJq5fOf%Ts%-9|>Xa8nN$FED;$EgW)T;ER z18hwiEZz9eHyy*Kw3y#g#v#12o&z|g(zebCjoAhD3{7iau|@;fk`qcEzpCqWVqH4% zr?IPXw)Ia|Bku$62mH7`b;I*I!9{Prc`;gg2PTR$&C1$7CJf+!DOxqe73==^qGj0- zXA+O?mn(z2oC&Q*ozn6C-Doof*b%XR9Z?Xe&-MmJzZ6N#gs#Vzl(n-Web$)^pIgki zVNu}+)I3HraWCHWp~(GWtzh$}LGls%c1@#v0_s85x(Onap-kk0C3q>{EM{# zri>lflT_VH`m#i^5;JacNAY91Nhis*rf*l$4fu(|q_<0qmNr%&=fvtIBp5mrBoES$ z;6iEUFQ!IIqrE4x7?{Pq?Lt+) z!l|Z5%M^)%2;bD}iO1{iPV46|G$);c)RzgGuq|%y$z?sAQ0w`)5%fc_M--7N6nh;D z1Ms`gRdz82*e?Xn?_r zQMFX9UuwOQa%Z5JtXB^`FiAVlaXwQom^r+K*{w>6E)4$_Osj83BC9?egDizL?C1NoSo}b;K7rl9*RgPDFF3Q1A*GOL# z@hZ(Gd6sP(=!-V1E{!6M0#1vR2NF?Rp${;4d`&ONSb85@uKH|AF6BX3dMJ>%Gb}n_ zTlT0W(^wa34C}gO|C4eX{!H!*lUEgqm&(~u8dZkOOusK7-O3Tc*%MD;o%s(~t4w7L zhUofgM-_vCiL#Gko=*FHRA|mAbgX&7Dg_=Wfr{d(Ybo%KK5iN#*E&sl)yB|gSR(O) z>eax{G6RsYX@nN4y>q9{>K*3iQkN*(_i15Nb9kW&FT_N*3lNJEU@C0%$FoLD-EUc%$@@dp0-op8HjRAFHIA|P3{o8%qx6V^Ryw6=s6YfL5RsHQ>GsDH;)Wm5xbQLK0L z8T&{_I79quAfu|asJQB${eT09_nAsil3iA*6&Iadu0?fh-KSrpMK!_+@wxW>3>=E^ zWBU78!D*qK5_6f^rtHlBKP+*7SGZw6V>YBg~p_X+r&knm_jzjt-yb_ zS@ACuSO_wopLT$qK!yH>>?9Gi94ps~t2pxjOJiAlf@Cy~JnEnaTgCgR`su1LRVT^! z39=c;&Ts!MGqY7l6U|c0Y`u&--puAt+xN3y*%3coPXoNflPi~KUgdCpnJw}R z`Ztg?0>{}X#wcXdprs0l#0u<|$N&h{*c?nwtN{rJqWuZ9Y6jfU9y&c5Kq(@S5N=N{ za6<@sF#S(D38PX1F91B18Yp`TA19s4Ix|qrgz<8T4g_aElLHQgUX=|^HJg%2=#QHm zc`d8z!inR!0IC(zkcp{ms?8;8l_tdhrWOk|CgEod0Fh8&bF2uyY4jim{sBrYP{r&# zgA66qxMvO!fCH(Z*mOye`B!|ojK4@PI>$F!BMH#~Q+U+9Y3IdPEwnzk5+`+$ZxbEB zj^zKRBT|y7Nwv7yl9I}3!l_^pqjGZKd6i2_?d@y=WfGP8h_x0l}<8F`1{c_>%TCOF5@v-#fpuQ&nTgH{6D^*`#Ei0gYKnyb`&A#p=AGTR-)Q{&JsMeP+(1(#vL3dSX zB1(0*9qU@Aeq)ss-2@6tN9O+x4xXu23ogIox-~j6zw(Ri?Af)6Wq*H?nMo2l8kL&4 z+iwJul%d3@TEkdr*AE1{fFmAv-neT2ho|^-H|$OJMK_p)_2E98fJrya^K#7_1=sa; z+L>>j4DM%;G%kO~Q8N3`e#S?<(j2zR{HEeKff}7<^goz#3%umz6p9i2f^>~peBy~W zcVCQw_O+NhLCr)2cQSz8cyF4)GWtL^nOzxafvr$yPIA_MESy6Imj*H$p}>kXGH$S?> zTybb_SsZ6PLKG+EPXoS2I=|=b=K^!otu>Bm9>JK}7o0qU2BZZroGhb;`z%nLBx995 zl<@$FjBKOYbi)oB!x(tH=^2z4R{CvRHSR;w3yNy(bTlhX}M!S6;fU|?Nn0Qmbt&k-nau!Q@-2uZIwNse49 zIRJL3iBKlxl=ldOLEWq~0+OntBJnxG<5)dSp$X+D2xKrlKbS~rE_eYtm4-Yyeg!UJ zYLNf%gSAI4lJghd(*80x%Q&DW{Ywqgs;+Me(7rF3{KZuD{bBzTros^TZ0z%Zxd zAEs*J_=l-5p5y<6sk8!+{)4I90u;P$NUE+p1tydju3*N!fcAjs&;$6b<#f1?EXwcr zXWkJ2U%??AAj7U=Do^e>^d*_rnbdNb&|eLh;*byhy>2ZB&Xhc+Yl_2iHRk6ZKq@oc zn@~bUqAA}E^ynjzk^|R7B&X!$K=Brs2>Aa7Rdy}^4^X87w_`F*p^}wxj^j2R#(nzF zAOP@FGUT{QfE_bjJ(zN$)l>yeuTaf{H-Q>etjl{}!#+-eLr!Xc0l@$9e^n)5jZ4&K zEkL|uaQ`FH>anYyi}CyH;OzgVO66XRvHw&lY1z3N=@U3C+|T>glU%P_*XDGST(@$4 zc{J=~!2b~W{v1d*0Iz=vhjH_D9N`~^kFvd!>@iEo%KiAp;I47OEHUBl7OI?lj>@@% zFZ2$;&&}RhjrarQ0XKKwiD2n97YTzmmn})hN)mG@l=cC1(yer7{@fXICnFeZ0Z47HFS_CWYi#c~4^N-v8&k94# zgJssSQ($xMN2pfL!5)N$N>}LLONEB^R~9@5oD761%U0;jRz5d?&3^dX>=9?j499e` zLP{1*w3JGM!*J~QcpZxQYS(lC8W|UF!l%ChaiShGij)Fw#n4@`B{m=)UUGgQ1E~!H z{;OBbP5>+{Y;aefujW^=^lJ9gnZrVi!gm>h-fgZ z`n zu1Wr5O&G5u;uwM-_<>LQ=K;T=rULXW@ZtQGB(-;JHKwY?41DlZsroa^q;C18bi0u&Nwn}=kL){l7W<`?|9IpC%a`N#}bp&~G@`?!J z@qmH-Qp!MJ#ftyG=49~V|6xuXtw^%Z+f1z3lK26aFU%6}z=eq?@ARVo%q+sV={wdn z!XkP`T$!>kj;S$<*E-%z$K5iJV+-$cmmZQOYq8*^$rw1ML zeLze+Z@p?Bc0Rq+$)NJQt8pZNw#23cM*?U|*h0)qN^ph)!g_QpAA!Rvc+4DT{*(>C z2jUw+6QEF4SlX8#ApVu6f951ncb767tlTdhki^CZ6sa%v!kM`(BytK`EQa6y;ugwc zpw(sj`mqkc2jUh0{sP!TG&Rv-{xPTNKxP;>^YsXxRKKi7N*x;F<`?CW_dM&6K zb>FD$<#P6UPtfI{H@o09EaO;Ucf_QHecUMW#>M-|LA{j}YK2TE`m@BH=E}dDS@!K> zb9DCTV|EL13qw2Z3b>R`%Rg{_Pjw*M<+ z9#X6VZ_hoqzgmQahnl5@Ln4q(^Tr!A6P*i&q{J*N<#Y3RG5VWSWOS&6q!<`^v9u8R zi#I4Ki;xH;OgNuJt)QS62f&{cZT7lqZf2XDcTaow1)QD60aZkrAy#j(xRqV+36P*q z)Wpo80jQvXg!s`bK4c;BX-gkUWNktkw(7#22VzvPjrNLt>h*aIcXzW|)^q9d;{t6Q zVNA|0RAbeNO^J<#ybwas&p4pv3^!zW5JDUI)T(;Y9ri|%+QqMu^m)pmP;~ZS6E?!i z&EHgJiUhNzA#9Z6Tw~%w54!iD-J`XIu3~<64^`~LieMnmg0@_+w?=;Uj4&sg`uHqz zVK$|5QWyS6LoKL8+g))XvM`yo96Ju_v(Z1Yu%YDAEC&Bi3kgXns85F{GdT9m^1IL_{m^{;R#L%RLguzTy| ze=Zz45lG4`&Km>RUn>#@TE6ftn2@C>x7k$ZOY=^W3^2o^+0#J_ga!V|dO2r|?sY&{ zB9dpPsxWI8RejhEu}34JOZnJTRJws;qwJjMi->V`+gmYF>TAzRDT^+aSLw0-$0 zp!!9?%s1+kNF@ar7!1L$*Z&L4I>c32h#s8k?uwz2s*P(b$%|)zFG$gr185mSHjs== z(HGm_EMJLY1QZczqZQ2dnhWhuS_{y%YFV3Hm_#2_zjW`QqcG@1JrpiS+klxPI6~q! zd)SY3+8O%SA2oopktH324y=L$^hW7SZiDt}W{J@!keux8e~^` za-{YTG|yIwfm>~a^`SYnwclFsA`_UH&B)6PHcZH}Zu<=C9>~p6tSYQj9NY^#QW>=4>%S}rrt(TJN}C|!L{@6hM5^5Oe5 zYYNWX6EQ}8#0@&R9N|>VzcE|n5x{%-Jd7LSpYDC$BffLQn>CXl;ng(KDX8bej^vKtoqThJ`82M?<}qrpJTK5x=X`+D38O zP0?uHC>;n`Hd+Oq8I38#Px%2mcW3Xw-omLRFi{q@t6%g2?JFsB1WXIGkiu4IOrmKiix07r12@h-8l?&WJ!uy(8>YfOl(^XP zx(szsBsH5VIagPbpo-@*)KY9!i3$v-swqv(bx1z_t6}5*eIE>78*JN#2 zI9OgFW(tl24@6QNKout2}J&vx8ri;%tktDe2Tu50+5vcDcXgxp{rGwRK|7ND~oL^<0%Ic`^_Ysjg z6UZs{Dl~4V_)a7<)Of1P1rMe4$wPF1)ei&a?f%EMQ*qu{ZHG47HO@E5)z*TX0}oXS z@Hbk}f`b@gh2sq%P0dEDj~KSVz^5dzSknoOoK)&KWorFqOsV}Q8& zdy!fzjztp5-lRW|SD%u!RxPshSQ#(?jq*#djmx+Z@oF#iR^|4ItT@2aQGh76td4nE zA2AK74$EljH*2On0?%;Q-3NEuwwTflE|3x47RU&X5cY0neZ^2+B}v)M;ym$}!`)f7 z`m(6wZT11VCLTyLzbE6fB&PhZ#be6?Llc1-DV`ae`wnDvE;3gjEx0J>15jJTlMOck}Rb^m+}mt_$n z(aJup?uOO;Lnm0^%_)Dr12BApN@wk1;XXYr?<*)MW$;@`YRpYEu^;fUlB()KjJEYN zOos-Mri4!O-q8bb14{5R49=IF@73GoqrlJUTHP_HNrZ}KjVwu(;AyO}_$L{VpjdX) zIAJyPM8Z_s*Uej}TtbCM&4inlag-b(O*JvF2zbC<)qxu0cc#uYH2EPOE%tCfYg>0l z9A?Yls)azVZUd~q6@f3;nXBo87O7NQs<^W449-^K&uVG%M)aUyy%;lhLGNqUBYlDK z`QD8H(uA^r)ZpdvlI;f^-~q3py$|0G1V(BnX{#h%(rQV%mZ74EcGIax8Ld1^SIVXg zRkK`1=j4pC@q7p7{rCcz3+j~qJ_qF--m=XHwfsj@-M8SxF&`eOJJDem87qO*Xv@V+ z_Rt`UFZ@NJER$Ax#v04&7(@@%5Q;zMF46t${}i=q$wS_q^)2orErAmKJ_@^#ul>#a zA=d1#K&{zZmP9Y)BHL07VKkaPL?4XG>MWF<4+M6dlwE|KfG0u>>ZB4^hMj+tfAV1gnMgAas>4s zs9MSZV34n&5~}V-qXt~Nc4g@W3(b91mxp(=D&G!?chTykqJNp+)&6Gg0cKXC5sbyz zKWnLqTF@M3Nv+sbLKH+WY^oa4xXh)Gl%8uOOLQT49BwYI0n2z!HHn{Vo`0xWe1P%> zz@SeNq4R4nGE7N0_uMaES^8ZUJe>uEo5=K60>ikp{|)2vDlF$Mg;1UOlikP|QaK!%dkslmc@;k(Egi4rL zQcon5t^#=kkFoNDA#=0^#Ws2J%G|Ro8;P`W6vntY1Zbqra>KAQp4^v)S}aVA!{7L_ z*lDlt{o5vkzQ5Ub0g!?=1KK!*6+0BDD>llK7Ucg*%$hM!V#E?8O=?z=-wiJ+wtczL zP|t2?T@u&$S*6Y#Yh`7u_!Fb7T@tZmCcbhqx07Fube@%e8DA}0Y49xgI3*&)y4zW% z(a~p;)k>~?uPKj1_pE(?DM~kxXiOvkRUXA`1Q(TA3k33Ix`<%2Y+s;I1vBFfW3?L{ zRwL<`s&4TMyscc4hpI?W{QQj?5sCO}tgSWsJ>yxN>FqCjI!$|1P2mqL94|FdDGs{K z;?!~Ao2|^0Dq%($URj#4>0D0;;>V$R!&T9XJTO{JWCmQx=AE9gLyg7sv&kTtq3W3u zb7V|Mg4Uj6?V=^elON?hsuWo>X26!BR-16YPx#LVjyDw8;n$Wuyc{&?%=Z-qt4A_N zK^@VA8JpFZ1t<2iViddto3Q>d1mfR+u6Mq*sg|Xu4CAZr&X*AN(=(H2foetA7uXbcYJ+*IGJ*q-;;HS-kf zkwyfIPa+z7mOv&5Z3;|RN`>jY=NJPYxiD?HKt4LWkh?-tGKl2Ki1@`0Dn2-yg~d1K z$AX+l?6m=>0cuO|2Q5_LT4CV5Pnu}s7Es~AeKJcIVGCB&>GZALz2VDX7Ct3Y+%QPR zD==`yD^<q(r zcjFFHv~&iLv<5|6{6*DOtK;`y*=YuEEg5H%X6o-VQ;w7u-x6AlqAH(m?DA0X1y7jF zpUw|+FU40c@6X8#bia}RT%HMkt#%t~Y4oK-g^8hE`B!C~AEel%-9_$J#?rg@@jER6 zOAT@a>{s@}z)Ij8u6jEX7!l#CxRGZ`sR_(iaWAs-^fmz)^N7w zys9P18&CPG!Nc&oAfFoD?85G9i+0aHomn=JUR(3F6QA}mZ7my>QIoJ!e{lCpmS~DVwjH@6=!(%&hA+;h)&b3tGYz$` zYG@x{LM}^ud};9ut}R6|tWlMkQh-oIt(qxrVMTT-NzF#QNl&<}cFly{F0U+*MUnhI z6M9gO$Y^}lN{zhKtr!gWnzUH_olvt5NK&=ttWe8GUW5fN)an8nYBg(`sC7|D*9EQa z0*4gI^$WlA<1^w10e9yaqqA-)Ev+kZ8e5RW6~_Mrho_kf~*&N;;^2VW<}nMcK{|Qf~44ln$Yvp@v`hKMW_q}z-SJQC14dR z;yS9>PTMija-)Uj(upN02l(II8=g_Se}xk2eda-7+};z6Ku6mT%?;SzCS-Ge9s4ho zy;W3P!L|j8yC*1zvaXtI)v7gT?c!96@X#n?uB%MsR+eJN>)-rV8A5z~H>O(>XTV4Ds=oNh zUBE}qek(TSLREjr@#zqD&rdqReeqE%NZTpMr(zAfTffqH(6bnz)SuT6-NM3acm1T?7J=~ zRp`_CyxFns?rz!W$cM(Xw8CVHDYnvkJ?)0F#L3B)A@t^vRce5{8ulYg<3q7(X*9g|$I5bE-jkS&#I4zxApeE+AE$xA7% z?GHdH$hQYjr%Aj?=3f^*e2UCEKXJnJaE%bUTA1fw05S;N#^i2$5}tIzH*562DI6s_^nU##B0+NU z>{)gN%s=R2DW4ZqI0D6N^b#sVxSRBEv6Cc}b3rDchSOL9*@a0-CR8j@2P0z;w01pN zTW-_R#8F8A*V8`_*i;x+x(>Ls?a^KmGFD2NLo;kQCRDsSbP)foe!d)VcQbsf6Xr%t ziB0?c2#fQerPWCNm(cTT>@R1kN->D3LDP&TIp0NC|J>{j9~$)(LT<)A&O=jAITOKI ziMq%+^2xneU&=0^i{O1-f|GBvV_==rTBV)*$YpZhGW)j!&XqAjd|TOLC3fi}&u5b5 zbL@bD6BX}~i|_%Z6m7!PB1~gaazy7fktwk1CeFjuwz@a%MCY=&e~_iaTtcsC9G10{ zPDD?GfVTA8Y#)qT^30BvX6NcdTsscN$lGRtxs5cvdglObMd-ufxh?6lv`aIinbX5s zZG9db>irdtKtlExNz4my3h;2m%s9!78_~1$ZT;JlK>n`sz+Gg)KiNSo*`<=0ljEQq z#*5MV8^h6=8AflL`bAumlM`~bYvV2(Gl5qKO`5Ygwl__TQ^;gPTda56d9Upx16?nk z4qae^0k_A8Yl*tebGHKD%Fnz^xfJ`x+p;%wS4J#tF(cACFkY=IMk|$K-xq$g+O58& z>eGcMPMo-II%2!GCiG=o_eeY}3sF9)MDJgRdRe#_1ozbms$0PMyQ|waQcJXzprqSp z^2);f9zD!%zV^eTkn-Yrssg7Gu5&IcCB2d4Sll*X`=iRbYN8saYkJBtXQMlOG*QDq zj_f%m{p$1YrDoJY*^&?+sfmu*uA^0JWI-$^O?s4xa<*0-Ow9{Wv`1!6W@nrJ;EK=171iqnSv)dGb9xd2w@LwsTfCry3x z*8YI!>y^nmf)Ml1xsm1(s*bHj-wcL5Ir+pcv;4s!x<*$}LHEmeX_%DJ`+qQdlD5o` zBq)7jM%c)!l03EKu|H2%M+Ii2ydZi;RHD9a-q$OZ7mk-Dqyc`e&K~zCBEQeSwR#U8 z$04m8-+>)Hbb|Y8gtaZ;sJ^}`C0dMLB8IWuEX}0UFFA?p;6Zb0rE zH~E5o&dN>*%7`2pVxRQR+NDTHLaUH8s6n8BWf9(En-9`8YD87QED4s24Xo z9vEA{UVI}c9tV>NTAac!NpzaF5wn8FSsGM{g7*(qC@|Rf_ZPSA^&mLCbk~eMFN5Ni z&3!GOk1J6?_*xc;zk9Cg)kLJ}tn!}rz&xj%hc`59;M&gUmf45?(7yx9wp?Irsyen9 zB<>`fZ#td%kIJ~>@ZEMfWP9!q&lMH7zcDV6wj)ua*9?6cY1hvntoK^%UvG%XGqiCMDRF&f_%ZX@Rv$JGQ;kQ-PuevQT^qx}#z z^e?XMTEExKaSqAa4QQ=F=%qEocm1Sj{1U~O@?vI)a}S*IH1(o8TzgXHSW`ZwO7Omo z$}y6NUu|Y;qHgQ=T=P5sC3`t)>JW<^qK~Yfi}3I>cbk(gz2oXe$q8)w+8N>C+s_8Q zFZD{qQL^@tv0Tkx#4Ea$B#UTO_DUyg;Q8G#_TZ?!v3}hbx6HUJ6KLVE!#HcbI+w#) zsnXyaEbo&$BWVY*pPy@B+)y`9IctKNX%Tn~x@9?vvc_=1pw|miHdBoCVuNziLD!b5 zz|g*{-mF$s>6o5&@lKt_H_w?`kj1YZLBcttP2WkyesC>GZR3pB?d1wQ(yAD2%cI%AY+o5tXDfN zjmEzQzTXGQ-zDX{fgh?;eg1U0aqQ~Bbih#HsxNaHo}FapYrbCoF36*MH02-U6cST4eIz~jU=sN0$eJ(lyB0`dF$#+H|5BD7 zdp7CP>dw;?GKC)QICnU~WEk~A)gR0je;t^sRSCPbzMh(hwYg>scyL#Q;la74L6DO^ z1{1=i;!6gg8IIv!GleF5@2tsiK7V$)ENsYbk2!ODhbWNe=C3Lgmbn%!bB9IqVcMu@j!>tS>jaK-BpUD}1 z5%m$l?x0(PyN@l8Z6+ow%-OrTkS0}C9254Zv1JG5wk|eluNJ00HCSWsFpQ(XB0)>z^##;a5BrFN*m1(oP{6bt;7P{)M*o9PS5oCrofCi^}=Hgdx|+sto# zYNKsOw~c;%#19XN6LC2vQ|evb)gUb;*h+8sd*e!y>DdOXFbBK5i1$M1)*vAkwxxE& zlv}!%OsbpamJQ?-q5oQx;N&|=+I@Xq#vZy*0UOh!gO$ydi)~@{&mKBK7Mf0b7emXB z#bTGTNC~(hM%qW8DM7$wkI!R)sVu@cMx+?)VQ7GU<)lLr) zMoEiIn=zkd=aG8@Mr@WJLx&$ZN>~vp;JRbr4yDzK?f|5IQBdUiE%8kNfwH=qO5nM~ zH_-K3!$CKJGqsB^q%|EddgB+P=XrcFdh0v+pXMqL;Y-HOX&3(mRa*}Q-WRj)h;RVM zQj4b_nUvZw2p!LMC!W{M!#B5EbLIme6?if87m&s;X96MH$_f7Nv3$XR9U*d}PZoaK zZ3%z)f!IVu2vz^vQH;f?PtOJ)jizsCSld3Wc2>TB5(#)GOpprR@UjMJ1o!ba>RJS2 zcefu;qzgY5ek%_6vB8Jn+fQV);wd%r3QtQc=6o*j!vCn%_3tZS?_yFF|BdELYA#j! z<~>=+p7d{U{ox^RJ9(M%-)x;?2Vuo1q+S2J%!SO?>zpU2NpEs!_bD0C3socN2kx&-B1V$7){Za!tYPrd)|Z#8#Z$xu~o!)|2wPdt)tQ+}bBG%Z{zp)H*+yF(CI7{5o<@w?0JpNCN z=(js>P;IehJALvuw4Y~<7#&!bewAjfu<3=fi-f_gbW3j|H>~(63t>@8MxaDS%@-4t zR>>{t_?dBN*z_#!KnFpO)he+T5xfqZnG77{Ez_++KbkMWRP_>v>8xV?&aFbagHa=R zHNIsyp?4$}Yxgq{(_ZsxONZD{r|HEpS;dgi$;XYW9>ku64k?X)9r4p5>%FG5?d#st z0nEY=bWEmHAZtIf3;p^V7W>-T-jY+co*SzuzmyciH>OC3-w|=4*{N|2j#3tT)F?dFQJaVLuSx0 z$z3Ef>AN*8Jdl22dMl8l*plL|*2?(E7oMvY7*m?1cQ${Ry2#@XAHOgnL(yX(i3#qA zLo;|vrC29veOq-oO6}T4f~tkcTC*i7tQbtTb%-YTv()y!!^_?M{At_C`fRjQ?eUc_ zrb>5%{n^*#4J!wbZ{Q6n@QXxTP?@m3DC}q!JZcU~#hb+<$n;H!wW%9T#XOe>+uhF9tVV@GVF_-^ETu_{?Pgo30!&f-qU;x8Pyx~<%b6cKG7sb#1sRY^0B z0Gft4U~m5#Vz{=@u-O@SB%J1{G`t^Yt8Y9T;jC|L+Xu(C*aLhMXz{S(@AQ(drzLQ9<_3-Y`UZn)yK`baMs5$(r|n_>akT(9+i7pRcjE*XLRKl9eF zBSh;V|=vnR`%TTclSBQId1Z8=(seVdsalwmL4hQE{8kMZ#hAtn$s`B2xA|s{Qh~e z!uF2uyBNUnXF9~gLr3Ln$<5{t2}2ehHp{qKnWrOJXPx}T2^8bsa&q-&_p}LHD#qPE zQ;%o44zUdAd*N(%K$dUB=?&ovjNTzrzwb>7)k2fZl7(ME+n7i#=5$)6fWe?mCU8Xo zDGg6+Co~5e?>J6&CQW*VPDLx)TdUc#LP~VV#ilT%f66+4Q7;RlR?QCw#guxJ^3AfF zkDa;IB}x5l)PSR*Gh&we0=JD%I1!82&>yggyG(y9DqKV;17x0=?4(Hq+dP+&nB8Z-*ShN!@L7Cs4v8(YWm)5E&qw;ufprXjxl_vQ47wMXE$ASV+XwS|U*3Ui>lYd_$5l>~qq9YT|DPZyOu#XMayWPfEwI)k@txFCSh}3`oXs%qN-L0GlWl z{JXq$Q#~2mSK~_TA18irXtLc#F(%5I%a?PWq1)+ERf`*E8n2Sn@^t z85_TRuCDxtxvq-#uJVB1oleNJ-e;ItxiW*;7Em9!&rVpC17s zd<^j0O27&LgCdsfCH9D)*#<{4O%92Z(EM8y-#y}(RcbJ&(17IUSdvnY^Z zDq7C2nnFfVb4OOiHh7)gIc}gubAGRC^6A73YyCE8(HMKj@JVxJPXFtC`UM}|p?zQO z?Cx*(`C034XxB$MS{z|}!nQif+;>5NM$p6uWBPK2hEgzUs?$N;u74ofNHCi zrNEma6LM)y6>);@nyGZNPo1`mQ{E=%xfMiM%36&4cqyA8SR@af0m}Bc@$q6#6)e@y zB&D9(zX|7i{w(K-H-N>&QPf8g{t2VNw5Y(BL^OrD9t3rBt_L3KP3n(48ip(s?`-#3 zsH>Vvke_r^R9VDTpE=bp2@Y5(aN9O!7lsLsA41k9(slUgL<~MzBoR+-#LRNlPgZ}> z=)k&DKpLsAo|!JA^qVa9_pdiHv48!AuMZ^W`Feo--Al(`KK=N;2OlS&{2;s)31U|Z z`rze%W0=|NN-^m??jA<{L|(U($~93O_mLjK6l2@`6RI#a^*E`>`ny=sVB$pC>T1W+ zxix{cLt$&gnJ#-Aj|EN6|Q1fm+kLnG~D-Aq>K|*!>>ezVGAEduYMGhm|m7VtgPv%eB6+kOvC z5Mf385i(rE8=>54WDzepc-T8TG|3+RkQ0;g;(e;}O9v8jqRK#Gj&Ve(?2C$mS8vQw z4^#yv#_>Tu zbG`Y`H6aYB9V)28%u9U?sPfJ3;zCSO=}Ul8sdM`u7I1F7tR#=J4rV~zf#XFK60#-w z>X`nSnfF-nc>uYZoA(vx@VY{jxfkDM@2>XWSmOM?s}4Y&3kp2xC`G%SZ6&U#(*_f^t~=#Bs678FcOMR4}=J^9jsX9gBz_67~F1TeW>j+on; z*`#lqnflD`GRkwiuOgLLWofNuId&dXMyRH%k$gk5lpl>%8Qyi9(E!AvyRy?OP_LC$sLjfnyE|e;R}>DWx9<|*8s!hp=v{*1$Ew8f z!-m*)cD+C~fzm=$E5QymSApE^?|!nplsU!d5PE2Xx<1pN9Dd+m6o|xZ`#0Nllm);p z>jieA0PMOo*G)>J0P9!X-@ZC@)POyc2tLd(b{z^lEZFaJRt^ z|2Bz4_C{n*0s--d6ZLNqm$q05GJas}{J_}xU&d~)0} zw4}XczYt6H;(&7TOcf#XfjqE_PaYR8E>yz6(~2~v4et_)i)XR}JN)FvPuV^SfUWke ziLKsX)w}V%-fvQUo1C9CxptElv_?T_K~}Kk;h`Q-oN9PN@3;LiT$s}yxU|9 z9nflGbz;6-2te3??$W%|0b99jm@^N-TCZzJ;Xa?4v)M_?I;=MX#bM^{c2L*7F1fX! zOGaqlB&4l*^K|)c)#gHY!aJVkQ$m9;fxN=Bra8SfXcE3Uq|hw1guVkM>x?|xWCj=c zD9Dyfb2@6Rqhb<|I+IEG5Cc|s#)TxN+cWD zetxMYy$POsm!^ZMuE>Y|7=4>SHUIF4E{j`|zfY2sgccKnA%?Zj_N2k~k=6y*{Q_=fkn zUW~FJk;(9$m`e1KxdxOk2X=X15VL(XD^U!XVdb#GYN|2zvy{6~MjdGP>hKBk@?!V; zDudM<^3@v<(;Xa+n<4WOV#-Q-lAURZBW96x8#QPZlO{UYmqW$^Kj%~Jo8XVsT_w;& z)f6d*%U{xrHDB8zUwxyHhsWVbGl_!d{Q_*BwuSA-RVImKx})V7>G_e-_vk|N?pT|j z>F_k`NnaE-7u2^<=kd8XHIouI zKX}u>El15@!^gy$sL4j|9vrJg*<#UGVN@k~+h$pomGWWc;m05DeFjv_@fTwh<~3AFA5YaE1918 zL)|2UaKTqDWqzLy+K}YAG6M2cJWeWcUWt%BD~HSctNJsB6!V22V5rXU@Y2q6E3Q`% z6&1%^{89D6lhDKXLD$!N4~+;|f;8gS*Q8Q9QQdLWGktKlcV7&?{bM-av4Cq^qu2E4 zpetKV`H&1Jv5-t#i?j~kMIKB~jeEB;OQDk-wf3#)U7cxS3P*VvM?5a>A5=Mtuv7~4 z{_P5sFIKK)Ul1w5Je4ThwPb1bRnqu&bzhi-QJPa(KdR5>IO`o7MI%rSy!_w1-A{e6 z#{D8e$1YhxNz*{ODWRKr+H0WmR_rwMoYf|{d;gn==cx~F; zrQM~ySWP{!!-%D-zC?i6xVuNyhP$`T%^N$#y2Itp-r6R?Wh?=L>51SnwvbeVXBDHD z*sThP-MU4{OSLdFf1cvVo`8$IeCgemG_h?W5RJbr>?XmnJa1cxy+HJv7#S zo&;y1Bj!%zg6~nu|0VRi2SU%_RSM;#^!);NDic7`JF6^6s>>(62VR~y7vbW4RKj{G zM*@_SM46wM2+39)$y#r13o8{iA<#Zkq*2VxnC`Y~aDB0B6(&?O=08W_5)T7vS60}g z-&Ws%0&Rw3+&?jCTELkY6=<+EXk3y>M|&*^fc>s}UfF-=-5HyDLS$_eC5roCzLp}e&}ZJ$15ew0$^L~uos~X8&VE|bBV^ZR z;U-Ne#{-^*vGAEG*VuEj>E^EaoKhc_df3+!pLi9xAUkt$5ATPYOOIE5v=;U6Gd#}l z{)d-9>*SIy;fH@I-dPCyrkB|^LZAybE=7e2<#UNhhD%K=3GzcU3%*iUXUUU{#K`Vt z8REVeB7!ayv9)@kT31=?T?xMQ^M;^AyUzk_M_)wP!H zMB{S;Z6{aG4OxRa;zxNhhUNHz4`ciavamEU>P5IyhxJKNrgpTjeFT{4KI!C ztmz(&Cw9~?4Lhx!1sD%9L(1#<+GZAYRv*AnQR+hHdc?4d%%A4YsVn8V^FQ`vbCYSw zo5Dy(kH!AvbcK5Sc5@6lSYgA~b2CH9{?^pfu1Fc#co|y>TizY*Z*SP+ zRB_mX>~I8Hiku^-6p(NtUx{HEULJ(}RKzD=<)+Y~a`2kD<}lXywowBu#ANDQ=bFDQ z98UhVj^0S#vtA>PA>e(x)YcLC*J!m-H4wZzJ}(|&n7DtJJu;Q zYK-#=T*EZFZQ*l!wsW>&npwPZ8g*dKN8aJ()w4M(KzABwqWYx|rj!_$CJvE9e$^kH z$~j2p5+|nFwUYF~+VAhDv9R7ZMOPYW2t)j2|t z=ChAiE(gcY#MBG6$TXAJQ|9Se?`YtnP2fAQ{$2aeTtm}47Q0Q?R#tSUI(Ih%&OiYV zY|AO0#=i~sCL;PootQ>00b=&EPf=uuaX)x0Z`AllL%vQ^+IV%>a`+(f##$MX?(@Bj zDGTEkXEeYX3cheh0BgvJ;%xYff8j4{U=Z=s)#wKPMKg4!PC%^%9MUtY{FhU3yqZctasDbiy_xG@jgJxDH z&wG9wOq7)>|$H*Uf(Xk+Sl_}r-X<+ntN?%tyDY}uv7bKg_>@1qnB>{~xd zzOG{Rvya-yO}B;Y*oSF#Y8834PxmEcFtI(TaP_!Hl$CA(Mt&|WU_#`z6wIS!Q80zy^_ih$mgRm=8F-iM6n!!_-}s_~h(jO{gK5zkbKhi{spEjS%49LYzA$6X)x zZohSwXmOZivEDrA{!U7CHV{IMM2x?D5Sfb?^gpc=U4f z_|RX-$Fx|I?P+J_L3(K`-73u}ku_z?m&J&kG2PuhM3I;}HD{6_94&=-X7=>FInM_x zj(2$DPaW%+0?1kaSD8kL_-Cna9$E&Qeg|RJ70Uk{e>6d^-R*{*JE=9FG1-;jqrcZ^ z24lca?7=%D@kJ{Pdp_1NtxX(}eH;|9+51c8Wjrezy(Qg9uPvXi2 z(6%*h-B@DbSm0`CC82oJLey&5|3>B$-%UW{t~Ovh6#B^x@%J+u53o;->gDU|#eSq7 z`dZp%V57rHYL1G2xVAp{*x@0F4WFc&V3eDrLuN#xc%jI3?ic>jn%E#Qh5R;1rq zHf=H0nT=PvCOb4fU1Q8@ZtyN%zzvfJFa3J6BG$1Oid1d$e;xn4TZLb{ikB5`TL$jjk}zlV$VzSg`Cv_jCIW_oY6lz?OKx zSIAbqE`JX7D!&-U?47~)?ziPJkO4p9(jCoN>fOFn@TTL#=DZl7EphpiT*!&6i-sDV z7}fz*8(6g)v?P7sQ~1^lpTHAM?QQU{+I4t26e-!SxuZG4W+(0Fm2vDk!}61dCHj7? zLL;h_6vqL&*`^t|B}pH@hLbySkE#9gDN&!Er^Ds@Mtb>&4n-}$1PFKIlz=RA^Dr2E zwgmYS&ymtKShz^V)?}(;5)`EN#p50u61tKWxjA*%6+eUOMuM7=rCzg9LeO(jSyAU? zi?&c79rNi7;+jQ=FY-7ehA)iL5PaNpan@biyIMv5;u{Be;BdA=&=dSP?4$+Ti5EGy zJ4`s?cuZH19A>HGI6T=n80MN2%a1@;PER&48j!cTd!Rq`=7DAH8Q?@Xj%mD7%CG2^ zt!*efi!;xj-P?;j3nGlNRAhGUsgdF0{DZ}j_TYTqUlLuk5ifnE6_+zW zb4C!QHF-Z<^e_}PuV8HS?ngL?o`w*vg#aJ$D`fI={Ne2hbOdS7*UfaH6U-UmoX@3V zYUv~eT9i_Mx6y+y(c+K_gwY_oC~C1>gyk(^Nc`wIyxlzw$6jDlfKhKfVac-jjC4`8b?po(o%>7QWz9qlGba+z*k9FIZIJC_i&>rjS?Flvr zs?U}!ld{jIJSD%_OZf4}Le7U3S?x`}qLg^TPug0%>!BYL6;ghZO=PoDeja`SK|D;~ zR&+b*geh_J@-N8$mSK87l~;zK zO3=!Vy^e{-6`J(n9{Gck#a?#(-ZSazp0VRrj{6x6%Y+lWhzCT~_dZ>wQzj>uQD3Eu7|x#1kv1%{G~u z?X8h2T6QR&W;7+B&%))lB}OC9OK{*VLt|x*rAqUK8+jcfEEJmgXPu9KDGzqCRSeZ7 zP91smr&Sc0>3wekf(Ba78IdIa`=39W%)Y$6<4%2^-X2?Z>9@?18rva}#3zWu`u-m7 zgr$nS`wumYg_bhC4AbVSW&2xSMmP^r@iTBiiT}d1u`?ntZ;Y@UIC{^y?6dd=HFw0| z#51#3S33n_uL(wE(p+~K8S_e%hlmQTtT|M@^Pyo*`1s>ek0FOs#wOglRI5lbfbuP` z-J5e!i=wqnZ`btY5P_^_BBQJiGCSrk#=r>}1B8HVDB{hdXz$m8F4*ZGI(oxgfW{|$ zq4B?I0n)yBCRw#lBv8>_v_dfA*&n(Mg9JLQclf1n-AP|3B7y%)*1hEqq^yNy8?uH! zF|?;iDeT}EC}qI`3J^KTvM@EL_wX}srm(YRQ{jK22&N{(9B+pg@z`(0c2%eM@HHAj z4Vo`m$kM4k_i^@s5d`Io%Dn?fT*U zuHgr zE2=;M)3#QwQA_U>{F8S6RDc*^8is0rUmdWDntl>swy?@b&nMV%280znS*}P+54$x} zzEtV$xBNi{CTvdQvvY~Ue_=x>3o`(Ft8#Sk>%@!j*>>;b9mElzVM*%RNCfBY`(6^+ zQam$7cD)!`HEDF79PhQSrx-pm7uIF8*iLw3Sif$L#^&a`16S@z*AwF2NO^S1)I9q% zS-cnBR!vUAAC>A_p>?FHQ6x_>%#XJp{O5L}6pn^&!%+A>IL*cL{Di=zI0yW}$I0Jb>C31Ruyr^t>xh=c@w7;IxI$tDOb2;eR+0&k~v)^n7 z`C^a5r62Ga>}7{}w2sfE6z`>Mge*R{ny%>BM1v-;ty+y#DPdhR>dw9%x5l=@c#gDu zF&x9?kd^Jc)6!LcaxDpd{a!b_PY1cm)Z=z{GR|XQ|53`By6XT(W-5b72?Rb&pt^%^$7Jc<^eAG@l1 z9mT~u4b+I}*$AwTKwuqXn|7T}95~_pamAdl7x*YYtKI-bU0)uZi z>7T)1Ybfw^#3;^v+R-zY(0zMF5r4LhS8kyJR$1G!uZTV$v9d04`Bl9KAM&AWd0^1> z&2w6=z)Bc&;UIpXG|znBg%3%rq8;Vqj#|Lfg^>8PrGenjr~sDP;A5-nbrPG&Z+fN+ zDg*z({?^~)A;u;5^&Np5B)pvV2Lg!FLTa)|i?1Wf5@=|el zI*jl`{M&H0xp@ziZ`-bKI{DZvam53%hM5Pi9K8$n>;2Ex=>wQ%I8zq@b$%uQ!A#)( z!5>{e1%R_Cw&B1s9k;vm*SA@X3I6&cvkJe*;*zhD0FeACgU7ucKggo*%> zD3vmQShL&6LA2j|zLxi*+FZZ0yxfQMc)|KEmmRkX&hszaYs@)|?GW6A0n7>mO8p52 zKH%0>=F|#7@rl&K_L8z*QCpy5$UKOm#tx-{u4#WPb{o+F@pE>2&=AoHvK?t+7%KV0xItVouW(4e$FSKy4q_PW(gg&>w-wvF&f3ncPRdXSB zU`Z)1Tgj}LTLV$MD(ey^|7{ob6?F{`yeytte!r50>)Q=Db;Wrr{$=wlU6GOT>=a!f zAok!B!G>f{`>B9$8_J`KMbw*bN4(7yiHi}@P zKbFWp6&qKbnX95sG0ax?L6CzFriIVJm68aQpTPqdzg)2uhh0V|eT12_xX}&JbUXd>Uwe{ea!w5sh9%fJQJO-_zfTU z!4>lXknx2sJpypG^{n;UkCwB9zLPOvH1nA(G-}l>+#Oh-Otk4pM5JE3( zO@4#FL(JTsF}ZOOj_{n3;Q16vh*2$&*b+wBaXh^$wqS94-lmEFtN#gWNSaXumkmU| zf48D@-SvovMHP-2&Y2GG`t3d{Whtpey?#Jr2if2~#kfl+gUb|cB=}_#oc}WkOUq^> zpJDal7K05YHEFQW5m!7*Has3wt{+5Sg)50)M$cb)b_VZ|SoyqgFy_9r2sI>VmT+x3 z(&wVUnbZ7;ba*U2HO#qtEFQJU1tzvX4U*cGGNV9gEFz=$hrIT*(bZ<(_fDHkw7VH zA+$Q8uW4a#FUPc3JPbs_;q|)@XH=|=F-sB*^{Pbs|%I3Gbpphyeeu?Ij5=URE z<`W%g@aO*>Idc~<^6gyBC!2v?r_SrCA1$ziKI50ZTY$dRiXYQVBDjhl<)`DAyZ+CD zYX)+KCjXHxepHPeeJ-`R!liQz+IF6MG3qM7s2iAr0Pb*vIp{}&&<;n-GBoDztCu4g zI&dU|UdWb3c<=vwj;dXdxUjzo>FhqJ-biD zmXt`dZ`aWfKtI(OftMoK5+YTgLF*aM*QkTL0LuS+#wHkGFDPe($xrSUbp0Qc4^owq zZssOF5f4~D_tr0<65NWrwj8|Ra|*!cEL__X_Q0>}=LyD>)N4%sdeiUvIH48D7Q56k zlL+en=^0fOxIvypRp!>^Q~v*d+%L7ovTI0EZ~YAjZUN&sdFg!V#W)HiUW}taVrY@; z;Qt!O=y(Lte#+HgxovYC~iIh&fx{$=6)~uhWrn{A&lx7^-up7-@yRBBgddN z$Ax3xyY4lBy1V~n8{MRm&EOuvsVCFb(Rk>u^81tIwgp-ieoC%d*jM@YXhD0#B8D7U zfAdjDqr%~YLv!%uFs7aDhQ0yK>Wf*GiAs)yLz>p|1Qs= znB!ys^Q59Mqdw(PK!G_I1$#V&aRH<4Tf3Z;+_Ycq`(jx^oj9ZGRT3&J`CS!NW3%NT z6M|WeNqcdNZWoh`m$SvITl_IU&a=%IniSN0RkftQgRG6Bq=`cKVS3jXp zsW99M5ZlB_L*pE)DG4XV2vC4k3tHXng zISnt>tC~}+)(@-BHJ3y7I1;S_em!L;&I}$}xWObco&yAg5{=lxGjXe9XnicdqtS%W zeV@sxA&_fy{sY!8)IoGWsAmspdLGekR`WQ!I`Oa?G1hZ9ohy1bSiQy{6LOs=&n$}8 zL5vOXi*mh7(GfW7U-OhLgjE?>uj+?qs+%uZNoUn(W3UG~17o7FEbQp;bYFxQ<$&d+UhU3+ zF-))ONua#Es7L8epzHW-=14Bmk8kE#wBq^h{_?U;-%6O3(>PnPs+X>-sD1EuDgP8E zwk58jvQ^s1N@=LB5k}i&l!S2?gUB?i{@Eva(DMg*))@O!*8|vNUe-OoFR-QlZtX07 z$iItDqy80Tqao2i%?S~3dP_;#Mw>oY7-kL9XZ}Sv5kB)NfJex!HQVhooKTWA93k91 z33UM4`8~lKsra|H3sv#jpHW|;HVa}*f;th6py^|f-~~xE#(f>Na<4A(Vu5%yoDm% z$e^4A&ms*QboVs_61c%dOM@?mLk%JesZmc&_QhR@uL8Qv^UeemuVL0vo}irA47$Zb z*4$OO1jO?X#gEDYM<1IHq_kiCKb*Z~K$cCn_f3OHN;gs>h;(-f5-Nz4v~+j3g3_Rp z($Xo?9nv5vozi*I9q$}??{|A$&)(06=L27ubB>vFm}9N~`mHrXqs0nsK091d0{r}M zIEF4=a!oXu7I=kEV>1J2e138R$_+ctyHooW4XQ(xZ!yRG^^4JY)rw$ayeFGoc{68+ z3f>x9U$)9rVgj(AY()m0agoSnFUSh~?7(^w{`R1Gm`@1dXZBF()zCGP-gjX-Q268x z7udxWW{=ov2UoW_ zLGr5XAcz?L0h`;vnc>G7S`n5580DRmcA9nY%{mswyE>z6`N%MQzei<Wa4xRlu{B);+>N? z;nZ(=Fi!0Qi2YF6&wDVp196UJo?-n)MnH{Ph2Bhi@Mg~UU>YDLw|27fmT8HvzYXY8 zVVuKzezO7@0AyeQ8m6gb<{x5sR;LviH%v!<%b6PO!OTfUpIR4Z<&|wl8om)=<&~OQ z>A~a=%Qmi`hLbn9{lT-ejFPI};n>-O>6BSQrHSn#Ps1&^@S+x=)G6yU1$gi{az9cL zip}M~8uS0@Em}rl^QV*?;ArW={APU2Hz!NIxR1o~-vYgrg-08 zl7^yAX?{fzfuI=8me!Bd^lMV?hz3IabSj3gp%up!>z+L#{RotlFxMibi_yjkfU*u{b%>kAZQ@vBO~?VuunvzFfT zm**Rc8^c#t^)D5i(%l_PK>~dDU}DDJ{?hFTx6ip&kNJErg7ud}{k&a|AgN1zL0;2> zdzw6A6^u@1zWrIFHBk}kEX6azlTDkCXO#!tCuc|7+xxHGL`DenuX_zdDtoQfr#AwB zg#FyiwIxn68-gE=llH%pm*M!WeQRom_H=T+wkyLn<>9nr{oR{=PcJuj?=u*zg=jA& zMy+SVwV~iOpQQOO3JK`V`WlNOCt3)ZNt>^jACb@fXmJKcGh`DtcjZ4 z-X~khjSinkt_Z@AD<5@znS1>l_O73R=nH2AqEG8QifOP1N2!Xvhv(^O!IV00G4rJG z^p)SE*t`=mccM!}z!S!S^fe>qiGv(YXa%ukP*p>ARtr306Q)3&clFsim z2rJ*mB5n?^8unLS3XVCX3zw_X;zyUUtHCGrYn+byK*1~L$!*&yv&vR0M?|Smu^H8=2ms>mSWO8;qPkz7>U!SS91c_Y?+R zOVl%3hQnT6yL!3lk6&bT%urFRT(9j`07bfPmH%FB_6G_OLlz$i+Dpy6%I~^n9}@iH z&a`ox-VSfaWX)%?CDvIRqE4|1hOb%;Tlh}2j(h&TSbjJLP2nm=v-$Tm58aM6G~^5z z@=OYDo!-=@LP&1LtNd&o_8GRNHms0g5wq^7sT|P1F7+Axtf`W`sielq-C|m!!Y6P$ zS-aL`^t?czX#pH4Tp;zGm~)>io_=MsjH(tvly7uCpTtLbjpR0|JXAHt5<;f^X=I*F zKrPc>Dchr2pvI$;)jngfx3w-?UG2pj`9pQApz;$LTVVp7fW9%ArfwHmR&kTvk1rx< zz7OXvySFdTn!HSgQ-+(DgApX?xQo}lvX>ld4@g|Dtwe9o zn%P7%?Jraqu;IYjK_u#5;=N@g7|+9S%j;wj_`F6aNM<>_%a~s?h=={L$oAm{f0i@UP zu9qj{FuOUE#tyG5XZ@_$`=B_Sr~>sSLvNoZ&Xb(?@Yk;;%l*yD6*=U+OTB*g@JZXM zMecWG$**W^iIdm#pW6^;**{E=ISkadaOE4W5iaVi=!*KG9ZqiT00oyTAh>jIWgG4p zP%zh#P0W|OIeFmWo&Ahl%b{;UWDMWhLGweCzC(HtyypPpvN9KsXcW(lXKh|xVFXp* zhoSA$-{a18E4CdL=q^HlyxIy4wx-S$D*jUD3bc`HC9>IwpuBwCXjetf7ue%xQ1u0z zXsepu)F05Pkp-W5{D6W=Aa+jiXX{-e7v3>7q6PZeqoX%&&ev}Ho8~hf{gytfCBn8C zQ;2OP!nsoO-|EL&Q>hf)%kjguRlMMXT*a5FDJOSW5h^qiE#CD_6TOKEptktnC>&m1 zs22K_KD}XsUS@zM%BtvMLT_#Fbm0w0CVaL&7| zgW1(HkQ9xPw;q+nVMT0y08_J?QDBu^c6Z=fRgoU6KiKxxDJ%D?DK|RPDRF~Cj(-5r znP@;~nu0pJ(KPAwhmw8Xe-RN87?)3>Tu-UCR3mD#!9L!4@Z@0>+1x?ZDoB*KLY0F@ z$R=qTlDk6QguX(eT|%NO$tkYFHt(}mG5ZgNSVI>MgjBNhR!Eu;g{;>)4}P=f>ep6Ty14Z{{+1#k(cj=(;G>T_)6e7Gr#> z^HOzwPk1a-+>1@^=__2D_OGy=48vZO2Ehm}mj3-2moE?Vm~78>_y8SS0QY-b%XJbtVM9XHOB12?0ni^h-m@bbpnQZ)i6s z#9T-KbNLB>h@XH~v9}U|bpi|5KnXEi-D_C3g9(zJ+`2Ij;Kl^|tZl2Xr$qKCD0W!p zk~%J8OwM)$XNf@di>C_(tjml?r6B#ti|iZ=`y^&>cG2reS%C{Btfz(eF-*I|!#=N% z-omsVR{J=@p^8^mgr#cwCbXLtngK3EeMr>u0@rBPbVO#XQnWjaZgi;X;)UF)YQl7N zwY~4&J!VO+bJM-r6fAoqS8)BcnDQ0#jbG6H@kdzV#(sc!$t}0&ShY+GMiYKGmwFnS zYQ%A+DIb6QU|t~V>Ty)-_mCB0X$1Al`gBUoh#EXf-ueu?+8&Vgb|wN@?`N4{371rI zXLrWbKuyiB38TZA)#|ef-uuKe5PG@>&EJ@A~X-_^K;7Zh0)#nBh=JV9>+$U z6g}p#oAES!xWNCqa`tt!DuJtZ<(!T()u&I9+DIs4Sz_bh(e z=Q(BbLgP!+G!YK?Joc>LQC+iRho?gY`pSK5n|vn^DoxZ zl^H1gFovM-6X_x8rg^-LecVCyaB#h0%=Om+X(Dm4yH0DI|KyyX)LbhT`^JZ}v)oDE zyY|&rB%dGn;=}RXgFDALM2vokiHj#|(?IXg?_7PcvhvJnUC?cWy!g0fZ=<#g+$|>h z*k)6@E83+|L-r_UZ<5~(Q;1UO$zt;-RRTW$hmK|gJ2;<%Rm++!U0mLakk|9OUUWz+ zWA60O;RvT8B|rH5l`T;4vrat1c2-nmL7HM_quJpu;^^>J16sLAHphVj!*{BfCpp(Y zMSt8lgh?ShkJUoXV_&k*zxv?*dFH!m!!kx~*Wkpj#s^b$LB!s1^p;xuUtcCmb}#Wm zRT|__l}0dDPJ0}Ur=Zh4M>YG#{|5l$|EQxwg#60%#WwJT!3Rx_# z)Ao?}{GV4NIoz zn2ny~u$c_|lLOPU`$qf3Vs1!JFqA3YIvc@B8J4jNQ7zmZGVwZ|h)q=DxhsCl45jrU zW|;oGk(z+kRHKtscC%gKS2@Szox>h~lV3ipv+qO=wF%xRSbIw>wSzhVtVM8_#ZiJ- z@T-CPDfSjQYB`Ud>&G%BZfJi~ZkWLjG)>}#=bwCtT94tb{Hf(;F{t(J5AbMsbpV(k zW-ZgtQ9}f^26~>;s4_E%5*8;9Ucn(J20i~P({SZ47Ml7F_gVYI#?2e-0aoPbr7&i{ z(5}8`@26cg$XfL41_INxQDytkfxROlc0y%KS;c?7^g1# zeVDWe=>79ZB@5Zo;PoaYi*MsCYh^Lts(xX9AWH(pqih1hUlDcEpF(jOR?_J2xlYg= z?HW@zOv;$min|PYO0Y`uEwn!>&&`4%CS;kqXg7lkv?>;Slz9Ao1(1Zqsl)E=YTgY` zrC09v40P1oJl4w})|6XnI1#e0W(-{@se73P_c-ZwcxtsatrE|0=0_qh|IJ`GOqcWR zvZ;lNVe6o&(^^+L4e7Frw4~7la0&&Q;h;=5_e)4Z-%lF-s^`CQZ$n!D`=D7NtGGa6 zCf(HQ`r8?SV`{@*B508GJx3#6`2mENifAnDkL@^Xj3bU?F_7fM#}(vu22NElKA8tdVa@ zlq|e@%Z4?T7Ii8gSvvxJ)Vc=nkwDTlcmTa>=gBLQo`sTYFM_=67K@T=ZPmL1e%G9W zg#@+O+FJ;=)hB-$sm_^uX{71$dg|Hb&mEkZNRua|jJ>)I8^8&HJ=Xj~0>&ppiYbi6 zNS|oeik|t$M1gOd=QX{AsV}#DoUK3!mDZqv(i&eIv>sepq!&FQbiOMjYbe?cpOh?K z1pP8&G2EjD+Xe*ZPf);e$u)z|Pz{(BsxF{6EjD&|M_hAwTHPk=zJSDw4e@nu(x`#>tQpIKZHieow+0ZV z2VnnXz7B3*`38DT)(va6EQAj$S%3=yurcMZH}XV~Y{1aocfm zzg4jCv-v~P*pBV8QO4Ay(R<t@Kou04BM?>E$u@}7vdF{+E0XbpqFeHykuft%^IeoI6_pTW`)cqN3Dz>vQ}lD zghuoFuO`P3gB{NAzkUWxfVS`$=TNBGS|Q`M%k-@M{~kKBq^}u*3fI;oKFQb=OQxM8frX=vh z4H2MQ;im9xBG^gE%U6F|m{C(#Drd2GpaGxo9V`#~_gsPOB?8D^;=+UMWr|%U2sZt} zhJ3e?o==P^S)xJi-;03zh9&x;RvUTvSLt+-sC%@g@fh1>gdx9}X@`_7kRuXj2did` zRFSc2!L6$!*~*!32=;Sd+EmsKYbpWVd1$Q%1c6*ZIaYyWBDR zZpi%pta4=E0b{4oy#mQ5+&d$T@Ua^~w5GXlC!TroJ;s*WQL>Phc7fA@)mP+)kB$F; zq}B$D5eN!Oye^e2KD^!CsrRv2n+TV3FQp|+lWZcB&wU|rMg9axQoLg1mTT&h!2PnV zDXOgqQRVbuuj0MDRc;=3ouj%ycI5I##19SFx@n?>+dpL-jg*>}kN*nZ2e4(8xuq25 zpMmdcNdgRE^WuUd7o~!Rsvm8fL@dfS){9(qX|i6bNi!BzDezKDJ!1rhxGUpZm5ST* z>~ecJQu)O00q9L0k~j2d2M2O`FTZqc1uf%dSqf|M-@7BGZB3BV9@$gqJ{3G4gZ|AG zL$vo^MIpH|Q$G+F@weymi6zK%2VvaVlwyZL|C zMPR>u{@*1LwAX?eytqqQd6O&&{cmd}LRz3&3F$O%aVDUDBXuK7b!g9x#E0Ir#(g&a ze-uJo;13j4M=m8O>pTCFVcP;?=C5$Puxp!g1bxqhvghq@{;re=qRu5vPYT3ZFMB0rtt5)a z;39J0eh%D676g+Z3l!OW#LaB#HCHt}IhtRhmj`(%GX@j7KE0REkhPf!O^4uZuH>7M z_D64IfO}!d7}k9H`|*L2MJfosyMPzF1J%V??*|AJayKUc6G2%yy;T+ncv+Rm*J0A= z0s{fa`&Y0D6dFCUc9Q%pvkF*F=ufV7-`E^ww&ue|$?Wn|UJgi9B-6tngKR6s{}nRG z5N4FO%3Hti&3ZVgt+uOV5ovXr@>ijJ-KhT`#0We_jqo@yjQ9S56Mf|$#L}8tkG=oc z=eWMq2IgO5pwpV&KLGuW+}$!Fz6O0;T|FST<;e`AcP?#0|KahjFRZ zZ{1&vTLM)j4?O9^E*`Z%GjzWIhFs#Yq~SLB^*5b~gWe^(%04BFsyu|C1w?_u`)y35 zt-M=hgz`uXn~<7n#Qad32=tyUFVK54OVRFkCKFk(x5`F;{Z1OSPcY*Gu1MZ|m;Va9 ziDD(;qw8s4u?MYX)>HIrO~!WO%SH0BY+Zp~u0qi}uACJGuP_xS@Yuuurhzx$0dfTU z^{Vamd<8zb?>2IGNeg_`e)%h<-t;P2wCzX|)xy2r@%l?0+gD2E1g_m99yMbb`H~bI zXu=bvk+L5L1NF+6JxpH6-BFIi54xG*m(glAKc*Ue1>e}5iq}n2UAg+|;YU>H9Yz4} z@H|h#k$svwsctAW;<2om!JN8Sq ziBR1J4^+277U*N1U9KJpGy>nW$)uSg0DI#?Uxzgx#-@LBD*(NCU_jVZEtU-@6aWC{ zDfUOaoW^iX&zTiIlm#l0ywzwF>bP5VxeN4?W^ntmonRq1I@lI(4aa{96m~sDqMV|d zH7f*%g~vszhBX-z3XV)YA0STjdfnF6#Gq+k-wXe5pf=Za_+8xQqBx7%=H_!WMvvJA zE08uFW+oS`+pfv$M#Nxg3QQd#U1R9|m0r1Nol&9_}$U z(;OJ8I59ln35OnjXt}S5#H&TBP2r9ZYuGpTY zuU8M^W-NuxS7+0s08J6D=Pm;2`~IU)F2jThkL2j|NgRQ;h*C4r=f7|GqfLY- z<8Bp5{p$0@gIR~1K`IlpKGFoTNFZX{@@6oCoi!0(Q-bs^36$Q&_;b_*T@i^EY{F<> zNN(+TJy~ps1)#x`6&%^hp1{O9F$9f00ud)54)ixZ6Pet*UPu~^G$1I1LESdpBTkI7 z%cD))ME|sO!{?k8o&?+ui2Kv?tnAhbM?m#zQc%5`$!lPRL-fFgOsiRAl4-@UBn+bd zE{3EL@}~P0dl0QzRL--nAX;VsVN09AQTO{>SDxjEGs!9eF|rgw3#>Kp{PMA8*XPxSuvM3pu0RIf-R{U zhc#*L*LlF^$lNPvqmsAYORwSVwkv~zDA5jFTGNRi7Jen7o%Lx#EEmV97mE>})*R<7 z>NecM6hqa7i}e-6w_#%GuvWFT2!JbxuG1L=$0!V) zG?`oGIIf=MPTzd$xf9X~Mvqk~4#)W3BO#(MaY=r^#+Pic)-LS15#RrM+s5>8_ijStV zIpENmy~xpx48|>cv_$l^VC=oOMkLn+n{g(|M{vx)dJm+YTV2yICF>a?(+M15&Y`yV zWQS%;8$)paC0uHWA>qP@j|u)jbT%lFx057;PLPEHE53Yn{6WKw`*n!sw;(YMG za35g02)fABz`p|j$LO_KkqHC5}Y0Wazokncm+oa5aotGHr%6lV^3se~>PIZonVD&k|o$O(>3S~tpUesxEU zFMxaLfv8MX&mStIzYn|^pfUr|iI=HL7K$an5cqen07C*%k0OAA0_pPOuz>duVF^{T zAPLc$iL4rQ6DGjQ;8YZtr_aMzV7r11n6X@kf#!!FOuGI+q!&P<0fYP&&$?GR(fnK_ z)hyU~i~x-JhU|Lv4XC=6Y{EktVuUX)pGVWAIqEf$%`Ugbt^mSTYR990F(#yi7^?>q z*Ut}iEu$q&asPh9sV(644a~nNZp=1&PN|l{8j?O?jUi8>Ri$b{NKiNte>+1mD@RR9 zpvx>N!B#?NFnye+gU>^jGjJf7Ax^hxt3QxS z{}c*TzXiANVgdtp&#wzoQ#&@2zjs!^bEo^b*2Q?Mzv}oO8}}dz7CMy!hVaFhR8g?7 zIhxc{Nfb~YoPrD|ci?i>%MxFln~d*FlzSK#_U9pz&)%MGi@Pd30RnimLqV``nQOnkTDeZru3<5hP2GI#T1cl)M6g~|sA@`HQffAdh$$r)Y%kt}Ggih*7qa1|Tfb|7# zZ>TLkF+0Z$@!;Opo~`^lw}KCNC8%wa0!4Jtdn?W&5xha$a%odd)1w3 zYDozIU;&^X^yE8y+YqziBZn{(5HG|H^q40=T%d!X`c8*!yc5(>=&>juL%A{Oc5c&3 z7GVhB!3)F{-)}Kd$1w=@!3~C76;MPU%wQo*I@cw}{hn!;f54dHr zOD-H&mIG7Q`42m%d@|`;?I*AA0%T)1IdLs7m~7%sA_JC&neEv|3*JBwC^FIb-hB^l!dCg_y9Pvyq8&hD^dv=qdx4lGViU-75VNR!vt&$W zs@X}hIXOsYxt4zT<^T?z;~7+(P6vw9n^>O$PX|(fB0y|cq7Mw_}@JN{sFqjlXe`v4E(Y}&ZwTYc{!OxqWiwVj;(6qdXuSfoY_jy{Vm%1tQ#BeQoa+GXyi6 zH1VaXy$iCMbQ^dNLB^_U06apyo`VK*4=>AS+8LNBeo|E3F3cc7!U5ek7oD!9~?pgo4MAWsNI`1jH_gQFx-;3$c0t~cL* zC)JjA%3i&6M4dmHwW!^24O6sKqbN?BRfa_HR0oJPWYJ)=7bk(q+p=FD2pZrDAk}^Q z1S;IS{yG#S`m^3hna))nQfPWAo4H5i|3PcKO z>bJ7oKd_^otHNaZ{7ZLle|)dEI;DR1==aaGQE(&6ul&q0s;BcR3(>4|aY8zFTOa99 zb>Gk2Cs$_ZhX+7s2~>0Bs5t_y2#j3tZl%JF3e$M1syxUK*D4@HSA* zx1$^VKWD)Zr*+aW{%={ZWMCU^Im|4Skb;4P)HX8_Na6_6Q-J+OQnx3@pS_Q-%n$+1 z`UjY`sTztHmke1e*lU1xsnK584|f^gN4q^Lz<7I90Dpt%D=62$dxrdQlRI6PkWP^& zRKu(tLP~$pnmd5j%+ylQenE;ZtK5PaApJ|YJeGkHR#?(NUJ-O9!qfc=7MX*r8BS=# zMN^K4*yuuU*UEkTzs?IZQiFpv`aeGI0n;VD-~L(bpQ8^HAp&JLcv5mVv<5M*-vRyc ziDyDwIP`x^F4;D@o`^ZmLBa0+1(#J`dx>X3yt9EM8!A8=)HgiBQ=fB$5_;-?U57 z8-POwb;xur#sK(h3oOVOu+)-(xuSw}O&cMg(V=aH*0R%Ub;;;KgYgU$yZ2Pl8RD*8 z*2)NPWI*$$AK!uV0yaLJ@sEvfxx;ImtH|v|HNYiZyNM3QEd578neUh;I3^b5zQPH# zMR0W0r1dd^mNPk!ZP%CVk@~ht?MmYxC)JIE`K$F>R1Mo?&tO$1ISWp= z&$ZElnur-}kkQyuxSe4bk3b=i3b&q<0U3`g_BkthVi?FM-5CNdV`63Fc7{qeRO4of zokpew6yVpR%pS?{LOT@`W|(TK^K5`8K<3f#G!Our4^3|%zkgDB-_GR#Ja@-9!7(-Q zwKA)?$MFCi@t#I4w`MCWXI)i!0%8 zH}n`>@Ac>f6j~dCKK7(1HAZ$BAZUE9xe z)C>^-?usM?RsWBe+>zyD$ z9hIsD=uWl;a3>q2ZN|W;`TtWT*6uSvYVYm?^%8UegdhMjSczc&FhiwR5rAEe0%`(e z)R#YsC>;3HSKux zkqYQt?k0cs{kHTNWPd;VT6Af5z`cUA8>X5xX2Vw`6yO%Q7hoCVdrO(+1B$NDp9~E> zpL4*cHMQ%E_;D_O-v(BjMGfhaB+)0CKc-Z1OL1G`B-^OODD(wz}Pl6jT5?TAakkZ{Ky>spflUh0=qo(2rU{ zvb9mIgVPCVC^e+#R%jsY<$^R)%kc*tfyt@%@dQBV$ei>2A9U15{U3DHr+15vCNT*A zMn@DZf6$R}3CkuxM^-5E$;JA{rZNRa+VbW}!S8O=L|LHIwS zBhYw@juM;y3msXZMBSnz&~l585}W@E9f7Y2(9ujraheqhIG2uQ(%`0TTYW?F`3aPx zqk(E?IE!9l4ob7VN^E|vT{e=TkH!-s8L2_-Um(q4B!Ai(RVF*~KpD8LkI*B&xobS1 zG%lI98x|z3tOe!9`Yvhm0p~CCJ{3raeBRi0t|U=lN+{l-7YbShwyZP{p?LM!!efIr z8eH&H4<9K8e53(_&(p-_H$ACVD0eBb zvorSepzBVW!F4C5F7KbVF-_`S5AX!!(txF;bC=Kun}jl~EvY+T5+eq2Kz;IMUBf2$COwtNB$Gw zj4%s;MJwP5kp91x64|Onad<9D|M>DR@YD~$)4sd)r>iDSDZ1=`=G%y@p?sSy$hYmV zCH&MuQTp06V976M?F; z7PO#ru%|fSjUq_2|alrXzw%=W@ z>WR%XZi`Q;|2ewp7(CEHYaZjsGBfbKtNh5Z7k`lfaZx02%6gm2Q5JOm-z$aMtx!@L z(DRYCtWY>(jO}HHFl3Hi4!n!@17c^i5nqAY=E`Qom~E6}5+jRlhr@;w4LYAI^tCS) zq_)bI7({dW^zaHMpjWjASTHDcv?)1>LDR*Qg$Rs~!QG5Lz4qU)KqdIX| zFd^e9+z6JDg!<5e=BK|k_IUz8RQu!;=m|pJg|}qiN3s$cuuT)vXPl71m=l3F{1a#h z;Mxx)Kdz@u7A)W;lodW888R-J3Mk|WppUwkJ*ZlSN?G?oDQlIrE5HAWa~R)*!WgEm z<%n?!^9uL$dL>jO1o5Lq*zc$}1cN(46(p9<47W3sA+tgOB~ri-myvw(zjN)gKU>Zp zPAf-v#cbs)`X$MNvjWqXwQ#~S742!O;3wIr5%cgu?SL0_bbDCRws5vw=O@|UnK+p_ zTWDK0;bm*b`VC__Uyxv(G|V|N1-GI^_OwY4Uh0A!${t;u-HCj4I@E%YlWXV2Kp*)N_9OOKXg=l zHhTOrNzAmkO8@y?*L|Yx*ftC$o?7+*ulQo8-2HciEG#$@Cj|;si-%$D7(CivRtsyG zB=j%Nm`3`Mm`ko+tNICw%^CNm@_A0jYWr&HUKEYEz_G(olfzx&e95N|=9Y5O)9%&V zaC6KWy8bQk?7ZUVFa=jT@r^p|OUa@)Aq||?cOsd`^I-Rg;y!NG84ad5ySF!Z9 zH^BWT=P16%Xm8;YD3IzT)r;rV+3ej0h$DRvlW^@!eqe+PrN=cFb@S4IRk>2Yp)B}7 zGV+!p^tCm$aY;!khTfsclF7&__^D(ix|U%NFx)iRnbJuh)!j?`K~%TB`nc; zNz+rO+B-i!6+vQY?%6gICqB~!pLQA?C*CzGO?at(_h$#jN}zSGo(f*hRvX5K5*G32 z*ba=R6^~21r`j=$QEr<$cm6a@{HJMa>IX*F&xeaF?t?`+2XAb;h1Q+a5SL-^?z=?B zA|LeRe6^JDAtA7tOrqjcKYvm@P2d!T*v#x=r-t|mafI3B12PR_yS9&2ub%m2-5Qsx zEXFGjtQ>=WR8`CBg@y})qBqt0v#U9;O11{DKPc+H8{Y!=D)%>7gdlXyYzYqZqGWKz zdzoNzQs`nQg7pQrPd8U|#!g0%Ab}N8F8)CB(o=Yis3u(S=yzPRWf>LcIN@381$#hh zJf_4kH+w*EanO}9d%$v&!J)GuY%)O%hG_ufqD9@MsQIs^HJZa?LzF2}T^Nf23O8ul zt_Dr@?jAceam~}yU^zn&eu3qLCUXv!vu&(Zr=F82B6tM*$%En7j$5KinE76aQr}=m zD`{eU@ciaY9k~nWG4y7px_Be=+CVj#ml0(n|hqd0+RgHWeqIb0OX*GEOveFT@(< zIm91uzPoU{lGH>c+MR@!IGk}w*oG+5NyT0)2TrlT0@U2qA*_p-Aj!S}t0%9u?@85$ z5nL*J()aVE#}EbA5KsC96Ex@^ds4Mybl1pU{ApN5C^|jLE-nZAe9S%YF078Qyy03q z*9P7IPD~x{^!|8CRRXtExn6!;^N6#1RF%#ys0%AI)8PqN(%#~VTSF3oy8$6LOL zW{nUv79Jj-U+r*vG$9Pln7EjYfyX=|X53qsJpvy=nx zz%-8@!)$g=;zK_6fJVUhx#L$%y>b&HUIHq%C(bH+@GJC2Z4(mFUKerAffDY!Z$(M7 z%v+*z<4UCWp6gjfk#qN&43413@GiReISQ?1hqoaS7tssf&00b9 z$K~=yGavEt5^5VS^Cqn>&O|P6xYW*t!GZPUgVyr_T_34|aSnS!6r=lw!9<*lo3FJ@)d<@#x{+UN1v6V1qNofr z$gV7P#x}4X{eUqGpXqzNtv}%~sgE}FJuA|0B9&~ki0d0^cB3&o7`)`7{~{$)mf3)9 zl?g*MjSxFcoe+qqV+?JxPmmZsClxGRE6P+In%mLWRnw zDwRMr{eC?5T%_!C19qw~!a{&Cs=jv$VgdW%Nws2lz#2V`*T1?G-FE*Cb=Lyjy&qTp zb8z*!ML4rimc|b5SwZ%Iydk2-hlk~3_4m=X33xF!9}@LVh>^%u29tbhM-^o}$!xf5 zm1zS_d>l+%eGUWkHE5j#8?x-q=k?@ix_n{0m)}+cm?{d;yq+^_yo!4knMd%5^$_o? z&OrE8d8%C8ovfjv+fm*@qbz_?4g~!etWsyEzBLDlEgsulz7EYhRsaG2dS$cI!M1KW8}QBgSN|zr1}o}2qLhe@PDGtA=Nz9z04XQ(m4sFeycXkRse%f`0n@O#1YNX9qw)8>U&Myo4*|7 zmP({C=8N_LZZP(~?WHA?*K(qSuFDLW|A4k#Ye}|J*M!)hmvirYJ?rq4e+K01?o~6F zBFS7SRIxrq`C{25f0Iyx=(X|e!jXjo%i<>Ak!)Ndnlxi(U^^l4A?FK z-F-I5c8TRQFhI8J8?bqNJc7Vp)H3OAyk5FHbHXW(He*)`-)@8VrU6n&>uA6;@{csE8i8R~G--CDxe&Gv8NJV$?E zjMDOfzwx_<9hD^3YV%NW*~jrDzA(&KW_5FH;-J3c`i1Q81}GMsuWXfVl&vMKpr6av zLg|(UpFGTZ^+e+Qp)XD(@W;t>04D^T{8I6A?6?;!2q*C9QB3vFQ^$CT&NhyLcGz(KVwoE9 zI-xkg{+p40uio}@2gb2c+JJR0wWXP#io01aHMM01V?7V(tNGxmcS}~bg?nj5_6CxK zM;m5Q_ti zW>ELrUd=P}Lt`D{Gd7}Y_eyZo&^w%WotAhOzMsR`(+eBdi2MU6{x_ne#!QJg@hUJC;hdTk<&6=0J( zX1#$tT4dg7hvX4jo7#_Cc{JalX)9vP#_MQ^l9(W7#A^K9#l9)0PRRIqsZ*5dERQi8 zr|oT%^Pi^9hCfY4a}368PD&&;gCWk+Ne?_!R^*CnNf~`uF{%UV9>wX(&>P{M_vE+^ z?*LsqBAR>U2w@9$0V#sR14T%ryPWO*Z{d)2}Iqu{MmA6|kII_&H!X{lR2@ zf#qaspgi74s&;+()tgTsekI-T#?D-Qn+%w+2apN7)A<5XL1=LYq>(~^p*yljO8)YjZS zzRBG)&9!qdVT+{H={WJ{n`8r@&nc-<;NGJ8QXy3PZc9|?0qMHs3AEjY=e9+BaqX75 z?|}Ah>AY9(Prezjdg_zWs~3#M&p%1m*f=-nQgXg0PGqdH!2z5!nGhYVK-m@_yt~7WUV%gtQ{uher`!s4`-mc zaa1ieN>6kau+>T*vHL_RGpi>TfM+CP79%@BnvT_-3VfD>A?0>%ayYh z0Jeg7Hg9YMH{nU;)_M_&df(#Iac_z&_`rn~5ERJ^+wO`KY3`0w$-u6u3O6|QU#3YZ z^L$ei{WSkfYo(QN<&r(K;nXU#SQNO^wPK(HMC0K`i9L=!b^(WaoGNeQdmQjfuN)S{ zc+Ao)gpVdq{RA^k1zxS>wcK$3>0*@#?jUnpM=p{ zQ$XF}4+T899As0)3s-1+%Mu)fU=ad&(~zuJC3Pf?cfT%*Q(^8K#tTyZevmRLq3rd_ zRpkKQ;VmyW6;5dCp5*h4oz2CE?O8{|on9;~IY-N2JyD_cga_*>a^GweCj+ta9_RQL z$*s)n%Qb3X2QssT7|2Ygcd{HjFG8yaF0&CleBy)KxDqr~Uht(I9>Kk-NsBUZ8>F3|0# zu^f4sGJ8>pc_6i*_F=VL%Al$nS`u(F_KIR1*~oicO+D518KCqV(ET33*4O|)N<2Hp zd&Ae1OEYviFY}{ez{Jmu;baZ*$wu2Tva%F&6i${HG`8bYgN3PHelwC@3()K;ZSnMfS*YihmO_2x z@4Quvtk|N!_SyM%6xKR03K|$CZtf138RF4wIHm{^X=TLXs=>>08-K>*uqLo!Xu*a# zs3r!+P)2|Nyc+mFgHX8s-5&+?mpk1f9zR4|`+e1EK8N&Ti_FiB5l2QWoOA^b34{}& zd#$e8y{Wb$rwjwC=f8R1HSE^#BHge19jNbxJ@5rHv?g0pZy1sKQuxWp`T1WCQZL1y z%i=vpAb=$JF+qzaD(lR1_~$j7vp8>eg2@7fou2+g3Euf`hywG8pCu%Rd|gbZb`(9^ zhDnRp3y%3Wh&tzEZz+c-ZNdx(A~4FUG`edLfms6t=9EAc&$;9VhQrBsEq(h~kM%!~W&ZQn zA=I6xAV*fP;jZS8xK5s$jkLx>CjN!sa6Ry@qb>q_y$pXX~>h}QwYmlLlg^E z;PP4Tz5^~_U;geFaQFfRUY|^Q9Y}1$VSyL>cs#<|!yn6qRUhC?GFuamAS7Q(Ul_3m zeCz{EM0dqPJI^ysTK?|a0bypm9X_uN_5ekqRk!@2;OFDs4d_Rl&FGe*AVG;WP)Wkc zh(&c`M3g!@*1&v3A%+2mh6*Q&v}*pr0P_WfIuU1_J7rRCS!30}$A-cKN7OL(cF|F^ zUy;lc>99~OgeCNfjoKg541%57DV~Ep<4&bh)spJ5=lhkP8{k0W#%Ic zeND-QvNR`VA~j9I9zYwxXk3!NABJXt@$vAUBr#CuyoQ&%=og6jgI*P+`r zM5l~-LuewAN8~Anl+KuVnnq5`_Ov-x!zrcau@dI%JE$b?n_d8|{>$nqs5U&XyN*WBS-RHS@ z%zOA9HkmGF&wGKz^}U%<(RfayRiR_7l>uy%4!~4c_A|kE6bCCZ0@jy67yJBO(V|j4 zABbkQJ0NMb^&e^Fbt|p(8#Q|M_)CcEXU1zQ7zR87#s&L2;XQ+jesBJ1szIxVG*|nW zM@XDF)Z_s*70)KuJ_c&@1Td*|F(+PQ959(2XgT+eO4MMzZ5cF2t%F@$L=+bhDy`;o za4)t5ArqzqOxUiSd6mDB9O)!bU*X$IMw7a)*Y1k`I!nlJCw{vU9S?u7;|*xTkS8FZ zRvn(4R(B=)KESe4*-^6j50>$PtRax-Q)|Z<^&Y`Q&^BTebO?dlz-(UsIZdml^Lg+q zCPocVDsi=ez!yJ$E)oneV73~F0e?~qB{JjzyG^@`QxTt&v72Tlei#D~tAuYp6rVvW z)KPu1)FknblHtrIRRRLa@FpgkPpflGVypurTzeB~8AwIVIp3m@6NuRg0cP8YY)Mp# zO!foAc(pZ7{Kcw;Zja}T5wHL|{;|j~L+AE&?+~D#V}#~_luLg! z7f@V7vBGn}PL@6%^8V9M?aSgCY8=*#UPO{N`CXF0BM@lr==u|MpQ>o14`(5tG@JL|K+mvrWyt|9f5UUoBA&Gp zXu3$P-BP`4CVH?v8=orL4}C7qTDon1WXdWhx+u(7IA7a>y zS!|&F%9uKKR6{J-*emo{!KMdlv;I5{$!C&-s)B7b;^9%74YL=xHULS&2hssuNG0v# z`6&v(p;n-3yCarS6`%Io&76pFNm?YO&_YCDZi4L_CI-tFLip-hbikWxaFzQn_nm4} zQ(&K)MpE@m@8O7^jSxm}d~Zoiz>cG>%RTeeLkgqvCw0=LddALEm?E=dVJ2S43f5B) zT2Cx!J@3eU4Y;AT!(1bO;NWrJ}!mFz5v^zakVUXN}Id z-+(s>j1f+L2CmK?ek|s9_aEjG&CkD|36mGzyLkG{dz?}qR^O{pyhN>qOAPUtEaD_-Jix0+xRs09gKY z0>#_2Bg~Ta-G+v<4tOPks1;ORn&W?xqqwC&1 zY9%P8=U;=5p74p08uq~K!cLTWQ}YhnY|y>7oovvcP`%Z?TiSu=xy%p&FQ_#eDz{E#+5yeO|#!En$$!#TJRP%th%e)^+b?YoOn1xw_YUF7Q!3y42pj_@= zA>|U48Tzo8-ZS>kEz7?hWdRz+6^wGJlqyG-bK-2ddw-zHi(Hf_BhL#DY#4}H69Z-) z*WZ>y@Q8CL*VGD9KU}G~|LV^J`pdRNbTnl>5hH>1Bwc5&6vFCa2m_osMI^T0xF%S8=QmLKbM}ENB?Sw?bKOoy3YGl|F z(>+gtJQ2D9$`p;Rktk$3#oyO4K&CUY>X3#tn54HIvRyx8h5qEP@<5miY}XdBdEtFZ zz+Mz}#|jXgNt^%zBjEyg*8j)eTgFuxHSfZNbV?(wq;zjuIt9T1X{5WQOOOtcmJLWr zN(o4(gdiXt($bA|pS3qW|0mw(oZtKHd^sQ3BKN&&X4cF#*Q^Dl`5(#xulz!iTlYEP z-OefBcB@r;+pV~RJm+WiI4^%j!OwH7m&uY^RBLmjXmXFJF(dDWW}{w~plFs+k~3xi zly-z3{R-7Iv-INGsxqt;@E()`=DpgNF%zedJB_~h*q^Q!gTytG7&?*~pZWy$MIk{N z!<^4n`FJo9bo5`$N~N&OaV+e8M%nuMhxFp@0^xw4`i|`% zN%odFr#K_Xp*8?*UGNxeYAj>1YirX6?YvBJ=vt?UBDbl74CuH%4{AF;c%Gku@xt(; zwh+n9zo{=-(($y0vmT+U>G)rmYlx;Yk#*=s3!no=4%Sq1uR7kQAKIqniGX{k*X45g z!Mfi`e9Wf_Xf?~8&oOZDOiJ#YFGc8gmc-5UQ?=ENBmv4E2bKdNgB-{`q)flH+;Hj7 zM{e31RN)7U{h{QP9x~j4dI|P2_`IR#DYT+mguM9}B4oAGkA4^$Ns_m$4RjCW4}2fU zw>RLpi~>k>Y+(9pBOia$qI4Li`>*eabnfk4fgY`U$KaV=$fDL#dAFuV@xJK}sGXYF zkqg0al@*8;KjD?RG*C(cl{vZtKwK)0%O-k&5=S|VL;*}zJsciM?E^Lfz$3QPauR3^ z`460#8Y=NpN;nz+AKlsnZuIaq2lRvF^u0pu4d__g?wqaS516I+Hft$|J1^n_P#65spzIn9bMZIL z>U_ht0*`(~;cU8&-gavldxN zwbUWAQuP)@iQ{a zM6q8%a3qs1H0m$~0Mx}-Q2^$eNb1A^xu?y<44~r3IjT!;6B>-OMVt?L#9>(fj(vjG zj7tO*-vHfyp}n%n0X%>UX#<-(%@ZLOP<%mpUcT&@Kle)0)gG$g2KwODU zTW8{tWRRT_s1@q_ZCERz6qt8godXNLU7ngk=(r{MMmXtuFv{ zuMZz_?t3ztPE|O;D?_Z4xYek6+Md9s{KFszl(U#%eVDadOM=ayz8az5>s<@ObkhLS z9cZ$^%=5X``_yQ18{y!u8~m<8D}(G_bw!9T4o<7Z4wwiOC%^fo0?Rjduh)MnpHDqg zod(e6g59OZl zFK_8Dj=2MI-X6|l`0=TX20eJnZ4|MX*)nw>7EQAXh}rBrcahfJf6515YOO?voPN)% ze)lYccy`3Qg>vC>AKIM<7MJ)V`4{Kz;pLWBd`CT`gEjAfHLnKEFLmwyeeklTF2o@+9p4!1 z2DewJ&vQ9_pRQS#dP&1m^|7ZMpq|C^-VTsrQFy*jc9eZc!NgI)#LK|M%bLg$hR8aC ztAIgT5cUzwj*CzwR}Vf47HpI@ zKnSe3Aw8aY)cDmn5HFx}`}b)r+4KJ>yK%^YvRkaGEHLZ02bqYE|D*j^M9`kVR}@u1 z45`jtqGC!=lITLtkQy`S?z`;ZvpWIWtvtq;T>7Bo3dL)}aQS!MN^1_8&m3IbTgRU` zL_qf&xC<|p|Fg84N85KVD>4%}&bP}8r<2dldjM;-16Zrfdcaz#rM>?WkaYoavJ>w= zzOzYcCj zy=-i7H9p1Jwy*zc&-pYld9y1C&p=Gvn^4r}@UXO;+}3ePMu%b&LBZmQfJHFEDaq3^ zq+>%+0=g9K3XY$BeU|95xR)_dc3;z3f9X|!WO_&&Hm`8>z0=vJm2Z|i^=G{9CASLg zuZ<3qt1emfhw1(h8a#NCydcx1j_mhTjuoQ1^g9c}?aL9PHrt?9x~otsaJii4X74-I zsJNrM?dx%JeYJCOFf)3zd9ph&M}6IUfcM+)>xHAs&dlhJXdV@AQ`3=z5$>G~@oTjc z4u+THwJ)$9beY(r_i(r3Ap7MevTE5e&~sdAZsd`Y(lq<|Jh=gX<+AhfRBh|%b^>#$fj9bT~ubS5yKjH*~^pu-@K${bzBxNNYob%u;XTez~kMw$fI53Zge1 zkz+NNQ|v3h{iO(V=nsQ39=x|fKcuPXoPUu8Ce#|4AN5egVHd?q+cMRSO{@j8B1|Fmo7SHw(6#O4fV`voqZK|+b2u=ho+ z=*>P*B-|7~RA;ycm z_klml#^~^4A8yki@^XNe2uWddm)1>U|?fTLlij5#n}*nzpUi`!&_`7=(%(3H$uXh@U8k#urJr`$`a; zBzdI&86N^!zqKhqI#6fW#U{>W=| zIIn)d@9Olt$Gvsi=tx=-lV0pHX5i+;*NTBqU6$#Gg57 zB;{P}m8N=1|9Dd8)ZW6W`JNRbwd*q76>&h*&p9B`AoPP`oRsFOw5+zTwaP}OQ=uKB%;6}6DQ~jNTjtF~wIfAyOh%x-=!a-yZgoW_cgdvT0jJVYgeeuVLYHH=ZPszMJlMe)fCkY`LQ=qW2Kz@aSSDTP-PM_{Y)C;OUa5NqhF{0F62$_S+y7 zX)2>fz>4`l8kx0Rib=yZ*)$Dxggk1_$=54)p;=Ncog1d&Yc++djCbd1QQYoVth~r8 zrb-=?ZKt1U$)6nF{JA_b-Sg7Zzv>O3U~uAKFzHVS`sw3!=fzqy)g52fTJ6?Y&&&Q{ zGXc)#FFb;29FEj!K5~;k?Imjl?H?s039-f;X(Hb9wtAHu(38R_6zSOsAnUEPf<5DC^Q=7Xw-8tv_{^Ra>JdyC|U8y`CskKi4 zC9Q=ep}ay=UAsa(`H|s!@Mo|nZ@6G{X>Du5E9^~e*ec3w+ZPmjL`q=`M;C8SJ?xY! z0tfVFj!|7it;(Bm(lgl~ah$-fr8hTSTb?Y=jGkqba9+n>=iPiRtn|9uNT5H?L%pOS zcbSfe!0y|H*LsN=VIfV=p>g>cH+<*rm{2NL@SzS@(<5yStRB*D)qx&pT>6L;ajGw_ zs9KCC7AvwB>&fM13m8$&+Rb zSx05*U^>OM-`pG(tsw>GGsJ_jm%!Mp9A+fr5;kGrr!`3p6eDnK4Pcy?SdLa5uNY_4N5X~#BHc}O3 z3&}I2$=5Amkt>)j8G}hK1v$~sb+fUg-2uPJMhJF#EJmK6*V&u*zRdJ@Xg1JOesz)+ z|G?ozZf)UJujVS84(6a15W5hjLf$PY;pC7`X!bZeYE@QU)9tlLQzozVLPe;YrjiJn z-v^@>uk%>MJ$h%p>iN0=oGd`FQWmM2N5)kimjR6?eN3?)-1|Y<+qQH;<(F~}NX2iS-tH#@YVs7MTLrw%)6pxz8f z=xwKapRS%QbKP?^K-P!)UI#h7Vx~U?hB68>lnt1n(DT6zWp=hz;5xWT>v&gd60Gt# zGx}X4SY;1bCBBL%p()nOV@A5gv#%L3BA0tgiSuWz)2n9@oNcRU7aCH#x{A!RU*!#n zcPAw8JWx}JUiag8Z*-2DlF!fidM9Ib`7s0y`7+~aPk`(+>retg57+`{U<(v^ zcj4ZzYZ!jl$=s8n($ie8l=psrCVW_RSE4uNB2CEB-`bJQLplRdi%ynawM zoi~homANz5aQPm3;>?nLq4j-jwo3k^t35b#@Kw%oi0t`^*RPn%LHm$GXjx_fWAV>t z^jfS$$|$~w?a@}UKB9iL#A@kcp4?TU82aitg<=ojXZ!?glCRyB<*MEr1zw#tX}9hf zp;6DN?K((^_?(8~J?F$xyLmmq*7FRlBNOGZ?V3MhW~UxefC#hsr|F_ytTk_97_dlKAM2a&?$f4)bBcS>Ls&6W1N*cKcSc1xK00;bJd4&Nr+1jW^Y%qs ziI#o8B&(rLwF-p1?v2CU5{Q!&!&``-Fm0yfOdpF7 zl@_04FonYwib|-;6AM|$VU6rVCsci6j6D=ZjKTEb%iC|Jj%|vT?MjayKE|ZlP{E?w zu$jI21Vh&@C(Zj9Otrn1@u0^JVLa3Fep^lCoPHcmtg$Ft&}%^NA{cPM`97@MN)Ff9 zi7akZhSvi>{9T`>uGknY-S3F@d&x%C78FCChq}BC8X2LiQEbC7G;66Nf8q>~bX3Oa zG<}WHM~%|^9T-gc;!g7M@{C3T3d!B{-A~)DL*45q6cdz zC~Y$wc(&=bB&DbyEYT5A(m^q(II(8^M|cEcA8W-rXn4wEFxgVky?*C_RCmv?Lm%pp z1&%Jg;#7dJJbn`*o5~|)e8a6iGlazIxEHyGIQu*$xGd`aJ~SvU`?B-|5#Vb(DQXuP-#7?^=RhEUZ3 zgpNPU7)+u3oxX}~imrU{Rzr?$7h?^VXuER^bV-Z0az&%U?p6`2Bb2k zwBmCS|0J+TUzN77Vg?mj0#y^1cVdCh{ea+f5xdi4M+`nVXw*T2F_?T9GEcM=@@I~M z4M**2jkLfbD+7$=+nuCz|g0G&TZZ`e{MRK>TBlsvWt@*7@Pc1d=4W%GXmbZbDlOBDAPWX1@3k~E~8 zS`qvc8dgILXE(zwq_N+_#Hkkw8-bac2{uCUJlMcs1a$}R=FJUfwg1vT>%uoJ#8ck$ z_Z$f$v2jWemRnDNFZ$OLkOEK8Ln4>3$^;$31qNAcS{Y5KYEtkS!hSLoL|E(p**($A ztWELDHTGwZ0uO+{R++c4Z1tz_f0d;GVwf9As9?GVo0B_fN%bG&-j#nEq!lxCyrJDB6$= zP9zH8zEiPnc-@9V%5|lc;h=Hi&uo>=N`Dwb0Q2=Pj=+}rQ1Mp%2&_q|mkao7dXvA8 zj&C2aT>vjV6ruog8MA*ke-mWkPHZQ0c&RcZ1($76Keini07uxBe z-P&!`z_t@Vto+C9UdWeXR5?0$gy_17yLX1hL#i z{~Q=Z_!HciIr$SOHv7Wf<@{!cuDh4Y=^PU^W69;TDK3u!(hWg6g}E_(r3F zur%w4m>^>J(P^uPHsFAfxsu>@ho>{HHsY@eQxK7egCZO{VhJCzd^;OP#K7r6?Za>R z;5>pk5vaFVVcDiQdho_ z5#LCnxS7kn%utI{r})gV9+0xUzU+Oq4z?!<_dnF(@uR0f6dpeuUZy+n@Pz|pRH3lW zwIK7g^3i(3!vz_hYVM6`@go*j+>l2A5wX(ed|GJ%&KiLid92SL;2L$C%WtcUfa6T? zBxX?s8#PuWOOyxWi)5P&qhvb4n5k(c(yj5B?l7HvQI`uw) zjWZZX0rs+62=juBrhKPMN32L_2+}g{eEvdT>IcC`uU9QDg5oUkjPMBlkkR4A&Z94= zthvA3L(NGn53^|thxr1yHI?656YDW>BpnkncfBM*pe7Jyn~J}C?;<8_BauWaEYMsA zZ?B|>4@QZt(nBd%1y#jCoR%rbb2M0A$Nu#oN21^BgwX`eXy*P~En|P391!Kq_V<2S z8}zJG`UJk+zH7Ed=^euFmj?)^L`End)thnmqXg*4wQ_@@eJHuo#qJ&t+y%m7Ybq%W zgD~6yY2+d-jogQ&k-tG2Sq|LHAssw!d)#`)_qU$$7|5zH8{R4&_-hz|SYL(#2)RWb zUm23zaYktTtWleyrh*p0RUbieg$O(@P;^-DCk&>io3ub(Ifo~36smud3rC^*I;{;s zaTUUFPm*%$Nr*i?+Av;4ar>@L(l6xj0lG;JgUKDMEy@?Uji_4@qc!WYQ+xOQ3-< z4=~YnLI!B1YtT>0HjFhZe_~Itv{yD+=#8z)2r+71f_P(3H9gzYZuBjU2?wwm-kM|0 zB0(zgX8SCP?@(5x`|-R$AhCV#pz-T200@cuwEa%+avvRGYhOZoTZJ!Zr|`ofi2RBI zvmyvmzF-(DG^6~+%3-Mb=q(AdR5yg*#QtLICZltR4PcRn#;_=FganK70bAt7=Rj~v zn2(MlbFKm28(QWAR`~B^P`eTY5gbk9Z3}#{T?>3MX`I7-YmAw&Ai|ec)&mcl!7eH> zw3djJX;-_i?ZL5NvO&xU4F%*6fLveY=S>0pc%x;EU11Nr^#@ghtaey1ZNn=^S-|?l zQ2EgtmP!lOEP_B9$l0Efe=5ZUjc1(0$6%^Re9{z8@E!{lp?FD5;?9A-rVPcaciu2@ zO3{N6r1nAd0EsY)K{{-Ne~>x=r2J?90O~)%q{wq`&hTJ#N;gvEDjbKX+ap8U0VF)-l1LR z1W*Q9YR&5wc3qu$l9u$GwYCdrealh+w{fL#>= zsMCuffc47!(CfAQ0rT9;@qmM3II?WkqJ_ddCZo~!6aB{rig|a zoe?@F#=dMzWe$2I9gN5$<*4yr?>Y~Pt3#7fr_iIz^oxi2`m#c>Wd`HfBMa@pnzR8X z)uW^Hx_wk}`^aRH6zuNX?BVe5=HCa~E)=k0-g<4{T@3G@gu4Lx@h^mEzJ(Ay079@_ z-NHwjTln}V0>DSh$gIl`L2*;;u%sh$#|V~mJlbsHgW-<+x>7YrLCDJ#^Xxg?=R!u( zPakV#7ATaxU{1umL<*)F4F@oyt39>Lx;Ji~ShjGAR|TQZT@)jWZ@duYfJ|{6j znR^%sl7LKdAHx#oyHWrRfK>d&8u(Fod6xzoqu9ZB(j72xP(?Wh&3AeM3JsP1NU!@aSWRMqJ?^kAn7qM`OZAxtV&iI zx;vocVt8-K&0Hw?i-QOoL2c2u9b|}`*eN^48&xGw+V;ev_9BYNN(W4nPmfopv4{=6+L%jUjg zZEH}R3cV^w1&w)u34&D6#aQ+>6?_SG(3mRIh*OG_3K1R#U#Ta}EIo{<95Yw;-ffCI zPWNEWw!B~ZWwGIF8HgTC|w&J?^@~iiexLWTWcn_0_2JMaBB+vYfa_AkuZY; zDHB*AP{++14SoWJGe4DQUtxta(FdOXZqGl_*<>q-GA%68H#`0Tar(ZJSQI!TYCb_t zcjY)+FGweXzDdIJ?H=;>KX-`O$-;vmqm)tMA$*F=Ud2G$8YE? zDqYGsHdsXQ0)??DzmTL9mZk)){!tbg9rDF z-)}u*0?2fLXDl}WF_9_?)+*EG7Cn zx=R?Z5~NiJ-|mnC|I;H?CG<|BZ&mVKDo8s>XI^WtybO375JmSvsG9(cyARO%ybWzc z6C2<#+S8^30gR0t5`ugg_z6CA@V-CnWUT1N0_Zmb#E8!if^Z2`AA!@#KY;@y0+r1* z9DO8rC*dZKvh=zkik-_7C5lvc{dsm#ojsD4OrJeFIb(+TcSo0TR&I@ST2(rB zWG~>nQ1V^sN~?j#5SGSd&{TO%6=X&lI$kf%z%Ft^(YY|9zvoLZ*y9XfS}6eA@fvmV z@XVL<0_5W$^L^)&3gqWA?vQ&KEPk01sO=MSqe}(0^%V!u&Rmi{~t;s(FgM4Yls@mHK z$S4j&*7W7{6o;W=32AG6D}76YH6f)7sZ>%yL=c7!8A$~@SjUDEL?jlzO?<0Dwp*A& z`igK&&)$&qlbjXNYirZm0cCywK+s$x;AS)laDySa2-wBooJ|V`}(%L5~hRn%IJjj_L&B1Of(` z2%j3pg?5ZSq8HCZ`9rW*FkyQ|3I^Q3UV*_Xuvf_L0075Rg)!?sO{}4PVJ{*F>bjq= z+^D=rf6$v_{T@jXH?yDDy%ne3t-1;T00ru5>PFT?z>R7u22-AKfEgXS^b>_pPNe@R zp^O1`MvOLmY7GywRwSPn)9Hj~-EqtJnEG7!)6@+Atr>zNwNbe>P9bwUz&(SPddX zJ}auPlYXa^Sz|Q)F8n48g@B4*14Fj<_p(-BZ-dW8P+0F4EP*NFE#NLFEwx1|0v~TYzSMvt zjLkfNunC8A1|a!?aRyd^SCvs0h^=8$g|OKEHR&Yqp?&tZo#X*Q6SEC4Al(=VM2nZ}{z0gwfoAB2eL_|!Tdf>0 zZZ^l#`yQMwh|v9!0y|%1B-f=5GKWEM_-9K{1!7qz4l-;P{#6-{73i7=^ACrt-}y!} zrn#C9&{F_2P(Q^a2gNn7J9xM`) zZi>ct2!GYXc_%E`z@{Zw4M!5d@dk?zgu%KUsvD7g6#>q*On`GOV~=e?;vXA9Byw$9 z?gGjjV7si`ZWmMi+wD>V$RF~1z}gXLC)#wz~S%A1Aeu4#I&O(6W6GlA;P z(*L6q{_oKVyU=KR>f*eT!(fq{#-UEebW(S$0g?t32Md~p)Ilu_h>6&ZNihQ36yO4? zA5>79u>Y2XF4HOpY>-!;0>I#UELllMK+1Cc0!@~bfybP%^PMkNC#iz6mE_r*iPv1a z2%W45UPIptn~~i?F=xFC&V1g1F`r12yjn*fJLx9&-y&DM0=_f1*Ag&^ngpIPZ-b`v zKw)J&kpggx0PvBS1)+VOat1M)6P^>*0qU+|WGwx;FFYq2^Cb%l&XB46qYId9Kyu&B zjo(p+*Nb{#sT&AsCUbz3<4bFj0Z_d2KMrtk**kQwBKV;i1oNuzzXks9aT8#fKyAaD zg@K+F8$s*4moNHCV@asMH`+58Dg72sN-qMK1}ajRP4J2o8A{hleTn!9h{6BaKd7cg z0=gobb6rD`N(huhhv?uDs`YP#^7tFPJbc>}w?TT-tu40+lBC3`@L?x_GGnnO!p&>V z0d2N9@bg2`2hAx`&*-71pDP`Y!Br&Y#_t`E_rt4PmiyHp+yeh{>;r3;!KG8Fh5F+B zo-X3)7vQ}t$(W#r;AjVk_FFiun1G78^G@Jh4fZ%u;a)F*FY<8wGxZn$T*L9t1IJ0Q zhXnu;A;XgG0~pv}4}MO;0%tLIu-cm)jNNTy^SBc{uQlmjID2dqt`Wy!ux%) z4dVJKW|9Ijek)Fj+w(S7t*79;O&RB(7Gi(tY)%lil>{kaM%RWe~fOd6cm zSmD%lKpc(%*|;lSXqEtQx;M8@_c@5&Su8qa&*#9JDzV}I`1r3szJ1hP0WZ_RiGek$ zTR6W6+&hdIIIRncTW`6)L%jZ9Y73yIczzegx%__$68r%D>A>GEr7x*~dA8zzcwcIW{xK9$qEqRlyj_{mMi(lnV2*4NgC8 zp@sKIGHxj0}Tu3JOuB37yLG?{T~eFrX_nV(obRI zrHU=f&qHtBwUuGXhnn>Qyq1|UCRNNW$B`=fITx>Z5Bzbue~_TLRiQqBRntOY9e%_&AuFDvlgx4l^PJJ?#D%+};gPZ#q$UL2h)y1BaCpZvnv z8#S3!14PVQ z-kp2;*V*C7Dx$LGGk$7G>bdW4xzU~rV7-+-526$jym|bR&5rCuGiyrJ&`rK4SFvZ%bxo55TS`=>-#JVD%|-8G{~VsOS@t2R-wpTq z@AK<26M^9CbymHblcbKcW}3twa_gMe*Mx^%M^{GQZLqI~g+Bg!E2{r_L{r$@%(ioR z1-el3+dr9;_0ydL9d!P@aX$LD-n`agHZR)WPeKlF7J0A!`N;3|qU-MI^4ZbOS;z9x z&d$zgDb0Y}#np~l{Xob#?#-U``M`;M$PKMth>z##RFV@(v_^+tlb4rod3}@jRXg79 zY)(Dy(BjR>LNl|$Tn8i#5|P4jW$)H?LySFojp|u>ym{omJ>Jgk1+}69f0WH&@<8*A zadpj;YU#jf(1HU9UsUwKpj5KA&Ui{oaT;_^SMPM$cSFv*!F& zb&&_w>}UhxuGIjBf@1xYQE@R$9bK1I2dNQB;9dX+XG!T?MiSq=#6(ZcjY6^^~ZOwfrM58;QtJ+(bsIy(z&&7Y{a z^0Uaxb5z64ebEgfPNW%MFsx@PQ8uAj45L|TaW*2M6!)`zEs?q5z7bm%2eY-_v3-9Wzr=0EibnL^u7w}ImQJvib0(iGlz7|G zn&Up#jSqr<1|)Dv({y4E*R5yeDpUVVe+$k3esuqj@54@29qx#1X7~J1he$r}Ytu68OkzxGn)b;bN&$1iu{ukvF^H^k zp)3W{R0sk0(RYjy8j;{EthgG!6Jq zP6v6FFaE^1h+HqIIq@e|MUPdC3~D7>*<#gfS7o6DS2!VlwvfaOC0CFC>~)I+u z?kVm~-?PuzO>D05Nx51_K?)wV1TVw_bPI`Mh$<+k6x7jvk--(G(Z zh&4`HzdPX89@n*goM4`ktC8+n6`8lzIb3u9I zF4nzs;&P1R2detji*dd;QXqGoN4mJhiWNkcM8b3!LnG~#; zww68P7AOzP6?A)dtfuoTI!kz-`5|(2R)uMFR)U#OI7tnPy!{?nh+z!-D4Mj^iWX+w zy->E%1~#%pK+X!3AFkjIT_+&??NXm>0Telh-jGXH9`Xl-P%%kf5=hoZ{QXFp2&l77bk1kmGB z&TI9ExiHvU%vX7&0|gzsombZ1ZAPxEZ%!7kt4su}{C?eB+_r4qz6q@HV~0iMiQ}6u z@NcK)j&DLCh^qX~>KGFuEq9$!b-gjc;U}^APzVa_r|8g$`j)$nxKOK=ECPpP#6^0@ z=nq+j`7PvcFC7X~B9vMt(L#skpYf8uZJ{!!q3sWR+Nb*rsbBmN6g}@lZT=mok3WR) zw*QM3ZbwE~NBA|?yU1PNQf@n#MT-vOT>w2K_&4HF5}LOam~lKrg!L5!`XWL)`DYi9 z3xwMq;8RigpQ*rmlA3S&f`|XNxfczD4&MG5(y_RM6chtKnJu6BpxfD?i%~Nv^{(nuu!MC>gc8vTxKqKORRSHJC_?OXc4FMBzb^PLge*E7i{0}h^ zA@vWOocy&UgjuvE&$ErK(Fms2lt(Z6q(3>>cvCKS1Ud&4e+W@R+zs{E2SuBrl}wGF z^^2=`&DWd0?h--2k(ob))v;RK{nSB4@n}%x8EQIeKg(UBJ{cnfyWC_FxBjq?7K{&( zefU%&M3`is@DU~ie5HYy!@onE#fwfhmW02&W0p*U7mcD0UO;?pq$>&`k%9My)mly) zZkEM`AP9Ou>v{u*>uLFg_Xgg~)c+*Vcts0emRFt3UkCG3N8sNd>yeTE?JQtb%7HC3 zD8(3uIqZHXDY)M$ z3+{IwW|^89dS(|iBCN{#WLp;19WH*`d*ybyI&*Y3dbF_SakUUr&qRZJ<0I~S4Y?vU z-xa?czrMK|-kHU+*6nDg z3$JwUhHm@)ZuA`GbI)~}^(|jox6_l%>*egcEC}Z~Um-=VT99vCyZ*`kO}+1xu`So- z=GJ-N9Nyc3n+#37X0{C4QtGQCym}G8St@aT#;PHSPP|k%nxUQ}Ub8|rdM8VL4nI-X z)M+tF$#Hwtjm32ubJuOnQtE^@FTYtIPqAyCj__xGrvte6n#4wYFZMc$h%!zWHdfun z$5)f;iw=6-O6PVtP&xc2W^SC%?dPC^U6$volixV_Rc;1PtxPtY4}!$ly4p_5C^r|| zE5KP`>O^*4KaM_kFE3v*?b5dAA2^>k%cC_neP78H+c-Qr+T4}U!$G6E z7sJu-+eB7v86oBuGf|sQf_gnx*J3b97Pzm;#XJ8)R?HMjP=b`I+*zGHvhm}}eemS) z)r{`Q(`tub&VzUF*@V{S2SGmeeXm^$O^dKHYIyp@Io2jpa))ShB`dw+E&EDV>zb@{ z>}*B9Z0%F>i2grLNv3R`ccWzO4b+SW*QHqM#`3|W@vrs z5BXA5w4f%g>gRO+@oeMh`8_$gu+k3!tCM*Ry5f+b`Gej~zjSjm%fqvsy#X2y4!=a+ zCo4&28NI?6M9cki(B_L(zH977$ne0C7x!`GUHoNd*AYetdM!&nNhcZ|Kg#z`vL(qH zJIoChoe5t|;r`z$DdT~6*H$Ac5czK?zZ|HsV?#f?27IaDM*Uq3?k1%8dG?Ul`Cbc| zt!8MGc}ez3fG6u6b!T~bHVf6O84D_$Xk@Rhh4dwETSvNKT3yFRad)S^nzaut~B_sMoh;!UsA@|3aQO(ezg8Ja%H!wyq~I(+1xMo69{s*l=# znyWqP3Tb}8sabkS`AgIHlf=bdv*1%TkzJzg#q!l{i9gHJmOFG3__gYJB%NIp{2Se1 zS^L#?BkQnbjR>WPY{cU*o2yNL=cxTayDxzb9bW+LMhe5Vy8$iBR)uL-j_Ovs`CzUN zzq0!=K0FUqUp2YPcW#RouHu?y$yb*b=%jTEcgcH`l{GUzhxIZ0*9zxKPh~>@2G^M1kB6>T0#*I%uj$OzDJb9F3tDsn(O82 zk?!VB1@9Af?BXKV09WvuaT?4{1K@UwTG!kEsEX_O&4&OJa2F`TmG=pdgYCd0w?TaA zACKI|!FQA7U@wTE@FTYi&x2jnfPKi($=>l*H3v{}R24^=I#96<5m2$SI!wg_vL`Sf z22>39K|sYEa240CQNtY7+Uz;_PJ|S$Vz?^0H?8g_g^BA062C3%Qglbbhs@0GCPJ0bP zYvLkkKwqahE3`0uiI4Y5!i6V!mf!7Wn1OTf_(VL;2=!dxs%ySF>y=k6F^fIN*WTW{ zD-wozdD>*j2AfC+rpDNv-mO3UdBwm)r!Nl={nOH|jJ8nt#efawkZyj;17YJ=dOG#T z{gC8z>f(%a>atIEelFKR??_RcR(R%5NF4WDBfkLR~4ff4j{1hrr*J~lie{}374 zy7A>GaMXMYyaBX#ulTR_V6WJ4YXR-uD+byt>q+a;CB9K%T77s@IAZU1@%}UySAr-h ziS_Aou6Pu@j5s9kRGv1{O^7{6ABJ*2b`U7*NEWDLSgG7HnJuYd@8l~py*hLF zFg#Qm;!$fbuqE{P+H+0srl+^6x#M$f8m5}1bh$_lx!Tn7@`$0Cm}Qdw0$&N{+|0A< ziP01FD4Rb{eS7@+>**)RucpLm%dHFPqcyDdG{A`2eCZ9)R%HhP2jf7^3#nw3!0|nq z*0$EoQ0fLN(9{e!r|4yu87x;#3cZzeWx-b7wF zt6`>p$NKu=id_kho6jBIm%Nctn*WQow~nf+``U&nK~O|NI;A_L5d@{XySrOJQUL+! zJah?4Hdy~-p}_uzx#d0``0(d9)mH?+-t6D&Nb&X=UV%mO^@{* zbLk^aEtYWb&f9MAYL}BCTj8fMIS2p2-@5Oq=x;nRL zZdrntz&!21?#w9k8Aj*JF8p#uV{GUA!rIT<-+Lc8-DpZwp@6MB@$-!BQGZ>0``WA~ z3+9WaYI*SG=u1O>PcXyc#cbWt(yHZ;poLoV87>jeDLJ!|Z{6&3q(MvE)6s?^)~Fd# zh8MgmKW5)Gl(owzD~`7}R?A;;ZW-*Am=pSU68f=NV-^eyi2QcTFllbdJT3Zm)Uc8w zTjv!3iyeEY$M!r;O}qS6s#OrW4VZ%t?0;PnnZ3BF@8yKmCU?KYxjZ5hbFkl+#A7qEi8syiQ9< z&`nNA%{~j617CMXzECK+Zw3GSW_YsmmE!l-FR#^e=f-xk6#kOJt=Br)w+i@`2_qr z{#i1~aGo1pKyu#K7fyp}F20`0&Eg|!bqTXO*Ef58@Tk=onfpjzn-l;Od?XLL0i0J8 ztjE5M+yk-w0|W0^G~xLNC&#&|6_Os6<>}{bB`qW(Vr<@N-t*v@MzI!d4;jB8RbM7+!CXXb7oBoikLecXV*oUU*Fuuz_n3B`I^=FzRuxjtEEU53J% zJ^`Wi^~JAeYny8Zq5T6xjdfT?q0D{0Lu>CP4~&eIMhrT{Lx(6Q+Sph)z8iJe@kQ@e z_JcP`-zZ>m=(C@kh>=$^txFIHXktI`j z&b@-F?Ak!Kf-1jpB4_`8QMxHo+A#gxQ029eLv9S8XOA2-l?nX)*SH1Cr{q3aJL!R+ zZt3LADB6QO;^!{UV$GTkohVy;l{3BR)kHc$vY4GUy*oCcS5E8s2yyf5lGD=rY2dWJ z_XWlS!%Fr(0~Z;lbF`O{8PjXAp~E2+LgmGj*yXnjcUc+_+z$B8-sp5KzNaAzK;z;l zseK$Yw4VyDf==BrccSOn5;{218YQdW}>YCss_&V zr9$aiJ>oglTQrZL*Gk<1j6ymDMWqD~DSOZe<*s*-6l-Y^s!19zZ7?)$fIkOvOhc*ZRo)dc|I&PkClCQFi9L!Xn&ARJ_Jf1&p>&1 zU(`9Knv&J9$NTdJ_a=^g=CD+)PgC&dffB`(9oLZZ=7^6sp3u>}Gw0&(_z= z6J(QC<=)u z2VrIz_APW-(FR(Ehi|Y&ErxPNLx-#sY;ZO)%e8PHyCX(lv^YJ5gIG?(+}Rz+bQBos zS3JXv25*nzdegCkLz(1U@mMiuNjqnF_>YIb=jFxseb?{O9PMlaB3CoVyHk5PVZMxl zgMdMC)aSFW#HEf#pXJ0qzpt8Pr~mD>!Lw(W`7c-QHA<#~vD)#O~Q zK{d-f=DKF3>LY5_;%`pR7VEI;;)hk{%(s82v_2quM9Y8Mnh0tjdO7)i3-P`nBIR2R zt3JYT>zvh)JyXCoF9AewSYoOGYB_i3?B%=8*}cw$#a9&FG0Ov6=cc!v!DGYZvgOd~ z;)Gf8Vp9dsm7I=hcBX!FFo`sE;PLF^M6WLs^*~f7Q-!PPEdz?u&eV(Yi4Vf{9fmd= zw9}7+(o#_KXFpQ~kn51Q9Jp~i@tce8HJyWg;tsdn71U33I!yhh69Dc%hriBlx3jd6 zW{dg}2RevH;J25~R}jm^pWC19*k1kSb>K6<63Y7y+K98kA!CTg4x7(G8)33=4j&qE z?y23$kIbnZ>4ZyX`#t})I|PSE%9~%wEkx%qt%uMJ5!n6~sngME+YU%LlO$AX7;QJ+&Yd+q2<$@t@et}<6ReGPzw zO<&_fKoM5@d-un|gS~^J^{wSY)|{iBt$y;-Z!DVw;1^pJ7u8r!96cp1WSJGc)!V5Q zrNFWjS92I-nI*it1YsHT<*<)u8L%vesIYqb#jc2PH|gHMgBw;%Ke5m7+ONvZy#>A3 z?U{4D;M#&uS8;6JtPoXnNa4DQW~3pisFlzg>w^EFGK8o;HSORHui+8N?$5rS;iyQX zPAhJ9pR7?Dt#Vqw4JlTT5Xat2ucrX(cOHrAQTFTg7WRH*;%!K z?uMB&qJp)IhA)p*?&u94m$oeaT+w1bF0wGfR<`O+Ou()?u{7VpvF&Dk9$hk*)YQeo zk;3oww3awavoP91n1Nh+$ z{Eo;o1Z6{`K^ek^+BwqOhU*d{M$8Z93aq-izI0 zknlPyajxXZ;oYfYH#>XyCBV2hq@60E7EF8sJWtUx1oh4zddf3e5%swBXkmA5PTpDf zg%E4T+ZV32DZh6{n|d{^IgS_Jc*U2d1rsbaX@Y+b*AM`+?Q0^nA9mF77CaD7%Zvx? zz3IZ80I|0a-0CfYz2kSsxz+xIy@zA~di_C}okn->$9|smq8qIOFD{cW*nYB$98Su8 z;&&w$W*lF0IlaYc2Xqv9~RL$&gj z#UBf4Q8^n2Zj|2*=$hq~#X$e?su5EL^ba_1Jn&RN|Im!N*>jk)u)4ZeSvx@aBH(nF zb1qrouu~?}Go*dT$nShAk-^)`ZRdluvI1!QDhZ@cKxQTRLyaF7)cA>TwF+`nat)pM z4}Di>=w9p9V8L8%jF$y-MCW_+5Gtx40Y}o*wzl z_ef!m1*S_3~rUdv)o$0mgc5#axyE9f*3|9_aqmI8iqN6+8te4gqY({DnX-TO$+ zeQdYqz+2d123u-1)HY=lY`|9wni!XkkL=Ims=ia7n`gQ|+1&g3eZ9G(EBDv{6>w`0AH7-_tGCQZ1?7sZYHk;4U|1(0@sl zgZN;RD);llnJH)!9r!-$=E{6Yk;1NgdGRynMe_wOPYhWdf~f4Si3%}dN4nfp!idwZ z-D#LKF_s3n|4mbeh3Q_Wy_jYpJ`FG)vT9W zU&YYSr`(BJvjDX&D?Vco^hlo82K;Hz8gZqChaFofSb-QxgR%A7B&WCslqTk#(RR<)!q!aYR|5~V7x*V>~p5^k2#)#zhRO=BpY2Ttbg}OBns9WoS z*w2iNl*6BmsE1+{8XmRU%>|qWwnxzDs!IXB%x{EI=6iHI+}&J_A|yQl&5ace?Ja+f zR_C7on&vUPTnEpDe(xE-dPFQ}1>%HZwHu7Wvz^bT3QIyGbyA z>Up`(23-ZlkpkERuEt~(Lz}=xeSURl=ki;D_p#;Bh(^vBw`O_NB6vZPFW{K{SyXQrA9XdCR>mHkz1uf)PZ+lj{`AfwbgB=lZ(>}Bx_UiUn)dp!xu$uC` zz`6VET?5bV0Cm8Nq=^*YcsL^mLt&*ZVN*bxT$tgnU#sBE`zz&`d}%?oe2o3Nz;0pv zw|AP+{g(?R2X-f2)x`YXXx2^Zt3@MXoEyL>6ZezPmk=L1Ch>8Eo|qY+Q6N# zhUM&-^UeiKKi)^8Ez3J&d-Z+1)orC(CgfhhDb)PsWimBj?GdAQai=WcjJYuOVQ_Rx z%l9D@+n;OTUk)Y+$P^PpeHYHSCO7E2zI9tw`G{T}|FSS`rTnwfdAu&Ury3v;Yg+g4 zVHJTCdOzT@K#0pi!P5Tz(p^R4bGsDw%4?Ab>Q%p#lXilbt*7h^^%W$DGTp-mVaeHe zdBVTWpxbv2oxKq9zks@yFLh2(=QV3~g&RvYoZ5br+&-hw)3kw!7)ci+|Wk9|4w4%kfQgy?h-kHS(Yg%K9 z(9NGCLk&*YDf3~91@pbeZg#-L_QgqPf~$&*d8jm|&PV94&U&h5zZ<*?kdJlT!{76$ zZOOb$z-(#dt%t1>L^<{x%>r&&iX>ftxaCxjzaGIY_1LH6Y$OXu$;S4 z1pmyFVg^*%&u*)TJyJEiyAH5u2Fc8qD{Vecm#P^1{gG6LqxV`YG>3Mk7TMr;#AytT zrq3tzpgLyj_zP~$a73%cg88#i7TO}W>hp&~3Hy;YnX)cZB)lW#^GNFFZzuem;aQ`J zfP6eToNyuTTC!iFh1jQymTytwy$$Y!{P?&RbN zc_r9)=?BEbD)fIQfD8bydjRGk76?j!oocS_)})XUkX*Un2Helr~FvYkbB&6ivKD*2%2u zTQVt@x^t`2W)^nGxFG|yoU9NAcq|P<2B>rEw=y|CS21a3a`aO%`A+&gCwl>GEKJy< zZYP0#6DoA_>I60xXRSkyr&~>6r~T!U^5jchaSW~O%w<48*9G6wLbILDqGrzqDvCyz zZSh;=$&^+{(ohrFD_#^wF^{?SD~mO{hl`ye2Oc=Mws!rF>~t=%&sO>j;EFgSG71g* z=8>T_r4x=k)?HSkj+gl;R!j6wSoWiiW-V_QC<-^~QQ_5_n3A-6azFc{E>jhKPx}^aha_@p`u>8Bm_)Q5Xnfr^Rbqd?Zf*pX(@ zn5-GHyr)}_I#9ETX;7QW3aM+gf?E&+b#}VRMsY*!2N(k792)bpA(FaBnV$&B3-3WUX>HOAA-Z2 zLlT1%gEwwf{2|a${^HgUxQcc|@d(YuEGU#xpXa`HR_+@?mJ`Mx`mcug_&nYg29jhq z6m=xf(6EgqSSM5Ra{CDG)m7UVViPqa}^6E0^*bGMu(d)E0)6G9ehr>1n zB{_tY#vtSKdfXDr-)aN7NT887B*Xmn@dyiyV~i1Med@0D&ZLRvR!DTQSSLD{}`HV zXA_@2C>Ir}VmH^+MKg=?=H~@xo?4zy;xI@BF*7T07UW4Oe-jSY(C~B^8$B$OldR6f z_q~q~bJmO~DH1-g-!WlsJ1eBzeGgNe;<%doHgkW$ucI0MR5bI6kl|HM8@j3fDOMpF zeF{+1AH1dpsbQ&&GWuAMLj988~LN~L0C!rhJD|C`sMtV!+zDGxwr&V<=?-#Z@j)SEr*Al`mK5h$6l#)m*K!DGvh>p) z*$`rF$oqc3byGkx7No^%iUGy?gvC6N8E9_yK#;M~4#{rN)=xa|Xb5f%&V7p%4sc1wm!D)~fY?=`hCxa>+jbo7Bv=C1enkWNj# zLU4W-F;q~_{H3F|33;G&Q}70-kP`A5@G?p-$RyfIXwJZv`IqaOAf8MPBA`r{&T0Yn z@Wr<1o%WZW943ZwdILAEx}I#Er0j`!jMka(it6%+>Mkt{*`iL%j^PQIb7p;xWh3$F zp4_5MuQiL!OFY1Sq?(l^9Z)``(zR4@v0Nqnweg~l!XGY;2ZNogE%>Mro9W9QcNWtX z(^9T!3I;1&(8?4^Jc`GDr?T@N*}f1EUQ?_aWbHsTbxU)+561>ls{4)q8Db{x=y2LutgDGMyVq;G)ur6?2-xu5N{Yoc+^0=VNlci zOD=tgO$T3cgz5R1D;5Qq;jVCUh6A0Z1fVQTjWL3<2#B85C9mmO;~ucrTVt$18$VpR z7p9@=S5SGzL&^NQ-sH)Bkw9(?JPGJVYo#nIDDoJC7{5l4;Y)b0Y0vNQECk4XO7yyP zF_Tuu&34RuI~g6i+dBO>7AHo_xwn(_N0-WiXom?QoZWeMbHyrMjE z;ADWZAmSQjF*Ss;D9^Ey8JAK&Lrc=Eo&RmbXBiFrosT7qJ}3+%*LNzv7eXwBs)lM? z4qr*cLGRZW;%aW?5~dQAxuh0@j1lxan&-$uPf(_RoZkO4yJg9L=5s?*>j}ro=QmYYnv6cz` z1G%8<;Yz&?t(l1Vw#8jwm~{M;^MEf!xBF@SeDGkhjBT?tTqt%J&-S0FH^)*dqEsrS zkCuL!o^mlZDm2cmgAGDP@AKqcCLjAILQKc&5UG`0x$Q_m*76^f>mR2O9=oeTyiEr-l+M zWsmc1S=1+H=oxkL7+f69fm!;e)VGg7gv1-R@O=emScHmKb?=# zGC+R@q2GhhGZ6yx9{uZwmmk)?ygBcg`wmyuUW%5AZJs+II(jAq_S+wAjk{<3jxz|mp>Tv|Vv2%jH?^`}f_BsD9_Ol}Z>jh+2687w zn;y=E<$hb?R9Dx?7}uWXW*J?)+|R+VuNTW$7nYMZ5?i_9;@VH#a@~GLozcfe?wwP9 zS=+zNHBmbKQ}TnF%^A-9{EqBV#ih%%qyNE$?CB{sqmZT9W^#PJ_*?yLx(sSF%KTiv z@a&JU@IFF7fTJw6N^QWa8H#P6wLPA3Gz4eFH}IJpv4B=!{S2#K6Vt0t2KOO=P-Z^y3=7S4z~I4o+8DcCKrLQ*$QFI^0JZ9<4tdksRZk~DfVDadTM zC1#_feOOEEd$+>i>!^*yvGctT2Qz1f^Wd=EI?QmDt;Y<%#*~_y(wgr)S;7?wgx{TD zgWNx3n&kv0L z9+vX40)8{P1NDOI;(>&<>7|R~(S3iFJqhKPkLjO7Y_To<^jguu5Tk7JmDLZ%jOm_lq`lf72!CZ&-q^k?t4fQ6Dc>lRD z@3EnUc|SB%xvGxpsJKxGUoc)dv|akHGNW^`_oj*U#o2dSWtDP(pP@ht!tXs@jE}%y z?$BXJ2jQ>#bdA3pfxqrkHrK-35o2P)-d<`lM-MNG`JKIJzw#( zEmUM{ZSx{#TAg=3)-d`gAxFiiBb@_sK&k=c&o|r;)z%t3&K4ao?SzU>h)Rz2-5638HrrN`UmNAjc(p=$)?2mMjeKb%; z%hxMWj6ree&12A$FI4h8|JO8oS@gd;dOn1s<{4A?PjPa(areLYyZ1fjG0wngh@2W) zUpc90dY%&M6Mf0Pa94#+A!Zmi*=b)_L#}kGUOa_hyHC7z#&pk~$@I;VxQolhB zSBNIVb3_;P&DNM@1y>j>0UPO!5$(x^2}&_vW)^QomSW<%jJ+)!%XdO0UOQpxl>H=6 z#4_fOI_uJdPNgpS2Q`@%J;{HqNo<)V)!|ALshZNuoz58a9*Q}znG(XggZ4#%C? z^Z5&8))%G~M~NIeXT(QXjs0D;%KC}&bs&JKy|X(K04bzU(|be7#?d9z2edkP_D!&R zd`qzQ#fAyze@AN>b44)%JIK4wh56^O62d_JRhP*=`O?YmZ9~ND{V69}HhT;&7e_Yx z2XOUKDJ{+ba5bCv)8y1OV&LnzHK^cXmC7AdK}+3Nn}JEFaj+Ke8p0AUY%IPy@_EAG z(&cNRvU_p5^@?r9y79$Wci!-t(xauqtnsc19P4;NN4jC1aZCoX0%x$JZ4N$Cgm$#> z3c0U9WrpEbBIDAw)>p^>^71%8a9;M)ukZOuJpIKxP5f)2n?S5zK+6PTy$#~|uHzxx zY5p<1mmyoE&{k2$<02IFj^>*g)@gE2juk10j}>3Mt$Z6SUAAeV{DKbWMfDA~wdG3H z;@gz+8U%{MzhO7Yo8KslrW;|_@a`XV!X{Pqi)%~r>B?e2P)wO^Lz#6{QmziZMcHKq z-adT##<{X{8>D6jsM~u`-TnsE?P3}zHQ&U{|HAtq1X5E-FKh~tng|5|t`H(Mr^bXJ z#Ynf*rJ>-i+MYzDri%1{AGhTJ38o=AX1r^ceUfy0N{Z%so~-weQcCtxO50ff=H|Jqtp99~5NvQjgm_yLrarSFxnK~`qSV^6iL`uU=2NsPH; znLNux=>^n_7Pn5XFMAKlS}e)QFNw4G_ppQU$I#1O=P`&;sv~wnNAUX)A`bBW7ZXXa z`_oCKhMLe2&BE7+T^w~kzoituDg`nA*xhm2JaGDUz%h+G-B)AXb}=S_{Z8Z%_ExF^ zi-a_}&Q0~gTd+=ZbcJupP6$svT+U8DPz&}Rx%4e!ODc!hkhsA$aKU_buq0u6qAQpv zp|k(a^a*`gJRp*`O@R>TXy7I#bTl9Z9H>xZRh{|t} z)dC_yi@|w*=3P(hpA-MBPG1RMryq`aO}Ent#4@Uo0Iw@4AVIvoQidl6C9x#ZdInEE z3S(>(i4 zGws~uG0=(8qAm`zx$7ITw^ib&wO)(K0utSzCiMWZC$xYkA@+nxv8U073;I=iU`u!e zwuB;JrKo(ME#W6iE7PKk)LTBYBhj%OJECNln2*NPpP^Pi`S zv;iPuhNuI+%>=yT7v^f-tutO8LDy7=lDGsaqaZ8nAR|*tipLZvIX*o4ez_1UQW5)| zKP4J;fL-1!ur(ibycvHHoK}y?UwbOZ?CRt!Jsg67$3sFGf z(<~*(35-HaU$sf5Krb;VE8hFFLWHTwCr=|!xf%PDRgx?obLsE53shKmcX%@>xFt4e32>x9SpxSW*CRojb=RAD1Q1&?_nHPeEqG+_h3Vcb$y2j{vSqhpERcl&k2s#kt8`9hts@t(fphe1Gy)Oo3$V(_g5NOqV*)KipBDHQ3Hv7Z4<9+z|hv&`q)G5~Oeptql7>2M&x`1=QISs5?OFW*oB2Aaz6$j*W5B z9a{UL4OzSz717yvM^ZhQK69W}Z|;M7(aQ^Vu(1zjLhYS23}P=s8}=GZNF0vP;+~SQ zLPyc#%-G#-S`HN0^~+Nxj?o!moY={s>?0(xwaN|cv~p$VeR=17SSg04C7g4-V3&QH z_5)&<&81lriP&XV_#L`vc!Go=c26>F&-bicE688se&W~7`M7811}$@W>?Svvc>jVj zc5~@09$#@o(6}8(dw{?<=FhJtK|qDX#X(zsAABuLCIHnPlj*1Zx@U4#%)d^Igdz|X zw`lq4WWUjc{kp_GzNA*aO4zLze2h&{Wl1!EJaYu6g(B0NcBVkvt*-RGump=Q+XTUT zVOBCGb(_ohP<8bf3D`WYmK`_;9pil04W(t?6caB<%hUqeJmCoMr!6pPTHa^cY&1?&@Ub{Hrf zn6JA@@vwa0^9GkpN_cz`yMCC5?h%?2k3tH9jcl&(HQ%f`_WR?Zk^*Y^vfIsb|Krr+ zJXU`*x5nG4%#j~ziAcLHmdWhw$+f^CcVhx)9fE=Ari$5sskNnSs~KmWd?s~(fxdyw z@pIt3Cwqv^F?7CFsG@(7aTZ}Wa7y2{XB}(@(&>l`p+T-)$q}+u+R@Q>N^9Xc_|^7Q z@+>!cF&h`Irao!aJm?d`LyMs!^-;WX#J#@v>tH{3VoJ)vF0A}YrM-c#dQC3eF0$3g zzva15r-^Gla%3$CjOVEWh^J?J+n=GQXLDU?`;spoWmE}7{^wER z3gkHT*W8zqFC|?!eD9fn+;v4T4MGFR-C;!T4tut&lsVRIJeXKfaG($VoJJHLQLCtv zi8%E9Obnf1g=-=16^RfSIL(so(xo6yVU%_~`Q=ETm{b40^>Z9SZ#P-bo$7$bo;c%- zs^7rWcOiWokg4*eN&$$LC}66^+r|1;vdO<%q98;|gjvw;UB%ep=S*=ML~aKna!vk5 zF5q$9Y`=~q#Nqe3 zTH#wLydo0%PfMj?8WhB^Nx+oOC;i!BAb9Ii&IByz3s$6EY__+?Ay+W?so!t^cp0sh&J$!sM*%nnrS^kGs`du#{t0d@h=}pvLL0zsw zQ6e>>D~ecKXwFxo1znL-`2BN|i;Tyicp~TGT9h-xkByAbOkFsiMYK~;9@t+dc98yA z-=rjO5bAjrszn)=koc{A>HM%Y&P`fF-Jvs`+6QF@tAGh2`%0LQ;uGlHmZ$4Z853yl zVnBNr47GO{Ph<73GPZurNDo13$|Adz3 zg}i>U?-UMUTS2FqyLb>cK;0BYH@$L-G>FTCr{T#m1T(O0JWw&u3>$MiD#=k?Bh zQs3!oN0M~o$cAi$l{V zi5q>2_X@|6@NDt~vYyuNiq$$vOq_Sx2ze1<_t9tI+)C$Bc8XAep{I)Bg>2tX$Hqv< zrb!>Bl$vPjw2|SP^V1o9>+Pm)QNZ&NEuE3OaMVF))PZE|*%fE{Fu9a?P2Wam5dBc% z0{vq#;vw8*Wc@ol`cgbuqEQ9zVPkO)HRn~ivWII0j6Ak4AEtW{4b`I#)!$S6j+4K& zXv#yI;qaK%W?Z<*aTPUb%;A%bCz*|B)V~aH#GuTLvLckKg^ShN{~P^>GbBl#0bZgZ zZj5y6f6sk#n=<#c6}fcnvn15yZa1-?u{B#us(d^d4o`18$Yd`j%ZN}ZiqujJ7a+&v zQ&sU0p!vKYiYccOtL>xzj8dp`SBx3Oc029Z#S`0wj4tq9HSOrHP8SC{Z&X^1}K?yXEURg-Xy8{?DQ@NZ@M-vs(m z1{7&BhbcpWi(P<=U+H`UF4m{^2;?~)6cWfF5QzB%bPyqQeELU+DbRtA(D6g>n}8gu zyt!@eY1s0t94cf9tBc&bKsq&28TFB}5WF@wfMW&dAVcU_`A3H<(18JT*e}1TBqNK- z7p~$-#z0sr{MT9y3LWZW2#21)G7Co7D&t+&=o>*_C_~Lz?v6UtU{-%*!oQg;69RdR zK&eg9Pr$7L2)DWbw@$}nJxTYmLRR_(3+{B)xH%n-kI+;4j~>mN z|3BTrAMFBCK%8h;_n3{u?hLCf9iDPwfA|P&?;bG;Z=mLGBBg_>k`c%|-Mr z4rC1#eh^ry>42SfXu+{MLjP?QI>IW4otZ1JoaQBWSwGzWhK0PJ6Dqz~xGV$wgVJ&D zU`?ydMu)CKT}!-Yhk>FqN|EY6QkdkC>+JpK0m>-Bh7z0aMhlTr&|ixV zqO)N`CYzb6Gh-*&+j(!KVLR+uyYVT)0@*_p8y|}OR^@Ab)E{aECJMyvOVn?An{1t} zJJP+UGF(v13Dgi?tGWG;n%hY%keXwM+sf+>Lfa@A-OXY@acZllZXhCJHfb9LPkDU} zgkC3?Fsycq@wNlWE!0-g+dW!DxrpdgXT41YgEG!X-~+lqO#jD?f_qBeaXJA%3IKit znGN_+Q5cq3n5~P^bD%L?kk3z>QA*d0k8Qm)YYG*Y*#^2zLK>Z7~W3KL_s|E&N^i&{} z`K5RMX1*o{eRh8z#4zSQ%+?dC6tn-PkJRVP49b8TVz!Di*`)nV26QMlFI5FvA7O<- zP?7KSB`#b8sdG^PKm@VS^t(}>Ab|XnMObKmfqcUJn;`@L&XASjOyT1}6tV?%L46SV z$^Q=h>uGKX)EBzdgM2RkzmRUmHCm*e6OG~I{HIlxWp@#N4f)5fPyhP$zi6x;k%z!3 z{~wKAJH=t>_y0qO{l+yAwto{#c%j?DB)2}dD6Dq9=&l1X3mPIs9{dfF67YYGp#Ydm zKQGR71dOo&`Q!iU)w!JhIZut7_5WtuYnX#q8pHL#Qpf+z(h~rZ96!kMe*;+yFgljp zE%Rb>$a8u9hlgzCF}8F+eMTH7F{!%CE8!*>M<&SMW{qhmB{Kdel|&0XV9Zbp%=KGZ zOS2}J`v~2!jS9%dA3-)3FOv{=nE4}7ngn43ht?MhL&=MQNM0P7xz~6>HB2y!eh-Kv zs7cR&JJdaLm60p%+l&mHYDlBNR~RHO+E4gbX>8pARF!6VmD(EEA+(v`a4qk?{j zu80wI^^nSvM(JjMfd(;S$|OXtb41x-B7BIhJ|XBT1euA{^{EQqyH8?Gd4G8ZOq0)E zRcmVjdNclX<@TtX-n-55Kvy`XD);9|gICS9LSpd)I$qhZfn;#SgG*lF zb@~INHR{RCDdY%)?)1YlgZgrV`e^7fdpdc0pPKN^m$Ex5YY(S0tk-MI!L#RIpQm0f;3$vscf{O;aQt$GLxAaODahIYdHPU))=r#%0x_Miz9Sr^#e!IbK zBszB4Xn=o!mnHSxam)+b)^$pEYOC;+Ss6Mje>6;`5qc)Bk%8`j3FkIA|JRd&)63-N z@zKj|#%=o}EQ5zNTwl*P%Dt}S;pKl)@wnt$dePfYDb=i!2~)pYnzx-B>;1e+nO^wA z#b5@;VF&yXeLMIg96liLj%;FEj>K9{_wujE2$e|9YPwpM-#E}#~j zwS4`*)Z##DYaTp$JT%a4a92l<1x4Oo)?_d|mCnc_cm^#rDXq?-H&hu|LU<#2y5!@y z9sv>L0m8X&9)S-mt=Ka5JPvsrrf13=rosE0JnRjx2bT=-nz}ieam6f3YvEYG48(<15`HvsvCSe zGedaQ|BJNTQvZ5d8|o;Bvi~`2ee%xH(X2zVA;AD&Brg*7tyJ31-wYkSQ25Ck^k1f{ zeOkOY4kZ4?D@*WN!W@~8{iRsqbtK(CPD|o!=(Vg5P)xW%J)-k6`WDsj+I1#KI?~e( zvbm*|8z))>%5W2ytfJiH7DR-*ylRRprhBA;6?}$Pm#QY}#%v=}o`Mo0rqw1bzzi(j%ub;`-6M5 z0wNh;s4am!H|e2a`#JdKpTr<8M-A8F=>Y$gNXAm3nR(m3G&Cqa+V7_`6e_1z#%0Ed zR;F#||9t-E`tv{6pR*%TU8W0v?3JoO)`4Oc`&;C({W$BOB+^^sL=2+2UJoQFcPdf+ zssj|$Lz?csJhDGPq9JV}FoD$9z2um#l&$3?M2!njq%g6dnL$OQ1;t+11pvAcgfw2+ zhZ^Oumj3cOtlM4!cU+!wn>X+T)@InrUT`6D5;LSg{Qr*8DEnKfih2ZPIWKeXtf zmdkXW$aiVrJxI{ZFNOHr409JN`=m!_2N$53XKq~2tgcJwatxfr!*_TB8Q_6@ZGgt~ zjcZMczdQ~l9RBrr$j~5|;g-805;Uz8AIt+;yPcl$i7B^xyOn#_&p&(Hn@2|uf2QDx zwUi4Ecbf{(loHfd=mVKtUuDo_yRg{tTOtLO8}p}D$EpvSZLQy66r>yOVWFQ-qsiW5 z-WIe(N}F-G%rYZ*U8auW-+~lh_<3sIOs}$NKMC2wsP@=DLYGQS8S`i#LSRba0u-DuCPyTNh>N=%{YU}Sh<-39~*tlO9Vh7%SG^KGLw*Ljkr(V0F3g=a=EdDRd?S(@ZqXm z9*mYq;WJT}#byL5IVA*JG@(c3c7aUX%6|Q2iwz~waZllCL$eLc*2^4jjiqF}4>8K! zpRZtYOJ@ZW2>DojP#zjI+!VXeuM=b7)`RbT#sr)PTaubQm zy`WLPt-;3~o`V}dUchQy2!-PUbl67wqNas~_g|&8ZggCjKeBQ^>FU>QjHHmsDI?gl zkb+ZWKmRmnbP67Klh-aWSZ}cVQC-#|H2Nbn?gSrC)DK$isa0igRoh~+ z?wOFUo|TGm1;Lhi=+Ty4pyr@XyHk_0HfbPtMuW2U@FzozCl{W;@Y;T%oA6b()1P)U zE>?#pKf!EpDjCsAFq@VxhUsPNdYh3W+OWfyHY34XUgT(7hf^q7gUoQMvY!o$KTD%O zrqvl+D-RAr`d<8_4}<*_*`9{eiu)9K0HM#g>aRZkPwQ7Ej%eKu8&}_kYWbaw+k}5D zZ~mejHfp=_%|Xv2t?QMw()&is&34zapsR2&qDGbUO5cpt=6pidS?>-NNeaayr>ov76PMyOSAA%QD$~1RPncXQMw?HtC4nv@#a4A^ zF3#0jva1N2>On@Oxy~?(uHXci=Ov6A$cPOES=cje5yQY27{v&N-vewW%LI%}KNES}Db1jQN$VzTHGVWIGJQm@5p^LV~s72E{ zD`WW?KgY~nL&`?kHPUf9*^KVi3tKc>W`xY+S|)9y56LPZnK#-N3qlrhEt9dahGgB4 zEF8_24IzVF%VcfbT_f52>O{Esikft=J(#hwXSe+2kE*JEk zxHR6#0j7yNZ)32_ttD+TJ6~B}*u4StW&NY?gd{~jdg>lyeVTsswZ6H3^m(qjH2{5G zeC`eVS}9%2vA!e56!pYZ)M^pwujpJP+>i%?S`FZdmTEBTHQJJ&3|yi{NW@XpF{_TxY<}HBGNHhcx;l zG#b(tQB6es5Yq^aP;9?vE=5r0E$VVJXT3(QhQxZV;dcIu1R_|Dwt1qJ|T}R z_2msVrlLFQS11E3KFK^UgKWDiz6#$eTGhVo{_?4ie-~qDKiP;1?2&)hJ)%;Isi>^B zrv$@luPOID6bRx=YX&Za?SBO|OmA?){{lEY|GR#fVc<_Ruuudr=e& zvmRs5OpMq1dqrGGB~Re99}%h)8oC~z$VOC&OYt1wU%Ot~o!Y9N_v6W=R1mE{foU=h z?vuf)pLTfuHase_+8M>K*@H304I3cvs3Gvcf*g-NY^n~;!yr8BR7;HrJjDn+ayJ&f zdX43$*Wp2UO2mX*5P0+uc&4!G%YWucMAdW4Ccf@4+odmidn?7|3SI5VDH7jW&_@KiXy=2|8ZE zU2MKcYUGj#g)2m7elC!r-!$0AY|bOnz>w)ZhCkru8)Md`3R1y7RzrRDhD297+DUDd zL@bX_U%5QtMjrN*3J0$kO-a1RSoR*A8*Ag_DyeLCWkD!EuLpD}6$XwWGT+9V)tp_%$Db}}AFf%ATsjdBFN zB`GA^@6gKvivP;k1By{^PHxzbXx4}ke4GR*Odcpim*qNN18c#rCpgj69hCCBa!L%LfQx(X1;~uBm%f%6xh)gQ7m&49h@Z7TXFm2Iy zdxz#Q$}Ck?S)T|69jov+y*FBkRPOcOrhCiZNW*WfUzIE=*@0$zcUpXDZ9F}k0 z!0*C)o1ufi$$-Ea@bn@=->tU(zCFOH61QQ7!1)G&lLX6_+o><4vZ;_BqmCF}ZR94? zSxuoQ8S{)hg*4{)9%GX?X-pj}vmK)hyqaR0URziEfnx9a|Do$G;G*ihg3+EghYj!b{Q1DEQ=hiLo}+S$G(?s2|vI@GycFf60ee8G;sz z%LB!TWBVHWE;0PIb@mP~t3s`&vPY!Kmol2kiYw7s8Q(llg}gpy4abE^l74x-2)@ye zDv;`De#03ite&{q>5*VFY<-6Iy9GZhZCwwY*8N!#hxp?ll&Dsh7vUlLy>9aNN`2@V zgh!fj-kxG;8VBv;p+ECG;C@Wf8nu%ANFPNB-znXTEOy(cVh~@44o4nsX@{EIm%f1S zc?(*0?#!zjezrVy>9^l37a`(oyQ=S~W6Ra?P%QL=%HJNBpl~dAy;U$oNLKpPv4?Ka z@RHiK4`Ev^_b#3*5f=YM3eum&ZkAwMSz&;etYM?Mob>6bs@!<15%UoJnXm2HF>z~@ zTEBzzJxKeIUur(Tn$qIS+#nWHM{T0Df0*!KqBsYPG>V3Z1tt@p!6UdF|^ z{jXjYlY*OzTQz-0dCD8@f*CsD!5Bt4vaxWUU|nRhU463(^|D72DTaWR9&aF)w>I+n z!nV+3QhUtQ*|&`7j~2RBz+w*ry##rAX0>XfHP0livh8^cQZKCB&KoyW8xyS6Z1&%X zG$~k_lO+bRXfTr6)2GfpL|Dgft!T?yO9-n!+=|kxQ-ZMKBCJ6oO^@N$xg0+O7R)FT ztrZA0X)Oa-NiO_V@$rDpOlb0Q?G&o=u9l0`I;-HYwS8kmiFU!o(S6*_(_mQ?pfpxy z7GS`F9W|qbu<|3U<31k22&+sUupWxkqTE_h5mu^ho=RW^r}~mH24B_Zk-qa&vSR*@ zlK*#k=66+gWpppKiA}zybdgOzfv+7!9;v>+k_IppTgq&af0rEotLzx2xe&{Ux}vJU z*MgB#E*5UBG7~>R$q<&>nrHR^%u@}ccPZkY*u%dwVh0v zW;iDx+)Vlpv5!)oQX{y8552S98%+DHn7gan%TG-y#X|1Tkyap?g-~6zHudyk(oZ9 z0Y5=Ok-Ft4xNjBW06!sV>HppHdQ`;!@!e7%qz`e4aDs=Co!gt~UyH48glMIYo2dm2 zP5s9=1g~kupS1WdQTkRa{f}t=Ut%8@!ddtq(F}+u`nNNbz7=!-Bbxq?D3X*Y&=!cc zvAm4*kW{(>HD|V`M>2f<*alcLO_>I4`p<4wkwp+h&EFsw(oN${KDZm%`aA{_E-Oo} z?@z6U1YiYe1J?cuKc6Y_Dm!Gf2fzxO5TYpnGW!Qu6@B$c{G4;JAv61czrF*kr#eesDW7 zICTGRE-!<_-Dnp+0Y=o@34o*TpGv2UYk7bF&(E(OzR1SA zvV*JX^EV6QBO4o2*9DVwu+G%aCQ8V33iP&-Kcje&2XWBcq_cZtSac35KF9vR_ZssU3575w3TPG~c{Np;2-^~{ zX}niN{@CJuhYns*%bB5=haTl~i_!KgFj#a_ln4czKJFXPNasX)khy#>Z z@T_Mv!|3mZgv0GNf3QHghH=rqps?$}HF7?JQnKtVu7QA9Do+$ZD8>xW2Fk6|){>;sFXGmN9-?F|c%SmT6xS+DOo6x@3_GwO8t0R(F{_vIL)V<{GF4AB(=^cd2Y)Fe!|zo^1t0BW+-|l`&_b z_%kJ0Bbd0Rp}4=}dGrhSN?hI_aWCA#Xau;KWAM=m3O|<)&f9gBa3g=>w(lxQ46J|R z>i{wLku~{FfIES!y^A^_@ppK-2$)xQ~9+zVN@TXQ2L1J)A|m zwNh?mKW^u>{ne?2YF52un9VWlzA>xbP2&)XLYU_AQ%+`^hw+4;#l{wuOvDdzv0H@6 zv=T~O)n!p|!!$D^A5)T7w(uKS@C|TycUv@FzvIJx^#YI(BX1`_LSmoqtUng{z^!+; zED`Mq86YYgBK&};^yfM-F-TfMzD;?63nvhNwgXJ1AF=|N%JYogvS*}~NKcJ8xF7bJ zQno1sJFuhpXAr7)S#;M_q+9($3y&T6EzOkUQb3X>!&U3gX5zca}Ngy;!|5LbT$pP0S!zFGtNrd*%zlzv- z)~Ol7tW*e~8Fu!+q)e)9`z-$$8PH&ReM2?nL1;<0+G~?`xaJAh(oi>e z5n9o$_Qqrgu0_MOGE`H3gw}YgNt?{r_Az@j3Ucw}?f^n!_mVga5E82&M>Vr9fRNM- zfKBE?NepFCmsw_vmSLkmH${wl7$79oaqeN?Ij>G0WPNF<8B-;Ef>z|5FPPNj^?@iCF4 z??u9r{|Z<}?v)Py3RWhk?>(~#tPja(PY3}5c_#7%Adu9S`6EJt zBhCjfI&nS`qUjti9c`Uv%I)m4kVXXzweBx^@ zfL8b!q4D2pTZXl=x0)>6=Y!DNVh}zQqgu9GjScQ|MQCqsH4>xRhqv0p*c>FsJHhX8 zl%;q|A9d)*Ej=!@JCP&xX?646ObHLH;9p>rJKx09@BySkLt_j4VKG?wDs@-yd4GGa zO1i!~7HfZDIdOmjtc*FJ9b!puYB`9F?$7B#gOxd@_VqBeHy?l1C9pU5=C?#!FzUDm z^d5%kc@VyoR|%YQjMMiYT;UB1cn6v_?c4!2L#)g!gpGj!VMChAZiUWw^2(l?)cXiXv?M|I<@a(Q3ysu7$sEF-n&CsX}Pf; zpoc3A)GFLsITsL&V+E_~Xz%@dFNiJV@pvK>1q_-`AT?hE=BT1kqz{F0tNy_gAr&>^ zT1$qA5jWZ088v5=a8*}{X8g_F9P<4P>49Xp#*Pp(qh2HOMhV~_g$!E+7S8jXy+hZ* z)SnBDKA!4HwX2nixS0WrQ_$;sXXaOR+2PUkBF2*fjg&L%-MN=Md%=y7W2?jnaMvY;m_smUJXD-% zuwPN-r|DXFD=JfOm5$_8XroB|UM*;0G^KnG(8zm~R~f__pF%LY7M&CLz5Okl%o-v9 zNC*6bTSOS}kKb_qp}IPbglfT|y84~-0cKvHTN#p~Vn|^-_wuY}*_#p^O8o?|$@D4o z$^#>{@W+CRmff|L?>ltKL|V8FI&@#7XxvqL+4$R=>p53B4v7X4qw3ym$-VEK;f~MY zovTv-G*bGFtNcBU9vNj9w=s<#uu&symFx%`E2HYkIFg-(z3Rz#&Qvr#!HK&#rYGYs zB^{d1adm3DOTyU7-F=@lM@z`$Wu~htDlok+plLcsO)Aigh?Y)HT`kE{P+$>t^9F1A zx*zWWs2Fx-pv@#Z$Bc&j;AD71D)YEF-<9Uhj%LBkC54Fvi~+=`&$9;zUiG$)sezJPW(rMyNu%-AoAhM?x!IJ=eQvoVI)+>UoUAdkI|-nU%E-#-D|dMb)Z}yC>>Gtr}%AMhv?oyew&W+I-+9>9fI%=u$RJ2MIuQ2;?K@a}Z; zj9V7@DUHaP0|By$t|yaZ$wU}3K)Qv2f8iiEIYck>J)taxxM zdK6R-VSRGDwDa*Om<85)IrJ{=htHgAdjEU%c(GbjRB2;&sR;mup^x4D0stte)zA6ttd6$}Pm~KZgw;(6SV5qaA|GMJKv)6Aa0OO6j}-yj zMDS@!zBaU+Sv>}H<<_3F8h}1n5$NM2<`#YED*l5$_RIkK5JjMmP0D}JNBY0$qYI!9 zNjUmY8m9)Fruab=R20lJu@_6U$=1?blPFif7cB?Y>&k#YA4~tDj~C-r*(a`W^s#v< zaLZxja{l2k)!Cq#wj;Y5l#O~b;-0?;PelWV^k;0`Rf{Al2ILH}M;dCVv$Yc&aq{IR7=9~6{jIpr_m|BV4 zWr!&52ndd(gW$*)dRx>)>SS+523|u*TalhbY(=}$TZ4@|XzL(2g3g2pjzAdm`3)hD ze|sdQyeIx#1A-$hkUS6^K{5y`$vpVLI80$;0l|@$-^5C`mLNC+Y+b-s{u2a8ypit8!YfwoDr;MV;E2z_?=N65rWbH> z)AA$=H1f4boM18)1V{AkopM2s(h6`2Q_2Q{BS;2YN*&;eOAyT8iAe?TiRIA?2sd5^ zI{W~^5l%S|tfJWw5FAn5N&}}88FCg_oolwpc74%{T;T9SvcoT0z|Evy4rf5;P=sF( zXUK0~U8mvNEvJCob|pAd?k8$8I<>`3grSLgBI+2*3ei z9srqKw(=Xpkx4%sa8O90-vSO0^8m;M=^a@m*^jv#0AYM6lPVDveGwH2{2iyOhF5n= z;T1*0L$weU#Sj%Aw(;A*k;xx8grSn6D@H(=TV#U$E~yrdOzhwg=0WC51TrDOML?L( zrJ-|#n&)ra-6q0~7zz8-%g7&+L2( zf+Hpz&Zl5B#wSuaAUNW$s)741sd*(-&k_~Kay3+s58GKBbptYioHWe9_@t1!W)`y$ zV3tZfQ#tGbcs;*=>*2FFV}Rg@iM=yMAEI6t2#z4?k^Nj5d}oP@X1P1K@PC6N=;`Dj zIAQ{VBb>|+0zhzNIA{?b9O19x);lT%n1dXFIRxOCS|qAUM+R{hbqNk9A%%vSfnb2(Zxs8{sGj zj&SHx$-pZTjRtL*fZ#~Q;}=0I;C(eG^JvdKbx9B$i5+qLvB)0J?cHKAm; zVWLMsaKy;raZybW2#&BNRFr_>%$PuM~;eW_VgvI>pI*kRkP8JN}w;D9xV zlDQM11tYXN3`=&nW&qc|QtI4lAqZ_6V}}E-8Nszs%8*+v453|OSaR*w?06zsT_avNC( z2c5|NYfv%ptt8{7peZC|>?`EdI)0RHn~x?a*19aI!rUiBp#2^xhiyulF6i zWGRI9&bV!_p0kGbO$6F7@4#=mM1V#<0{kJ{;tTLc7rob!p>3lyvB(0av9(PyTKO*; zaXwz8yV?N!jokT+J~Y@nP!fG@d%eS-eCQ){r#_%2?>Apt}9wa)Y2c7_5KkPTrpDDvHT z*s!iKFjLQ%xxlDODOiu_rv%ZD+npIwmywG2YCU*Ar6QLOh<=O^{czo_qT5e5=CTee z2K|`$9Iqn!nM3rmMQFkJSA2-ULr0K?F_#YHYD&f2Y&&upR4vf|b||wJ^ZK@!t?Fun zX6KMMT5mxHp~cdChw@DkLc7+w)$0G%nt?WSt0n)VRsO3b04)Ws<-_XS6jht*?u_ao zxXA?b@7<>0yg!<@{)ywWjg^3@08Qy%EgNW_w;Jrn0GY@7>c=u?yXmXRh2hCy6HzXQ zh&W=t9+{B0ziSuqoWx(};)JJe#YnDNl&Fk~d`KhS>_F>&3FioNgPmM()M2Id|4m2C zn}FeGI^6JC0&c(!6(7jOp?sH6LZtQ@WhBHbmxv^lV!WH*;^klw!Ab_dx3^{Igf^%q zhF~pGaMps&SFNfX0RkXZk6$;>J5V#4M9i5 z4^22lsLiJ_t<99IhTa)giINVt0^tw=r)I zX3EsOSANim#~V7CLJk%gD(h#(pTAmss2h?`ja=NAt3 zddNEB7pNOg5jLzKge^5Zd696gVdp2X(cov6-P&#mN|2c5R{%nsh|B?aQ3w|@K=hf3 z=<^NM2Cvn~z>EdF&o`pe|1U^_RQoR^@kT(BqFYE3rfnq-f*$KeV1u9?GClv$jvsU} zFCsyvq%Q77Waa;1Boc-Qd?I0ZOIFJNB`ZgEwbme0l5XC-nM|$&ILL@* zp9S|Ij#CIc3Fd}Z=HDW*%roXI9ptV?hz_|A@hN{3(F=FwYGcc`lnWQY?QPUUq{E>4h+Uaq@!EV zw@Q>lchltM7ICxqcln$(*l%p#>-7HRNE=dE7$Hyf{otXqkg;XHGpCZ2fok`^k0qak zABCV&8Ye{IJwLa=v&*8Lwb?*fUek%@@}0=`k_CaRKS{QiYCs7-r*K{z6|tN(qaabB`+}`O)8XYe~A2 zunN4??YBKKAL$Rvtq1F>Wlve1@s?M<*-bRkNK3Ea+Wl_4vr58>e7r#YlVeF^q+PF5BdFRLzOF(}5bs(A|Z>gEH7)>fYl+;Gk>w5zqOL5J2R2g(MmoP_0W#4p|kr`-;VSK_f+SvT{pk-@%<6z^T14EZDh2mI!6}!*+*sVBx z`&B!d{7}>~iYwipw+;_j$&2HyyLK(kooo;L#@jnS?I+a}UJtE|!!GK#RD!EI_ya!N ztmvJc%27RSWc1EFLk%BpmkxYFHT5O>m&F_EsJNf;GFMQ&AJk+iiOG#F_BKw_9v!Rm z-}1x8gJq z-j;T8Djdgi|Im2G=>!Y7fQH6tHlW~C|?;rZ6bS%=>UZ~J0TyDF@ z-_ITW>-AxOp3YC+SNnx~)7k0YZI`{{(neE$UICo7OU-D^#e16FnT;1glc*F|&~}P4 zrkae_KqfIi&3JM9))ew)tLDhcC21BTl2GB^E~|aDlKVK)=tG`+WiB?p`h2Z1AJ|v! zX(seUq}<#1n^+cq$C>kY_#MH=(N9dBJbF4T+7C8*O8ehc_!&2!sSBK|9g`8DZ8!Pe zKbt3~aJp%9-Zx{FHWhk4`PDZ{#P;M_H35NH6rwy(}$XkYAiT2q#ZnwY2Ru5MD1g?hGGslGcptLI?iR z4SfG-=W@DuzArpaeqD1jRFUCllTDG7$gMP>#4i4wIrB#o8UMO})Tv%G?D^Ly?c+#H znU1$p;qto1F4vbQ8&e4x6e~v=>xLBzm$R4D0W1NHyf8%)g1{l^`AQGtDd?v zUb;Fq)@aR@kP~{<)z#Kqd(_tHkv5nLg_*qOW_?N4U@99zThIVe-(MkU@nvL1BGf)1 z*4M)Nc(C0O{Lj?p$rB#KIo<4|y&M3PQge9dEC>en1=aj5e@Z z;YeO%{$2Xuxz)na>gJ?T=ltxPZsG2p^&V*T=4y9oXJu_mMP23cdSFI)W`whDaUg*U zh3p{&^5hyqO;7diJw!q*yMHv`OCHjzwShrsCyBznHUyHo2n#njiwg_t)t4N~xM#4KI@Um4ZpqNw4wd!@i?)m`k|Ia=VNxyrk-}XDz z;c2N|?QsnpBvdzM*48x(HPvm2@gQe_Sn z`GKp#@jt32qM)O_K51I;Gjd2y-XC#xE3bHJheDTN{7hZrb@>k(5?c4dl?FlACiSfx z0RdvK5yA6`t7X_YtbKFW6Il$ec>?x;ru9j-ZK<~@t)1-DE6CfQ+Ichylql3vAKaex z&~_vBmgDrYr$An!qS9b{r(*CK;`xa7*k?ssSl|09?_I8?V9(3P>(&@Z)qT|mVLv-O zHr^dwJ{!9qMRq7qyW#eXL?j-1U~k5BT5qJMV-dHHZmg$e7H3nE0$Y4@SED@fQK|rR zDPpCkHT~j|W}{nWbB%QhV^dutrW|SYQzG;EJDyIvJpn+%q7 zu8v7zZA*Tzwx_WtMfodtu`_d3AlU1|2kh+$N@RwrhOxlyXSfUoO0Ib*)5B?&e}uUhw{# z=e>FISPFxIic+3poT$1Dzwh6elh6xOWy+jOQ!j&iNpf3Ukq-tMa<64SI<}A!8?K-l z`uebCD3EFX*F*rey)?Cy@k?GjUu@&{U7mNWK9NHyLIJWJ5SDb(^^cRgnB^2s$hCV{ zyU@~%gjJS>oTEStVx|lV!tQ53F<7(F~)SI)87Cb=QXYG7LxWG+0 z<8}6cq|F>A*XAU*BnQ1g7G<8_z8*l%Kj{*!+~v*XOz?1GN{tYx#dOy)N5L1RvBsJ? zcM9<~yO9y86wX7cJTMwS{XaWXrNo$m%YdXt)8}HNnNg!uD%>?|$1rP0gManYrjU{3 z#?tXDkYP_l#N~SuSd4GhwTOi;-MsLX_dOUS=2(@`_N*#c zHgKvc&wSj<6%#) z7V(!MN9)nM{!zH+AI=EvFW4!9-Z^6~eOi2!o-y{s!9&yEd)T34-{OmmXAb6+k`|Q9 z<4N{8`Gpd0N32)dqYRtaD?HTrc7f&(I5GkiiIS0j($&a)sIg;~2H*9LUE`|9-pp#G zoX)DH?99f<*>N6yqDWabIqZnM-?GL#z5kKpR4t3bBF*xmxHeH}-hp6#X`Ck~iEZ8U zrPpab?%iO+-`^dUW;$Mb9Tbw2U&?gx-0aLvm+EZ@Qf$t2On(9|<~_9m0++FS(1QjY zwCjt_h8eL2ik<7zBb{7MFZC-)`%LI~$IieC?7iTXz2LPy^_4xxwLQm`Jis?_Is4u1^CRo-UW0H4glnqL-$5UF$hH zq&6vB6}c?Bufj_+Y}t&VYEi^&afq6rEH zEO+zyq$Im`etBJ@$QVkQlrm5o=cyJq(=_ee7cRv3E9qhEVYa>SO45Mam3vxp3Hbes zrIYL7Z!z&=OPC~rMfqrUEzB`(w`KNd?MJVdbut!@!)^r=2cy7stK_r6kKt_BwfC)a z+4^DYq2LkH|1lbi$7RoxJ7u;uoV?yu> zyL7V9%p+?v|Hau)G|BO`desB4zoFm}G9V}o*G;42nCXOeT~})z?I{Sw%vU|zxzGGS z0Y4t@GbRG7z}g%QBUP8}h%os?=y93!(X8_f{ZeGgC3r7Vhcd?cf%>Ya`*_XOF5&#= z5c?1lR?>Ofi^***p+hAvn^SCxOEK=Yl&^!H7fN1>9KwA96}-?TPuaB;RwC!M`vnUh z-vy@(l?azKY56B_hwKrm?O9vB)H^jg8agQ|+UxX2Rr;he^$Y5H#5!oo@9i6ZnvW>njVQTjm$ZYm@ zRo8C7?ObQU>hY4k;i{t5HRXJ6zIsT-(OkFaX0d_pO6k#}$HBqo>gLi~SnFC<&*@_O z#oUGX`S{7^Dy;p}siR%HD9PDm1&o8F(1MsWhVX<^E|hNFSXAHCb?IkMT!Vj@2s)uV40nvz*7{f1%U4MwG@JuMAh z>xL~Z9?i{dt}a|wcjWBPdEhau6b%Ju5S7&1=UhmV9$vSP%k4}J-=7qsZ90FTiwd=> ztb2Xf@HJ<6pZKQ@xlX_l&D-`xxn;BUPr+V)QlLDfRXJPBwFI&v>$7HLKK2DCD1$}E zE#+xzsu6MT4d%2dAbiykC$^5z+EzkBV^wg?(xW#}LrRB9 zY_`H)?Ne;R1;3|--6h3dn%deWgY8{!?TNJ=SOvEI;w!TGU{>vuvb465gc1b&#+r+l)(_T!a*t#wM=pa_gcAmOp{ z)$sCYaZaEBp|DO-F>8H6F^o_>p(b7SW~BR(zwQ!Ri+KaYX^D#K8=6WKJC!fzWk$vr(?A;=~R*`_g+S>W=*Nc^WspK> z`3Wx!)za08!O-N`q!T0JRKS9^zOL57T`J;PZfiWQZyc;5*HFRp_M7h;ynR_^^k*sf2Z^6oUM(c@vVe;PBkvh*F<9xf$bDW< zPQn&S**Uk%~W3%NW(}%Zi(Yt5qY%IiaKd zxy4kn#x0J!!lngJz)cl&meg)6Nkd^f?~4TGc7>AlSSO$+tjOb z3r$uNh4h{5?BqDF5#4Aq&2Vfk?X)voGcEBqxmn+QI&BuukBj-qX&>>~NY*g9htrO7 zO3Ez|wTmQ!b2I|8- zWq5H_cZ}#@IiAkMOiLmQ%IZwbb8jSY)>_<-_B?COmrez`HP6nOuFkKXZlm(pA|LCn z;H5eXU`)j&|!5v5{xn%;Fa%p0Hn6g%?iO zzh3-dVG$~fH|I#Vj-#uV%E)kfh)Q!~pMm2(RB1y#tK0dKlLrahy&%9kF_;o9!M$){ z60D*fJj*Wam#W@+HGgfsaq&DW5oV2UzMl5v2}r@2f~oSl{@FIvNsf@d_<>2jVo%HW zw#VDvs6X38`{r&>w560G_2$h--P35Oy8>%_R5K@ugrpqtq_aXLNrV7WqYeko`2u@T%=RGNm7db zp{RFrx3q3)j@9#`)C>~15-R6hU`;IO^zo0~EcTo2tFavNnG+S~g*(6BX%uLkZX zfi|sd;Ih=6m$HG+QzB&U>GM8Lk8=N!Wp)A^n^tt>qx__FI`sNGOx(iOZC%mP^(ih1 zjS9KQPwvb^E>@LbR%mogKG!7ss>QfklFGt<#7RYOOn&8m{ffBQt5Y8MGgi#1(ib{v zN`3K~E@WAa*KqN5yLHFPH>{j{&9;%~&l1@U7`&KN^fsi&ry9(p$IGd0tmwgJJ|j_U zBFoGbvOIfPQl>m`E##P|d7SXHkXa?zO1z0uAF5c%EAq`6RbWh!t4~TNpAbg-%|v=U zea3*Y4D^ShFV*CmwaMh}y7JZzbuq`^f>#ho}P>4r?N_YUD>ZK=Q*JTc=|3vygh_CG(rdvNpFl zq%;!nVYG6XmU)^Ej4AlP`QGW}6W+eM&tc3e#%dT&{D_X0H{{EdnM0L@$Xpb}A3+4j znijJ*Y4R4TZ*bbp(YLq!hF850LJboZ{&2&@i?6)L}2;+=4?gk3rcRI&_8OEc~Ei ze9;k=xSP&W7sCmn4L&_mk+|aym%%XeHYlC-%f|idpoy6Tij<_?MmPK4qzevv$2&dy zC0s(ScjTNRwnDeBCdf|m2!u7Us5c@LW$oWVK1O7PMYroETws?hxH}#b$F0%`3`je~ z$EAUS=;_BMb1PO7*hLx4%AyG~yl38@&I>Q;O2*+3VZ4SLX@RkO zIgHT?FS7Y;m6`oQYk%1~EwVX4)>EL$B)W&fE|PhwOPK-^cV(N$|Mq&Qdh-54K;=^6 zjiuMkz(`n*F>5KF7fCYI(qXrHq&BRJaDe^nrByi%tK}rR$g1b|?6V=k^Rx<-As7z- z*^BjA#8UwUPeo@{ZX2X~Hq27ta(1r~hR(iMzu&Nze$*5^=nfy+6+Uz=`ZzjdRnXKi zY7O@H@A<&}n^)Pe#{xS;!=_$=vWWdm!G4w=?Q-uR`qPn?2p> zIr9qieq?2E09C(|sB)n*M^N7L&XbFb5=08?)83S;!#)z3$6=Ua@HZHJPRxT_B-yF^G zN3HS*N{rC1@$_U_EZw2J2a&TbRUZ_za7U{j?_3&#SrZL;X$M@7|BN;`|wyDKyX13R7Z;DS#H7@px%8@VZ`?Lk(CzeLpF_sCays z6hyhxZHDt;=3DY!QZhOD&C&MX^$&X&eT5%$mfw{4M9?)pdXpSb@SeHJ>Jf3Cjf%xr zz4RO~+U1}2TrA27_ct`VYd!$kDZimc#pd@KY+xwjX=ssG{DyeQU zvo37kYlb|iGVLh+LKJKJSwpr-bI;*2Qv)sl@COTCO@ddpHz~%F=Vf=uKC)+%crjRxqDSj7WGAKhHj4b zw$+!9gmSI^c#)`%yl%1i)+y)rz=^<(J>prM6Ey!P?M$X?skHE330j77Zx-cu8~V?B zy}pl7Bo|}KT_K({UCN8;8qmMCN7(iR#2HrBmrX%cMeMV_S2P|3v#2z-6IabQ>P$+e zvnA5PUa-sKZSbm{2(T9E3gg!54iA8jY8SVbD*yEp;=O!9qN>4o9JXy1zZ+w~A=c})r z2>w*|9QMTet#A!^%l7el27dbH&W-|+(q@y-A?-;yhYFIR9s^2mQ$Efk#^-;fz{XI- z6{3Q^ES|<5rsjU&Gh0bdyhCIg`-%2bp*`d?q-Gcb35~@|`DUp0u=49uT+Ngg#-~F} z!A}9b!}1^B6I)x7N1_>Hp2ag8nLFH(l0)&> z-Wb$mf7~Fb0)$CaYGzvo89Z#h62_B~#_eKsTXpDgKami^Z*`SQwU3L>538enwYI(r z)A?;>x_4L(yV;@Dnw;BP*h_01tH_{eCL%9G&barhlMAjTR=ngHqmn8Po@1~s2XXt!mXDZQp{8}t_7tX4OLDn{?aoU$b);xUYQ1kB2Q!;J| zzV5iDzVfTlDZ6hZcI1|PLUl-?l#zGmjmDS%?p0Bd%$&_UTA?()Ozu0BHtrK=xha+= zK5oH%Ww*nl!&NK8SiAj=ldV@YR5%|EO^~qms;qM5{5J-#uT*j4MLun{Ax(_n5E>Ze zU~RS~wd)DbvVdm!1rpF@!HGR7tC=?}?!-7>?ZTJjdVEB~#96%FTk#3iBZpE(m|IWh z_w1)bG*cw^3-<{3sofkl*{fZ7bmQ8j7gv95c_!~nl{!A> zHhap)uB2*a+WBRnoc*Dyb3ko;1H zq-?T5yDwxColq10^@6`Q4sa>*+em7o1znB(FpJqtG=yyP}2ILPAm%q{(AX6)R@T0zUNfSm=Z&#h*BZ zJe4%+eaYOcC7qJrDKVV8Goe&5TLj<19I=DyzdI;Nr}T76$meDaeIUvU2pCx!hn|Y- zo8nm=tiM~>1E;39)7~?6d((G5Vmnyw{uRqs_7x9>$lT;I4?Dy|&neiZA!f7H*2KRO)*_26mRmxa z$rLflpI|*#6?tv#eNlv zM7)jjDS!7iNelI1H32iStEaQ$g=gjOX4rYz#g~hM^^1d%*0Y_#@ha;K&Os3-Yz}X{ za#G_yRFib zsQi^eu0?9}gi{d-ExefS{`VicFI;~Ys^5L}C~u#g8N33O{fT#;z`{|`o+*BzuyeoR z#j=jSn?Q?Bcw@ff#d>XUU~PU=b#8TFa2B6_6kJNux1V5mK9Ep9KBP8TaP|%*;JO;7 zWY_on>VxBmRl@WOhi21uuLf)_o6KfyiguhqiovD6?4FXC8$wSn2f%F3YWq%atoO7M zW_Tkknuki(>!GcqIzbXB_~ND$BuEQX3pf;P5Y1D5QVa}K@$GO3(fz(;lC$RdUN=WI zH6s<($oRNQ_2&k-BCC1Z0vZ}q<2rM18u7V)p6ev%MdmBNH< zDqh=h{)@}SH`eRr?K>~uXfO0O)U-Le+6HV*d|@P|r_o!$(EHd_ZZ*`^9!; zowk#}$f2=DEEKZHkX&NpUm~Qp!FgTm95~LvRq6Uo{MnIMusnC!_XnD&5nqa?A+$dV z=}Vd>y4&)<$4}>dTOp#uba?MH8O*f&sF(5E7YO(m@*lJFN^w=Zce&Y4W*_)^^S%X4 z>9CfE8$6rGkH(PyQrO_qwK++s!R()gsPHUDg3!phv0E%O%|lq`i3m-(o1RuuR^O0w zl~k@$i`s1$PlDx(aWzmMHV;05ndL}CdntYwp}Q^NqhyQ=dbph4 zENo-0lgfRp5&FNI`1?x(wPjKlxJSgr2DyAPXM38Nh#99W_4M(fb))_j-qcm%N1a#$xY@+e0bIX?VhcrKVbbm0ELd(HXducbe^GbD1Ka`xZHG_}02bO|%U z?#|?P;oSN*`%{i2oa0_8d)@%CK83=TAJ1bn^|)U~*t}`jCeLqwKAiW6Qk~!i<$Q2M zFZFIOmLgl)YewRM$R#sMh)bxCfoiHR=76R`2pYut{oh!ETz#<$Rppn+En1IwjqWhS z4i^&WYIEj9ay)jMYpplkA}~dziW!Z<-RU$B3n#?ceJt9Y#cBBJ{_}MDZ(U0pE~6x& zIc;0r6_LPhtwI!$#O&I(Y$T_M$8B483epE@`M7e5R7Q2=Yjq}lW7rt;nw!007>N+S z*{lrEqRiumeF%`UeG2mba_J*G@aT*D$K)Oa2-4_x*}(Z~cKvQHG(nMG3pwDGY{||j z9H{*0cd7rX=qBEA=?)3WoYvkOh65#xO9x_V*>rn2Mv?yCHPG02N&TO>{-1?+JtAqC zvRX!>u{=khsI*5-zj~ycR6cs`o*$9{UrIsI0&ypQ`i7IT8h4B5C5?-`0`&iv!ySdF zc`kU+R%i%#uORqYC~2eT-BE^tkd$W6}ovm)}>?M*oSGeC-AhOz!S$%^*GL zAnff)JSqDx(TPElHwU)+vDQ2gBkL>q_ttarPVm*?P3X6BXbKJ!;qC17?>i_&sv)S^ zEdkeoT&<%6Z@MZszZ z>OQt&x5_G1yhmTE^p6!lQ1FiJaWpw+Hq5V2vkH_v1YaNzuUDi^1>o`1VHt|XteDSD zMlgJP!J`=nU1PT8eZfryK`>$$yAu0DF+*h1eLJ@>95SokJb8vjSPr*COo&q)p~IGSqNY~O_)1M*qI0@ zKsn*BEe1jP_5%M`qooKv6W%MZ?af8%{JX9b7o%AtWUW;o4}fkZ7HWOK;e||0YJ8Rp!M5ssBQDx%Iy7d zrK4a2q2N!xF?hR^C2XwJz6`n! zS#Tl@B{*b03tcf z4Vjq>M+R;}&H9i?=^@61mKj=6>=vD%O1JmyORjd)z>5aeE#tZ=bQPccg!b%YJe3odr3^ zAD_p|l&~MZOB~f$h{OeYQ~p%8lFM`m$pDN}QDFw=9o=j30{Lzxy0v46K13ni$wLXz zm08Rqj$yJx%-)eMVHcGs;~~s3ERqu{S;&Hs-Uc5XZboR=R9>{R#P^itYLHkDh^An_ zfT|b1h{4ax<7k}U^J>tl{##fzT(kD*1Kst~h_yP|^yJTr?0>X(^*em@RYk>T0`FB6 zPT+WRT<&8N#pm||k^VsV@9@8ECN~XMDF*%FWFNcW0%HPfInS5uK2I`m&BNg<;{}QS zbOMAp#fX|Vug5ZA(+d1xPzHI&jBnQ!R`E!P9QLd64&5)45|jeLbhqZMI)lAG*%ut5 zFO2Wb_9~m*Raqh0hE{80_JW^vKDAc)aTDF1;w3^h35rpStdS}<`8E$pmAa(ybOF|! z70eWE-X5XKpXe0^49bVOdr_EIt~e+sn#DW=4N}AB*IBVkXbj4^QV$mrxVRP5Wl|qb ziL_Tr8qFSzE^$($q|3ks{IurbK%ZWijDk_b%aN+vcEtsWYhF=Hj93*lL6}$HR{l>o zLaYk;;#W7a>3CI?tkqYZu3VToiB=Sb% zhNEb?)~%~ccF(umRD0Ef$zxCrYZ%9T3#DHmO%O}Al_Q%oNz5mN&?ljajA~n4i;s z&sNRhzI4AeUf8y6(=V|S*{8ctZaO_k7l$iMa*O13zax}YJM=ttU?^d9$>0m08LL_QA*r_f^OVGm-0*z1|o1S(U~Uf*1a2{SM;hA&5DB%K=vU z4SbpgnQNK``X9k(sq9E)sR&VLjXnj9)7`{NO=N!%@R4d2-{06d_D=ixJ(S+SiC7&< zyCA$&Bj4P--`aZ3yZ2CF%LxJN0`$Ge0u1Le14>tYki)*4-vG9VGd=gGVS?ozY@4ln zPj!F`B*8JWNdQ0!aN!WO)a4MxX2>4ai3_qt6;-KyyA6sUW(5JEVg&&JDL~j96j$0D zbfgGzTBf&vc&`CR#IOMe^dCuCu!fA7v4-4ah&J8o&L|?Im{Jn&m{J1%5!0Bg5ZSnF zpT|;x)(I!N7$1iyG(CqX;2)jXhRwCxhA|O3TdETx;lYvyO@V{wOo0Rb5o9KeC3z+c zc03Oo-A7nZ#HcxR;IKJ#0Fa1tr;%~fr;#DK*&ys!Jzm;EeMqEIb*vqDxC`E0WDe+p zX3?Q@=Fq`&=F!0+OK2R(%V>xXkP(uzdWWEB7F_i|#w-?9%$km^8dvYw5Nrp$H0`Q;|O}R_!aco+*fIccGvXV`b!hU3{|8_mnL(`b!9Heg=x`@qcu&ozqNLqBdY&_n7k8j)i>LBY=yXN z3wlHMd&4S{pZy?7H2^0~Gyo?7(k{t6sY8~5zau}y&|!LaSkPTp68pD$UB3e2ZTK=k zm0V-6a=HanF~jno8@`wy2Y(v(%qrL&b!W1NAyOSGDWi1DI@NQNQ?dIUVZr4cU_oc> zU_pb|(79NY$^!VD5~E!%QmuVB_|-U~fwJ%`Bx^7`CIn%iLG1`*ps5{@5_p&3=CdfI z%4L>~mrgBK%VmbA$YerY6HkBHO}BgL9;ki~QP<9w<4GM?Hwf=qN^! zqDY%y1Wg=c3`zjfHL@QHSL2u*$V-s8-3EL$wGXk3Ufu_7eV9(ez9;tjSObZ;9qG(I zX2%RaN~LonDjAnNuy@D{_pQna8!BdlN>ZMpCrC0lCD#5@j-4$nn=qeWG;KPvx}~K= zRIWGP1Mrm_7e?t8o7Ac9tNg8Kq`6~TP4UcXp}9*?rnv(UisAed2iOw%Jg7l(B$0ik zNn+*cywdF{8`42O4W#L8pcO;PFXF_gFXG7mh;V=rR1&j;hS;EfEH*n3BNR!jVzS8q zV#R^ZjStBLkDH@-Om4_?gYY^T2SBOGssf+DIq(Vme`-_FKXDpS_f;fC>S@SP{-`EF zKR8jrq$lx8CorlXBuNmbYSQ*Xi;)6-r~_$0^jUmojFc1N01mUmk+r_?I*{7c^RcQA z*KRoO$jFv#Gz`5Xl1nx5?eXbt)h*i=qmbS#f3xNOE(-j`&lFmLkw z$vu~BBq{!rXr*=vp(>pWYNc91lq71DY5^_5Pmxq$k$a&g6R60HU4a_&HZJBvjpnmB zGem`o-da#R-cITTS)Vv{gj=575G&r0IMBJ;@cSTtA~c#D;c0jVhX90*VO9{gRC2HtBB&zP38o3SV;L~X z!lWc7kOa)+02cFd6cv-Oiu)MT?}VZeq|sDj@xz#fqq#5UTPh(3F<4xb~w%ki4+dcJC26v##FEF^R6yC$BU zc?sDIE{H@MR2;%FrcSG%mFeP5;McNleo9{Wds=|eo%1@`$LD195V6aJf|a@(uFb0JHx)^4^yD2( z&O}j;_=Cepp*5F*5_-!{ug>WnZB+3O`p}l!r0QB4|gT2L5TidFSMfwPN0l5aLUzSP%1*5(@CE2kO z{w=6gblI`ed%rV&&d1za7(pM*&Tr{$2( zv6hfhah7Qraf$fCw9I-)KZn?)Z?VS87ig(SQmSE(79*@<6tr1KsA@7NsA7i>k|CjQ ztxCttGiLu*^U3O2iCm=6Pl4Aqy&?i?dh zNDluf!B#NEqAUX7_xc#Llgis1leumAJt8-BJvt>z3El)ruBmpW@5dhCi<$RvK zJs-YpT3a`#^4wW!>BE+U`Z=F$I0!R)5SF_9L#n#GL)yCQOxSoz@YHffz5uxbh3r!4 zdW#IWu=Q$`@6gnMKAs`S`^lmX4kzzFx4Yf0QObGU5xSV9kxEk5|@_fiRRLIGq z3>R>Det=X6@&+1+TUS<)dWp2?NMtO*D7b2EZW3^<6T@FL6Z+QgrlvdOUQd!iQ zLlYa0p0VHo2&B1~)Fr0Q#L(P{Tf|k2Tfm)*1(IAbd%#c;I{^77`z~nU=~;^Q17ebx zb?6_GRFUQc89QyWIT6whtJKm^aEC=&iOKCN&_Fgdbv1eYKJ|^W|6i@~%H*A(s=?h) zUWvJpwkf@pCS!gn1_|;JSc3pf6);uTNNwgQ$ypvxHOq4f7%jI87%#WmtHu`En~nkr z=&OF##Db1Wa612AJyJ22kkm1jrHB%^k=)o;0oR7ro`FKch&}HFg;9zyiei@Fk;}na%N>&!aF3d$=au&$=s)? zi6ZCx2>}X;N;M4uGRJ1Yi0sl?bneFgWur7eU_N_`_2SsNEg(4cS0kI|oi8-M?ArNJ z&+UGC^qh0P(LdRLg6s~br3>wDMD?E3Jt9xv<&y;?P}J@xEZr_&n5zTqAdmhB)=#FG zgJpk#P$NLyXH)5)rKdycW?p=yMQGST8Lm(xf}DYRdDu`Ra!8;p*`GS}7M9csSJ+4s zri`gNSOt4Ux_~KW=qD5WHByPvMH{cOi z{^({CZVhPcX05*rrqX{;4y$o=1;ZUf^RxKJj~LGgepsy$_O$q;O(ooN(G+vdK+#+( z?eg@yQ$-#q6(l?Z2r*#$s!kHifIEngJTS}pe&n|m;1ej^rK3}6i%A_*RqG;df0=U7 zxnA7xEYOH^lDxD zbM<8O5XJk2*!CHxFa4d9p>=*HPfd;_Pn-&fRgwbD06A;YU^D~zz?g&w*C^(jL8OVh z6ON)PlSPfpW|0nH%x5wCeLjy*8ijyr7$1xBGbOek+sZ1ybV4@R^F8I{Q6bJ9v#XdR zTwOVHkg6g_mON6dOqR0Gq)gV+FUSlsh)$W%A{>46g?Knwg)(wTE|a`3T_Lm4=Ft)n zWf&5sesly{abmIp1dFKs~^+0U5a#zcMsNWS|&)2 zX=i|X`w|KbdGDje&xCG05Ui1xJ~PLs{YDS3DVa-q=EUp!45RqP5fEUQD%%jh*m~K! zMgQsDt2ymoCoC)&8srBG@c|ACOZJ{75!ixk^@%(HvWNc18)-ozfUo8bn`$E-ZvS%h zKTOw+c(TOHCrJPzvild91Ym)JAJoB!1L6R>&x|NCs2L>yY>1|u8`L!Ql3Bi;2y0|B zesT|3_N<*ql63Pb9)M4L`3V&RDE{sRzB6D8JBAW4DS!%LMFxP1P*HRSA1j5 zi0L9q9|o3PaTJUb>)a*+;S$>TK*9!*O23Eh3tdG|AOocPlEW@Y02wLkiwo%SNi@6i zcHDDA_)c~AVBVB5iGbg|hW zX;@wg;)uF9kQHM==(+LohJZjs8`NkaxK$UA>#QWKsLRKKbegaz$?7*Zy*Aw$Nr;MY&4GUi4Dh(Q$zursPsV8Gjn zBdXAm!>Ygmt*T@y@aUJ7_Qu7`K0DK=><2r3gKd$1hhOi_8oWqI!;FlLyRUb~i+cY0 z1g6|R=kS=TMuU7WT2Z{MQWL6>EYZqFiIupOokTDHn;Bnuvn z((G~BBc|W=8E)jFvb;egr42pvm}a;Q2=?><#KnH*O&Rk}HM36aMQ)x_9oGyywO`W- zF-&^U5*d%L5_sV!l|MX+Mw;ze=iiz2JXI{+GdAnmc$up$y70Cy9Q5z^udCr6`sXLD z+@byZ))~W9e7`w)Fz2zA4L%<5_e-LJ%c!D)P8gyF6{M9i!^q#A_4+YGh&kHQ({A;7 z+?*LVY3YA!4E=ug+R4y_B^cA$j$n1az$J~p$RsVc$n>yU%FKSabu1_8ggVT>geGf$8?v^oD_3#yTw)5^t5T)AyeFWd{fQORVT_4mLSFm znIJ|FshF<}FPD5$S4Cy0YS~P8w!5nnydXpFDd0&hi`qdhgE~kq;|u%_ntm7zqz%D} zC%YN>;b1p&V;4>M0dr1*{BKyv)dU<`sso3Xm2|*So~oYM)0nJcv_39XqzNu%q$O^t zz&abHmMaCBZ(wD#y=eQX%!nuTRevQN&R-?Zcs0FosdyDvlub;2FO^j=*DAf*phJQQW)dZ4!YK%~2!TouTLrSSQWvzcRwq{l zy;_cH8f~;HrgDTTrclIE)9T+vCyGClwH9}|hRI&aCfw{feg2ZaZVpe1zvZWJcyV$O z<@9DhuIG*qQx9Qc1yROE3ptO9OHFk%bE&Vy2CCAUcD2MzlNE#5S%Aj_2kh~{Rs|9~ zA#h@i5IC_$c$NMH$L(kK$~T2;--tD;VK2_(Yjk@eoEFWf6V6y=z}dvP`l9Vy#t5C2 z&)~)xJ^dKF0oD0}(KT~anv{Ivz(h}lYKJO;aYGz&w!1X?5VfH*2Fn*!|FAa!SM9mcg^%N z5OxNDcFrJ3RiFihc_-CXq;Jrl2orS2p9rkj+d0Z09YUGDLK@RcAKUWU5PRpJ@#tCs z1JV}`F+2iKXrh?INQl#()2ZA)1!ONr{~gIqGFrLh=uY8XzfAZ@@r4ZpV>s4DpmJ>|82(bRo=%kN`7Z6uM!2NBZV^Nm>n-Si3lTl=+snZ0Z(<)|Ykk)kUDMyBltk9{o! z|MOodgIEx62Xd$kF|WnVWc)djh$wQ-MSql_YyBoGZx$SctqK3q>GV7hkjy1Yw0Y?w zN1tK^@S%P)gpUkDP1Qx6k8>}b7xtz_aJ$ z9#K(!*aIC$b;E|`mtogelo zY4b9)Qz_~ThJV?%t1FS(xu=^}tf-^`(2QAe-BMOjh#Vlf(MpWdU!jnTAEBU&Z+UWC zB+kDKT9$tdFP2~fBJM5>sq+{hwq}VqCXY(AVn(I4f`_HG0*7IYlaHVYsd{ScCZpfb zu%SVe<$IRs0iP7|(mKd-C@>Cf3uLvpCgBgLE!s~l4blEweN*C0cVDhJkFxIzkIiTQKYb6^XG z=cQY{EqF6p`P8jd8{eGBZb%GqU*uU}7OAo8q0ZRS(r?JU^1M^qUq3RxwmB$wF;&0F z5wMV-4s=+_0Z_NN+r0fP-nu#MCL-?k;`~{9^Zil8ZGCKOqE6dBYmY7#Qqc4;NS>h8 z|4{hrrJoLE4_1>rAZS#{Ge&MmBmlUmMi;9O-#jqt~WsM1s73%)=vDLAMcTOR`}klA$!|YqiIuiIqTXE!Y#5jg@Jn<>wHlON0dI~>u3q4D;0TM^8z_tVppoYvIow076G zP86LzdDA7KFE?=1$Ba}K!T!9e)^%{~2A|+V>{+U>kGC#dTvL$0R}?B=u^RV;0t_&1bC?lk{qUBQ6uFUSrc(N@-bgaI|t8we(7{89Z~(pmAC$O z7+srw%~rg=O~O%!*~>7TIM%JkeZ54DeYnWQ0hD;-*Pmk%z~ zWJ>w3Srs>Z+8?rpGnZGKXWMD+=Es+qqMW3HZAV5<6|Wr;Spu2q+yf<2 z!l&t!fB0%V`v9zbZ6wy}cXH?dL)%_wJnBi!vZax1&uvlkNX*4H^&m zv~FjaK;W$IE_)TAPPtJk(}IU(M7Ui?L#Vy-K+8xvS$9^7c|AmY+uU@b)!;3qldgH+p@5m7m|Fe;G(hiN8QP0+2-(I2-jB_mRmk72vW2FfHP3=1WZ|SQq2wZ9`r;jdc zS$_u0xadf89*cVdPc0T6b|()rz2Ca<{Zcry`F`EuD2c9T<~lCa> z9l`srwkmm2?|bNy*WcK{NfdXYMD=ukAh9&PO)Dd1@s#wJ+5FKj!gsK!#6U(Ny0XXW z3YCf`65|L`Ep^`*Gp*`F+}SZ-AcPu%P`RbI3ykzUhtf!Z?EL$#O7^9AI!e$ai*SZ~wq( z!o}S_OdBMP!juaCx3snfHGe$uQADEiL?MStSmBnJRT7f`V|83pS0sU=w^>UAyfa`9 zZEuP^ZMJE19BZh>gWl&UMh%84UCIys1xAXAhP9yM%IG#%55%Oqnl^^~ma4H;u% zwB>m`uQ$WwbdbHCQi&2Kx(JDh)Q z;aoIqz|uc{G-wHGfW?VMrl>@d9IDVEl=&}&vujV)>X(}&drA{!O+?q;$=HGUTXCUq zc}4xXyt)#v#Te|lE^^zGxF?OXrt>^9g}9k*KjNR}Bb}av*3L*r(&g<=OF+WM`%tfz zmIPee2GmH$KMXVW1vE2#whDeey3j+Nu-+6sKXvFu@iG}-pMe&d+W=%Y#yXUy&>=OJ z7&N{^i(%9?s`G~&L0fDpJ*`KN^CnQ|nNgGKA<~1jY4shD1Q^DJHw5H>u*;U{;_y)z zB0ym@W5+MwmF03XQpe+IQBE!I)gh>ILu_X=Lmk1|bSZ8y(9{`9XaxU&+7uR?0Y`KV z=FVn1k@+@`p3Kc~%horT8;RnXmB7+<9A(uytupFw1CCa17G zp~yA_d@$kF)w$;f${f4@;JDV%E!HFLqRvgghZbeml{rDL%wz)wsuh__G{v;xY}!gx z!mopHv{$xH6||-1O3XOx&#o%$pB^0z2B_#eYy=G+kS0CBU{~!cvA)dyCW}oZ0?j8ox$XGSTh&1r zjVFl@x3YBK^p-rL%FUkq^z~5Q5>egWgq5H~rtRa05eQY=^{Et2Yd1Q`IDUoIP1}_> z1x~GD*mZu3>J;q5^y^ww`-66#ZjcaMjph)L5G`Hn;i7pDz!n#9mLy)xIf%xaQUGy? zjg85XhP85!*{4=BFGu#iqQq58d4O02X9`Oc>g#eWIQ>Fk@qF zK8>hq)@dgvGUz5Yr3u1DCq>jS@Yf6y*p&=sh~c<8#sz16EuyiG<4AQK7^a4txPV5q z?;(-wQ1teX&`0O}^dmzWay%{}*LkHl9A90<1-k;ouotnEomcZAg%S$?7e0I?etiQ* z4hQ#g7L~kF%eRBn@GQ0)hz|NtfpXr3th+9)MrdrkuA9 zkmio^>YIO)()3M~ex(_MZ&0iz$PP9fEBpLfIFe&cwo2V(NMf!i-wtJdEo3K?7P@Xc zQlXgo4l9$E4v!CQPKSvG#vb8amak@t;ftX@It1(@4OV1=sJd+N;tM)z{EGr8|H^=65$<(S`+~5DXUn z5ZN>($rrw}Kns+S<4>1(XYWcXdpR8tZrFJGQIVD0H2 zc{lX&6f&N!1sfz?bJw`YnO~JCtE1LN1LNud!pK|cmUx{(!#UOH9^*TasGi+Rv*tJ1 z!>R!yKlHLhIM+B!EJ;(M-WiSoEq8~nVMYCeluXGODw6KbtRG7V1h|NZx^n9dx+N`2 zyaN42b=splL1>AZ%bTG(j{4WSYSN%K-sSUic^eEe*O zd=ckn5DEB2dihtQJr==yy{5WcOshxlY8S`LSaV#5TDH~a1uO=xkDG~G-i^6gLtR`P z;{AI~&8ZTmDT_@I%3XHmxMaRqY(sC?Y+mGGUZl^rXfU;~0_?)_rgXK`-0;<=+st-d zBs@9!=cKuizU7AL&xR-4*+ye!iEpzKAf+#4)~Z zpHgGXhGpjbScb@-_M;%;FI(uy5UwkzUszGL6 z1LRE4Bokwa=$b6fZ8BNBDp_`Q`$;V_s?r;K|aijm%Fc; zub|>}OLpwc9w+x;8FZOBCgXoQU^p^f$?BbE^Zb6g zy=|=O3`=JAjmF(&g_0{ZSj^k_@O*| zfzXaSBRKJ%ZTwK`)eJS_V)n2?*dU>jhKrWYTi}$-pL{2IsgFQUUs$Ne4`Q)|XOQ<$ zTDZd#94gvgfb#i^kLaF^(|cqY>}GZj5gt6O6$hmuu`ggjG^l%+FYf1PNNdS`Kt|%1 zj~sp%=WD_5+@8P8#v$CFoQ?SQ8Zp;+>#Mb)Qbl&ZYCu(+Vt=fqEY!4J?P7-Yd#-Fn zD{*O`bM#Jr6S->Z>WA$~Hh54!?9!AuLpY@b$@n|1NDp?xJG%S}yAa8F@`S@1vSrJu zD{tF&rHXw+m$52-SSGy}SMCx@`Akj6m2erywQ<f9Z+nF}d8so(TQ8pZ*I8Hfjqa8z$j4i4idt2t&VD7=6I&a< zt*H~I8TP^8TT2fd*h+l~@Cau-W5@M=OS2~KPzIb$_OvV&lbh@?R?^d%tEyAIk?-xC z4qY5J`nP}4!;`NOUXA(sGVk7QOdYm*a&%+7lIIop?F~p2Xp$HebEUR~T)W@<$ML9> z(gmGPWpF}wD3Hyf$L6J{+d^Et5955LCn;1j9TfaB9KgfL+U@(%FB#39s_rzBW5 z+6M5%?qbjy?GFePU?{hG+uVO`6}h=ziuqWA|B zJm4n|1n;Ehnjtib-sY{l%I4Wqb3c`+MfVLS5uQ5N7wt?IVf-`yxs10-%|1|X+?_(aY zhZ+BAOR_+V2QLj^gvl_M12&DOjLQFt2>f7b2L4y!tr=n?AC+wNK@JA6CHkQy*{?wk z0sx7AHUFTA>idyzx?IxQ0vVN}v9d8J^dt5jUmQ{5nU?+*s&QhEpi~yn{s6+30}R)v zfb9U}99S$d_*vAJi47)ciybRV*0QG0RD=!!_wd)$vig-ccV-m z!2f~*295eX%&`~eOS$9Z0qJ(Ki=`=-t5_=grY@_KJk}e7^k(W44=!YqR)=B3W>(%& zd^js)N+SItRQS3l18 zZ{0fH_-)Jui9T+RsyW}~2_-&{Y)wDu#V6`nkLA{r$1ShbKUshDsD8PHl`W3%RJ%KJ zXSzY{Kdvusx%hD7>&H+ISfwIYM(&NM%OP_fTL-C1yq-xoW{b#)5u}R4uM8>mpGfX$ z%2K}7bao8qVIwIhG%Y@Kzb`nW9ByuT(30xEa}g-4B~La$f4aF>_Hh3?ejk466#3EE z^WD0!^Sec3XL@5a=Q^c{6>Rh=1x`PSg1*C%kly{XyxC;Sz8SApH2GY=2(=-M^VLtYQ@j zjuj7s#3LcZ#a6AEI~KOIEOVDAdn7n7dnGu>UBX39kp3|c@Hwepw0io!h%NN%xYJrp zjG;stcWod7?KiYg7^{Z^5(oNyjrSWlM6s+j7}zbxIXm4CcALJ66Om0H zqt=EjIKjj3^P1GqA7QV`ucb+;*tm9t#?8#e3~i+c5ZjI&YF#0W94aMfu@3cmg zO_v~!Pi};aPHqH^MjN7>Md6e8(b-JHYQX>_5t@kPCBOB;p_Nn?j)F~&J0*^P>-#rV z%|MjbB2TAI%>{ra`dkyUigAFxZWImz&ag+~z&4EYn$|v5wRYCD3x@xz&Ai;$`|{vU zdlMDOoo#DI9nP0q*noHJF8JII;d{8l&CVuxPx5U2c3|G@n<}Lnawy z<`@_;c#1v_&*wsYYjn=hWGQNpRt#1Qm;hA6Y_meEjAMqjCxZ={<>Pt|%omtnbXFxiTPL5<5PILI}WlL6GzkuD-%uD#p)B=b23hh7W;LdnJ^ zV3=wtU||;Ni|%Du_UmOLZ*M2pgU3$LZMpK^pOJ#1Y3qg$1>Or|&fa_RK?)MV?tH8h zN$=)UmRYRV1wJ{ep8|L%lG+ooM%f=9GkoBF!Z_kWL8%9<$1qwyWe6hOm zrci%rg>YTvzYS2PY;m^v@aG>?(B*Totqdb@{U8 zId!Alld6IQH&w>No=dtp#GVuB*8_6^8n_TVE^r(|g1R7q_B%P;xkq@W%MYePgg!In z>;k|gf*3V4PQYX_hp6x{V1FwCq+QmU75(7vnr)ZhMLzp`a?lvJ5Z=hXmdS(wiUY=; z1z4@mdkTQP-08eq1$1gbhORDu2r#!gVj!5vcfjtc$eBiQZHV5^hwaILgb|z&d~~~` zt!;I9hR+;;j8t-lpA>E`N0?Q?hYi7iB#}2MI!t`9)4|uCrmpSD&IyUUSJ0eA=V`fo zP>?zith94$c+kP83NM0~HyLbWRl@z-$OM{%ROYu41&SnlB$o`u0JTFT)2%KkEhGul zEX6=e^Fq#~9CHXV3Ka&a{tEe?87+!L;P;TkBUB}3Xl@S%l-iQiG)^>RP_e#KJ>enZ zvwXAB#41_Xw+tsA*@DyO44>s2X3vG2nD4R~z?|WA*CeeP*)H!eT)pi-4T+#Pto^)w z?tg5lD&Qn}{}o`YbK`vV6mp2>qfZSue#RthS{lQRllZM>M#6Xu#M!Yv+(YT4Uc+(!puR>3JG9o54hY%J(j0@3ug1*F1 zGYxbBPd!&tz6c7iL_RK+v%+YYV^(-o)<8e}Rg#;%YE7|V?EmQ4lv9~Kyvs7nTgO}CxJ+OK$I8+fCS>)xMcaEK+@Z&AKa1sEk1z=RdNg| zvMiBE#5j=%^tmX(K#Oj0V><0$D%nB!(Bc>pNy8Wt$P&2$|7kDeTh@Dg{EVMj0qPy6 z4xy1Cd0agas)C6iaCM6y_;t8ZZ=+1i3lJBWD)|S9+W^FE0OAhT8)y}dz5{WAsbuFs z+&@6vKS&@$tG@+2IPrC*PORGatrQI8XGe&-zf+JD3_)tp?H-g_)v3!|UmChlI?Tsy zZl7{&I-ZT`lPB$9{c^4}I4WD4ezdViRE8?Sk90f#RByvk=ygGQK0DStY>mE6mLcgH zmt>f2)k2w!Jvn(EoV{&&ze`ts6&}?0Q}SggSyF+2CUqT3xL#7} zF<=ZM{`RD^-`3-!uiCICv_K~5vu|;uP{)d+o1=h7_>G4Kos?0D2bnnpQViBnkW{>V zv$Ybp4|HLDm2TnWJW=AMh*I@k9`pL(IONZX}gc#o@{pCvUj9r<-GFdfQovi%w8JEmn z>F>8`uQGM&(E$JeG(aM~R#|SLC{-F10Qdt50KfuMojsjR z&CD4*e%Q9C={aW!q5IbM8e42bv}CSu8A6(=mBPYDw|aI4*Q00)!B#Q9Jm?7&*2tL~ zXZ3tL=YGoZW_&8#z)!-y(9#!MR~^=?2(}OVHayd|ojE&y>Jd0kD$~{xC1_HNry`<< zv2S!1yr;c_uRc@|W|nvTOTLcGwLzB@Gfh6>ghF=sv32LiYr<^;hLV!OqRwejsF6H9 zTO*sK2J?4v`+OFLmvz(nXwOSM|FtK`5^htQI7NZy_^x={MTQmct4jan%T^qTEY`e= z=Npobj>$beCF4Pt)m6amufM7%yTn+mq56W@> zlz<9;!Sp~m%&%};{S>dZYT8ts%=IG{<+0@FU#dOd?vJ_#Kc42XbB&w8CO^sz=h9bD z1jUc&$BUV`q6>H>I`D^XPGaEk)SaCvN|~aH?iJ-cv9W^5QPLoNnGY#C6WiD|;9V0W z595;PpwHjt62aoVADU9Yh1oOG9VQ04qsSJLv9^%hs1)lg@U1bvj3qp1zy{tp6U27i z!zV9<=c`kr%EnwJtHSbeYgBEzUmT{saVpPnbc|{#va91*r7R`<4fgWf{7owmoIuj4Dy;!LMY1?GA!Gsf*-eUtrApV}$G~+LL zGekjm2B{`>dL!#T?ZO!}F*en1CT41S;QxNaD&YSb|MeU%IR6#&<;;#7-oN?Y! zxgOo0(R;ZS^B3ex?CWBiv9#@D*m902z8B*6E_u!a)-Ez5<*vZt%OaodwbbQ^389?* zAA|eguP24CGye}spr06noE-2`i&4GLE&~1dztIk*g7>(RL_uF@sy+AwzkaCE@^*c_ zO>g>tMQ)2V-MDy#pZx5n&rz8?p~se`ie7c0XLJ>Kz`aP;|JbXyxc0hGr_#Ku;9Du& zg5vyGWhZ(0e6({di;X6)9#A-Rr1GBNEIP~HvBv!T5Xgb=fe8N8^Jk(B2}&-CmmIf) z6|iHYTI{duH)O-xh{s&o{{R;y)n=4PKBM5z=kz;gpXrpYhaeRBTo0b=q0%Ti^ETd^ zcQGa-=AaUbx!D@DWXTbjlKg_!fUokr{oXhWibQfCBk{nDzm0;}x3%6s`*GtdCBgw0 zJj~V(FWg};Xyo9J6+$dg%|smdAMQ>6Q61!=~Hz?KS>twnyvybjKSbfd5c_`E%1t_`&*QGw4y?Ev z;9!)aYS@TJ{h(P906VmD#$v+1zqCA-@nZZDB={b`ps(ezr^=q1gt1lWQg_ZQvE{-1 zC~kC8LGDMRp{4G_f(E0PVQGFzc8guTKTK{X1ynBYc+KNYJ*SfA2ot^`OL$>jsMjsp zVJoC~(8gm38>GMDBqHmfHC~mnn*Tk)a7RkfdxUWxL`h%*lic+_^&8KKLyU|Vzl7ya z9o^)|LuYaj%$@?nMSM*m0Z-o!!u{AZ0Eicj<8Pl>W>#)Ea8bZy{9gc*Ky1HENko+h zH~k4|OuY1S<2+Jbo5BBcKVR_o)BDBU{UZ8l$^2+`wdBZ)J(b65q)`w1^U)w^L@Kk8 z09GJ?mCAl~|EN-70jyLi)!jY%W4QoUymtIiTB!gY{t{f&I~_;a65@CG?XEwchr+PD zK0(|-i7>dIv$hcdd>D<#P)H`Aq?A|qUz z>DIfSI!Pj6>hg<6gcG!XedN!&&41&y#1eY_NTs?pr;rlfkKVMOyW1FYRT zJ^#5Sc$TFgIipo<^~W;sLd(Fjia=}`C?NvgG9V(5&ZS=Kb6P9{@x%p5T&0R%7xhfML2bb zIrV_J?1&!bRQ%D{-)k)A)E#iDwbPGirJUONrE_|I7BqOtyAac%doB!I|4=_Z!(a8E z&ySnIhm+%O<74poW9uw9Yklbk$LDzK^D%TKt!AI-n=`dfg46S6E6MovQ(9kJM+vo6 zt$2LD7hDqKDu<*<;{z}iRrT>+;8FG{-%%M|h-c@m^hEd$eqe ztT@$5wYF--sftmc?f9d#QaKh`%!;t{FNvk5_LLC21Nej(J1NMh_aY(osMGah?9Ufs zk4Ce8jD5WjyVvvDF?Q;C=UrysYlqkq!&)oG{?7=p*Rn$Fd;7J#pkqcY2~2=7X6 z`OQMS9tGBp@jfdB%0$_H3Y3nr|9jEkxm2d2y?Bfd6S1ln_!f>fYgCYcjy_x$H_k@ghSHNs2(l96_Hw1DTbk#;y* z*3QV4jCDPp0(3ygZyBLeLCA>Etw@5^hF-g%ToSAx%dPnW z?{^xY^V#P~@wrG-!+3sDfG##h+Ee8$exQ=_$d{b z6JC*5y^qQ(%c4T7nB_N%3Pl81KPvRB1Sl1l^9WEnF!ygof+t5Ma!F83UrM{^K3T*q>-%KS#Vh=j3C$_5$gAE*<&|Y|p;gTCo5h790<0ew zdR79I3C;NgC>@&nw<5t);}ZEKD5fu^UG(wULUTY)vCtf&@ufm@yE>oMp}AFT^~W;s zLd(Fjia?prT+T9(3eE8(vqN)ly_}YEp}8c`-%Dujt;=vM8Jc@*@wn{J9LGFzV{?q{ zjM$ui2LE>%n~Nc4?bzJd^FoCR$BGSe}{sV zXQ5j#Asg!E?YPME|NaA^3T55iU$QqGh<)ssQyq;(~{wS?71g@GZaGve^ zYyubW?L`GH(bY=|Ty|G~2wVYNeP;s4`&a7-9D8Vm1a7C-{8WdBosu|zTm0E1F40|i zkt;3+$*xL^T;);Coprk^E^?K}SWV`o5?9Eb{eC4biL25g_mUE)i46&fJ0j<3g~Ul> zLrmhhRZ`+Q&ExY*mbC3XyR^l-Dlchx3QAj|tJ0E&=Sf`^moz-&F%*(ExK01c>sta> zr6mo|OG?|GNL#Yxc;#S~wC%C9#Y>K(RhG0>v!reR+1x z!_75Bi;HazXhW}^eB>v|RG;eYZl=Ms|NH@gSXVEq!V_J+qzcdOs;mlEPpGn7h5yS3 z1md{*{#3XG1X3y-J3YD5CJi%G_))gBWgAT1PVMta+izqrCAxZPX-jwYhqUEM+jng+ zW#5QYK-ze>d$qJ3*BV*ER`pA)K98`)dRkA`ib_DdtF>h9NnMqbwcm}f#c{Qkti7bL zRi&D0d10$^HPr&b*10&&wj-ZE@aFgQvceYc>P3Yuv#Zj=RxA|ouP$tHTzz-KMm(P_ zY^y^7MFVda$5|^Iz4`*e_FJuN@vdH4*wS77A#8cV_C2p`#Pe$k+d;v&TjSzWul+VD zYVSNz>)y|hkj=B0UR_Dr;`|0^o<2x!;(6nAGnh|r!{Dxu>~1Ap{er#*P48ymSIgO+ zEP}6E-ZyB(S6Yb`k_C;Xq0D3Q&Lc7qx>&t^jonTqk8|{ z!1YQi2naaoAagb;0?%#)#k*Qd0?LSh*VQ@_5G2CM|JEYl;c6WTcv%t1F@la(ia?eT zbd(l>=HZ9Lfkke9`0N2LzoYfozpwzrx>}3V^@d2k5$A+*4mt{tH|@H+t`qvs&1cO*of&fg{|6Lv9ML8 z3QJtr&?+fx&6BJHq1B2P1Wxo=P@%2Gi2kJ4X2h4Hxr8<4 zQJU+sg63YaCZ@SQNt$<$Pg|XC{q!P>^8Vdt%XMEGOnD9H7WL|vFT__~jZLuH8tc4c zvZbt8mG^8`am@T8!uVT7!-KUQ>ATm-4BU0>15**uXqkui}s$R4U}A?0H$ zxE)>JFniz6kq{C-E@pjV`A0~k3QeiSVTnX4xH5~wGKo}hS%R5|)6#PJe1e%bq|$Qv zQi7?nk!hw>c9#gIHuTzwU~;Pr!K{D6LAWfz^lX)t(h`UAqJo*-RVl%&Di{4BnK?*Z zM>4I@-*ZW3Vo2YaWa=Jy(t)6*aD`-MN1YGO2m|q@;J`n-j)SM*(h3h<6jOnSoACFi)mG>h|t;6;5 zJk1i^4vw_g=1qTm70mBKOUxb;(mx5%CF2&+=zXl8l)X#EQTU1DzPd;Ld2HM?x-SA& zi5BIkBV(Osi)&-h%4olkB=c~x7|oEX{%Q53k3OB0rPxbq1udz#<2$eP2VBwRT0u%G zYCHXiR!OaZZR(?RUFE$30Ugz=9)NXqgNx64(Hpl2rWJ%Jj%5l$*`}Ofny(-f+_SBY zKFZcq5>L|*%ZIei(ipt39OMLXYAfX+D~MCekb`DBDFgmlv=uU-jo0OWJc)pc@;e94 zi!X>Cqbtv@!|qvpuHe>Ucf-z_td7UA`wQ@vp1-R2yoG0F974`tX*>Ox6^HnMLosPr z=b&&1!UwP}k0p$+EFEh;Nq(UGUq{ErP_`!HJx#}M>g8Z!r!1y-?y@L`hWbx5$Y2Aw zxtuO;f{W2(I1Vmm(?K|&PiOPj={oJPSv^%vXUvL6l^Dm$nd+>573N@@i-?$jvV1BR z7nOCU^LS9); z?_QSEY~Qte8OPLmn(b+dZN-q*VE*7``9CkwZ>8~=ndp~gJYM7pK#6GP(9t+Au>F-e#nS9)9R`JKa;i2mk{( zD(nx$L98POsl_14{r`?pWe;U*$bn}Uy#U)CxoaZhVYZb<$dTO*>4(`ej1bh_=yn^7 z3=%ovJFX?|M{+Bb|C@;2k?Y(+6?#3Gi;N5D?4~;WfGY-PSACi*(U5>wURA2nUa9B6 z5cdExgZV`#rMW+>3yQQlSiPRtyiD~0QP%j0r}o`Rj~GhnCsH0;O~#;dSX{byjO z_6*pmJq!dhOiDwCeoa?DF(5Gg+?pkVWFD&5o30d*~B2htum|F}lUVAd`^`YTexi?{Qnf zF_4QzG@5kveb7>BJnD}d7kZC#@O9J=TDZ`F!?u$tt$ooC^nJA8VV{zT?{?BzGh{g+R>xpn<$&WKse#wL&A4$_@(n5y6a9 zo1hhcc_#!@Ql-V{yP%Y!tURT(VKGWII-f31Klw9Og6&r0*H!-p1oKYDIGS*68qg#? z(9)!N2AT*~)}VQ&+l+J%edvY*=z^LXUE;+`pNNM>fPh>Gw%nz{P(1VtAAWe&;FX}|1uQ~Olbv08%D?linqerONP45S}gwlpyJMUu>v!|VITXD*JO`f4Zd8{UZwFgsozTA?cU4;SRrk$M!dW8l`|8#Ep!|6jX(|Ovj8G}A*w|@H6I&1vWJ3Vi!n(a5FGgFl{^Zvpu&%1^LI5Fu=kTd$Pai^ZuDQ3#{q1EqlOfdj zt2s?+Os^<7oR1hxZ!Zb`Qr#BakHhQ!_`UJdxz5L!r~5EfNc0qI?ZxEbr$dBPY0NK z#ePz7u{TK0GdkujH&Ml`*{(@>WB$DRI;fAw!4xD^XkYu|`%owY4ir*y^u!CAgo=y# z=pU+{7So_VKso{cO88Q6^;2!l(Vkn_23~s|_w96u-c)On{$7AnRO2!3w-sEl0j@f1 z?7lf5vDu>Ex2|Zi41i`&Q`+I#VQ!m%6mW#+Y7~xnj1`XYy;f*R^wunN6(Ntjy_=x^ z3#NCWD6?(rf+NcSk?g=gP8>vqHkrrvE^q48T8#LODH+Ownh`$lH zEN0(;*l>dA^)T3=A1~_dhJx#!RJRASK~G-q@#{T#7kGZX84Snc9?h)B<4Dq7WQ2If zWQ;YuMJ$=GropSqt0<$%TRcxrdSrX7y$X5jkof&`S`4NbmzoC6pGbU=FFssAnEDG0 zpQZ5fTO=~9V4x%K$F^`JT27-Ep~5~Qw?6L;)>J>;_X#;hvD{YyELsN6rVDH?&?q^1 zKWd_gS7=EAF%C7=YprOiILJrK@!gnZzPcyG`g?3}>3-Jh!N5^RJHp0kYmIoUe;Yz| zu|)rbeG>9TF3#Is03&XJQef~3ZUIy13d<(pEr!R9@NqD{A4322C*OirqaibSHHSw7tX&8;6$H~_=IRmaOi`kr%1h6X& z=oiB8P&S#&2eM(DnVtZ#+|)7%HBmF?4gY6H{D$`~b4H z!~T#HKElUvHgGd#vXQt_+mFXb38yC5_{5ypJ3eci^y=+HK|lzWnJ|8-84g7$w1l?a zz~r|P;ONmWJ^AGaTF+jmM)w(hxf`B>8;qjiT?H4kFpNks=&R0R&>@o5fUrsLbNh#? z8y;B`(b{BtJ82;E`X^+=>svM(|Fz&kU2tPG**s=fgqbar+f@W1+FzC! zX&+B`B3DqRo0@Eqsmeqp=mMbdz1Ns$-YlOw#~h;Wq={-@<<3;!dM={wWKCE5c*2u8 z-CBCO_SN#~)}C#;wcP2}l2a)2B&VCAZ60OgEF8U})AiqsMb5n0vIF2Ta3)2cN>6W! zr+qdsEfkCIRt1D5K#PEIYo~H_*xG4wK)6w@98@c{{K&mF^x6ecD;|s=5N;!xrQ*ee ztNs>>hCVbcMO#6uv)jIyjjpdbdYTBC%y7>XErv3t>7DVRInccJ!=gEDM}9Td6SA(z z$ytPKK00UpelfkJR|cHEGjL8&AO4CiGcdVB2^>Yk;4q732l*4QB?-e@gwAdz_UO|x z1-oh?8`$0@TeR|pw7&B?7UAS}MtGP0kJ*Hrg|=Trc49agk~E#2cUht=_@i!t*c``` z5m`XZFuV)yrVrt4i_I@W-RVW=lyPH|c;l2c z_g;cBia`2Hb^zGHKW*dRm5L6WefiTi{;dJVQ&Jl)iVDxi#TQT88f=tb-tr&XM#1gL zck;r1(40ZrSHo?BkUITtv@LtEfJNiW4 zh|yfa9)JqeFq=#*P#HW-XTpu`=JDz2oP8a}=b#Tyh@@&Tol)m^Qw28}GNM6+OGLYM zY#f^pSflB$3=rS|Ndu3&B181jUdj2JsZVlT!GUR1mBA*gtaoUy-?CJPq;{ySgucIO7Rc;5Z$3Eba zvqg^d{jJmALT@!LJi*h=nAf~*@d$}lSDeRP5eo%BL0$MiRimF295jXZ#++J%Nm$Q3 z){{S0`A60}k4Lc|6&wI;B8VX&wkU5Y$wt`B5vC~rxGl+O=k?(xj(HQti3=R>WDH2qMFHqna(M)Wyq`TQt==!WKO_ouhxqT1(PS>M6uZLq42rj+xSs z6;+{WNX#}>92iN^X8qc3G|5A5@4vPsGOKT6N;d@QQ&eiyYqCGmAlI}0E%)|cYlw9OE+ z@J`zuEUXvJy1XR}s8bXi;1!vhy-YxuoVqsjFGpiUGnf-Hr$^v>t+V8)3qMbr9-=^P zQn;+-PA}TQh9hBWBUB8ESDpY8v{wg>G3y*X0ICs8IVjN+nQt zV?M$n+@FNg`}z1A7Pt9>WJr;O(qDJOevfQsOHjDIo6(;bXAy_6$`0W{1%+~V{7luI z6%Jt)4xzOJYP1z2$a4srt#-ZJBF>6D!kXt1Ho*yI&H)4MMnrKo-svBH2^itv{-3Ls zG~#`4YZd)m!_Qc$6U}z;Jr?Q2_ryf07={D4DwMG+jv{t-NBCW`Q7{udN`lEaaN4h~ zNkatNZ%KW#Wyh8ee%;yLe@mU}UMJbtA#&mdJ^nNp{~AQ@?`Wz!xwH;UxG~w>Xf+8R z5uR9tIyUM$F@S|_E1_tgk2Oa`wKa@uYOoE$jP zZDGc-B3I~fYfi-@3C}IqYcy0Q8-{lwoRz62I$$B_b6XP8 z9;ZNJTwj>SmAO46>m*C#T9NFM8Gyikw2dw=Yh^Yvmk2bxHA8VEtu)Mo{kOq{_b0}Z z9Ro*AxYks7oOzjRx5>q38K^+@S0j2i9mBLIOX11(nT z9)^UbUD+OsHrCwlaMf(jMd-}$>J;;u*v^jB{6%ns7f&Wfh7z+iv@~CEJVJ7cJTF|K zEqKp`DHer>Gd3evpuBZfKRhXqb0A=Vd|(m=Phlf8MA`;NxJds*klg!yG3hV z6)e=VBnAWL2RUKGM8Sf8gtKWDm1(MEYwh;ht$Gt4L90!OHwqSc$VET6tn~Z2q;@DP zP3&C|`$!)pcJ1J>Qm?NdHqO#oJ0`ZYN)r3xGj=^aO7Fzt-{Y&mGCRmmTW}@@4v=C# zx8aauTk-?pH^jI25NmhmGSr|R5Z;vrB#_}FdA!M&<8MXARg|ov;A9FKU7Sm>nw?}h zGXlO#Pr%lxi`n#M#F2a#VUD#L|GP(0eUH#s9vFuGN$B1T7R=y*zEOaGN{9mEMi zd-9w?zUD>qjf>N>*5~X!OAcjn@p!JnnF=z2at?co2>0zx3p|h*lMzW?RdCiK`Lfa_ z0tw`7>X*+55Utc&K7?HWd_3HwR%8Zxc6G*+s+9}qb%=0ejx zr=hgk^qU}x!myj$}wRvvBL;+9O(o>YlxKWY_iu0 z_A_voHp`F`w&MCin(j)g#G5Wcfmnp)OCE_cJ$G)_^vn%*gWo(GN*GD?GhzBOl&H1OwSan(~M8juTHTVxVV1J8o{;& z-H<;^2qgRFcAkve8@NRDdd~c_kUeb+3rF_pBUaM=P$UA@=QPTpku>i=%J5Ew`+k zBs6BEh$3XKY}p(Q$6BJq?Y~6k>#Jacrqn(Cu+87$tKMR2F^0#TS}OUPlLcktaTadb zP>5!#0C)+S-p^!*TT;2*=-f_BCRU$Mu*Uo)RpFkI+ z`!1sw9H=v)SuNb+#Dt}wUj=997f>>!o5Y0j*e9Oh1ZGkaEMY1C9NQ)CV31hTNcd97 zvTYop;KIpv@QHNl``}d1lkmuPEK|OyrlRRPig(X@Uv}2W1FSsm+V%{od2oADx8uOR zC}TM;D6XFKZU3j$Y&8({9E`3Idp65Pwy7$xtXRckiI_{XWDmR~dM=-esUT0mZKF}7 z!$O8W47Z%Q7wuz5c2UMq6zQ`%K)LNIZ$k{>5*b*0~ zvqHpVnl&31TE0f}f^NIW9478H;q-j-l2T65Nukczu!E>ejapf0Tu zIf#Z5HAhEP(}=s3-JR+xjVO25N<022t&$qCebo6#`1I3A{Yo6&8z?N)ZWFm6B6w>a zo6frO=_1Dq5fbPId;(tMYH{|(djc1N@fiGl;aOF+3dyBhQ+(_5_VUZ`Lb=*)@>;|GSsAl#asfMf;%Ir`$y zgO;!B)ri9~!CpQ-DqXrEU=ho)a;Ma*#enFic zzveT|!nVVpkAvC$xy2tzw-2-~;Rxqbh28As4IBNo_SfUXIDf9b=8osVH=L$|X=>p5 zyx5=~0}5{1D3#*se1YNXneUB|*o{9-IU+u7jWF~+_bWc7HF~fFMI!Ij{a7ZWk|#k_ z5%=2=ctxDun-<&MTl=F!CA zPD#Tw3FagG8x6ugb!C}ZFu$>&nBc{C{U}(T7nLjov8wZ4inxOM*b|*0%>dERvjINRPCHR&E z7$tUG&jj-^F0thZ%Yax6TPyd(avGiaFNKDr!wA|iv{x~@hbbTNq`w2u2xS$>jGhi) zeQOa4hY1B|8DkjpI1(<|AK`IrO|Q0U-Vgi!4+r*xV|AL|Xacmln37>p09=K#b2-DV z4V%)TgvWNa-vO0uN&k<6OS&La1PlMC)oJd(+o~OH-wm%^YHjTehl}FsRhIudr^6&= z8w?7?4`L!YUvgylCu?j$PRH-06A^?y_)n}d3hvmYlu*;J5+(UX$M?)7lYI ze%qDbI1Vq9xcK%ld*7)*e_AeWNp#^72cYi<(6YRM8VY3z)0C-p`RGv zfd$0sqs9ET{|It{CSONWLH7`0AksJ)Bf{qH0H&W8872E~2HCMhWk&;{$OH0qkQH*Q z;obRYanB4DV;Y5~ZPZK}hU5M>bZyH;_K-%=@v2q2osZ+9t5T1P;ph%Cu_GTX(Xs!R zN^%{e_P*avy(x;_xp=C<3E5Y?^*q&cUT6ZpIN4e$6>Xc5O_0u(k`skfsV`%}qa7BDas~t!VVD)I%5-?EoX@&2o zwF9Lcf0R}^zGKz*9ldy(%|Prl&XwmSN)LiaaVhVBXI^DAQ#uxQ9&s)rS*U14U~!Pq zlw_oWhQ4mf)Y5tCCdsaq`s>Ya6=dz z@bW_r=G_8y(sG@gqVYOIaAdh1pSIdnBw@6>l1f*^l1uSaCPgZLP-I<-RGv(cl$3M* zu0m2S5u&4`Bm7e$X8x8%TidaeXUEKS$~&Hv`*&j>;ZTfkUD%X(^LdMJ7}%n>9*K0- z$6!NuU|}0*q*lJ1Wg~@r9f$)x3eJSOzHAMsIJ#)(k+cRuvq8q}%Lf zwP}$N_Kg;B;@fb{C)FVcs5}*%nfE5AjsPoGFpfDizHqVaLf?Al8_|2hdqXHl&M`UD z2V0NiSv=f~G(W=IbcHCuU&lM}5$zoVmwFYO2#NYe4TQf$I7cvCSWx3TMG8(r+?bZ0 zN7@cf`@g!T{b2ZQ(!V8nb-Pq%*2K_Y=`HsxiaGem60)5r)U!^xnn=jHoabW38E3z2 zgd;XYI0(ok=BmIb|H z?@jCRs}hL8c87S3bA*HDQ-ocH*!2YwCP)!qa8%T8VbV?Z@wZh7{B+SoCh$q?=Q8!# z9RfMF^Q!u4(_Qg`$vDQk4ksKqbQw5GRcYtFs#9h=FG^)Xi_WycndKq|2GCnPB0tD* zZqVp&$w$YUQbAE?G}(-QU(NZxX5YKm7LIuMZ|v9`IvpB!4^wgtqkKx;suFfma5yyb z&Bc16`EX#z+rFA3eti$3CUB^wfSicuRRjvllmfC~NftGes%&LZAmVc)?8w`)maKOA zMgr~$9h}Fp&Ern5{;7MuuJx?P1aj9^J`h}FUDfO5`Puh!)lr6f>AEV{%WJ!6U6q2I ziFGx;8NKHj&m3`nAJj=-+LlQm$3(sC^@yEFaf=nVfiR^DX}nj$>~A03OMD1!%%+rQ z0a?LXD7BffCp$&fRifUjaiRD@3_*OM*BN`M>LziT+xW zs9fEKw^L+`f4kGz&tyWL3~xdR*|^1Jw3lh2bWSpMr5nsvl)VcQ>(DzY%mq)FhG40~ z&tBT`Mm&X>m!$cW6p#+j;xBSukRwyygyF;fY&;?eYUNoanuOZOP&Kdh^cWYEpnpj$3YN&3X;5WRpz#?sd6E`D7=zvLL7!Y!J`Ae(%y>SUaj`u6+g*PU@jUQDLCn`e!P%8)BvWq4MgDk+~?CooocVF$Bz{Qk56tNh83O7nIz?c0?ocO>#vM5y8Il8HA^hdi@s=h!E zHrI4V+>Z2nLIp1c7>P~zh^H`<#G2iZrrVzQ?utHCI>sw z!L-UjW%qD}WoHo+v}4OoS|u&JR-@54`rxP3?EB~N)#ye+=J{ZDe>vX{e&$ot(K?_I zw!^_ds*3**?7X@}r7h5eW&4xjzSHWpPd_u4g;xlW#gVU&*skt0+Mf<1gqC@t^S3l= z9+A4nq-re2gP;7Pw(d*wPqt{VjW^9!GnjrgF~O1KOIn!eN5t%9dq8)5#7n{w#!(np zqgN6|0PAH=lm5GAw16My@nYBwUtvb{EgXN}_dJNIcdKJ%Rqob)YA1t4VY14bsxx#GH;H6TtF#$Xj719v zkM}jbke`^7yNX3+Ur5?TA5$zEMI<~f^>2N~5@tE`QQkkBwi)9#U6f$y0{F7t; z!iED|vmw`fCSB^CcT2R9Ob(4iM%DEqgM}qTfA@fXWo<2Rb%!FOHXr67hsTX^oRzw` zyZJ`I#(gr)+m@_=`KH}(l`N|~fX-~HYJ2DwCL70SfyAnT#u58NVR_BJk;R2gnJ9Rq z;8aHwQ?HI9{ZK_HScn$IdU-q+aliubz8W04OE`GZcn_?QEl}A8Iu{<5{_J-vKQfZc z!XR7)|2ud!tX5H~rux2?1YJLC(*I-d6*^(2Hy_S|A8;#*j?U*yzdP+`uV5z%F0-#n z`PnKs8->hPEGux6SXXha62akPYTX{OQLo)Rsh882QF50gdG}H39L63o6bhKLVg$Qf zjj_AO79+;pAColoOvuDGo+pkzBSQ}dBJY@~*)!^kVHt}Hu)oTJ!})_zI`K_^HZ%tp z2EipYm`GNVa4~Nd&iOK@_rd2r&QQ}}Wf*`VJ-!hQCjA;)`Q2-m++9{b+lm_p7&aHm zNj=z(39kHr#*l3k_OeEr?7?;EL<0e363d(2-yx$%wIx>4E!<{k*dZYS8#0<`pQ!f97U59 z+e8m`vW^W|vJAYylfx^vJWv}p!dV8kWY#wXW(-}2w=fW+#J4w&ZJ8?tcaFBMieD11 z#!Kq^n7+_L1l$ZU7tQtoZRD(#h)bf=nIwOr$jIGvJ|9_~N7TU6V2nUXO`YR5sH6MW z-M;}}6(rMbj2Ne{E)ZRrN9B(fJoCl3S8;)2h9Z=siZMZZFXNR_AU_M=HyXkKbdKAss?T8 zOv&7NZ=KnwoRrFHYO_~xX(VLKo;P7!>VnybNE0)iVaHyDUa$wG45cWp)Rr`EVAN~S3`L!zkbqccYB}f$KBr1dAnRO2ElV*z$WjtYp==X#Q()c!l} zhw|>bu)#S+#`l8oEBpp4EE?(?SWr3JVyzYv;KjuMt>|B=~L|VOOm7$38pIE8clEw6d|>FYPK-1GWgA@AXw|S<PsIk*aRUrgsp-B~f{=sBmZEG5Icoqn8vM-c@fT z^{Rj+z1nUxU(Ms+dTnMnPNLxIr_qbiE0J90ZxL4W$)JL`7A0bQsbolQI2U%s8|;ej z9KoS}CpSHF(q(OxE8c)BZtd8RmsYv1c+Gdky{nmjj&Js{8O||c4fUCsW$wD%rR2HC zYI>SDhy}{3z8@zrubp%FzR@{7wj1WyHCWIvb!EHwylqQs{Y$ZJ*6jV&2&RH#(Dg5G zd zv!5}_61NwotUvg&lzl6Njb8w6D_7@=8lQS$pVOdxGoP+& z4gIyvcG%JJ(YcwyVujyL@9q#GP;mE)ZON@93)oK1=K|7Lfp@fsPx}vugbGf$loOcQ z8f2GDwz7TYul2Dc$5{!DWj+%ezoqV2H2V>1$o0X!d_W!GFh+qRBLJWU{0oauOac^? z`WEaeo*Bd5;Ye-}@-;gHB%+|MqdEy(AkNUI;Jjd`bd3`j9vnUYHkmwNOo;twxIau_yP)5PA zdN_xz>CGWp-nZSR_Xa|x#ylr|K8?1)_->s1Xg4zdIcU^R=-+a|3Lmtgzr3~O{A?SC zgY>&kXFr~ue?Fr>0ldyJ8V0T4{2u6~%V~cG(}|$I4&DU2_zs1z4{;ZYH++l`G;q@} z!oJa&`o9&PVl+7g7n|c}{PK3=@T6LK{bx@(>U0zH%S2uF^ws}f8oYH%amCbvI^ z)Yp;LP;kr=A!v==x|At5FmL0DHEEswjjXH=s?~zi&9LOgY z*=yZEDadf9+{XHjkYJ+|ER4eW8?SGHwkz4*>4l6rTbVe(7FvyMyzM^EbA;8Q`3!KdSyI)fDq+gD~=HO9^d24 z2eeN)>3|sI2QpA!qhIathu{-u5vhZU3raE4UbA)4{kT;#a9M!Pio@BFi=r(mw*G*2 z6_7wsaBB=`&+eu6C#B%Zj_Du^76DOkWrkISW=YXB_`g8RWuz!G+^T=O_xdEQEu%!4 z@x%cM1O-=WKsz~PpusqOQWVy19xNV@f-44UZ@JZZ?eaVGEk}XNFv)7{eLO#D%4wwD zmz8&Sl9zb3(skwP+J#)#1KvfhqSTDL*FNR*y5$k%G(bPdh>hG#5^_?$T&caH(F?*op3e!fqDMg1x#VJY$3| z4s5pS)LnGK2I?sHWL8YvnDKg@ACE7j04SG_F8@S5hqg=Pvr<<1%>uBhG@5*#1CMIir(yCIyOd2x5O6CX>4*% zV`C?N+PFslt1n;bo5*RjcD&R}tE{EI>M!+PuGm?!+Uf#T`H|11(-Rig-7DSJh352_ z7BM_q|3=948%HPJ!F0CAr7H*^G`TJ$uN~1U;>t-JS)7Xx9|-I8@wQZVXI4oi*!P|D z2#!tDzADQN8T)7JQor)Jv$sSW45CXB^Hv#$HB}mhHr5l?(9Qtc`9*igz9FHpDPmIB z>Q-MtyOC@>^3GdpzS^hlR8C`Q=Y)lzJxR7`vDMW`T~JJd6p|Ce_Ss-l}i zT3J{=IzFqP$o~0S2YI5Eozsr)q{LZ5#{x~~ji#YI+7+jfG2VTY=`@yNt^~>y+)~Vy zLm8A3&1Ow}1s=+ltE9pkXHCgrB`;#1l#6*Ed)NhAp^`XqJ@;mo3i#~-F)ZorYoINo9eRK8G|Irou*H%cicQ__3B4m@&nr~!d+=X zk#DGGL>Kdls}0QWYJ|X=Sq?hE_-$$N3A&XvBWoabe#qGr{xoB@C5%c1m$nAqlJmW2 z{3vEaCUQ=3b4?dpy}icCdE-Y?uJOsQdfb-Fa^@}UIyc32uAow@W8O-oTC2QW!MyA` zYdigjR$0vJm+ojbypt$|)%Ut92r_dA3tWih!i(F%A<_N-8U@Otd2(WzaW31zJMD?r zh~!g_$HFVqvxxMn+UoGDy^~3}dm2RL8%A{~3eDeo!M*g+h;Sl#<**&kC^+s#*Y2&% z#!=#ansat~r)%Fit`FH_yUWquO5%MUynDZI6%Kg`iQ(RKyC$5#MfQTiOXx72^X2dJ zI3*NZnjpD&B9DH-6y3)!6;6{w{jv}yt%4K5;5hhV)*tb)i%~LVLqj)Eo3SBzwGb2> zW}$|i3~5XYAre6I*&>cs~FE0EQ6Cu$@N@o5rWS(`W;#}fes z%Po+}hb(Qopf!K?(YRL5ekVD5OhhJaD3ED|R(&BGPF4FcV1ICRfdB@~| zUPVkL%@%Ka&DPI7nR96aQXX3GR4PuB`6wE3MaFEx8l;GmQ|q&QmcDv)F*& zK7GJ%lS3%?xB)NclD)!Q!d^u}h03#nOW;++RH!^zT(a+TN!+U_fOHfTege|>djRpI zry$bz3nSgxU5w`vNH@C+uP#A4l6)Gm3vZ87Wd&du*Y&{i=?LkV_y+F7;Rm+)T`n42 zgy=ZdCjHLE1r+UvAFAwl@Y$h2bS#-abD2AY?A` zIF8b^dqI1Z-5Xl-PTL)e3T^w}V=ZI{$r*e)bX)M|7QGAkgixC#dZX=EML3eG2qZ>) zhQ(#4#&+%$TE+Y)8V;Xg<8wU^95;j@SXrOpluy)fRYSvWf3e_uRy;-tE|KwuDKuio z066G*zqq?!P#?C{3K((E&sCE%%36})9C=Qt;eCVjr&!KZ)R8;Ir-xSzt5#prwuh-B zxsf9XudZ;KdMZhZ#v%x{PQGdJ2`#?V=i3}mKqk7qhTgN2dRvI@hU(cygwsas3gwvSO!_`9*IkwGvZ63 zHkDg$!#zKK26&afkV`{2^hN|Y+(PcEa-(-%euRN6!r}X% zzOz+-w@F-3#lLp&uYFpn>y@p;x-8jSB*&=VD4|#vOmk_=b3RUq0dKMhWvi>a3a-)Z zl8!T?>t1uxsxVoW2{hzAtUGKMg5i}~S5ZN~d)z`X59tkLSJed}tnK7u&Tt`jZphn# zW%6OUUDl2h?Op8C!!#Qrnz$a1HIfWt+b*2UF+kfdGlnyc$(2tCrp@)~;>lBT+A>Q# zkBzf&k1v?o4N;5{kK@#WGX2&RJ?KQE0Dx?%XB+DLQ}^Oimn`+4%SykK`m~kli@jHw z{!^y#%la^OQF3`VUt5r(=%BWnr)aa;om>t_Yd^DFm}jO_SA`~IHy$# zsuQO+;`+i^H$!ctMAHoUxMape(o|ebGMRpFgv1PEq{SKtwKE>Flssk6 zJP>94xjMnRvEt>+u#-JEMQQdJ4FK+6vy#Ncd5OogNWjk`R#tVWmi`J6)2k?t!grn=WqrEoIvjznWO&aBWKiAkNGJ10vnqtJ05~ ztK=@Ls3uud-9=>VwC$1e>!?p(pqNhOjrR0Fml)!p z9jgD}@=KnYC^W8XtKcvwjZB!-v62E~(kiaSGdMTLof5@aMEX6dt>G!yz{^xKm`E%L zEuGR1|49f6p#0o6FyDF8j{AGRKoAlyzn6-953|7>=)hH$8}m?x2gF=Xr@u17t!ya| z12GM+85br1OZp(ma zgkUc&26Re7mVjE_ehauuKswavXk|GhoW@bty~!&B&ss})dtnOVS7II2k4$mEQ~sD< zU1`O{7$un(xJst%c8{!G1OTK8prRY@#ezVYA^% z73N})o(j`utirfDV{tX4&{E3C*FplakP=dGNnNz25>jYMRkW@SQgBICWcB0vI0&^` zm`#Bwv?a1UEu%k-hgbGoOn)f2Wol$C{n2jzR{G z;na?&pZi~@BbFU8`B}%|^f65qRS^-XAUppdBr_Z(Po}{&^c%P)oJ{X=uxk`eHbapK zXY)NGj-z8aqx~6qIt;=s)`~kNL;8ei^Ud$C=nyXc1Srb71 z?Yb+I0)AC;UBicXeVPpv`||II_bQmCP^sV)qYme`>^>|BxCnFb7dL%A0&>+Kv4dljkO&YHK?!O=U5)5jsBA9F zpB44-?^btghgbTjbs=RU+*M-Ul1FonxL@XK^=w%Q0IrQrE57g^*rq#%7uuy5DV!U! z!MhV2$MTI^?$QniF-Ic=%6_BZsV~@>vU7ev!9LhRs%S(A|2VR^H}GpWl-s(1Sm{uT zRe86XZzk?DcW)dW<(ac7+(j6+>4!O8CO`p zr1p&joKQQ4`uxFi>-$_Eh`l5O_k)&I9fy~w<-=}%Sw8qjMnYCN3hE|oCL04Ac~>oZS;NHFE|a-flpnWPOn6(dyFCsewn z09`9MsgCCevW-2d0HuV<-kIr|$LNeDnwoixA6R3UyJf1qxQ$4bTD8jF!AW;D>COv*CVNkHo3IKMT&8iDdDhv)i#*HPMZ0VbPWMzE zLy^bDQT;R04`YSQ4=|%!SR#D&{01x;UVR?Djkft~UjCJdbRxWYbRf4%NowLIDj?jF zHxukC5ZgAed%l?C$=D(7&(Vp|WN4Pe1G7JdXldSsh?Fwh6&%|U8-VwwCfj^MiQIGM zycHJg#^>X&U#T_ju}UE1-YRxL#AQm1Eqe;9ioVu5xWudM_KQ+^*nQAoIxe|@L^~Kk7uN7RTA}uCgOu991U8_6} z{3Pja{KmDybtA}Nf|0g=v~z@i#7JvZ4l4(h#!@2<)jXnhFw(SDj*;e-j;L1r>vX?d zBzVp*CB#KRar-v=C)hZTO8%Zp>g3NCCva(L@_kQxD7XS_nr6f=7fBXW zXxVWdp9AMhS+Ghh_@!*X$9pP|JElFlNh0cM0CTzMfX!0vc=Yg9Vq&bfzp@ z)ub;s0G9+8TjMCS2V&dH^fP1>zwhFA(1RBkbfL*S3J(6^!!)}0F&hLf25CF1o~+dN z1qO)C==c1cLfcZC@;!<}hHwg}y!AX3qv|csh zvn=zFwW`VK*$YIS3PNE9jDrdp+3X4=L-dQ^w zttVuXH_lZ!SkXyGUiBFHf8mWoypgp(2Jbgag(SBw@fP1MyBLhC9JIQr2z*Q)KeC?8gWf^ z31;X{f;%B4iUw*p*a#m7a54zFJo;|CetdR(_Q6QOM#bXwrj42Vov7 z6-?GgQ|_jdj*bj>Y(v2dp5I?xji`<8vq;ql(gBO^f9>jxs^&Dx(f7R{eJjUUNO;~U%=lr&}= zXruX4fURXheA9(NWCvk2B!57txzEKcqw$%pO7*1YiC!c3ZABLzPz49rE|CXK=#S|{ z+-Yu<<0~XrP#c{)wRWt>ucX~n>OC*+XOq6j0~%uk%dVT>HM{(HH2J(at;A_NK#fqbI-!5My3z7kVLKL4S9(`w}?as47S5Ex%zrjYcMVhkJ zI@=y{QmVVy_B9p(d_(ME9H_>TLc5gY>pT-WLm6jlVFg!S8E0zYJT29%eO|vn5n0n( zLsHaGgKe~n*sfH!-8%`+Y1}h}0pdGW-8RC_LXTUPMV+)Sk}0b;CZmu(=e9_go@3a& z(;gk45$J`%IuW18WZV=%B5d~Vm)+q>td@;F@PY!|J9NRF@EeJB4D zXM4A@U)`%TS2)|KS7PnpY-_6=XWJ`;Sgm*^OW3i1H4qiL>?dSF`knGMNw__<{TY9p zw%f10T1ATa<)xuwwTjXwr7T7lEG&a2Rp-+A7H{?Com6on|E+38UQ=*TDG5@R>7uZk7tz_9 zSQjN=+aKACzSHaWFtK%?%A=OiCag5yXIE5S$}!s-$2HedXM4lfNlau%fQ4w2y9lD} zulM32h=UM$z&Nvmc~8Cpn+lGVA1kHZjCZ|bK1$E`?4(77_ zS$4f*q1CFFIk#vxny~5WCt2HiE*W5<*4@-}s%O;0v{c$G+tDhPG5s>oJUi zbITY{_YH5y;&Vx^`J~{yhX$aum7(B)90!?uMx zfk!eod$YUr1to2u<~;;^kX}zWTf=gK`8AC#BJ7 zsHc4F?&$ga9*F6*zie|pJPN@{Z}Q%J!G{%MUDLY?F7PjD)dL%Rp|Chk*y%8z2Rkd` z?s%Vh)%vmVqk?OF3@mL3P32{JfqIlb<$e6QR5>ZQTph*A2_eSV{jwS_PM^E8$(D!# zzr~`#16}WN)&5fS7q>S?eh7Ea;+w4Vm_Vn%tYAElO>nD>BY{Nit=+S1wr*2hoo!DmZ7H>x>U>QH9`M{`EV67^`2MR9p7-n%kSU1_oT`p&9 z5-xy2j-wpBf_2NRU>7_l|K?OkxqdwagV=I9)x=9ti=@-FT#@jACCM+B?nT>5z%@Lw z6IEKBwnzK;7ed7id`W-P8q#SieQWP+aG0Yf{n*=7bs+2`U!*CYAi08DoAPmz+agzr z@R;~|kFy$$@ZL#$iCxeqpyK24hmUVg&Oh6MXfL-G!=D>B==g~#T(Y4n(hj$JX?PMH zv6<~iso+49Ld`e%-_#$&>9jG3v*~0@2cqB*V9}VE`{-&@C%V9x)J{yXf+?uNN?=3j zAI=A}(Ir$SqW*|j^qu}MZnUnjZIm~R)TN(9dHbYoQ?#r-*%_Q|M;6MCvu&!C8rdn! z%i2>zuN^*Ws~p?Lt88Dbdf9e4Yg;o6?}7_fTm@D(7bRM2WouqE<4c=Y6S?r(mSVqu znl0i`%3)9c#D2yNi+%yLy?OPga zVFTAx8#h_L1m+vK5l`5{k!Fpxc*58-%^GX*go4Xpjff`-GQ*m-?n-80RT^{_)4NrC zARJ&koyiCZU5YAv2vla;z6_SFulw}l}&p3-O7lCA+8T%x@fz_kmBvp-qdpcV& zKPj}QbCs}@g3IBm#KGMHJl5!}$zrQk%%WF((CTF?CeE+hin;nC7;5OXlNB@bA{d>o zcgsh$>Tj7RMMPMz#A2BtBH1#KwOXbZOJQ#XS7@V0PFwHMLIH%xJb>b&9$Xa-j#6=#VBRNgh)BF!!(`9!szg3GhBN^*!o%QLgeGKirr z$IN;fgRHOhmY&KfddCiFps3b|cU>yk{3}l7RIy`e?d&79%F%iUp4O}RJCnyy7?V;on6LX6vWNaRz9ki3dK*`)EY zucIzOgr(RwMO&N*%doG|ga)5nz7SS?DC^C5+K}kc9A&MDr`fNAcF#m5#IM47zEF6W z*SVEp|7DoB1@n0^|D32_3+;GTcn5ryX_0lZrsWpof3i;Q;2i2I@1Q2-7UX|eC$&}1 zI{D6DC%wHwM$~79Z0A8FV`?j?ybr2mZ%5y61=aUlTr~PBE1@=UQms3a zRO+c%eibKnbc!aKq_a!JV0XD~T07EDlYory-%)+zjogHb*HT!{mQ;TrJh+i1{klE$ zLd%YVON*Z*wsgv+N+>i(!a~W=pqGiMiDforIRmEGiHKF|@ea(lnX<(aQ_`d;M%hB> z&t3H;XQd?iV~97^Rto6WY8h=pikZj z9|c$TppQG@li+$AU1{WJ9}Y6^Smd7(DswnU!QCu5BUI*akb+|>7CWJ{glb(+6b8!< z3MG&33AqAlm?G2*hQhS`MHof?S5kB$E?8RG z;+Jth@YIJ~Z>Kj}+vOK}$uN{ODFbY2yg9vSZ2aXXsQ1yO{Pfx=jveXv{k+Y?55#rb z|M+{4-|x+Du;OUxV7bCkPF#Xu*xw9;IBbQ+h1$t;W2IKVI0Pr%qcV!zq<5^&7Oi@A zEpql?Z4r;gJSVqHLY{)2>h_{X!{veY*oh<7={=%GaC*;C!Da1D+n!?+TZ~v@OKv<0 zt$NMlPOtu{drp4~x0HOGQ4uGvZ6ym)Pf~dD5QJji2!C%$_*DWOIJghXrZDLcKBPlrMVz%THvp zF0l8hvz2|&G^Kn2?4v9hL}-EiQ@a-gg~oa9@WK}hg}-3(yM3At8~0x}41Y+Wggwq5@66RPRh4xDhwCcY-H_%fy+EGu9F(`-1L-i1NieuT6G4roj5MMWkODf3$4#0?r0d(gM!4>=fJ&HLma> zlYF1D^%NJ9{+~4QR=E2yG-ZNrAoiXK*uZ6(kq*mQ5bK#B6Un zSEh11+V_j;En!wlgqfL<(jKNAQc5J-a9wakPZ7Mha*G*q5f<1=rk;^h#uYk6@V1Ae zc@IM*&+~_>5hS{nMyaCU$`L19GvHeVSDaF!8II4otu_g6?+XvG*i(7jsSO9ZWtXKL z3Wr$_c*BkaoF5I6w03IE#)=KQ18mq?I}VaatE6^lYT@KaJ-qXxB=NNC=p-n$iqXoH z18yh9jgTBc0fDyUZ;#V-cbOq5T0q7ASluuDnEXM%zWDgd7Bq-K1N)=oH|eM=T(iP2 zWe;G4&EjLPYaTpwhiCi5jv~WNgUfSw)1MQRF%1Q!#zX^&+ZEm38P&d+nYVS%Dc{)& z$yAYF5G!5^i-ei_LBT5p=jvYZy_Ou1<)K7lxcnxKU(NH%T49^tCOf-j4exM~3>FGo z;J*l`cH1YtX6vM0w)AyWf`&_V&*7jfP!e!>HR{cVDB<1cC%UU)_b2itsZ(R^F&ABT>ec$ zhOPp=#n%>eEzJhTi3Cu2+?9Lqn&bNzwNWRVH*vu`p>rxv;NY}Ktq8y8e7a3$$E4O4b5}JH+4Ti zd>b>LLAu5wtuLuD7gG`|wZrH3)3rmM84w$`y9*aFs2FF=7nu!`bL7y`y3p!BiEZ;Fc?e)LQM4Hm-w=TG^_|(?QTEn*mpf7t1rW z(|gJwo*2!W2I4q_+pRSy_L*sQxl#e$9+d?J(XJNVH*YUb;zW3He&R9y&i@Q zT%V67=kRnEf+LOX>uSgSPf*#OuJ$!YhRSwIW{Jx7m9>Ift+Q9M0)j+kAGc`@dL*}G z3x^`!Y00re`k$-IeQxOS49`(M${RR^v!gwyH}N0SQH{QlQN&2daDzX z)(Xx~t<}S+#)%RmQD24U4Yz6tPbCs^9gaeiL9suOHL`8Z>S*^T*Wr6ySiiFwkYo9F zGuV?vBncWNxUy>2|0&;mBg|6faS{ICoU&*rRgrrmGdMjmFPrT}y?uPP&U_2acG*m$ z^)j}+xz#f@;Yc5YeLQ7O8fh|z!eym>dp9Pv>~iPLfJgSm<-G;J3hQ@qGg5mujL{f!;bFd9uZM*8aVA!5r_h(w> zICo5G<0DWpKsb60>9M8ko?V^Gc=CMQJdCKk$?=1Tzxg7Q%`c$f!)~l1 zc==Ok!p34FD+Wn__2$DF>UTqdRBc{LhgIH#iG-Sv875{M@g0+!y0YZjnh0ZQO0 z`jX)!g(g9zWznRdP&CO{n1f0MqDjjrhza!?CqH7-wqE9d+!HA1$KE0$8p?aaGDN%@ z;b_ZOUd6mjbY~O_^kt-8PGcjc;XInvlc;GrG9v2pQnPhdikMzFF2hVL9Fu;>G3lcn zsWBVfmAbR)wCOvN2@;x4N2k2`OsN`Qd_GV?HCb&*mBF0ss*brM_srjv*MY&e%wXIuva z<3Z~_G4-Q!97#U*iIE=q-;!Gr4jDrHlM8GimES#bHxT~J{So7_Ed+6cW+nVR^nVSB zB~=XB$Vj4skA#hIt(v<qFBhqkoEHlpg z9)(!;cKvU5(6)Bqe}!wQYj0!l-qOF{D!6LR|78#Dd6y~rZXW>1UGcv=pnvaH-bGLq zTIKN_{c=!!7lT>{)V-a97}&!AliJ^l!9}ssy|-^|Cn`2-)c&vTR4e;2*r-NY+pAS~ zW5AE--=8L95?@$^T?JQSlPt3^j44S4x0DNs2|w3=Y<;@uH7`mfU^yFEGN9%xJUDM8 zOcn){Z?NNd)BhF2)%v1IW^8$7W#32vG=$(>Qr8eD4J_GeSZEv3M7Ri|R$-`hRu(&W z9EQrsX{=s@FQhYP_CJS^;u{6`EK*v{5c{=-l)igs3jH~xbT1aud7_lAU=l!Q*1hW%xd4X~LSMb9o-7A4hi%x6N&R^(9?{}cOs zpKR^ws;X)4q*kP~!$)n!W6ZG6V}V@nkarmo&a|vK!#N7~nM^-TniX0k(@zs-1sBQm z(}Y>U=}%8KG!1o5rk^Iv3Xbi~0%lZ!Byz_?32ngVdy7AA4{Qx>ki~jBQD(qMMJ(41 zOHksd`V`ENaw&-wJmr*2apylO$yhPv!cT3La&aXYE23PqRfcl;bkX!(|GJlu_8B_k zRrM8OrV=)SB5?VRvSYBAjqmS6eaiKr=Xx>~vUFNxpZVD|m^>?~g$>c}9lcDy=BtL)XmH$3Y( zca|By^>3&5s1b4{$182;)zk;!Rkn;V?|YfIOFQIK*z;gR@9ackZ8*5+JSEaY;nz@h z{GBQaM#C{G`?@+4!tBOzH=}FhoiSTt=aL&=@nLW5>C+Hx0NS(N77Dq)>60l@L!(s4UhUPA@f>koc?#LKgA5RzX+y34XVBtuF0N9N5;V&^b)<>bw3ccC78 zLAuvBFL%}B|fAJc4fvIMz5o^vJ?=Y26!xOcZxesmt(P1#)L?d$PXasoMd*#g9t44NfjKnOJk?haJD$O_?gtlQ)eLy$FhQgRQrdP*AR}@|AL7lfBOSb!2uQ;U87XjRXE;xl-oamb4vzlvWu^`SiHc z@RahQXR=%7@ZEGQWedSpS1w0kFlS-HH<~8xGJfXlcfAif{Fh=|*p6#MK?EiZLw*pwiYaqlP-~QIEKBUK_+bWkC?`8?HJRQvk;dtDigwy+Z>ZDgu89lUOIC%Cww|do{`k@xX z;dar-tUdMa=?A}<)}d!O{dX#9IF_N7I09mepqHwlYmRYp6n9ycp_i0*UZ*_6-WK8# z*=b1cnhgi@%%o!lw=_8|#W28{D00X~yV>ZJ&ke-Z6a!v`=6HtobKyDCw9ks?huO>F z`Ez?cJTJ*_DO{N9P}fUxKfEHTmCC!7vMB4Nv@=R4hob#t%&0Q5>1;q3-;3?{5hXVVsft@$ytk zUHgwy-EwAPC7z?#G7ya)-9+@Ar(xPH-NGwbh_04Ew1SKJ&Or2jHljbbp9#@TlLJpbuFAmu7$H= zNM-q`h~Z1P^XV==;Y1<%WDwUZ^rGAon z0Ek|}V>d9o7)g@hrdM%EAJo*N6VlZ-^&@(Aq7jM<`GPiCHvb$P;!=E#1WCgxHBfiH zktshbL%stO7BGnOIy4Bk_3@clXb28D9#X;lB~!6R_+Df}GX0>j1XIPdo^ZMGA7E9~ zKAY6&_!$?XCv36WVua79Ps#Y0rVz=PC3=!v3rT+|(i2iqswe%JqbE`hv0jr;AsOfi zUR^JLP%qMxlN>c^+N()5T5`oxh-xp&wImc;(r#V+8n>-3ArC-H7!0*Q%nY%slXIxb zna^;fV>MO2jbiyiOo|ynmM;Zj+!|Bdqz1xf2sm@eKp4q1lm%u`JY|~kaYZt%|4C(P z@6DJ@wa&~m^+p^Eb!LdD5zg!g{#WA6=u(2#qs|O#Vsc_27`JkLTpKB518Uin zmsQC63n?Tj`im%J(?}s%sQ0QB@|ZVA;?B@aD~(jlc3G3CSc}Of6)&2mo=NORq1*I- za+0K05-(EdHvOMi{MK;Qt%(;Ka=a)Zw_n6SPF~1B!Z6qi@y@06`7CJrU4iki)=Y`3 zR2zgU-r&TjvgXpnHTIPgF9av4K!LTUGGuFJ+`d?IuHk}6UQz@Gzhalj^nbgZZUl+k z`iI5`JSUgB_Tjy*MHnow&h>2dbq4Sa)*Rrp0RxK=O#r0sKdolh_tVwgj0%m;Ba3CQ zUOum2vrB4}Z3aJ1pEwkc8ori3Ucr#k76kdNC`5*c7})>`3qJ}=+B8ov_8{V@g_@Nx z$Vet#1vS$9n?~B-oB%DGQv1%5Z7*W6$1h~D=m~PHvZ!g+nwD`RU!YBJ6k6r6dHBwn zvoXs8dt|NISY?qpvgT~8vdA2{=q#+V$Q*fd=2lr~kG#36%<>r8vnekdX&$|hS)#eW zh*_SfrdMQheDsdYO|Qu2_-tTqdWA;En=4v5E9!GZmBPHdtomSn?FG~a)$&Eu=h#Jk zY>{LRvN)^}bhR7N2?UBWYjPFh>!jo7LF_ z*M6;OKzL+j6uhr`)3CJ()>@8b*hDj_YjFLe8ITrht%6_%qZrm)1;GsH3?B!VSf-iw zCZYYd;!7?uN&@yAdz5Ih){H0{xB%8%q0L@=9(Oxt#>&mH&}Q?DwU#kfVci8bYhkTi z=ZlP1Cqccrvet@?*4$dTc^4V2xw*2|ijCIXTE##V7;QD?YQJM$1iwKHs>$RZCh(h7 z1`>WLocu!pzmYPKH`Xby~zPyivJuq;!*Y$VrgA?(Q z&eJu>H;8&^Yd7DKnEE=vS5c<);q@il{K3A=np5OldsjU2DvU)CWzBJEc(`Cx4b~jh z5QLY~FA&)=Uy;7uAllKDtR!e>ija023Tlys7kz7JaeXRMWt>9JOXT@ZbTfzLYxLWB6oOt zg&U@I@-GFmLjXgR2BKfS#~(1fx>V_du15FkY=vWrqPwRTI1yd=TiEfT(qb-1u{4-jW{;GWSS4MuvF6gJbh0d%uH0C2 z=DJ0Xpy^1$x`j1YreeoJ#oDJ1>u95}ymXL?@?f54r&x2ogTqIKHJ39u1`@VjRVNbG z8Zo{&W@5y3k&u>;P+=)H;yO=ACr7BT>HI`X@v==-jI!NXO{Rq#ox4V) zRDr8UVy+YTSs?fEk3axBjB9JWY=p_~;3r_@arzV!*5WIEMJOZ;levOYBP&|1ww z4BN$@QLLOlUd5}w%y^Zo`u+pQ%XSUvIbOw!NOinQ){dItdhtZ2-+1u{EWxJwH#;e6dlA3)_jAvhMQrlojThAu7iYMF>1V8tn!Fd*qSIN=Z|HSdKMXLLaS7FX5J6=Ys(*LaS zvQItvj8}2$DKlPH3)TOO@v_fg6-~dP@oh+T&4Ey}`ByyuhOj^O;ff{QrX@z{FA#rrb?tEl_I0*hbxE#g9QMYvtul@da5D~q>3!3rI ztU31SF986nH_@+5W>2fx^zrIpMyS_=y}IUuq`6#z z_aef>Fkt=arMg79*6jUY!U^jw)r~;9Hy0laz(+}h)`2?ms)+So&EUp+1hj0X_~a97 zjy?-9TWsd58N1FOTIzfnqmzPH(UeDZw5rM#g(+-w*(Z{2^~sNVb(6l3);s)wwT2&a zrKkFLc1uQAZv6iVpcZ>_LEPHGK{M1WMOUeKmrv}mpr3>~6DJ@vxkDeY<~Qs=-oy_? zAbVsmrZ@kW+{_Qw9uX!~J-Yj8NuBcyRWygBB7nz}0KQI>2L2PfrbSaa0dj5>+8k$*P#EnGRci%~oV5+Nf=3?lk9 z8A%x5j`-_*!T!oMS2On7p(iYF-N&TvM^C$$;49<5A|E5pAXMUGq?>T5laXDBs#3{^ z8V5o@W354T6E6Y}v=GT@yhj9NBGw$Sf3B?b@8}R@-BjmDt;1ohC2mJ?IC2x^%FbF- zr&BkJ5!iCp3KMB*SKon{by8-{6$?AD%MlEp&ia_&WzE@{puhJ8#`RAYnntuux_{UU z$vWsLq7f~;E!8aBKWyUuA*%;JvRaymmW1tcL@Vtcp3!4WWK`%q&cvLTga)Z2ofmsv z!GZ;zNu>`{GIxS5W(C{7p_o0ounxk%-B00wQqo?q#||MOT=yNL$Ie0}B#1{K{)IJ% zZU*X1pPp9Brxmy*Tyg<&_$OGr{Ug9NjCfKA*HuuXKW_gIV@}$$Pk#?uTFk!V@`u%V z52rPL3VM7=2Q9qEB@(RQpu&bn79mt)SBJxgq>tIBPdKa>bpuwZ#0BC@S#>}-KQ4t? z0U_m;9y)OGsCDsc$TXJfj$IMD>NwU^>quYILtW8G^P#S2r1>GvYDPK%n^!W_^7Yq6 zV@+d2K7KaEcdQk=PA)*HXte*VcAYy|wO3=9Vyr3}sz0q^7K~K|hDGXsz)s5vEaSPJ z?pBi0AjJYJ)D$nbkive1qR#c>=wr7dP4x%r)5IWS63gArR(R5c$aW3Sk&#hfZ@@#5 zft)=)!P^Z>OcJc&obuv_ytv>-N5+IK5XbqrpP2FPSL5|9THc$``>LULOQQ<#}LegVunr5(~VU(@E+I7F^K&GwB{b#XlGY z!|tdz7@fB+qHZv_=>ML!DbzCJ_=q{3b^6`-l!TWKMZDZWFD}s0I33iZ(b?pTEP>*W zzmF%~QFnYcRvRiP!fun7t;n3cf=7RuFO;=PBWP5LIlNa41ICy7;ZMOH-u8JhhzGs6 zdodaPPF5j%$n{STPpf$G{1|ge{~d(ygu*883zLsobNH?4*XjHLJsGn-s`>f6;XAHu zDuu@R1jb(~r7TY$i0R_wLVgmRC)!oqand+zE=_|t`=rGX+xt=88rYuj*l71_)bP?C z(n}o97C|?P(h*kTh7zgb8Dwgis>7gGdQH3@-HKU1&(LU>3!(zEwV0mpy-lVX;H;4D z6b=#&7MRW;-Nk7Mt(M&j!M-n1X3Z_X?WY-tTIXvVU+5p7T1V%X0e@0An6Bn{Onmu_ zkIcf)!sp`bhp(Il?6opnagyrEnptN?{oyFS_zVy2Oh#v28~b6U_Px$ym0R={3?WT~ z@Q>Nk2FNe?zSEq(+zx|I{{J++14Z7*gA2OOdc;+pNsx$#PA4RG1_E@Jc$i|M2~q>x z@roztSUuJpsg6mjDP<47As9dpNdleZjb!|$a#6-D&Y`TiPWTg4CzIcL7UTQ7ztr$V z>4KhLl{`21+4Lr06nj#cTM}(U%oR(>jLg12J@-QEQBiF6M)zF=rhTrK3LKEdi8uI>pA$Q^)fvkp!KO_vrO8Kl zdWtYD-Zti4U(6uHSwifxhVT&bYNE4HV;bDdZ^>j1t2h{{_aFl>PShC~D>Oow;ctnp z-}65~(g|7TZ-*?F-xjdXjICnjrzIIw7UZaZs?18Pl`E1rwX*w+!&apm z-`<+NM`arqF{Agp*89U{yY(VF&wta!eta*t^{o7SUT{zL-vXg&V_e2rs__Bz`*n4c zP*Thoo8RE%Zug~QNX0WgAe_$PW?0SZyaxSu#++`@7(4QMWc=h-AGXoTdU=jaLG9#; z0t@8O#n0^vK@fe)`mp>p5XC}0E!f56J~Bw8c_0bg$8MS>S7+(%0p)D@jLY@n&JkVe z%{x)im>rD&%8pwO2F?@frcLVC!iVthvzq_7XOPDCEhI^!5lYa^F*kwUN0(u}fTs%Y zOdE!>-3a$`cX#J*aSs5W$8T7<85@LoxpwK+%pKHh{bg}4s(fwY`t{m?d(K$?qf&^2 zP=LW`b|OE@PPFIdq4wqt=(U6$?+Lal*T*)HB~$_rH^0$G+RLzK>5)ZMrf%0oA^~ip zwli4JxBG*378k2NEA#F6L>tRGxYNlYukxMtPW+ZIr~i;+wD_b&l`&X2gLWwZz?%S8 z{QRYkg5s5k_BRO?GE-qWlVZ3~twBq>!`fJ*t~)>~kRrei%ufVc`99EXdmfos8X5jR z=hYC<3RWia*jT?fGGzjHq6ip>dM-PDk!tT};6WXV*?Ktx!e|Z0uJcb%A7UWkyxcb? z89Ny6nvPuV3Vf(`qJB;+k-OnOKk5p*#oS(0k&WWV9k<;VYAjjR9NL9P!E@Kxaabdr zNk!nGYgC@xej=zYP_`{%xRYM!owKp%K(+bnq4Rza=-<$5^AN z(m`-y6(S&okxTugH33VmyxG5_3V2cydb8#F41Gb3KG=N(aR~eboX>aq-+kS0UnZMV zo&yP4*|DhviZ+#vW!vz72GPu}TzjyDP^kXpnpU3y@+RH>Xjwy>@D0bIM^Q0It46>)pbHx6 z!l4_8Sf$-tds2h`TJ&nX8#ZZ_%~^UOk?p60R)f-AQcp#@>lGQ6&Ez{%?G_~mqG78K z7bO%olTOr?E9cGNyIXrcZV!#&fdTeLE}vAZjA5r^hDhftnMBcc(-I0kMK5ZcJL)*M zhPItb^?{3WD7)dQbCynx4LjA!J&a*1hXzj=JM3#V%4PfHyJ3S(`;}Ym;fs&xh=B^| zgQwO#T-{>ng;$YYBW{3W!wh?X$wlU)7l7De7W05kIIE9P6f1Y3_!k2j-b&p8IM^4s z|A7-U@S5id!&i2Lr~Drz7k2?2Atwym+}nI*?7fN@cDN(p*MO?y%+Whz9Hvwb*GsTr-jW|jAi0x&OYQia4K`)6C?`N z@8~^^_Jp*}^~$+OzIDmr@1r-=S>hK2t$ZF}SXUKi`*`klOj2SpcxJO?jQDcUlOS05 zOu|Tpk;L^9j=E#6%#FZk1;ujH^ER_JrBLBBmgDba0K+cdW~>2d4NfY}{KS(W_? zKz3iRVeFtWvTFQFXpnRu@q3!v-~@Z8`*K?itpho~iu(8n{4D4BaCU7gUoQy0F6QI} z#Dzx@U7}cTD*FYmPV%G}5;(YzPid`a8;aFZ{S&#Uir zPRM}FHG*(xB;2HaGdtO55xXhB(&o0F|0Nk(E!MM3trnoL$M!6Lzw-jKXpm{h%d^g2 zZ-kyaeMMc9U|T5s;R z+T>fmgk>GF6GRs%ia3&82KEyIfQKvjwSfm)k7{pLIW+k>BMtC%jsmha(7)=M)E2DM zcdxk@=O0BJqp718IaD-YQm8dvKxnAHo9VOt{aV_xX5- zbijKLdAC95#eJ+l$a?J^bkzL)mpYZylUcy;N|4nj`n^g`uV-yxq-15BEy@C zfricJDBaDvVuZ+cIz;$$F!JyOR)&`V?)r%iN9-^YJ|CTVAk%u^t1&w9INrIj2Yy~Y z)C%$NF-x|Jy80>X+!-*&kQVa(!;hRQS0*=NCh;8_#LES0gk5%G{&vHg4xQ6|M*`&E zzuLdcFlPSs!UQRDV-~a-%dcKLFk-Xwvy&EyC3Z8T{=Ac6gzQ3FR04d>WEhoJ(}5vn zO}r_DBq8r1j}WqJ#o=Mt5LyGINt#ZyA-OE~Z^z@!_qspZckmVPn!q)C<+48J*&)?g z_PICm5ep2To4!RCcD@|Wa5bzc-Gc0_hSrdGR^D-)Km*6ZfEvA@PjI+N1{+n8A~MBl zel@sqf3u@&`~_-ME(>2gVf4L=f*HOxzSMuf*a#_i@+ADzGCf!IYlI-%ui`qcUe7(E z;e7(IL-tJ0HROYsrxs%t z)Rh={A3)$O1dO0(u~Ea~vEHuzw!Ojc$J0x=iwE+4`v;if_j>Z+%(K(;R+q**U6a`7 zZWu-!cX00kT)PJ##15#szhgqw6euucb-A`T<2<0~g{}s!wqV6h(>t1P07x0#M4Cv( z>DZuMMij0?^b^e$1ci1APZd7b(5p=cl(Jyx!-TVQNcf(S@Ia2C=YYVoNQJ&*kkpP* zMM1{1K119Hi)$LmRezo9$*cxp~p5~ctxlb3;?*CE&579|!>pFVJ3mx;}j zHz&%sJ>9lspRoJHC2EEpNn!CekI55DLR8tHFFj%C=H)*Yp4&Q_)U3+ao8z6t7!dW?M%^i``;BCfDkP->%aV7YW`ZMU zSP*{yQ!jYv_5GdH7r#1_x(z_Srx%2vIW)KKcz?w1-pyQFY~~FVB9d6PZGo34>r2== zsCwOYm;8uMm=zHqzQa1pyU5EcAur>&d^U$4*PnFi86Ed2sHgrI*`c$vFquAZfONP5 zOwV5_?`o#-F4#cWj{|nl2#Zb9N4YSKI$ffW#1q9<5D4lHK> z986Y@qVRWU^9@0;{?t_qp@i1LH9C*N=Jm+dPROGre<|VS9Xu>Y{L(TD_N}`vD4cMq z3SWRx2k2v_i9kr4hGmtwx*!eotNzs7 zE4T-DDR(`ScDQ@}Ka6*VJG4=@EIS0PRCLuNH^Nvi6UibY0E>l(W#V`Amzn7q?-c2T z+900gDz{Tu0s-uus)G)bY%;Gg=#cj8FaM9z(xuSL&=)zX6l6_sHz`yMBeAm_2!x4; zb68iw`Q>$R++LH9wUd(gGt=ymGg3%kVD@Wz8_j@Lj@Y31MK5iQPtu;@kn} z_cr%|lJufnA&#%CwOWjXoLEDPnG%h}n!W^@Y)U+qr^=;02&OOZSOsF*KKceC9G(Fh zM#F%~$+Pyb9|WMzHz3&?!P>ajKn@tr!O0;U|JGT8G4}y=yVD4Gn-ow=^LDRSGzTC| zKP{S`J119o#D<2J3XHr9J9G2Uk>ok3;YEwvUFJd&a>>>=Q+9M2Vm$p~8O{kgD7?vt zH6m)r>RP6<_utu71ogEMi$+@myI|epJ%LEDGmngJQdKCTf8C9-Q9V(>NT62`!@Oj7 zjaj)W4@^rJ$7+v7*()Gjj|Eflt@8))TLe8xMFsvOlz7|1?+XZ8TOw4+q4C`wizE$m zx~n4&1z*&LH&0uL!qNf|enJd&rStUlV>}1i4V7&0m~VbP;_co%o6EwZ^z$&- zpL+RD3GBcrwUz;}s7}>XNIrTvuXm-bTFB$K5mq6}+{}thXuZ>SJ_3-PEg3%d0{hGc zAfjrOnxU00W0QJr@1^=Fkr2f*i5|mEQ1pZ)-v)Lnbl0TL*tdH{kN7O>e>}P&pw=qY z3m@AXM>K;J`a;pdt<1E#NcoLOQO(ZT_XMbkSH9_#*;7D2Xgzu>WP}4G5PZC1X=O^N z0g-!_Oxzxui zi@9NL?j=F+AmPHBR`*mVwv$i1?PnL&M ziUqQ~5Jv}}f_H3(2I$8ztTFJ!5fI46>uK1-$kZOoKfD0@?$&~79oE_h6+iM86U=O0 z@}ijB)(j}r*CGu6q4sCc&i2`vg}O@2g66Y?$xoIy+#mgE)9xuu6~9fU zxEaA_mCQS7ZSD?{!}xgAL?$g{?k~^7;s;@h80Ec}=zbE?eySb07D8kzUl8|pk!iBb z4Z&q|@_mSCRXQVUEdWD`s$CA2;!*56i70>o?3b8-(}%-Gl0lnI#(#BKcMw^eCG(&Z z&_Rp7UP6h+kKDe*VgInVeeH67f=$)A2km6lmk=OhJ`yjHxjS&?(R;}B=nVnPox^KM zR~g;Vp?)uzLDC;&90`y4a{{O|^&9D0s&^Do8BQ|X6Dp%oNh;XoE70&JlB~NiE z2SCMPA(q$1!6hP(QR1kDIIqLYPob6Vk{kqR@??>K|I=A11sW)C%2mB#HR@tHep#aB_8)T6wNQ2JWv%> z7}qwSru6nXsCM%-lFbY? zxVU5{6{6o>Yn=B_VNDE&u)*tjnglW{#*>mlns;OIL>A|Hfad{Wg`|n;RlbPCiMoO{ zEgBC?q7pU>6|uKc*1ms@B%i6s64w_q`pW!#f@4Lig2X4eR}pnzga2}MNy}g;!jH_c zZN_&ia1+GahxO-P;Zjr&EAk?Qf_7gpAGqG`&il+`fne=yrkUXfx2C>Y1$l_1L>N>N zUa8zEc0e{&C%sB_747Az2^FN8eKU}ql<`!2Ye@ZH)ER7=&v7}KNs>jrodA;Dpps7@ zTmV8MLX_n!UG~%bL0w4gwP#!ldkaDJ7y1z#nET{z_rOS>90he=|GTiy$dhQ%t%ZiZ zze@p4>o4se?vXFA&IdX}_K_rAC+So?LJgqWSI8J8Ts_N_ZA$}MH;Kh2A;^pV{mpXm`#V#Bb?H_R|yo6$Li)h zpYhA%>Gl1ONhEydU(6k(bu4b0)Ut`!O9^aG0{Q>W`ce&0sJQ=Np*vHrGe8_Mq-ABh zf#;GH3J(^O)Cs!9n2?R4msHQD9W;-t3Ls!(Sw^4X5Ey^TTg7Mk^*iTO)D0E-p_gvwhkX*h7Yh|@0CYxt^aJj_BXPQDrYDsLEyhtup zZf(Fia$1y5TO0Twc{G6;bbbHZu#yVjz9T}=Bhntvw2-0rJy#bWDC~uRnj#MZWZ{c zQT-AhZx;M~O|2NOp}_D1fx_bL3V+4rBS_i_su}X)-&LP7ZSFPfct_GEd@ubfDZVg? zv){ZgUmP2m9k5kL$aS&vZwUgK4OEH^M96uFezs+x#@+gl&&EyZ)Y)Gn*4<^S-t@cX z^&h18yb1T7tCxji=YEfWU*D7VY7IMjCql3eXb>DtJ9sHqFNKabb=f}dv@cmECS1?K9$x0+OcwXa|#>2S>oDbWu@WYtF{1EZQQw~-DKnM;_z(5F4iap0X zNx&fpyHK6*d#uZ4wgcRE5HGQ80<**JVIc0oK*lCI9w1xTzi6rESQl<6mHq!m9mcxN z2;eO5zhEE|rn@RQ++3V@{PFGh;Wv`Ftz*bIoDewjk>;x1T55WJgYU~2HJ|*9_Cd(@a zxyu_V>|IoZi)c9gBKas&mfrt;sG#-%2BJTM394Ul;Y13=K=!xeA7Y!Rfhs>d$DfNe zK!NibP>6Xa(7;FQ0DKCIE z1N7fND*f@Jg-u`w*zm=7v-HXSm$Li&Ywvy<*`5i>#;M1SKPbB;8vXmK^*0)$K^fkD zz=1_hH`#_IJ~6RlbpJ06j>yaPz=6!Vknq8`SO3+P`B)8wy05UL z#?N1Q&jS5-cQ4 zPaG3^C=rH8l)Hmv{71etfM-#aML{Jkr_u3y$MCLPeNfiXsx5e1dJOo);;=JRI<)>Y zs$&B&xwS=0TxLdI9LV6BJeg;o{K?6#q5D`#w-iH%cFH7eDr$oiYewtf*%70gXWQZC z(F~omB*W(gx?HC*``tX_)a2?AVHZ4MQ%c!XQZ|;} zZ5y@=mUK^LTY*Na_d5$ZL>7k$M=Gkzev#EK5Slr!lV~-QnK7@E;LL)OnU*G2s*G?_ zH8;)?1O_Q4fidgcs3J8*x<`rf_%MwG%O=c|>O|{}+d2rD6f; zMwBoUJgTh^3AZf?@{+&fqPp_yyQQJR@+Ow*7%wGC;wzTwKk`fO0m{1L$-vsh$2UX) z^eKEzF@tLL;?X}9#3BY_;I8V$$5efk2;Ez?lE1DtxpxLC%I1gcgymltP#yJ1m5NHB zHLI62q<=0Lw@ET1zX!fTR4DOmGoxpSla$?fe`)r^tV}2ZtbwQyCWULkQTq*Ogz_EV zwC>xQTaK^8s7hc4@jk2n=MR4Eh^ZA1$&AfQ^h5pi1(BP{tjEdReV<~2-( zF0F9m?lthI;Ro5v_OReQ`sb@D&pie-fPt6Y*yF{rZU>77Z*uSbg$S@NZY_ z)wdUuWQ&up13mX^?u%pf<9lM@zPj7(Z@AX$Hx~=tOfmd`UpyXfvnq*$R}}(^PGq>0 zxVHiOJr8br0^)k-_li+GMHQJS@5ejd9>QTFrUwOWm%DE#;SLck`cVm<ƀ@ne<%Cz4RdX)44m~z71Qudo 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ⅆ!I)# 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 z�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

    {Py}=@yTm)RZNU5_W(D!&4JOLKa>R6J%pl7lzWU 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 z

    -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


    ca-@c;TWuuQn0{cWfhy!4Y^`mTNgW_s#pE%Zvup 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

    -voVqcP%NMr<0KDyi0>A)cMHB0b}QQ%QV;d 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

    $hj$8@Cy+^CfQL! z=MqxQ+lUBQ9_JxevcS?MOar5y0L1WI!&@5sHmI-mf_buBeJD|7Z-DG7&a%k(s z;Ql*`|E5PHW9)r@#*UicGZ0#E%PVT>U!@gY!=X-07D~}m8^C2)l@pYAiSB|?rkeAY z#T{!&A;CCmU-(UTj+@`>${6_TWAPI6oEjpm*M%iV08WG%#Sq1Qky66h2HB-u4QU{5 z+GGNUl|l~Da%NJOM%8YO6N)m}|DNXm4gr>8`G zwxn01n-!XcPvUz2LzB>$A`B80N&0$B$Vuf{hl;8SBx#}1n2;G4`b4wGYOr3h2=Cw7 zb_Z=TAKsFgLT%jK3E!KMrgWgcmBntTI1h0wyzzhCeE`sWmv^qdXjU@?T@*x!X`j$J<33d5XoGt{&JXirIh%w1BJ=3ATZX<69|pZ8m{hl<$q>A1xj&jPZr4h8m;z5~{u^lsx{D z*T19m({HPdBpV*X%E$Cu6Yz%7NKzP^83xFUM?8?Jc=)+XRk|P(GYf7B=`oiwrI*%+ zkkl^z)*U=F@hov=Ws|_=YKiuRtu$#$Bs4 z@n8yqUj1YF`?e<*0SV)^j%m(zj>61ym^!ct3 zM5z$ari70cA+&i@iQ-2h{pKE}qI*WYoOa}OR*s^sO9e-zmR2$(wYZs_n{bKZ8Fcee zes==o6We!}PKz(C-#BF`BVZsMRVu9{O8Xilnm{P)_0soa$oys6aojm2CM({Oa6Cr& zNRWUGN%_s1dyJkx}Wn*~S z)94EB@C=CFtrbESM3#D+1rf4oB^*Ib0{@{J40B)9&vAt$)M%G3DBH-hCm)5%_I@EH zg6)yw9Hw^;AfJQNgSP0$O!7d3DaQZik?)**VL8Abnw{RE-D!DiYi~^yVB1E*r{|lP|?l z@?}|Ap)XpU8zS7t5mrfJCarN5ygzv6k{;8*>ZSthl6)r4DD5QW}^q?yT>Q)-(-?2hpQ!`I8)m;oce9+_dw2K?km( za7W@dSxKy_6y`c8X$o5_pVU)08&8OSOrfmXEZ(1!aG-cj5tcLNLTJiZK`&!EUS67X z^Yi}rev8gTNMD2{TbJM|3HcaGX$BpfiOK0S;pGs%^WrpOp5D7yhE&=`B)0bYA}6ao z#wTqx|0*JxMq;5$3<0_@BkA zz&H;;&!|fW^lEpV=;YiK%|GTo;!TGe`BDa0sxXRKAn1cu&NQ}Y8t<~PuY!zaNTQaa zXE5LoLXF!Zn{`~&=EJG0A#WgEwe`oGqb93M59j#ocH4Ix!@qN(J7rAtk+Op!iz$pn zG4=Hjeb@bc@8N*rzZ)YtL7HB=q1U8%>QXy*%ru5=+uVB=)aMQjjm{_rPe82nT3zfke%> z?=cBIw+fBFzzrtnQRe&w$hcD+Txzq&OKWpR%8Uw%2Qv%#nvpY%^efa$THxFszt_Fd zUuELXmveP@ z^#_#C$Bc$;0X}Cdy3Us>tCY*-c)Pmzv=Y~m*@Y{dBQn>B*;UdEG_Tv9@wEvOYCtw7l<=Airjn6IrW zx;8SDPZmm%bWqjuaj9UYYZGc7?tqcb{_F8an7{aYVnI`ANKdDJ&tY1lfM#Ajyp~gs zx$&5fXX~BEC3FJ76H8i)DJ}zh#KfJKdnfzX_qp2c4>>x%w zYpRl#%J~uXZi=91#c6LvyZLZ%5hC{#Jj=AHu{={Urs$Rtfox;MX{;{Z|GGVr?mLp= zGN&lnz@u(0D5}$CSoZDm_o#KY7~ZD%0O7_+KzRL7G$$b>`ttbX>8};~eijJ6{A1NX zog7&PDsc+sc&G233-=x2$G4jhZ|q)6;O)Woq_&L7vI;y%D4okn2Q@C2*m6il9YK}W zzuL%B_JS=rwd;V{#hsC(0RFfqcO>g z&?1ib40_3Kcgz=fu5m0OiiUG1Ls#V=(|7Q9ZYt0T~_Z;TE z^aE|KXaa^C?>4dSUa>ooZ^strI7+bVykI@|$?C{Nl!_5Zo)lR|O?3qc*Z3}t198hX zjPS+Kf`Q7RxlH=K&nT9?`Q0~DMF3Bzrv22HF7%?MlZ|huRDE-Ux=(Gbm6ll8zJ+Y&+!nOzhN&j9!>y^@$q_$%uG|!$d&|Cq>w(YJ}u~^B8RDJ}J&cw!4?IX8UwpPe< zVO5=3({5W89s`Q#0*S!t`K0q)Y#MZ0g$gsNPn5(snGKaCdI*P)GgD?jkJPV**Ywy) zdonE>uhmU(Bay*l34Z)xN=`{X-1T&Qen-T4U3}<4^MzCo4%y}F4K1i0DNfvyS4A5r zC5vU%L#Qj)x{4@7REuUPTZ0B;4Z@Dvovb4lDOk<^DwsIn6@9ak`hYJ-5f+eIFu4iH zh=JcK-!o($rYIuPfPeDzm;_!k(-@3qqO-*=do9!pZk<195 zAoU2u<*#D8AZ)>NXz;~J;W2jHeZ3Q{W68GfuZvz077tdChd?{X>n&5Ve3?OR4xG^f z_}c=|%2BfgJh^B!42fzk+z7ErB@D%yIog7RL6W>ww25jcI(?*|`a?ta%*@d|)r_IQ zI*@^7igF6YkW|Ico@AS{;5u@{qeETJil-~rI}dVG(^;E)rlPkTb58Q!*ZcI}pUbUK z0I^k9gofigIAB8#*V^+9oI1%huv+C{w+utXoX}tPmdPFG5;nQrYMjpW;Pfr&8aB+K zYWzBlt>LNF7C{MODM}t7gA8pxv(wV`Ib?p}2+O0Y!Q!EIA7*ryRo&USZ<6=!A8#}l z|MUU+qRkQxojI()TE1-0OHr6zl}p{Rk6QGFwjI$ysqGf!k=uNij-(y0R6iPPrR4RA znLwgkma*N}*?&YSA_VCiNpx%bS2GI5Zee8-`_BBvty~}n#Ul&$KFydDMUQnd2x~l+0@f6?6v9Fn%PWj zSzmoSYDf0Hwy&~LXx$VclYU4Tjz{mv#_S>^209Jo7{4c zGA^W`j4c@bHMHHdWE?=faOW{2WY?6Qog|rN*&9DvKhNShSN~K78SZ}?9*Otvy*I@- zD4diP(dvF^-MRK_Lw~O1ZXl%T89|F{XcR9zS~07{X0m`;8udpJ_h-MJJ*WxIIcBA7 zO4Y6-q8M3+GGeh258aXFZcxK)lvlZu)Alv+F+gVT2MGC-8x`nGCnTgh^kbc=H%Y_75pKY&kfwPFydFxOQ13%<}R0Qf5@#g7N6O+*({ctp=7v zgUrFfW<3&&Mu$6JLFnn3kz*+$)XyqO@zx zip>LPd_DBrn$I~wtm+rHpei+;+fI=(C`1J)xwN+$1p1i4>L-PpIO|)d+H>vpbex=g zxDp5?Q@Hndmb8@%N;hk4`+_l~C^d~l{$a3U$g=zm7m9JiYGIjWs|2Iz`?X2po4CzW zVc#}{+}$Mq9Mf%-Hc163-mGMPc~M;Sbu>PF9n$6fOniBB2b09xOg+;OJ=2h~1)QN)LDZ|7hG70HD zziXg9pJa)FIBDrC71jj$1%{aeGf8jQq{nh>vy}p(hI%u=6o#4wHQ+YF^~xRM3BHr zz(S;A4TKCR3>_dmbZsQ1IgVRSHb-$$-KZK#S$7VTrSJd}3ZKQ~-9j-IWhi(sR618- zWGx!xRM$)dT2xD_R!b``R;6{Iyh4gl_{fz7lhzV2fChd6$y3>m_C>=!<9vXV%ADD4 zA~((0P{$$*iQrXmaQ_}O?i&v^Q)}cyrX~}$>CHhS&{W9k#V%ygtgO?}TxiYQVVA!9 zS8mD|ublh=>8bTSuqKF%G1-r^9cLcOb# z3^J}w@aCZ;UAv4UBoy-}qxU$vF$mF&)YQ|e-a%u51ftNU9xrF(q%h_%R3nIcWvh{b66@@mH-!&m1MPH&&|TP_G+(2!C{Pb3mjQ~;0lonnm*l;4N(lcRbH9Ncx{u z`t>M#CAbTDlPJe;Vs}h@Wz#yqDX*<-AkOZuc-<2;X4Q~2O6x}0R6n*>VuMS`@)%sq zA^Ffax6ny(L(1}(|jAzR86lnYzpdD7K?YlAxmGe z5~b=|cb#HCKARwHXr1xBqd>&)T3oUciFU1cNZ4T7$7!O(p;bP@lsCbuNL4zIhUmFfK(nAMSS`S6Ws z+8^^|NsCU~zGv$j8E>UN=oBa{Ph$f>Pa+k!A_cdK0h`k`@ksMIclhK&B0w3;0cnQC zcpp-pax;4z5^I}Z9w;4efpY1clFgXB$@ktySvq~c{zlrv>f**Pu_5SUX{Wo2bWiOo zRAAkYG_DpB6+u=*Isuv{m%}A+y^_hhU zv%MqNJLe>Xk8@9CpRWF+7K1NkW2Yd_ssPhc(>`DHV={3m3 zr}3XCzwbN(BJaP9TUpn|Lj*D%TZ)R|8c53ajg?}th8S9)WTddJtowC_S}UUY^739u ze$XYE{&r$E;Ninl0f^$ySC-j3qhz=p*01alSPK?uHIJQKBjmuI<95JvR|@|HJqgSU zTQEivvooAI?-Zr}Ur8P;mn@JeHt1Xe=ruM7y@3hWUSmCN!3>l=qpI@v?0zTcODt+c zv6*L`UMY0EEv<$0PYV|L+Ge|iSo7Sj^gN&C?{|FvFwfpks8=T}9YU_0IvHdu?0Gy= zHrCYIfjfQl_>=Q0_-bg14c85_8n~jW%@VZsprzQ`ck9Ga(FyTFv+O!gPmOFeS#Zu% zp((ApgzGatChBn)r&V!2KkgUW=)u3v4>gku&8sKrh?&~YqjIEiKIb`yrvDiJP1xHDt<2`|D5hXxm#Pih)kZ_nWX@wY<4 zBK*sX(^3f86p*Z9rT@_=2cU$8mW*@e9-R z%cXak93%HUw;>w3qG$P{U4Zy1-Yk}N-mMk9Q@c>WFZ^>a51u;AXD1o`v^7ol0VXx+ z$E|9<7i*Dnq1->x;+Ik5Ox6_mf~G{V%*#r!0Fsoo^PtK7rYSd)346gi>fv0)+ojHS zB<48na`N%852=s4gDwnY^1XBZW&iWTapW%d8@VK2?1=fkM(-EsXIUE?8k`M(i<>>& z@E6<-|JlIE`o8NvWL{ewB;0j(kLz2$5AH_mmppBG66h~G&Z16&)S3HsDM<8td#C`kP<+77H81 zE1Wt2mbHF*;X*FJ8i%XZY@Wf>)osUxj}eH{)w=UN$yXMaIyYqg2B%A}`So7z zuW*E&UWYY&pA&ne?Jukl{Em~g9dJy+!iVzfe`fQXG*x}yuXpxzxi2ry?LFp3ApWws z?Hg}9pWerAd_3-tN#bs~WBBU^+~0e%L_Q}&-tms3P5qzmiW?FdC!n8>d;qA5nY-1U znV!efmb|fc9o2Z`uIjf^KvI|Q)*o!f=c~M)rPFzRCo0a0}ZajPTRo}rQqn}jR{A}wZL<1jR z76#ctOG7p`l@pv*6fSWtqZ42Ud%z6Z)W<3BZM<>s-|mFd6F=caO^)vGxgl-@KBX~- zWgXOS>=3v$!AHce6XPdsJrp<$KS7ksrEuXQ=T>-v7>8aiMNw+DJ|0eP_P7qH+z#&W5a^P>3ng zb!6=UD8`!Sd=_N(RaX8Ul67SJfLrmf@7_vn+pkM)jbc|k73nyz4yhky!I_Hb!gu~k>cySn41TF0Xt6|;skz+nycUuqDCw-59b!rv+E>rw7N}5s) zCqy|)p-sidk7x?+rR#WCSvWx3-YBKMo^ePzle7j;Ce0+i*Q4CI3=oVZJX7Zx1$@@` z3AxC=?)_c-`w2mSQt9^geJ6`B`MuF4AJ2RQKw3b_?;8t#;<7nBKfDIR?xb>$nXy#6 zb`I%SU)e4n&AhjV%lsHLYFiMB*U8<=oy+4FJ7L*;;K%wa{=D?x4&4FAh-{XgjE%`T z+KGj{{y%qUJK^_EVMbbHuY?>yKXs#0*oKkDyZV&VWKLFY1a<>EP9#BKHF7~cHX z{&QG0+4>RwBh6Hoox@PzPvp|Wws+zWiO@DkT}C$ig%s(w%=#78m0;=(RO50Ox3aj@ z5^i|8O6zuJ<%!hz(2upZ0!ix(OWJ1*Dq#%rc$E>jP{dID>1Km2&-rqQ)0r5Z;eKOcxQ~j@$lq6S=r3Ll@B<(;_Rt!$Uur`%p z?LlupqHN;#;+E$hp~zdUilz}|b`2zohCPzh*g8LOwsj~; z@*)u^b{yteGBKhU(#DFd@?7D_;%==?ieeAx-Tv3*U9o)58_N8zi_gx{P;Dc#Yuzc4 zP~mk2qp6Hh?JPcNICv46%2+YR2Nhk~e<(x7Mz+pz!SX5#HZr^;T#C`7#1W`@{HDbP zN}K5xv#?g_c=CK;)nuvmP+q2D8%(O!(L6Rt0bLyH2lM-zeD9UNJYhc_WP&3yiM?XI zc-^n=nM%woOXZw=^%tq7n=f>eli`w3bfH}~f2+Z(H50at3_}AI(&y9n)>)KogjgeC zX^2c0GUUv?$_VN9FmEbdBb@NM`>p#{q%69k69uK7Ka@|~S9<`e0Z-6H_1k24>htN2 zP&W*;rkl4(PqKNpU66?PHZbh0XJ((+;naG1*YKrOoH*avgOcToy9ac-N>4~+egAr= z<9NFAjF_KbdL{n{Z9tO0Xn|!OiT@I4f6UR-9MdczRa`qlB3X4$VsPi8x^vW}U)}%l zKj*&X{V~nUb=0Ea%g@@Rw*0X>z!g_p(dsZX>(R}OXs;4!O)H7XE1WFPUc3(hBhs`i z&V^7s`r^HkbYLErY?Iy|`MR5j3>l+0|Gwry2>}^o|G+V<=Q>iVKD2L6C`NeKMt=mv1;Hsn)Nxg)JPp%jsHgXketY10O8sEb*GBzW8a} z1%&fk0+CCxZCDOyl>aD{4WSqobNWGXr>2lWZxW76g03865684pKM{wgF`n`#ILs6t zFZ%D*#>3q#PcK8NMZtWyx4`OcrACZ^bTUj59XpV~98;F1f#q%<7E zl~S)IIYWg1Wg~dLmr9#RtuVlms=DC)>*W{U!YiZw__)y`66qcT&Q5bnIn-cP9YvAw zH6u{(+r$(!K!PN%98^~^MSwtr^C~QRmIu-M!$nQaRX#vOi%@udM5`bjy(cfv=y^rs z;ZJ1#(b7h19uixYUrvBK&9f|9kq;t)VB`{1bLcist>%QWMRp4=D*(P?{Y(XccTL3Aue@ zapToQcYQjLkVZ%czfP<*>j=H~fbg3kWM%_<0rh8i=fT6}vo1$cN4ngzh^kBkjb}VX z=Eb=6UR!L&22LMCm@D%y+1tQJZqZqx!I}>0Z|Sh<%sV)^3RriRv(j)IG1V|e^1?3l zIc_5BLJ~j97aX$K<{B=%#l7%~Tq4wx6(Q5irW60`UH^sX_CFUEA(jzJP4zIfJ6%V= zGNjdDajBIkhQq~*09ffDOIw7Q!ojg|QqnSEN>mlTW1<})LPk>8;N^t? zS8y4h;Xy^yoFjBd0WmxrzF7}E)qe_pE9dgpsn;rVUL07!o@~j(Wmc;OAbcq;Z=#(r{ni_l zSEE=Wk%XgB=PG-}NkW%JzV zu|)~2r(wf16P*W+O<^OqFE3HOpaP||R!)=CCUGS)P|gN?xI+Oh^@U_xgs*#pek=tM zKq7j^d%kahN7C;qxHLe4Ni$H6i%X8Kbyt$>!_m?jQXz61bd|hr%P%M>;pZcQJJiq` z{~2B&a;7^h9tQeLpo&6WKHMJ_QX5`TgIimZ4^#Eck!jpj9&qwtH4R9MG5R|IQXogu zMK>9y*VtGk9A-qA7RytIZc2V`__ZJA5b0ZFw^HtUY|QWyl?|@oA~yg-YhQPvMMR6(=eNqI(OMO$TSF$BnAJx{@QHg%HqMqqT0}r*8YL zokTw??}#>#V+ke?l2aPXSNM*;&pABOMfC}4$p;T^W(mix`JSb1o}?>-fchWMn}v$+ zOP6qNY34lFa0oscy2e$k(R|HGOT!VpJhYb!$=>^ zRsIJz-h*$PZ=CE&LQ(5_X1FH7PLb(*P>a`qR7fAKhg44pOOm284~+JVIzNu-oLY>IdSzc(!113=ou0NhKZS~}0@_!YXwS)@h+$O$ zT~}_+<{dBik3UWH`9Bj+uy9RsnrM6kHao&eB-!{Vmj7&^lU}S2ENV-rU2zabXzY=8 z=QPE3Yf(Gz!A_1Zetb}J80ATgbI_*F*yR_FJ8!!xTaK;B$rV|tD>QZ~*0ea= zV<|*%^3{mZDYl!Z9;LIrI!PoIrm_e^$mHp-qpVL}&|nu&8n3l{7v*bTmpaW~Hr9ES zVLZ(T1$!hXX|n3L!|^okdv};Ccusb4cH5u+@l!U4Zjl4TR%s@~1R2NGrBcjk&4c3r ziAW2-)Sh+7GAL6x*2D=&K?FQ#;P*;`TT;a>vSw?X=k$_ghX9AiqQ)Desh3=eqFSo- z1yOBL5s6ci$ypg{5s;FbDVjn!$6na+{97D=bRv?;{piLL^bo^Lur^$Vo$PP}UW(!) zfjqV}mcU8HR;`fr+-`qO{{H8@>_tRR>;bih-lOC06t{H0n&nyfd!@PL%%6)CdpQ=i5t?5FT6?OwFTK|%S&HJ5wC3PSKc~C zaIuil>aR^`*~6w6R8i!pb|Q2rv;iv@+4nBhRzcEHAzMarr0M03YohLwha-J(?CHNs z>07Q-y8b?$%Vh;FY;e@49uc8Uk=tUce67$$dX94Cg<>={x!ORg;6>sfZ}BU0jP3#F z^#w{V)t|`OlNc6-7e81V71KuBGpf@e(Z(t+9tS4pxyulxj&{dkCJrUo+)$=h;%s&j+f9@M8N7<24>AE!IVl~ewzj*m7ys&rdZF${k75a5b;o* zyMRT!0I!yu^W951tAqo5>5|13cSzexN)bTFhE;<}(Q+V=hpsp&zayXa1sh2Yl4)sO z>M-RbEiq5BG~@A3*-|pV3+tIu&z#(3kkCRhC)6<5<&tmyS=9$h#SNA#0FbQdT1)qfEpmJJ?sQB9ObY;Mj)o`90IDOX(HGOV=D z(w@R^atU0xHRWU1G6Z&Yf`Bai8KGKE2(h_3zZd1u^~*l3qW(SgQ78*ralhKz$ig)v6@(qc(fAS6iOR12lJHMs?m8D_>{;#GRd zU0Ty&IYV~1w72e%uPI%9%xzr}oK*2x6tDL%HEa)G_l5#ErgPzEjn}wcSZqu?JWS71 z$pL#rP}#u10Jnk!6Cmz*@}XolAv-{Li$wd}B;TPfnImD4;7a(uC;zWc5dBs09#sfs#>!`Qa55bpA}mjz04&p^#ZzP zBYpN%LkmH)9~puE275tBTGU;G3x9+@M&lqkn3xfjn9!dHHNksmBAJ=)rt9F&gn+GM zc?T|ZHu|3T0A27s=U+nfw!;2$EY5XdgTxV0*d1Q-Q}}Riz({L|O6fu#VX{<;2)>cWtT%O8n*3GCV#S|% zc>yn1RXNn_lw5Rtf=;%Ek)Tmqb##i@0q^>|e(qcL{Q%rP4k(Hi*T3fL-Bzta_AV=^ zii7?%g>rMDqMcy@wup>wuKDBHX$0TF9gxx!nj}F>W3;uKAQX;CFY$Y)B9pDT#Cmf1DF?N zlbVac0>nYEyw)s|;=>TFlnj(NGOUi9@vm>&Q0xr6isC(mL z<~A8t*Y>Zy>}sO_si%>1`ltva3lQ-8K#p%EtmM$776^I|fCB2Uu{^H4oDm##&Oa%t zmuhd;jT53V6&rUE-BnKPOUc@u?K!bUK$MR-i^SWbESz*)jysn@twu)rhcErJ3yH?Q z10GkYA#8C@Vvi-4#5<>d#%Ltv>fTODY>%+PRDC|J{y?tMiqu=qrb;=&o`R$z{WD?X zo?RBZIlWWzk;}NVc;tl)+$grXx>=RiiO!s~W8-cpj0>$klQYl_*8PdT2#`XE%+d|l zedRFGbN&;;^`qDvd@yv1nxa!boMqS1L`_*m!CXv?;OgE@6)pWzjnJlZD!@h(o(3u4 z)?zG)ZIdLX9GY;<9ehsRBe+bl{@j#4?Q+?4MpKlcawIJ`>AC~6#=?*Q6dZkUNEQnW@!sOkSp(7=pLjm z%D3SH4hLG$f?Rl6<7M}c6Z`9nzD)G)Zx=E_E#-c2xNQnoYTCu*!Y`KyjaiSYd)uMW z02{?*=PQII`EOH-}*J8_yDXoLlUZfLi22I6eFo9jEXjvteLhEgXil9x+9#+{HEGOXjbzUcT< zxYrjkxr6GVe_{63#MsE(M*Gsq(nI*(uN8T@qL3o5imTTt(Uun=)ylDPM`NoBJZ)_Y zG=mbpjO7wN;Hy&nT1L;$cmlGF3f-YmebByDmQfFPmGhDWV7Me0L+YHePG-;NgzXY9 zD@U(RDV^srbaZ~+pfYn>M^9ukJI&U`17NzsI+3rgopkX_p65Eq<5@3!#rF_>QGT1? zKFJ5tSnTKK31>6Rbx3{Kev5Tc*0?NYVWs3P$pSa^?=ih#2sNCgYPu;ZMU8n$BqYtr zN=o8Qg+hfU^jhSLTcDf~M5ra*H4kv5t144PgOgX^*hLX(<%Shs#3EZ&me%`tshgyI zwC;TBKE{5T-f$SX4>(y&<=DmJ`}0619Ikkyx(|xyh^*&@xu`SwUyT6~ep)3udjZ z`u3#4#h%1}NX95;6DtXjST6RJ9zYt5nok49q)xMR@?SrM%_sS0Q|jU>PEzAjXOT!I zDe&ysxa`ebOaJ)8_kTChwen7No}t;v^U&ObFpZ1Ow1wEzNb%^h3B<6t!x73=jDlHs zHMa&N>zc#>*CcdA(0kC3(_1h0MDRB1q7*%str6~yy)Buh?e~BlB20U|vzWa$!6`~Q zsc@c54_<=ilCXk>Z3(N!X)goVn&r0q5I+A)iTc)9mt4DC0rVt15oTxNZSOX>lk}&2x&qc;OH4 zxLRo8BFiPaz8j%w510(sgGI-yusskJ%+n+Cs_XiQym)9w=i(^a5)IvVO#>}aPLB{pZnmPzOC3tA677^c=yhQ%st51jGkr~i zY#E&D7qp3Nr5m;|dG!(#^JOlXc2xP=NRj4639ZwVgLCwySFe18=>2~PkLUKi#)`ar zX@$l-1cg?t=G1K4q+M)y@dA?%F~2l?&5P71nnpv;&}cv>X}FuiHwjyXEkEtBxU5k* zt|sU)y^?W*L=7l8R0 zJYx{hD@V`WEo(=>UCyheQ)C4;2Pqoe+x)8sKg!dm%O#WE z(bO(MH6E&f-ZQwp&Pyb+7e)$&ff+>bO6D6TIZBA46mFcBvy@`;Bs6^XCgWh(Ho{gNpqh{v8>2$g^j}CreK=& zl{YX6zZGWyMq(?nX^HE~s8D>5p@lgU_$Hx&B1ca+t=B^q!|rwB*&nG`sIxMESJXs& zF!~xB1HKRS(i*)KcLhfXFwa{l%l!_xECL<>rH<2w_4I)s=C8@HFz)6AKXZZ!=io1Y z`?r1@ndf~;!@5SL3x?)-V(V=vT2o_QQfr!tpuy_pngME-p(~NNQYWFPUg^Q9Ntd){ z{+q(rz0wlVZoNzAwZ*U$uhGC-!fUZ-)KUmW0{CPYQZ4p6Rye**=34NJ9M~s)!N)Qz zR=PdwHA_?5cd19rpT&eRG|(p)%JWHcky+|-Z+^wszesfJ_k(U!C6jQEEp||9E7es_ zUpXOaSKQj6@^U!=e=5CtM0sqWwXD{S&ROOeRd5UH0(B8R$j0j^ypNA}WzEG?griUc zoLe&KHcAK51T>8K7_{7EBFWrD(l|)uKk1gVA z3ojR(J3xHjBubu%BVKoQ1oTn)e7G9Z<0b5V_9UyxDySZvv>IDDU%GdReLL*ac9>Z< zwKO&PClf6H5hR8;jkS~*w7+=mvd<9x>USfazR4mhdU1sN*`Y&hko8j$9hw5^oT7b# z#nBpD@2I?NecX(f1u|N5AdQrR+xRq^ko=ye|9*5clSugW$>jQ)_cJcZywwe>;d!tp zi5(ty#>4%0zxl*(qx4PsJF}dLR^Arjn}iBedMiHds1Oy|>aF_p@UelHt6I`+beUFr z93+V5taTXqW{stFHW>p!I8C-~9QT!N1J`D*&ty-x)2h4MD4WV>c@~eJU5e`^olMG} z^=40@!@qDP<-2}V$P~Q-Ia|6qqrJ97CRMF%>8FHVu3644Z0U;o2uIm?;b*)GtyFW!C@ovXsgQCG!HE*zh2c(6@dk2o{wXvLvin19yLQCA0kMY{Z;gDH8dFw@A zgH%1urhIY9EUR@n>&=}fvj*d}33vB9!jk`Pxf(Z!d}e)e@EPY3{m#3PVX8u$zQ-ug zmb2BiTcB&REij%l;GtZW51Yjxv#kerhDQWEf5rM=oT1QfbuI~(yTrG_E4K}HXG=r0 znp~e|Ps5M0JCa$k_mYmxH<*2FiT-Ok$&M593|fuudv3*aWa-ds$h zBJI)pXtSa|Hkd~F$JA|o93pT{LIp2x-$~8EY;2ZUm+Ofe24m{r`AclL*W!u5y_7DE zWFyAhVeFmSl9LS2!pKjj1{0ekUA*I;@B49HLmddotL1JLPOiT6N3msd&Me!C0wU>B z-;Rn`txeuVJ!_y57dUk)_SMnfpCq^30&Q<>G{b=Z@E@8K#oXKmZP0PH$z8i9PQtx! z-^9uOQ(e1v@9w^FgVDA7@UA2K?m2M#!JP;0IdEdv-u;IUAKrDz!Fvwu-o1T$lI-3M zDQ`V`>yeEGq_}&}m-pR$DbdakL;j5gEkjY7dWq^l7-ze?Nr&_Z`{Ebjo|uS3l*ajl zQfusXrQIy&I%55wIu-lsnBbN6^fX-OxBcyONZk%|b1W|H*|V|H)OlA|_l@jjou4?o zaQNY!k6iNbJqPYtIDG8T!r>E#AG!VEozOYYZ@Q4qRdY|>w|xPw?Z@Bt?i<+pera8N zLQ|k0JRQavOez}|H8tqg-Z_Zd{}j^mX^#V`$+WLwdacy4}Oa16>6{NQ0I!e&PxR9xzKsD zuj!2LFI{z2;qGtKpS8#F<0ns|Kbf05c@nzbw{O=jxHmSsZ@lrwfm>Mj+@GJ=b!h*I zU55`J*>_~$iCstMxJN&HV%PTV{oIS9PX}&2x_ghhu6^3gUnUy<3zZ+&TTg&q^z6#D zbrj>k3trF+sqoRyXpfF@?a`uM1Dm1yOIKV`xcj%v9eeTiTWmBGWkBzgj^F4c@-!?j@%FcH!a4&vr*NFx0*Y_RSbz<%)Yn*9yohNf$ zp}e2i^^^gkk461*@_6W6Z=3OK8F4RDxP8s-#r-?)|KI-`iwU@UZv?-(fz9IboP|!F zJbv6KKIuQzf9mAPQ>T0aUG{Hm->w?%@4w{Wq5a!G&ugb-@BW%#3P#r-I8BbTab%XO&EA8)9gE6!xDRML-Wue8=kTS=v3pfqeYp`IpvI!~=61B#8v;!(KNX}T{3cxGCOta=4XCrt zL?Nr0Sv9NIm}|`Hwtd?kd^ynvWhVsmRv8`(Og0JU7SSuIc<(y+q+qdoDRP$xarIO} zaD;ETge!JeV7s4W^Do*!>5h4pII*#%Y%Jr;vtBwjQanFc!h@rx4BzA^W{{mx=W30C z@aH_INd>^mYyXpbc;>R__}tv#T}S5*?Z5rtiCvc*JiP1B{=NILw{rWz{!^ISY|Pzw z@&m^i6rA4&S?WW$3FS7y$5fH z&QGxRq4T42k6hA!YR?`n_gweM?uMOLsLkOv{`Hx~;R1D?bIqMZUMIJtL)E#=Ww*rt z&4tc7S36go?^>8Uy7$;6kL)^e$-!L z?AUFeo5NZadtsXDjW^a)Op=Y=T|7Vkb9sJ*o@C#?Q>VZUEuP}MPMyM(CXQ7hrlU_e zc@pci=9|EC)4I-q?(TYu zoaRUSjuCzFqv9@gj_28h&M7=m+Z?gZn_>T+5$hb9KDPHL^n4`N`R+Z?IriD{gabOC zn5cA)ou@k3&gZyYh@GP+*|)F1ztDMqKj(!<9a{m*HZcL6pPL=pZyr>A%RbpBpIca1 zfNS3o?pluG=|tBa^exzD$8LL5=WXqLZ(-+^&fzI^zBN1lM(Ny_y$+U$mAmSV>hvn4 z&J*`z;78hle}jj|xjo0RXTHIc!`lz)KKbFfz5CVexi8<&eT43@>rN#0*frIGTZ;5G z52DX4F1(27w%d^h(#I2#efxx8o^a32A(cwDdbw1xLN+`l@0Yx)^b3yWnAI$!0%^u^ zD|*FKr*8?JSLde#PC&tOhjlLQg@vP!T%!B5M-Lx6bntd@n~90-Y_GbJX{&c(TK^l;EKEgU^| zsL(&#`3CG<+11XA=&d^6SY3EI+xa^SZ_s&gi_W)-Lg)WqLt*E@!ra0okLcd`+```d zg`4f1#Lfl5&I8)&9Cm(Abgq3%ll<7C+5_()-PP{83H#m!KK&}}dt+1l)2~|Zqml>o z3i$2B3RofD^uVWI#XMcQXa4C|g+24OpE`a8JnzH4`j<_y$Nov|w?7$s;~W>!q8zTg z@JD{1mkrD_jT_@k`Og)qJ@8_mJTtN-9l-Kn*VMx`Q}JUTyX2AJ2naE&lgyK6cO%ea zUsiU0>x=>I_Sh%c1)Z>~IzKt!Q(yb}zaTnx4czVGmb=VU$}g^x80ay7JD$x@@FSge z=#(#tRPKRiY2hBzeeV!3hO%HcJR8IN*#!^i6_c1;2~YSOLiV~5SniomnjIbX$=mO- z>)v=a)=d9%H}&30bZ}aI?c)|u`PEf_E>M@PC}YWR8Wd^P^bjG|Ta&KeE!93CfNhDx z%XP-e$z?*<6HZ!DZ<*Kr} zq7oQWQbS*?RIMOn8z2GvdVq0F~ zINM%kXRYB$bISQnLGeCqmSZ!_SZyM%jYhm&W4%4jNHWZQ3&GOm#iew03|e|{1;zAf zayNv81r}DA5YEL#9kj>r#drLkr^&CX&lQCPD%V!vSf#(lCh373dy)sm!3X0p-Ip_j34+>U3aPfO^TGb5v@ zoDY!i6Wz>`o6W*$L6NY6GN&u2=u<>r_!IGD)$0$r{QQgbfln`ZH^EVjb@O7i_4 zz71<*ty_d^5=tbMx&)$QW4S>W@TIGylv4Zf*_$uJ+OXH)*GSv2Tgg^>Ne-CIl69w{ znK3@=O|!*q3Ek^bO4cbf#3_#I%QFT&$@jZJ)F$8gOTYhGqF;C(+&yfgxd_7wT=f}e zLwAOw8w&X?F8FEB0HOOaGF~}6tK6aw)NXBy@R^reoeF5G8ICFqg$USkYwE&TL)7R* zvYM|0M%e}&&gSSg;b2P7>}G7AOwAz%91sgeGUmTZm-40?$@Tr6^y1 zm+!gTp(~sR(@YaG_|j)fSA@$+KkQUguI8b25v<LV{cv9xr=ce5&=k4ed@GjA{ zh9i4@DK9ma`R&*YtrK1Q%tVi0cXX|oFTybWD+>n41J}O(8p^-+O8B`FELY7G-K4)9 z?PuID&2s}TAoACuE5Z>#Lq1y;^IHnktwK|}oZ4DC>FG+oNhE2Gr3?DE!R;dTCzwG1 zxwKByT>_m1>R4cFA`IIG3WH;|i!0m=JM)B(nS=)V$aSA@S9^P($Nh@KnyouYa~{#W z3EeLeSS1XQct@_%6=U12zwtF(#bf9O76l?LXXTk2lDiXUg5%?WYB`GlLw&SN`723| z^qJ|Mk&vyArGYW2rol}V^u|%J&e@v3fp)32qqT=F2l30Cd5G5I(~I%F`Q0wfCzBz% z@F}d%D@?DW3lhvL&D6Ghg{K~=VKL2$r+Q~l;_Lt84{zkP)05y{ak!%7JaRj&oT4=c zS$%NVME5v!FdZunOYAM=-8#ypZwo3?o4^JPUQ8t{Myft2U&l4caBjDDxQ%GE{Ee)T|U(I8sy`8!(D<$un&(hhKxgkq#zH4<%j$eF;xkux?L^R0Rq&5gkfA-~{c?Hqyo{_Ghrj(Y^{GFsiVOR~*3K_8Uzm>A~#${EP zB%rBSJvCkFir8IrL}12rMZzaY6Y>!7s3-YpryFXS&S2 z1X`w#3Gn2e6L#>036;%om~OHnnucT&SKp-j0)C!Cc#j<~!~K^~qX@+1Uv zU8KoMS(-`Tk*C)az2s74BF8gUGXymd5e}*k)V2tUvW0)7!C&)Ku;smQwZJwBF(8|# zT0OPHQsnl8evs0O~l?GVggRo0Ij)63USq zPja|C#~+as({SXU$IoE!Ad6(|()$;`jp%3O3tCim3W0iaHKUPgsVr?2(jk=!Rs!YE zqFM1|Y>7)?y$ET`$(+T1`P~PL6Vk>0C9VWQFfW`XO^~V>AQu5bs&T|Z*wSLct&kd_ zdI(iz(HQ*JO2!DzTVY$|KhHCCHf^Fi_@7y%*~xr1_47l#62*CLoU-xZNr=>C7P!(Dn85ycO!ZHDkO|>Bb2p1oM+ri^v(aVJ&c_x=|@oS-SQ5G&$^{?rqExOzzo94_d<2(Oep(rf7e ze9hMaPYr(L)l?Q35-mxMYFj2V)1~`EQ5@Ukj4xVyR%TQUqIg0X49YUaSR6 zSBxkvrEwjf(2Es3>IxlApk?v%6Y={{YpzBo#IVk))5Q7073c+!bu1X*wP3dJMdPQq zGFK36LD!zt7JCsqMYq_F>N6sp^rM_6Hb;86BSHP#fFCc?Rjucl`x0T1(2HLOk#ooc zuqO8OOYgXa&1LCx!i=8cL!5%~*1TFqIo zu?j*iNbvO13eO6>k|oy=Yzr-V@s>QOfkMTwHaX8T_}6f;;snHOa|j>Yz6@#whBPm( z1Q!SOu`4sr7O!KS;M{Z0J@e=rk~|L!ESEs1B8~GTKb)xWv4wqPOWBgDk!Q;jpZ& zyeqR~V}zN7#qJ|%_m)s{^mng$Ine|9?wp9iGEcGW7AKW<;|HCrO!sFAV=R;K6V=04 zBurp&Q<@ma{c{s3txg(pZM-trI^&2_%Y}*zLgyC&<&}QYk8%2tIG1N)!Hr;_(GG0p zf?H*zhM{`Q#GoF+LIm3#0w(yxVP*%2PFxrUEX88aXTafxE-~C5_K=gqNgklXu zPf#T~0q`>f404KmXRd3ng` zy130Vwa;3c_o#_+=2sp6;X_3Cs74a04bNlhN+<%!4uB!Mh%~UQ7#2?P*?Gctq7z;_ zL)nUlmRGPqMwd28`1u|uyeK)nIlCGrPRXpd`ZbmeL2pYRX8mqz_?$Z`s!1O{zo_~Neb&A z!(_=5BP_=%bD0coTT%qrpH?_3R0vmjLpP*~!Jox|7FG3RRarql)Vh$0D!x`rUakdq zIwbFWShSgG6)Z#BRrA6D&Z)dYO-*}x8LiB)t*khj&uPlfBhx9)6n0?jly`Xkis}{(a)B@};|}eijCAI1HH71p zuD}eq!cR!p8;dCe7i)@#ebz`&B2ZU5dOnEhNq+YPYR6wy5t6Ti0}(@RW$xe&HJ!+) zlm$C8kX`n>SpYMAwV5_B{?UBejgBVWGgNjtewkDU}Y) z2OScGmi!Ck;m3o$d6V3*$XFMJidT51ir<1DwHpUVRvvX-0(5kqxN1k{aY;w4#HhqA6F?0!Rz0r5twO3yi48S$8<*DM{U?VXEq5rb#k?ccAMwk{EK&+X zT*d%OGf34+5{jSt=o^sidoeV1bD3T4r#*I#7rD0cVM(_@7q>z%Gp`FIRAJCpg+gr} z|GhX13$>BEgwcLu1|v)z<*r8ylv4-7cCffKB0~W=7OT0s;WaQTPA8uY+z1FKtGK`> zdF7bQB}2uW&f|A-`oMJEaNs4(48ZG!gXnqOOU%ftS&lp5btsa9Cx`y*r^dgP=o24< z^f^Y`nJk|_pK=*9^29kFQisBWCCG*mRTdyYl2CzZS$H=qMFWclfkrC*n3h8rQYBke zH1q&3U=mpn0%;&AT-`CP9_|*b&Ldah4ax+IIC)sMavz~Iyrl+0DtjYUrO5KdS;E|e z=sfTwQrH1)5iVtYb7#tH(^c-V^V|j%B8{~aoyiUgul)|r(5eabhBs-9No??On#TUa zkAL-jM9&KEh_Wos5o~)v*UHFnp1V7Yl^Bb>(2yRdZvLtlz01W$CWk74wu(&Dg#{Ui zN_SnD{6jY~LFV#HMag5EMf`{Xsg_{dRvJ@S?PFTGrj16xS;)4LGy-TSLg@>tkGqgo zzcUzG!~Sm-mPb?gn65R+m-%L*4kIW=K@HFug0oJdnx^f%>80P!OaktDU`J9Lwd)dmh z>(b48h3b;&v!&=F9T;3*W)W`cP>=9yI&q~5Oi3HoTMI{L=xaEMEld+xcu>?H#x>*B zoTqq_>Hy_7z*nBXVAA;yr0W0LPDUd&yCN>BIA#I)+Pkt<4B~_W| zBj*fdZ&mk?@S+lHDqqxuCUFIu8bg7|scTQ$hK_d)3o_nY(?FRfi_(##<4!iuhw=;M zl@$X6lTZ~Kj_VM|DTTZLpzM$lYDtg_^8m&vzAwJ+9lt=daY%yDjRR$>0vNDvwnvbk zF>&GqV=)-Tx;3a~3RNgAcD4#k%Bs~$)`&$(pe3kYNfvjfRH};+^3&|&%qx_Np4Wr| zT)3CTjNnKU!=11<$}V)(LR&5>SV95xovaIoF0>mr5l8YZDpHJ0qOjv-Pu%@SM8Eqn zjg2aH3^FNji3usqHa1lcck4sTW>XS=nIHa$xI-RO9#H!oXsWmvl3$SoW z>0+Li>Jr<<26Wj10E>%=&KHaYD@x2UaY770Cs7_w+5T{BoTM#_=Jv4R-YR7c>HL%LC;CtEyK~*q^R;pS z4k7L7;trRX=gd$~Ge$+PbBNFD2ECx6Zso?fhjGfPm6SYCrddsBNxkqD4zJTO51z#w zeS@mL%-+Bq_M)}o*v)-<@e*%XKos)jw z&Ay{3dlXQaLd0wYvHIkL9a2EXUHrAJ}0h*rdP z?d6yK0#-|x_KGr0JpG5>_!Q>5Rs)uM{k(_FTYk5eZa{V(i#eXtIdcpv=_M)z&qEXVhk5Gb2*cjw1Ajixntv8TXD|#-Bf~d8 z>3m06NI5bqMAP79xEUR&mr=jj?27Y&o?%`gGu|QQm|^9Q-c4ZlL8` zp;^mjAf6fKKs6-tGK6)k^?X^MvjtQy!}#^$l?kQGrD_IQ?MtD`rtwVJ%UWaj{u!OZ z>UxtG5MJhiwu^9sl|8g&J3&W!uJND$jH7PG#W$AE7wmcex4Q zXX#!Q7jc?7WL+`vx$pYgGl*XNM&((YUrQW>9wmCc`@lS;Oe}I%y^+c`E+)ev&xR`3 zWxEOVHJ0Cj=Spssgx$#kpd!FRR1*4IM5o=6#W_s{JyiMBmajepuL;#*PmASqp`o^* z*@%SV`R1LpI}5kMSzL=s5^IbQyp|-orvOSowZD-lEWm5MnsJD;E+nHFxq>Bi;x>d| zsn;~GyME&TC3@h!5^nHXDC`ZqX^7McDU}mvO-x(5%>QBUT>$Gku5#hE=j@|yIdZk7 zD6vZuXLOo7`QDXRf&}lK#3C(Q!Z6a zO=GvT=2a+tpv0lX#igMXe)#kE;d@I7+}m4~%cHau{p(vZ`+3gM!*4hFZ0)mV&3nz7 zHIF@eZ!0aG`kI7j22+xg&O0cdhiyXTQ4+Vs#UR0hVw_1rGzlb2QqT84S}tf_p*5a? z)5Yg?+`UID{$9@!rU!Fj_S0qzEQk@ZFcL>nfAgKe-xB>)@?Mnn)E<&`mI{5gO3qpZ z8dvKAIpoA0L+4x(jO=S!n6fm0O$dL}g5(5?l-0UYXk4r-+)}WmUtozia*$GXam3=d zJXr`>NhG3=(ANeanXE#%AqvC@KkAk<)w=1W0NdCja_`V^bu4a=X|6J_wJKz)F&fXP zI1cKNgI4l@l|fS2_zA1LN@b5VkKO(zq7VOy&w`UTPm!oPf(9%Ab+t#l)i;IP7SaK}ozP?ym}cMN3}3s86XI!E9nlI*G*Tm-JekPDk|d8Ox)Ea_|> zE?VF_Eg~el=ecN;D6<>_%2Hy3J(M~mnITRD{_(Xa{ZJV6P*+bd9EWib;vQPA)lDGv z2CySP`_lmEze_VB*5jpqSS4h%A9g+D$Ub z1xOCRlxetd1I;P8@ZAdue3*8^?U8(YW0oiQ35RkAt2)fCFSa4TQw$BzHZ3DwXi#uq6>abN=|MGbfWWw z5Ph=84_2Z!ZU+OLdK$_pZQ@!6eU^*F3JGeB9L$l!q(0D=|-s#^8p1b;!iE z5?J>W2fSjChjR8mh|S!aFRxBQaF9FFww~{ll+Gcr%Aeg@n6CV`3guG#T}_BUTLEm%^gyf zCP&%rsK`)rQ7tUC#TeSnJZ5 zm9SF7Z_S{&*(;2POvsY>#E0+vN20&JRYJYvVlG(NZ~O=w=4vXeewGqiFe|M~9oN@Q z(LEGQnl^eJWS5(tn|WL<$DWpG^9U~qBOdd0H z@0v7b3e<$-HbhMr1+BQ>{Y-{#{^aJ){?MXetsB_`_xxRwhExl+3@2Gux|pc(zn{9q zew>#=-|wAW8lmRX?Tu6}ntWH|nOtfFa=M450)mFxF=cG`LxRHDHW9aW&J3=s5mr&f zwRcf6!8A=u-Mu#Ca&7@Mj-(f+cO^sJ)~l4C0t}@g4W+81ag_z@SmMiEp8NL2N}UU@ zxj8L?Tr?z%zZwVWo?wfQ=W^pftg;&qH3yR|kZumLo+dF>pZV#9`tyj!A44*(!Gfu~ zXWHv{=W;|9oV>%aBA!@O@Z57!*VyfBDvevR@8&Gr(iICYN*Wh8*hRkV#5)dr3nWRn zW>xrK@zcRkf;g=5H%bN|V>cJ;O}3;^57+K+>)fp00X{%ogo3BLk+RnFC=)y}MZ&*i z`vg3MBtJxj(oB7%*6>tCimwJtcry=Cu9cx=TNJKQpwT^g+$SoFd*=4dM z(bOBM?|RZUb=#%L?iu*fPeB;4~h<1J)p@JGOigm3A?;;BZ;{8;C0SdVRdr`yN zw%< z8>O%3bO^`%RsdJkNLtxEl4rs2v981cdWQEw!AS1mYPfLG(ueOrC0uAiaq!eMS06UO zFeB`h*wQX3EGDP{te!x+FQLLV2~k8Mb7?EIt4;ab#v$5SJGZEZFQZ4~?U4LTa}@NF{5~@gAs`5Ievc&h}76LN-9dqDbmqV%~0OS7%OC zMapR5NLf;iYzCX7Wy{-9j_>4@qG>V~|3kVGrLdDBn?mNup=B0(XhnPj69{9uK=1=x zQ-(D#BC>cj(wtDV7q!umHAFA}!(V*7h@vXk^a8*8P*_-QNk8W$>Ls$bxQch`<$s&P z=ID?hjHm}K8s+ZlDp-nSF4_pKN7{9W+iO8Q;f{X>RV!)%!!&?yyElkc}-Teh+6XOAZPV8jQoJh6j#$a2eu? zsFTLATH$NCiVj&2cnx7(K~=~HWt#HlNVMsVpHAB3=j$1dy)`guqw=4cr> z=_tvf$($?cXH71n5 zOru*^?g>3en*VE+>=z-$>p=X-L!ZA?(}zC-dS;FW%)$AYItn*2imWo_>_y?jF?tmX zQx78r)nnihy4}OLw=cMD%D0BQfrWoD>ecJmqEcaavrjS5p5Qq_FY%OM7%e7^gbQX0 zBy)rc>~CFDk51&0m(Nn_K5aR6gndgC*xxddOGMC)x}=aiN3=&qI{xK|*W-+srfyrB9lJPc3nbOo~rOnSQK zFzdhw@F<6m@f4vITN7xcj*IMf2T}!Ba=^&|ZB62%FfG(*82IQ1-GZ<^Jt_h#6yq%@ zK#d>@Ujtz|z67f&7Z=-Q7RE@Ua%K3)z<_r}(ZK=j1x@jQln^3)GQvm~;qE6T4FLj? zVvIu?JBk`6xeYm*ER4@t8YShqthINsNWu#D&7?8mD`NZSxwijCbi?lo*U090%{6)4 zi^nW7tso)dWO{~S6GatgEm1w^Ih>^7!NGXCpHQBejcii#QAs`F6qL@Vid6zEimQZ9 z+PyUr*`mvE2frHec{no@?%lTTn7<2J%nz^AuPZDAZ;~`dWaVD3nm2FCq z&))Mmf*Lj6<6AG?%Q7E*6TGZ}n(4Fzy`BoN|87J?VTAW%cmaE8v;?k35!*NMwEP#l z7e)m6P5|J9Pg}xwsghLQO_Cg)5Me%Uh(4ay(Bym?kOhCdM!M^V@tDK_ zb+geN9qM~h1QoDf{39Pnj=%GBNnmY3z=U8wYhY5N$U(14R;j%#&K~x$@rSuCo~8VRe3(o|BUIUdjpH8QbnG$PEu&42cF?=x9Wn2Q?1#O-mHBtEF6qXCh)-^XDI=2aRos)B2wa#%rQ|KuJax;UgaWVav z9|(EQCtlbTzD&LJtwg^sbHyRy^5h{x`(ltsnk+QJ(b8zF4{8=}q0k1Tdk7Qp2?WqD zLOdJvcKIX}hv1q~xVLQ#Z@uT#u)+;`to;Q>d%O zyc^1<5);_LdTlM$`M-4Yj!~9**v_Rj(FnAH`3ftJa$N1U!_GHV*3>AB-W}5&YASYm ztA=YYedQd{tN$D++>MK=Q%@C(qX24s6F2F+tdf~g@29n9ZJ_L$I0~zTS5p0gSd{>? z&wjKXAx7zPOFF~sw3ztvNI4UgS1;A<~8IHMrwQE5CUUij731m#sxcv z7J*dEEj-5>V4;XSYrwo9qMkX9%gb1f)rAI*F;B%p*#tv%ws<@zXxG7G+?uaP21rTb zVr6o{4VW!)^(#?7%WsY=%Y`<0Sl4J?sBDZLe3a+`*~?X&tnM1ZepDTDT+d-f#8$~B zOBc!?@zTXQF>(mz&iLuLK(i#igl8~B0V_HT?)NACWk>ulC_J`p30oKguw-r;8p~@oLg{;rw~uRnFEi|e0Q*(ZJ0)cSV`Kgpb3I_qgp?3cf0-~S68=n z5qIHG%7oMToP-$-_2a6|ut)b=gAb8tF$Pdq^?PcF)QfPJFXpB&ZX@rGP}U@u2RfiO zW6&FT%IM=l)!Vp6iY;b@MUasrx2)i!dSbmYtUxp0`t|s=M8Ex{q&7mfyTTJ??nZ2K zM`>?=ou^h;;EtX~4GD(<^lh51>!V)e#3{s8dD=q+&w{A8-7n)arV2qjPIP!nH#`cR zqQ24V>eP2zpw?j(O=!6Y0-xiuUf0*bS2RFXSKCb(bR(s<(E+-0&PWl=@bh@V7IT&5 z;6zLhN*XPI=|wkpiM5fL)-nTiWAspV<5APV9Ji;!W-Lv-fM;B;ys@f7)6Qern`o5O zJuXEVy zo#`(Ci@)?mYiUKYAy4WP3T_3DRs?CC|?69~rP;7fUN5geJ`=kE_T8Mq2)FKy3a{!mRKpWb z+>Jhg>A*qVldXcL_p_8iL{ivC8l{*5gn2^Kt@>D8@1so=CQh6NHrd~HZWU3IR%H-oRK@*%Z*&9u0 z&ZCjYR%p#=j}h(fh3e3k_W#0<6213ENiDoqTa8MZHZ59>Nlt|u!i?c$Y*-1y+v+X{ z!mA#6I)^@HSyO_Um@Z^}W<50A&X021FSIO5^l#v}r|s zeQZ2CR5wp_xo4q<+#eq0vgttX@!@AInzyK6w~^VabrgyyGz>uyrjqIi1AmvAXnn$g{5=e9K*h}K&!f0cDW&r>z*o1(e?>0nO!0Bb|sBeuK0A+Ckv z5oIPZ(nayu{0u?aCb$F8qruekc3tzgA0s;d{Rn*d$k3YVOz?tvLzS?PZmIOGIn>p6qm`)R!%F)Z^D z6L!$l#JtsthU+*ZFc#~P*ji-{=*da7erA}hZy%5THtwB^?IoP?9Aq9p&J(DqUUXW{ z#q_aH0L2*z>r2Xf@-ZGA!tl*g9Xe$BToI}sie}VPw4Tjn+-K=Vb*-(0xHS$94G~9s z<6?0M!`Ufr@PH*6Mdz`A&wuI)%ZfKsvphhelknuV4te8G;u=C9k@!>Q`MjR#)sIb) zGLcm*R!D|NzCY?6;?VNW`B<@eMf}l@2ew$lOBd@Vonz7Z?#C2*v=j9+P2<n6G zQe)kZ#WWS_r-nz)WwoYr?qCbbtBH7cK0tZm;l6u^=YpyZ>SIF{u@}SdU=jK$LMzw_ zzVvDs6dEw``Mj1@*!PEquqmvDJR|18kwY10QN?z_?)7uSv*6~aFSbz>^pAA0G}gpa zvo#BeK-GEb$q`^^IW9U+v(%!lAhoW(%WaC=0U&iiFo*<^SImDnIO{j>rB1f#D>S|9@}T4 z0C9r|eWa=;=-wHgy8;U)?=@HaXYp1I5ELZ$%9uHy~^H>g@fqVb2#Im(dknoMHf~0(2=4Y`Lg&$npW!6MjUvm}>7vguq?4nX$8N=6ZQSM|S|dB7 z;D^U1t|C9fNs1d_zr-C0Y858K66xfq=CNDxR~xr^h-QecCu)D-qpu!_5C7f4HC-KD z*9?B<@7f>uSO+sc!;Fu|L&Xzx|l)CIH_^Z$>Lu8_iy8cb>9~d_M@+kIGuJ$ zXOKM~_*mC99Ic(B4Mf*}=HOE4EERV>$33SUw^073anD&vzWKVAaShK5Ce2{iyC1so zNJJNGzjW&2%a2T&E4DM^@`zqD$cf#^j0>1SmlylbiHrN1?U&wPh}jsJbc&-*a+dGDX7KW8sdQS#eN8!TL;2IVugT)xztVgQm2HBcK5P?O2xcU1 z=Od3tHO0w_`?df4`U24#7eSZP@zK)Gyi_`;EAFxgCt5N*5hm^ioTRuz>)YV|LT*rhQvCZyukmZ0@?t<+Nqd#m!P%SlF~_%K?EnCW*X6WohnHL$Io#I{qFOm7;Vj^>vvaA^snX?i0GH(FS zM^?MmXqM$&$;+G?>e1N=nL{(qPMJGBca&U3&l8zvwq+H1PD{yr>-f5L8;))oXY!Lo z?~*(>9A!1%zwVihhc}IH8sEBar7}OAdY;&vVE z<_??Its7?xw3($o$T1cd*R9Laa5dhvX<-5KUgX|~(l0D*XXNc|7QRfErQndsu^1z7 z(aS!^3Rn*(^F^_n(DPO@hyS3n`<;+^At8^-<}xP(Ec5tmwK~3M95NqI`qudD{#(Xp z*_zMFzeAbK34M!YUQB0^`(S4$WKN4knV%gbjjQ{wK)mx ztafItY#QFhWwqftY}#Z4@D~a5Uk(#Mmtb9(A7Ji#;DC#Zxpyb)o|U|v1$Pv*-^nMl zo!PG|=R)U}#a%lsy&(A7B+(zd$tA+`@~yjeu6u^pfWht^>(;G%W^fUCp#@p`o2^eL zsR0+7b!Gc@lx<-lDQ8y4EZ<_?o6|1M=KN-~3v(O@q0NxFUym(Hj}Iw?F2N5p<^(bi zVj6P^$UI3P)9g&Up4r0dYcf9QkUeh*<7h^*LzsD&KwhnJAaw~mC0BWtg6{aM&vW3fG@Wn8a-B!` zz~yBN{^hbI^r?hDY*D;X(+ZJ1b1zi#6Zs4H>+y(~_+)(fnRFk}P}GmgMe;=bDuIac z5Jlnop>Xc5XgATEd(MItl~py-*CCQ~rZ`qDXp&c{Y$<*0Sd|P{jja4QyAx|N{115z zWMN2OHli)zI3q;^5%m}j+7W5O(J>ox1cIXguj61A&uZ#>mj>26}>EKm6mUZS9{$ueH=C_bi5Qy3qtQV>L}xCZt_7 zY7o-|6g;XIQXphLP0BD4T7oj14m4DA6+I**6{tXa^=IvQl7F;e&7X>B-XMgUS2+P2 znwTJYG}k692j{dXj>+?j0qwmS-%g`1{lvM~5#9U`C@TKuBl`#*sGU)B(~5%O7*F~R z%^+Kyi|&Av?2jWFTl}bk_Xp!(|0-(T47SWTdC+ns8(+QE;zli{pSUW7STZJI0X*}p z4EZPPfUL=p6wFZzI3H_<+qL=S`43*rbMJ4uTw?0(#lthx@0o57Z6B8k?|7ECcu=_j ziFAy`X)v^}3E4dAxT;TyyeAyH8F!-D&stP+3_6)PEDg!dEQH+wmY&gE>F_qHXrQF2Bujs2u57mzwktAs>shYOj>b`#~mToW{rxN!f)nD z?qxK;ITz8by5s2ot1c$G0Q(4ZbvtLH+u1brX~A%rQHB(9OyOzAcB&YY^Xk$fH{%q_`y`cOA@oJ~{HlXfdz(0u&_!7E5>DW< z*ir}U=@Vak^CyY!`XTtSIp%!y2u<+>)J&U+Ft`BEuXQVYb1Uj4k*k9%!y0+ASJ02B zp-r4;2jZ!Citucd1EdTCY63jBL@*_6Oal3s>ku@U70i-*v^57rlLnIaiZlU)t^>_o zB*r5ycVGO;M~VK&FTsnKVO^ocb2?kQNkPCjhMf7{DLl#rgsFrb!nlpjS#LsVfhY)G zq;3dZ+nZv*GY5H-9{F-c%DqfPpzz?N)KlRJvM{N;fEO+L5h|vVz)(}Wq7#B=fn)r0 zL-1htw%ZnoF8&K}dqVx&JYa@H*W&BP@%pGk9wH6=;xf!^yTiy39?O_yDoQ@2(NFFz zQpapxn$_lHAyVe*;j1Aix4;e{IKJ3kE8k@I!VW;mvx2bkU|RT=pmAwrqZRPlrSrT~ zQ#AB*PapUzqAM;2Bhqnwaz+tP+XHLb;t+2u;Z8N9!{Ia$4@=0#xPiQ?Jy+(tO&a?Q zg?a})CUWvJ)a1>l!YlmKQ1ZvuJ_BWj*tPdEX&~op*c>TfhVZ~q5RL@HH}IO~9pKGZ z=(--BtAwO=%yELq>ReaciWzX&fyvT(LHB@YF=__wBmw7NS?| zz#BJtc|RnN+OpuZjyUBBRYQNGK9V=j$f7}V!qa_d6v;lowl~rZaf zkurEsmq>1FEa4~aC153#DRGOCn&*XYGQwv3H2Vmzi^BJF2-Oj7pY}B}QZ-+{yaFa| zrgOYJ5{XQa^r+E~Z0h?2(Mvuhq7FuMy~D_|lU2R1N<)uH;J`_y3@ukhHC6@8&O$gj zI^Lz=e54#&7fRR&U1l_387seZ^0v_6MQE_{(E||+v}-~fI_6osBw@ur!o-DRI2YkP zb5>}JS5!=oIFGb3MPnt88gi*|e+j!^^M$7l@nrp{T@cb{&X`f|Um*q!v}qXQm8rbu z^{F@{CD1s@Y->*5Jk8ScU~72!KM$Lctx;C?2G}xV$p+JMEi{P5Wg3LV3(K*6%3=`1 zL9u%ePAJ6)@Hq3HcD{C@ZtD>ynzDG40-}>kH>;pYh&Z>1VsKv~dtVZ=O7V20|KXak z+mjW|SRYJ=Had#thBw`(d(wMMjusD&_yWj;ThaOesuc}5# zo>R=%*4mt=xA}~f{8|ne|I*9;f%arj+{qpSYJ-<{epazo7Pa587oH9>KQmb+EvCSs;&UyZKFc8|nrIAyTSMqzZ zVakkVFysq_4x8&1er^SCM@zH17hPzXoe)Y9}qoLPnc~EXF^rSH-OAMS1&YUh>A`g_O(H9M$0{TaQkCrePoV@ich-pU5yxSnMVu!liJpg2bi(Bio6jec32`v8E%!P|&;0kZkCYFmUSxLs? zvlN`sP7y*{R^*1cfHtE1W6V$ixHWD9!}7*g5~!`thCpUE%7mAo(Oe>ZL<8LhB|@3P zaHifq)@It;S-tHHiMYP@Z0tEq5G(mHi@5K7vd!_tQ)bR*jB5Y~e zPV-Nnjn+pGOiLWeP$n%FTQ9ODXC<+4LVi{aWvE#*B~>dUQ#f1T7vS0?k#x=R29(%G z>BaIl3C9@0mMZiCo*4Uu$f)5IUZrXpDPg-qa|!1(jj{~dVo5|=OuLueJyhR$z_ z|0bp;5P%!^O`rdZ3yIz$`{yj&={0(q$4(xxqYgVHOv`G`);$WQd6h6tb{gr;+eaY- z)WxML(S5C=_44XSv`JvG^$18JHtmr4zR3YGN+l>MVFPTL(Gr-#n@}WZoEb1OBx2S`)ex`WL4usVfv^woY{jrNH-6}zuMvI! zJVLf{BXjfiasU!pwnH%7Rvi_Be3cCG%xF*6z&Ui&AU|4|4kZz|B{OImKBf9GuaJfJ##x3n3o>Jn)nS{@* zPjHkqlQa>;UGn;ic*;%IEmACq64f!xn)mJ~6#~@Wx<<0#+w_aGsa>#+NEm4+SOU2) zsUEnwLREJ1SwiCFeH7eyIg_w-ViKgcTI!XTwq_halXki~W|_VU6L<@XB#AB!lKz%$W6I+gEE^`N5qd2_J<-i_ChDoF2H=^>wmMxVz8MUW0nD}Ijr1h z()?$zsl~qP`#!pl3-`zWDZ!^~?@-@l^mrWb1S#mK^j^E3hmAIP$&0_-S6eh*k(jS% zAxl7{iL<)mO1&F(SIgo`n#Gj;ifD`r2)B@a+7iuxExB@GrI1e4#?Nyid~yZoGNTOFElinRfGeOa^4vlLn&#>yu->=@==P>qV1J(x z_DZMBuJj;Ad>fo1g@CGEzQJ7akOR!hlp%jlfX&FUP@y??i19 zk;VaD1dLMj4Al+Nsk7e%m%Hv$F+oy4X&UaV(l)|02sAI1D3}t5W{r_HVKdKV(2#*c zS({U&10#UCF=V?R+E!RNO7n=(=gx?c%+0{$wN9g5LDh<(fOJIGQgsBtTwa>sW+Rh* z5lA?M89EJdV;g$=_Fv*E55rhcawJ$Zf+vQY8P9h(o$=j)u`5;01 ze6hkr?WBfI5d3`e61s>i8AnM0V|RQZMWP9z z^>p66)pIl;%lAUeBpPMXxII}xUl2a<&+Im2JU>_jAw>WSoh&< z31Fn1T*%;u&;LG7^-J<(W9UZ-gJk7`w53piFH9!qrh<}QV0=BjxD&5J6i@1uPPQtS zM00gcp&BLVQDS>N$70ifkc<52z+k>$!ub$G6EZZpT%*uRQcdkr8NMw{dNfbK)2PS) z{MvJg{`_y88->VMETe@gWMz4lZbDuJk3yeAEQe*UYZ<`^@(HyNQxQhwvZAV@th&s~ zp+zD|F-&^N;GEqnD{2d*y&8Zvr$AXIo<1x;Btjtf5m8(@72dhpPquDlUHc?%2=PB)x;}CKNccWsuooJjkAw(;f=0eP&?tfh(OQqF_B<@OJ z%8X`cuFDzn{!H6OelY}3mAzsU`h#C_dBo5RgZm;Zqv-Ls-}6qQi>^uhfY7U|@iC-r zjkF{-%}geN)yZx7imn!=?3Mq^YVVuZImGGw1-eYhS6nrA^}Rm#(}2639AfWXhuBF( zS1oE6#0_Pwnz$;$mTLM<%CyRULx!>GhyV9pqEEd}9L6(!I9*VgG@pEiC|i7U(aaZw}87L-&z1m!IjPCIFmU#5iPEhxlj_O z3-=phnxnaN<2(uB!Xp&C;;uPO;ww9vza-BEeh3q?DYkYz^$NnOt(Y&`U@3SV=x%*2&a z0WqB>@9iA0E4c8#AU%DU999+eM#IMPfSBdU^|?oJ?Dt$bJ7+9Xp2vfSR&U{pL&D4nsrh006~`BwHEdn31@ z3Tvyz1)W24IMXP0L7FZ}wEVk~U zBV}tzPK90yHRz`(3I^DlC*o_q@|7#up8pSt%5}lHTEv^ijZo}qX4z<3S&0jjPsHW6@LT9)5laUub^8P+??^fr*DtRwU3jq46)t6a z!iUEr;E{MsokRG$4AUe@*7M@YOZ*sH$UlMatkyi34%A;L!{?M{ojBPHnj_Edrv{?zCG5)GEjEiZ95g80JFd z8+*tx(&B{D3t%DJaW;fA z(orv04u%)l2a`*RDJ5A53@c0m;Z3djc{;$Ad~JLAe!h#2a0Gw6PCSl zyvDdZa8arTf7w`ULpKx|;)01&Gl8PyDr>1+kfJ13j_#Zc%FynoN#myy44qL{`BZo& zo^@EmVN_kxnk0$nlQTX5xw30Hu}*r-F$@mnuoDlAX^B(QYmg|OzIu%Q4BcP|^ZjbT;@e3xv0hv>I2rL`_l_=mwRM83y68xXDkgxt-`UqUU-(>R;18 zq1lkIur(t3lHowGK>I9e&Y3EM<0d@roxqB#*3(2CbpyzQJQ+df9<{! z{wFgn9x31bdFPzu7|l5sP?oa7e_uXJs)nLX_t&B?z3#VONOWTx_%W-r8E}*Qa7GSc zyJW2V$OTDg5ONV@ln;Z8&73Jpl_?kT__4A^ZZ`7UGGm2}mqH#*LX8?~72&_lJ$Gim zclQ4246YFiKnJ#ECV9Cf1vw`9yGS}?*o<5meADHC zIyZ;TD!gGci+*&{98uU`IZO0G(Fws^22&RTr4?>B?@x<;~ zn&fuygQ5gVsT^9DIfX`#Tq-GmaCYv@PH);vBu=KYwcv zseg0#i7+Lf#557jJWSt5*s;mSdiKGV8OI1s&|j-&Mu=YWrCk@Ymi{96D#WIYgot%7 zI*>NUq`{+Q#;JkVuoI;vQuEeYyL#AwbQIFgPmb+dOSJ9Jz-yzx*5weKiR2s-Q!3k> zUjnA+w2iDY1>O?d0`n9>yUXNLpMJWZ=nD&Qy4_fLcYHEPl%C%^`{9SN_T#nuI?gcqr79h6442zi7@U zdhd&b$R4#Lsq-e4k+H5%MlW$jfa3;gW? zTV^bQ)NnWSomL2D%A5pN?o?N6mJa;EPyIE~ul9pmA=}OtLGJ9$`;gBP1-E6!$$|-M zH1Y9Ef12nMUru;v*~loIQ)0 zc3gE;nRD!D`ej=IzOu_QkDuT5)z1_Ch1jbjM-~^iY@tQSyt8x5mPF>|xQ)2*!o2IE zi}J3s0m;|qPXv~gIrRLO6LU5=xVV_tb4VZGk1xh-hGLlKKR@p}8*nOR9uVvKyWHE0 zT+VqtKO1CTwlzzkS?FdwAmg_Raco$(PQKK=ApZ%rW$RY_ZQZ(k`;jA^3!Mu`j%?br zb!#zJt1`6WpIj7M;LJxenGX&+nGX&^=7WQfc`?>=I3AQ`4tY1z^J1*$a6D)x^RrLS zGb>|rbSr+VFwMi;lrH9FTgF|A#{9gx4WA|%|0>aKGKN~hoMrp=0|#tig98V)Z|_`K zl>6VU(>eY0*#pd5_%EdT!9}8fHo^>@%z4HVQn+OcWX{bH7Gpk#V}+MFgH_qv7RI8} zbC8LiKZg^ArDV=}PME2CJwIz82VE)mh@pq)=jpK=3n=vEEKFPT@cGYKtO8@4*b8s_ zP&mAJ?ROCEm;&!ZwDv=5`NBU1dIc!jpXaR6k_hU!y6xdO2;(pw3Wq|xFCe1}5zb(^ zt?R~nf;LCD3X?|`#(B<|k{lBdsH3~ov0ji(ot&4&&pd*{_{ zU3UdR=i=tggNv2TmCaZMxlo;p*g;>U&P_@A-Fz4OVxaOVp1By5@&5FqvU$^{WKR(? z=bz4;%)Nc?T*S`ef5x4M+@qga?2JD1fm)mifSwm+-nm$*(4dofD&9_!`9%w#C3^cs z`PdnK=3@mL&8Gy-^gNS!8cbxq*tu{O(Yta*Kf7dJwl${%+qU8A?8ufy(A905S&G}X zRW@&CUgsiqS{xtOh0e~4i7t{wk>jsh2TOmppxg$h16B8uInn7YV(Y5gSjSVDQ>R;f zrmN6S*z?77A&T9`GsQ-pE!ZZKbb3xQraL{aR+&?AdhSBDmiZZDB+nA$^*oU|^gNMy z6Fnbf(|*><+@=;i+v|qK$1y?P`G3imAm}=wmCjR-gOtGez$t` zV?;l3E4VKG>bB0sEMM@;>7QBjnSs2_;mTybwVKUJy1L-IraH=;PtGM=#Cgu1uO6*s zp6EH?^t`%e?vq46HkxoH&RJwz&J?tkc~d=~FYEbPC3D#~{+kYLPB+;nUji*cV3RwC zjhwXP%l75(boBi2=s9~?W*}iuH{;g0ADDnN>gVyOB1Nx~S z+vLS^wkpq=23ZZ|e6FqWp~E|WX!o1v z=-vqgML^s>0^j?eB{v*16ElzFK=w7Dd_d}_)1{J#>6M@yX8ZB25pbcl->uYmw5)^$NJUspfM6do;xLsS|JLhL7R;81zP@H`vXwEIdigay4 zi&4Sn*BKMW1#x)UlfTN7@t&KUOWsWspP-}M8BH6;N(}W9# z?^lI%&kaBGdlY}+C^&e`T&KyL9q{A*OtQF0u)O}X3Q^>*c%@<^6(4g$67^&a_h|$Ws_SuGoL%A@(lY_heH_=P( z0G-TfZgd~w@~$%*%Hn!@&s0KM@;Z6<0ltv*u;)VLP~y1o>E3Jp@9u*{U%w2r6#Q({ z@=Uqasx*BSL6-u=rG*md;X4M}y0qa1`z^1uyb1d&Ug4`Z-}ehdLx1F4F4Wls1-mIz z++_=Hi_T@kF9BV0*GRSnT`?f*ny|S6D%yg#1{$wryjRg*z2&|MqN}x<<6)L(>RPWM zH9+#E0INV$zf!FuKMFMFlE+HBM)PnsM>h|#G)$SXa-eRuL>)Vn*Kc{1ZG_LU%;DX{ zQ1b|c*cbf2=yPBH0is|15?RA;gPxJJ6H8tvLeTC9@3Hsf@<6LK;WdXYGggSzYpX6Z zn#1NOUutQXj4wzlq~+SpN(#+(=oWFa5Z`ZP$5BuAs(zY$^u?7=5beGiK}1Ma{+57t zSGQ+Y;4KSXW&o>~S{@j+OrBx$j;4T^beY*2CZ%jjWzcd>m+pb_e79@>Q$AH=tLY>( zqMyI^FCQZMnZI^!>%&o#QZ+DEhn5orVD+x}Ps5-3gc{G+Mj+ zmhTWQEZ%4C`~%HbdFd7lMh%y2LPpUNa%<^vO3*Lbz5*;$Oeao*i_Lhckef-{L41N- zEPPvNJ#Jp5$!U_;bBk=hYwL@jCVExB3p*EuGurnHg`lpKQBezYjy`VKGGn!{xJ;Fp zrx;1g#4K0OAe!!il!N(>5UU6q1u*WG3;h1+T^A5N{jWYU&<~;F?qcEFDl3AfWtHhz zuw0TQoycIzj1;!aIDTk?RvTYjylR*^x=kB&!))%+Mz?TM zuD+)mqF{O3qH}ZxQ)aY)F1Sqc#Zi`m`;urg#CX3j1w2l6I~x%X=^>87u7D-3B?yW2 z;WTcgJ@@~`PZC{xpNk8&Mi_d5tf&2nz$8X;b>u2>Op%raRKieRRwenj$X1sb9%*co z|FH?THBxJD<>rv_bfWZ9j;Mo;Lldr!jv}{E z)Tt|9To!Bk%2=GVi1Cej-x7w5)mZmKEE5;o`+6^W+bu6Ay4`)#Q}^?4CBpbi_}mET zD5j_fUp$rsBw0(b!Do*pPvg=R_;y_iHtT{Zl5fNU$Ey4%R^~aKao3B($sx)~T6#?g!(lO@(XBZq?Vp_Y|j zDv9HSZrR~h4Wwg0gsGUr6{oIqG}Ioy%4poJU|m!5xRqp_AKmw}cN2Z19r41@Wy?mO;x#Ic7N7Xzwz`o_GB4CdOm9D1YmJu?q#!j-Y)sJ^}JYZNo{0oBk0S zj3=XL&Q25j!cZMlU$g)IX`)}9lr+rDoSmHFm_aZ}1LqQTcT>QNBye1M((2d-Yk8Nz z@e^M+6>8czDNAR(73x$2ZYwj64<=ux6sl>18vesfe8g`+U1D`elWGnv6e^ksEswFi zF&k++9d^@$G;+mvf9<xNR+)z6$@Lp>P*Ax0XRBL*1$- zJ~bawXZ)1{ZP)ARv}7t#LjQw#gLHELgYUn=OYYSyfkq{$l^IkR0CMnM+7_5#yyeFq zxsj;;#S(uNCP3$CgNw~ERtMX{)x1t+C@FTSgwAjHAp zn>p+dUH;1N{vy%4NtZD6ZsYG%5nfbCVnS`)e!dX)^Hsb0V z#^xP4Fk{e_do2U^3DdptbPaSu77r_yBoJG}DtZ%8GjQJ8FMI zbkPrcXV#}OgwADhEQc}aG?ohGZ(0>3TP&R}xEySmL3!uG1(kw0tuIMrX^khny0url$1>uodxJJqY32W%z|`Zk)%yp zqcC`5T=ipOkbaYlWmGl%pAAHH;EKaU*Z5M0u26XW8K^+w%C%4}JTu?~YYN<4#x~=h zY~)+5MKh;U#}z?pR!Ygr6+VtixV9l=5!MN?06jB#km$GHS7M)1G&M&KOL%!?+P7rg zSAk+WdDlp)WFs_^W;~LN0PLr+l_k%~Wtz~?lV39Wns@Tr|9i!uPN{yLKv@5GqR_ng zEG0hB@8mhX=`6s?Oc$vdts&a`XqmqfSZYtC^@x0?sI(bTG$n%S^Wrl}sLgmxJ zucK`&+$Cz%0`t3ezKv+z*Tpd+*YaNB$%b(qHoL42*|WGstDUEduw{ma&B)OGz$`ef zX8`_Ozi=mMGAHv~pd1>w-+Ax8n|Q|f2x$3w^r?UpQ}&g8ftR=)bHdSJUXKAt!c=%Yj}`?yQwhKmeoKFcJv8Z=Ky zml-8AkCkGzeH!x+Q)XJ3Oj~${oMLG06wmxkfV)RkCkl}_0t`{dXTI`wqVN6$Vy-th zY7~aXj12k2iUm$xhA?(ar%GcIA9x6o1ahnrnzhubfqe7hfU}OSpef&Y&lIi3jf|fU zQ5u^A{aK07BTJ`Yl(`-z zJ7%tfh$EGGkgSi3jbVD)2uumM<^o0%rP1(MI zCaoRK*W}JlG5r_4=Tm=AwB=>aYYLkMwh(}@DurYMFP;Dofq~*;O@NC88wz;JV9E@K zh5|K;H3w5>WL6WGByJ&%(X{3R0p{Bfou&ac6dWnU)@tCRd$FZB=YM{TuW!9l9DRh1 zTpl9ihP9mA@Ecq}LL{-dMN2-7$os^tZ|EHdmik6G%%aoBLT73nf%39O%p_=0uN{rb zC>jbAQ?BAQN#l*G>M%>PIuy$p4DRAL-^^uDH`RxTx?c7(ZBG!r>^6j~n^BGv8#7AS z36n2I%S-8-bTrD#9Eim{odlt-2zi;Ll+Do@y!e~=2!wBQ3|mOY=J*L@tsiQUZHW1b zV>oG;fIUW29{lgT@C$Dwdfn&K1aQ(qhRuR%6fi21^?Q~pf+;hWg=s=%Xsxy;@9^_u zp@77-0*n@1y70tFN(+^$S!BfkJC6JX?&zD5^Kh;Rc*V%S|I-Klj_5bg4D+e$DT`VUXx|f6PUmAl$Vh9NcOKUlql_76I*gPA2Xa&Qf;uWTLO& zO1ADBr{Jk>9w$Pl8O93(PiWbGnxRPwu(#hPYp5Ipb#oN{cZpbzcEjo6;s%{K{wr#C{kZm^zX-Fb%70qcGm zvv;Qnn`=@Lt=dLIxpN7dC|&zNHE7`h&T z-}Z+e{SBhKF2-aFwy7V16SSLJj6!IaN5CqVp_W>H(gu`D^a4;f#e>SDYBP?%_!XL_lHJuJ=i_< zp6+EDKN`hGvUAg7UC}qh19+CAoyXfT#a3aigWh}a-+4Y?eH%hp6;uev%zfJhE(e|k zcKMz=^O@#m>9Eny551D*e4)IR7z1(C%T31-w0n|{hX{jTxg_viAmN3H zghgi7bIZ_WhVj3yakN}gsf%+3Xy}0rjFrKpRMNjw=rSV6HQ`M8BJJ* zL-u?rlCW^rYPz`3Kz?sh%Vii>9Brw!R9zog3(e4a`35=;BuVQ$)4`S*3Ci*=yUVbx zYhZJ^3`Ix^?Ilw>$Z3jQa$x3TJFfW&q9dO|xXEc;@%{yc1BaY|(kOp9j}d05V2)E5 z!%D2FBIF_Q>3OtX}g9~NcunU{l2 zM-7>f#i}>+JB!dni;e@Vl}h7Ov!+qb%BK93JjlScvSN?54 z2QHQPn3LNN#Qn6yLkNJ#T<(6mXB^3y^m5PB@_)s>e_5<1r6jD)Ggk#$X5^4P%Ain3 zBfTC1AB~K*7l&q^x&5`5?7gx#42PZehPC>bn}Ymn`v;yT`ucl8w;`770q52!DY6Mca-tU;0h^V{Y-1DWU-g48=6Yc*KpU}!W-aIZtG!zSEm)42XjFr`>09|GXYzs$7 zci>0OTSfhs*tYJyRH-WZ4ST(^hPh-9#*gh?uWqW?-x(tN1dYAu=?}9~f6sp++C3EC zms?&ggK(5ETf+aibX(=y5xMV8$f7cjc3$ld;1MG|%0_yseg&A<2A4uO7RF<)hdTNd z?s0^41O3=FFJb>Tz7wIeEL7QOtU&H!JF?5O3_7J`TPmcEU^-e8%}=p_?POv8LnY)Q(4hYBY2ib!&CQ`@X=E+jqVUy35Eqg%kiU zDh;b{*wsbM+2aqhGo2$Q04b{}6E_nY!3zWr(&a!Il}{R?vAz zI(}(f49Uv=Rzup5WI-+M@F`+aL$@j$Z-CcpLPF229=XL+v zzbL8nV{2FKYsob7M~3fbEA((1-C7ALn$oJj7V$i?RuAj4%QC^^>M(_B zjha+6JQYBls9e~o8DMSR-5p?jps7})>=!(TVC9Okeq7z9odlCKn>Xk;np^Jq>V z+BCcMmOE#+Z`iqO=b=rzcieL4#vQwN?AkfI>ES!~Y@gjayM30qvs)i#{_OTcn-&*4 zKkYYAsIqz8x*+Jft1;CgjvNVs0|$;A*|h1%ke7N6B$?cQ`~>-a5qZXe&UbHmY1 zhc+IDZP|F3>G50kZ{M?ZeEayO@r{Q$%>Io#m_BqYGKZdT+2Zuv$^7)8Y->(6P=eXn zLz~!oZ^!Sxt^2mJ1!oHn*H*USv$LSs=Cf4?y=VL4Lg&8_ZCgP3I~S|lf}nE|Ry|9x z5!<)3%ntxt4#2Xv3U?|{ZiCZ-ahB=MU9cMd-@frf`-IxJ4;J11gN5PWakecBo!=n( zU@CK5q3uf{FLPM-vj4LU_pr>XiJqUGGS6F? zX0&a=Z%x|<8vglotnlI9vIw8f&Rg!>wR7DwHn73$_FL|J_|DxsuuAXj+`VJnGrM+D zK*6q^8+JPS%m4P}R}%e$tRpSYKZ0Q0x=xvexV*~c5zZoH&iTqry>p>im}8+qHRCT$ zpI$)b6fP|6fB5KzXV&rBFxueav7wlgQ6bNH2%Xcd|r5kMG(4Fwev{I{x8}PR>L}H$di) z|Kj4}rn1bPo-Y9>b8<8F=VT7K-E!xKqwD0(&vu@x^Gy7(<8M5??wJioL2oz;+XA{M zb6~}KPHv`trpw%)zFY6&uIzzE~dvZM3Ub=e#nX_8&!kr52Yq7*P;C@E6x_u91zIJh8is*a(31QjYNn0TE zmB{mq-ZMX?<9b=2FkYPbfR++ z`!7K-yOjw0D@NVqk%5Lr+?DXbj{{G~s#9en)t4`*nw4TF?AbTcTi1y9OJ<>f+ z=D2II2X`!HsdIeX%ly@e%)7c0Jujy9999VInXt^aj^iHb_VJB7w(t4>*?Skj%!=}E z{F#%Ja1w%h5`!*+bP~c6klH{1Z`(3&$YQ`t!(|oM%Lc^#vj|@M3D&kwVuUQB4Yw8a zuSNtbR4d-LYHb??Ewo#2Uu#vWLanW}{d8?VwOZSJ&+nNz*Y~_{?z>spU-F(a^UO1I zo_Xe(XXebgZN3lJM0ent=zTezzb|?7VprF}Xy%+;$6j?6R$}*Y>KFZbZ0q)x7T9@``;g9;1L*vDcOi7_)wl}E zzJ=iByRJI+5!`*nI={TAbFp)egF@%o5_Hzf>-u|hRIZpehF?p+*e#JCz1X86+e26G z37`4>(@r9~{cO`*!${1)f=U_4ZoRD{ZefD55<*2VrSu*l#?2B1%_iO0`4K7Q>HC%%zu9+ho zO@?vAnNIpwyz=7w4}f=)2~iLYfd1%0txRYLD_d{SXr6c?O-oW*4Uu_s7{8ykgm#Qh zRy5ng^uEh(CX3gXcR%e3FQ27H@SdU|>Il0y?P0tOkpE1fu!8{$^zHoycnLmt7>U)c z81G#OqAu5aEFP?|FMsu8pJL-db6f2G(#WB8*jT*)OT`7W78D9Ro#zQ5>dPnFXo!E91uf?L;=$4HIitES5Dccy?)eQlfeKspjbcUSz1tpOqyE&>!HW+g4EJ_YtQH=F)@27s zgmT|jS_&4fu!k@v+zoQ!o1k$g*>mGvcujFY)=>Y{{gdu>{vn%Zf*j?v5pY?+`-`-Xrz>Qutu*|qEl8jnTy;T#@av7zpS zEDEpX<^yaQ8N28c@Az$^i*84TP~X_CCprh&t=RPI!$2;in^oliK_`KzbW*4*LQ6ws zZN(1Z)FLnpx{~$BF=?bA10h`5hvtajOOvME%8Q(X$x#^bXfQ^n_gwh*M1S^A$jt4B&q%|X zR5T~2uMuYUQnGd<26|R~{|iisu%D510Fx&+fY(%E@&TGBglTDpE`ev3u$G^32^#;i z#_|Bk$>25=M%tME(1ar+VV^#A1ZCo#<$dS}s*_6(!j@A51OGFty6}AHuoT9JHPI;| zR2<9Mh70qrTNs2;kk+BG&1cM2jsd7BZV8Ytm@W>@-;L*-O~rDPDTZ^+o3;&d!x6{w zY4`ZF$JWT4rfMzJbHQmXWBnAi)LK;7!d30Ttrs7A;>~X*I_h4@{aJa{e-O~CI>~5I z>Lf^!uWBQ&UqIuc)(T##B{Yl4ZFwKol7tjx>(Y+EQ*VO|G{Sq+#!YAOkuFOHZ$p?F zWp&T6UPH?T3_k6Y6Fx@tHSsO@&|*h#V3=Xnl^7=NZ(Llkr15iM=7l*H2Pig{j!&t) z1!Z$Lw>}8Z+qfa}66Lt^9n#>G(5XAJSi9xpT3GBr$D4RQGHKz|Nuz9hsX+!XS0w*7>l>JorEywG)? z&ajy?FCs0aT->N*wbG0hns+T=v(F_YS#ZV8a*r`x?StdCi|oeFziKPbTP~DTMK|;4 zJ29c~F)1!I*l2rEl-Pu9jBkdZWKahfdQ!X3ShVzj`Sc7VPDv4mm{AQ|My z+hj!dBc#{};n!V<@tfGaJR~+0y!p6YpCbB~PrIDP@0$1b`d(SKf&&60HFv^!kC>>* z7+*E(;$ozZ0^TI#)3b|AKsFTw1BeYYugRHDF^ru3O9gYsn58e&Zr(fTRvj3fmU*Gk{6f-hN`I0-Kaa} zXwsa1m&XUsJiLu);H46Y5+U7Ike4ADY6z?ryZm?PjZpSG(8M_*ohD310Bo61f=b

    ^&Do-q!N|oz;S#Th5Q)>w-B8sb4B5;Dn%L}8zgE_W(w)~2|Aj^rlHkE(FQXl zM=u`H%+*;LRF>%@E6#thAUh+cEw=X{_KCdF<_r0>kXInf_KvJ3|VMG*%nE(4x z*7>f#L6UrF$Y7_Vi3p#=Oo}kB?4VPJJQV^pu?!cit6T*pDx0&2g*nRbIjq~6gxs)s zvSWaw&Ma_JljQZ4mW_ipg@V(yE^;GeEga)KeEyHGAA~T{9ur2K)EXKb7Hb8-E1q=G zOL&<0j4uSOD*P82=+uO*NuhpUrxmnko#+dpu|}2&?f3aPNM5SNN@$aS)Kg2SVP2aB zO%?<;N_&h!9;jTJkM%C~?oubc@`arAkuBhCrx+^E%UwqLp0DM=4F}jvFRy^6(5d2G zY;kBPh%OWA0Ba-MSfQnfGCQibC>&(~r>+L!yH5C@Jw(5Aj!Uz#^5JG93A&@R-sqkjj{cpoAr zP%W;5%4Tb&l}nsN86WZ`$b>NHkZ|zlKRodlM1OpNi}5Li(Jn;tl9Dw;Q-fO{sCONv z;IsXD3W+lb@sE#Lx{$yp%itN0Ah<=6UiO+^&M_!l8iTDoY?KtA9peDNlnIMQ!v-yn zCz;w(Let}>+%bB{6hg|FT#`aS)mU*hjB1@OiCZF6p&w{NWB&R%FTk_svaA!iI~om5 zxN`)TW8FjipeYdr4RxOZ&s%v15Ni0#jabdr!geenN1-eci z5YE3Keksvwb&jYOErB8Vl4V`7ITU(xGsa~?mkBFH+5J>e6376lOGHYn7PW=>J80{6 zO4H|`e)T(vF1uX_CSgcn%LETGAK9Q}lOrw)jjOS8EG)%>O$qa9F(VvNdq~Gkzy1WGe-z&m_R?@H?uFUq7@<_baDj38pz8*vOjsr?HXVt- zF1B21T@H>XYjhN?+r@ZMb-Jnej=)s6`cLN!joI{I&X}#&+ zzwlL}=l&SHxINv;EE!B;0BR0XCLCB4jBgPzWkL#5CgdP0#-Y60ji>8ALr=D&58BZ{ zYnl;ZCiSL(_1T78_FZ3jKhZU3C7HZSaiy@%@r02J6_CYU>nstA>K+FGx=d&c9fSdm zcW7m_r#L6UztMhJtBjjtiI zaSVK8)0Pu&e_QP~qI2Y{McFBVc00L!j%+?@}JRj>R528FA zpq*^oHKA|xZEk1e$;YT@^{F{zW2jC7`yGb=!kjaeZ8j1m^dgLGs~V%SJJ(q};BU$B z8D!_fgM?eUCI@Bh?MjOwqoiu_%d2+wnl0=b- zjNI8KQ6$z9h6GlASqT=w$%u_s6f=X#pF+Rqh?Qr{BkH2LcsjH^#wx`QhIvj4H}!Dn z6!!md7o9TsjZH)!ew`~Z*4Od2_wbp4#Jy=Jrg(NOL4@jI%7i-TRT>o*z*L#g45>se zV3Q~p!xV$KjFDK^&Lxt`Utw?|okXp)yU}8jW2|}Jw_(+bM-Dp{>HhezAN}6ZL?6Ms z{y4Yhc8+>2=h2hMZ97mTwC`^R)VZO?H^=&dyDYF+*t$Sv6tMO25i9EDErn2?s0eMv zn>ZR~O+_>Pt~J=^4faf%vlsm5XFg2y)IKSugW}e%4%oD!$#@0@M($3r1+ZT%cu_EA zLIrG@Pz5Ws!fWDOr~pIO&m)wmJx<;j0D#%#B8q~6>6j+M7A>SxyDoa)U$O5VLF6>h zG`lIR7L11xx6MBUfm}NUmC+YuohY^U^@oy~td*o14bu@M?cC=gqb!AuSw@p_^cZ<8DXcJ-sRm_`hFjW#zET_zk@G#7S} z&}9PE7yMW#vAZi!x^%;|b`REuy`01@LgOJLoFDbj2sg$F&!yn?Ke&f&{5tLp+&sTE z9Cy#@F;cDlMz!*UF*fzHr}Yji9e6n?tF;L%?l81296Czo9>z&g*PX09%;M!@KkE_K zrvo-+vf(c}|MB;Tp8R^`ov4K|857gvsJDfJmN3w|UmkTtNekHfdPKAw?~$UuzB&u` zv5#OcJw+*>+p(5(E6-9Q-KMU&vCC?jt5M%%aCSUk2Tk|I;OY9ve}0PSJEtOyM>V)h zY*KtW72`z#HN1yWAl|5mdXZKcx=d(}!ra2L`6KX;xyc zpGDM;0M3$lB#p2_hR1e^{`0!WeSzqk#|RhB!*~kMuG|pX5o@}GsJjdU2M_#X#7jYi zQ8k6aIVe1`sH%u=P7JJKojum{>InCVP8go@#e+JwK^wh%Xzuw$Z;|&DwY5^LFxyl- zHNRP5Y*?meJiu7O!tS!s>v~pH^caxb){>)(W{&D7KHy!8}Kwy*I$bO$5+XbHoWO&J5iz_WKgH@lHT)7_DL zf`Ox9*gr|P=&PSY^ooatc~sG8r`hFCUOSC^Y5|RK5J8s-YlBe}$Ns9C@xK(>!a118 zJVu-h(QpS(C6#*w@eGQdAOH5R5RF_SN+uc`qY!h$pdD}KxFFPUSXpTY34B%860plg z#)vyUIbFe(jMJ3#1%yvj?EGUI9)9uP@@Vk$D;%@Ffql`Ds%LOxYgZ2nZD~E&=H)V? zt*ywK{M^#uXj8>RfuXt8Dy_MZ{8z4SR<<5SU?Q-ZY`Z z7&izULOpm4^-rE-eY*&#S(zg&Z#ApckBr-@!L1KwVJKH6>u zr>r~)Qa>{dfpifh}JEVco&~$ID z<-51?x&Oo9*W3t!4KAD-(ebRgd|Y!QX3xGKRIp{jY9pk6YGutwa^G_!$c^a6A{bF< z$8dXeUv$fskA0Bni}G!SVS2&{x0AJW4)K}OjHL-VaXkoO%7it5bz`**AO%eMn{d0a zRbe0DHR#aeS#-y_$I;kpzW&Z<@j!n+cxsb_R>xW?LbpL%)YOKhVZH!-f0#BTI;X8eL(n-5?PQ(ryzjv?Sm*mt0(kG+z4JDFjh_GRyZYLl zyP@+98@f=!K?A4l{i*Xhm6Lpbc%Fvji^E&D&O_&|t*r0eG<4tYD{f+)zmn*cqVt{i z-M0JkTcGp%c0Y0~biQ-vA)Qwv^DXsu4xQ76MCbfR&^g=rP8!<0^Na^s=QD}UH}BlB z^LcmexNX~=n|B`j$hJG7b1q?B>%8o1_6Km(yYF^d-?wk?-m(;Do~hL1A3x8&W&3ue zwz49Tat&4cJH|9iaWQ#qn~lb?%g+C(YpP<%^T)h&McO= zzEEs|{fDB?i#YR4`Fc70IZxp;o$tJD`*!#c*7?hlsnyQguDEHZc$Wux|KJ&|+c)0_ zotKI{1jg2_PUjmo)cdiP7N>LCx*cDT-^$?)(D`k&x6Kp2AY=_I(@9Jo6T|@LSa@f6O|c1~;i|uRiwb zo31$aYCc<1ySEL^-*knvSA*lOkMIFP$i8D9I;Z*t7g+vQ@=s+sol^*%x3t{#JPw-w z;UMfgsh!C!Hc)A=D(z}tD5%qpLUrqk$F=P6pZZ`gO{nU~*! z@O*3bLBdCledO9JZgM)`c_$4$c*Y@}H$-CR^>B8cAgA+|mgn7t@chp+oge$iu~(n* z;IXpGxQ%DD(^sFkP8cyR~H7j8KQy7Xwrv3 zo1|zmuHozEwea@smg&>-tsL$rH6|r}rY3hIt#c%^#)AQyH)D1y6PgV~Zh>rQ@4kIo z@1Ca}JLYNg<{dluENMqMUxp_>@q!CZIH644-zYS|I>+YCm|!;2In5_JFJvmf>AXxm zgvM|>7emkKe8YyVchh{{&WpM7VBW3uYYm6c7|=O6=Tf2b#n}1!(0SR{tY_@qi*@%Q zto^2EsaOf#uy60)&71GOd-LWE`<&Nb-^i(d-2)cNc3RN+(9rz+hJ8arn>TOW3Z19D z;Sg2@u<3d`ht4xQKcw^3MYWy7w;XJCp7%1#58E_s8}ckS?AEy8&!JySZ-3Rb9D3Ws zpj!6d`{Wv*RaWiWhdXB)m9u`r>mSKgA7|4PKI`MZ$vXc{H*pEsx;Nl@6V}^#>+gFx zgq0!DxwCV*Ps4|R#Lf}M_K?n310_4J)48{E!u^(!YUwD zqQz#CUU%llk0g4vJRh20hnMi94$(mF3tX!XS!$1<*bm%J^Z~!}o?nO0HjfrqJlM8I z?h?gX1B>t1@4WfdFPo)*`Y*!M=`>?z##-GQspF}!g;g#e$kk=)AryhTjs)mJtg&ys z`!{}S=^38_Nh2*nn;3tw%6jGoa5k~}4)DN2mkFx{=e11y!%zS7bBXTyDAYaoX79@s z1x5l3bu?Qh96}WmcVXS{;_u$|e4^iY*r!=#4E(wFQ<-MY<(JLAJyv-^L1)2O8Nz@u z`73w-CDA+I3)%$XD}bQW!gu8?)CCSk*fL@DU~{3fzIEjDh<@tZx)1!FR9v zF1eQ}f~v)Vn?B_}ZsEOp8Eb0^2Ly(sQ@fV~uMzsW>~5oI@{N-pBHHHOC4wh+;2gC{35QTdVHVUz z^398Q)Bn1Z=%s@o$p?;IBl_c4ffkC|wg0Sw zr!+@{M%j;8Mzd$$!{%SPnsX|)p40%=3lLc;4I#ptK_ZYMP=lz`C9@slXmjDlU;p&O zM8Ez!!7QkX&vT+kI5gBQ?xjhsBx%8h(PhFqgq5x6IQ6NvY26!R09D32M{SXAyrwQc zV{SXq%|9b+5ar{Y5|}^_b2to46McDUG zI}r4>Kk-vU-xvVx6w;bb4F*XEaT}e6LDI3Vd+0I&SfX86x6^rAJ#@M$aAwUAI#g{Dn2-{JFMRlu?8E;RuNcLf6csoyTh#KQmatj`i)DCQrmhDp zrQ26QmkEo7#!o}12+1%S;H`>?`R3A?6jG?oLoXWo648JEc9NG`+&5o_kuLUL4OJ%m zlEan>3m}?yS!5#wB7?mqdc!-P{vdnuTazTw@@$(VH-osQ#hk0|PgEGfQU%my!qQ<_ z4lId#CHpP*#=VsO*f(GENus0QE>s=Hk?F-}waItWhK62Iy@v4ZQ^rz?SW6VdYanYw zG~$=a6>4Z&+c_RbO272mKYR|+BiFrN?9nmvC z>SiE3&b-NokbFpy~*e$6x}3Zs+CME!%6mRdJo4`mr|ZbUp-lLcpDcZ%H!@JHn`~yTkc|Mp`m)3SRQ0#ezsfB2oOgBXXmS*b(!G{37 zqOmj0?4Uk3)mLEI&}G6Bi?)tGv6@O@0b3@JWOB1YNrp4wfVCJIr)?BP#?R6fKA0dD zibj2)cK$1gjyV}AI*?2=7GDC4u?)Z>C?zhZA#|CrzhNszz6?4Gx|hQ{LcT{NTGlyQ z9dwz{9M$eltTUt!fBsYNA-eJ+kc5%jO&Mu)c>G)j04|9tzU0!-IEpB-=_OaC8i|Qk z!MdH!(;C4fFW^fc1$$lOR8iK7Cz$}QToXPmV#t3`^SmV45yxQ2=l}UjZYTQ1ok$sR z-d{EeRH;fPA929(+{{LoQYx{?_E{LVOlSgKCR8G*ub!4|dM=U|Uc!k%o0M!KQ3pQj zM|kVJaHv4V=bh#ZJ#Opz!YM?Lf49$&_PJ1s0Z&j;lg{_cb$~^*VJ7inPUH$4l}^Hz z33=$eK&q~hEYYVo#6v_caGz1eu$WnOqb}>Z77EBZSsE&7pjizUp{&(~2-8R+D0fvP zGT3-GT|(#*zVqs1{)2nKH6R7<+i9l2w;Hh67d=#$14$JjahFR0;nO=rGw=Y z%{WwB*p=4|$GfnB9gM~2BdTcUQ{VM7q9=bHbbQzq5GL6W6ox{ZDL80iS^EpROsGa< zIsNIK@zEk<-d57E_4}eh0xIuyb1;7Mg}XoV2BM4Jk0?(Q{nLlC0NkK$3owZZG_Fm8 zg*ldqT)~C$Yu)0;$*vRG;N{*qZaaJm&?5^q!!jzV%Y-$9t_wG=Q)aF%q|4+5v1nD) z{-p2!Bf8}rgiT5{K5SD;8MaJV2#c0zX;^|za;R3lEfcC?%7n$jKnI%WgXe$f2SkSt z=aTYki3{DA>#8jJtgc56rc79K*jzaClr|&gVbjp!+Ho#Y8Y zOQGo{vCOdopeT3aexcAb5>nT6=N6*Bkr-SAl49zl=~S+1lLpPwMLY18ol4MHc$X5X zl|Afl2=`zmhZ8#}ea1YJSp2P5e5aG>j%iOdZX04%I1b_3+L$zkf-w1Su0dSH%Nejg zSaM94w`5g~^{{4Gy&kp{c+DAX#x4u!4zv$>mqU{VzOX!n5I#Obli|y zgd?6j27gl{H4@6LiHzRXmLo~-Ay;I^jd$7MxLdL{h-jDBCAe^=J0YkA6rRA839Eoa zfTXJVv;r|rF-f4%L0xiZ={&+XZrKz7GmIru!5|qUs)lcElYB59OIGgRyis@ob`l zPNwaIyF?B2jgho5>g(8)y@2|>%SLl^Xqf5}Y!VHZAU#{Radw`2my;=OfUJ^ftI%t9 zO}>HXH^-b+l!|67nttT_zMEvd@&M8Qjed0z=KT)n9QW z?J9!eZFi|hS;7mxoWHUL0V6LN3cq>OGma*D@-sYNG&$@JExCtr9mRys%&~E0W&nr7Rkbsl8VUaQl2QR3feOk%JDb6 z1YB+Ts&?9nu{@6$PMFT&!oOEO-i(G0uT7h&uuu%<_4U6(V(;09_!W_U_roOyl{jldh8lt6L+Q98ghgDUNzc z8DE@7WN6wJNsCc71a{S<+%@;rg2{qGg@r^FG)fd4IX$HsP4!nM)Ft>##kR0c8t2Ac zi&6GiuK}6=qZ2m0=5a*7m~!N3R-Oc)P`kK>0Ea+$zor77!?*&t)l}Sxkd%{I40~vu zMSu#!u$6MICUk{r>Y>Yo)dVEaVqMl#d>~36TCpz~y65>se=A@0gEky}I*R4)6Zn_0 z3NtA;f9~|nCV_>pDE%xA6_PfUC#kP3(d$q$lM1V`WkLdXXR09b`QCK$SiY!3OwqD%D;6o+j3iVS#1RwMPRfZI)si@ic?=d+j!9C9N-xf06edKJ9g%`sh}+^Yr~K zt{VhFH_=8tgM!ABq=jK|3|k@=s{sjQ{I(T|%R{-0+?vG!g)S2ke7a*R%Y4eTkLolb zHZXNQakB1Bi%Uo4_e@JzW&NzzaiWNL%dRn^BYRXi!F7&9SOfgajz9h+(JLM<(}QrM zyn~_Xi#45b;CWb9Ns&%tg`1t%suOs^D z@095R9WBNS*fL>}c+|G$K;NfsAnMa)I^oG%%mm{0vfIg{S=xbuEfdxo25);q7tu5S zZ8oAxkxK{!;!m@`^Kl`)=+A@%Qr5L#Cs(h?DvYf>-_6JDnZR_OUw{P#>9Xsx3 z;JeV(IQr-^r4j1u_5A0TDa%7%|M(8=K>}N4ZW}fX4LO~=ujW?a=%dS&#pC(%HmcP{ zUtgKBZt<}Em*DJtE5m&qx(bb3V_{r)VVSaW97J~haFx!TokQo1HQP94VXT(U%f9Ad z0OfR^(eT@P_tv}j?%lk(QO&BUjnJr+l_JsoL56+uU&8!+qVxIra@rxR7)^9OG;~Pk zYl2FhJKqAGm+9*bc`tKtgpZnz*p9pW8hA#xZ0cL@-mzoDKC2q#T_53t58+5y?K{Fm z=a1fXku^lM&Qm)tlMi7P@XMp~gQQ2Ak(+soUlDugh&@N}hIi$p3@fSQO7b4$P+cQb zbs0HUVI0P_uogCWIP?&fjgGq~%Ot@hrY_cp4q;Uh$(@R}L71xh8uR>r$w-;N#ggg=~xB-Dh*g&lXk)U1pmiquAPTWob-@D-x3=)63V zsvS?GyhP7@W?ue!o(vd=`TT0{zI|KoPU=2CU*=jKoZQvO>%3~J0G+cSUg!H2bLCg9 zFAiI`mMM*p*LhO+U;LuPv<86AX+F_;z0#eX!_fDy&e_htMD*{vOken-8|-{>NOZno z19a}{-qKQHS_3Rb=i*xSv(BmEddossx}E2BzIrHo8wb##^S%7Ln~#mFjYXe}>oP-o z_wL2Dutw!9hF;A9G)kd@&NFI$UzD`CPh$0XGwkIWvqcfqU93Cy_54eL7rYWq=kxQ> zIW$~O->_k5@6Zr*zTekQmucsV2d)hEnbY4zbbF8_}ot;Z?zN+pkfu+PZ;S?_OhT^q&KDza8 zi!bhx^Kg!y@zea!-W@xJ_F9F!4nD8MU6~1gmOEcgvCLxmMR^>EX4DLy72S3NsQL2C zGSt)a<%6eM9yu=8ecLwF9rfO}tv>Hc!c8!bv715)(ZMS23J4ROgQuLh3TRL!UelVr zzGaQTHQu%j^@5k-P(x`}8BXU2%sUTPheYSUd~iA^XKOCBUy$k?sIc=xI$svtO7lZk zK6K@tx`*Ut8Jag(mqsX`cJ!5we#D-+Bj$t$*&n(x&x10P@~a=gFC*jedF#pq=DySR zL84C%AY72YqW2$taU#Rf7gHriJzTZ)s$!wKuLQAdMQ^1P!T?TKik)1$KRG#FimEH85rp63xLMsBmA@Rg)%|E78kkJhh|<+(36wTz+5mE9>(!Ga zuM3j?p65x*m*j%2N)|yUUOunD+ z?aThpb(Y?LR+;V;+dz~>dzKuW1=%#@w1D_Z0oBIT4O!!&v7l+C3X}Cl6iYRJl_D6L zt596*9x@L3QkV9$ug{C(;);u#4-LHjyF~YBA9dV;(slBCNEITwu}p6S1MU;~(5jX5 z`gaYw8dR3Qns6Vi4M%52%P9_C$EZ?gIc+WR*Z01d&--U;W%?q}pubkYViQLNJ2Gi# zm0-#Q_qtoE@q}pxeJj_-Moi1xoV*#VMqMu1YYywSS>AvG>xeo0+7%ytFVV!yT}kOE`l*DOC#aiz+U{5Yo*J`ex;UD+;92DU%0@igX) ztz1WFK}zX!sU_|u!|AV6^;8YXeuNwyVWT!Vh7i6!Lb`FEV`iR^!{s4LMe@REqMnMv ztB|upmAsBQuB+p>e*O2ZA$rlZ2>XInPlw4n6M>`+hhB!N3RWZ1_(D&J0Yz#mT{`lm ztO^zqB|Rr9GO{Kjs0Fg&h1ZTR<;gQIbc8Yze(bCAUi;%`y_D#`{q?{Fj+DG)SIoa6 zy%CJx=d&z+*0UgLqPsGcXpZ|8$(vCvj-2^3kU_A_BQk+UVEkSX&tY3zLPawmZ&>`) ze2RBJ9Q`iQN75B!6}cmoJA_F?i3~cWGy}SNAqFv+B4_tBm=sY7TMjKyaqH7v=|xNg!3Hy?vrLe%_I9iN2Ej=F=Af~ghe}OM{v8Ou@ zSGPb6P0H8BIlj*(kmdqxc0z@{m~}w2E^kT}JpHNmBSg=@x*`qqalzKhlgg}-A+WA}^Gc zdTRu4eCW(wM9+M{B}f_Qa5J70uxUukHf@Ls=rRHI85bk$#uYH+WkKZISBts8xDw<} zObZQSu|bjwaMMOUsmPdN5}P_RDG~BfF*0XqeEtVFnlrn}f8D!-=*sk+^BL+@TNDp- z+PdR5Mp~O>{!}b&*)X#8LnfNj({(|C&Wv?NV7RL;p5}I-6#Aq|i+1p8bP-n(Y>Qg( z$tFkAxiEe2Gl!26J=wi;-uNUbLYEGYn3jOl#RYTl%*8xzWYPgQ^+2Fu@3}8Gt_m!K z)hOF0J<>`?cY4sN;%6~@&ZcsU7?LP=__(}2(I&Yuqjbv9pi0cINqI;(Pv`^BBt(*s zgD_}q9pR2EW}i#+mnJ7;5d)WC2sk}4&6)9|d@Sw~J1qatHH?m$I#Fy+_j8gMNM zSsBH)6uNQy;#GZ1!t2%rtkiEdNy{e4zBGRpXj6I$Nl8x<1vVeSp|$MmjO-cXpT3c( z`{xpAri5`x2FExWy%M@iARJLk>*0s3mU`96v0Mb*nn!*M+mIgAD$R=3IxXqevBeV7 zNK}#}y3U}30ilM7ND+Nt3ug~1Z$3MSBDu9m``-FD}j)}V9QOq=;5X>4u_-}0|S zPx5!BY7jB$F;5^VQV34SB*&n2@^36DP8RTVfdrtR$B>6dtBEKkJJHT=2G=iy*~_^q zaFrXkNj$*$*D&fJlFIrVc)-Bt!jb#rmBmCej9MkjbWTM!geD{x7r>2_=$0wQkpEt` zcTHRmtCMtYhIo?q*Dwj!{%n%qu_7txtP%E$S@cp4$gxZ~&>vD{Y11pR?4*7}k@_dBosKSW=V`*!%CPNVo_tYY^AOLfppTrw=K#+nF#l_s@UpdOjOP15v=NQ|=<7Q|J^a z?Y=$dMZ@)!ITx%(de@7|Qw6D>m9OsVfPMF2*oUr;=~3Lk={kM_MY2j>cLhh)pZNP0 zw3T*LG?~(U)QaSFpyKzP3_`|Qy+kQK{ky;adZNE~-w9E;P|?-OT((yT1vvS`q!67Q zX)$IiwM{XolV({=-UX2KH&>-3YFyD`^NHj+81^jV2q>pBU1#w=M~ka+)~N~JJWFp3 zHCH_;dHAI5FChBRq(n5~z9zt6qjK&e%bhRBC+FoUqf{3cGX>geB0$+uTRMp@)!LF@ z#dYYR?Bgk+>Op#lJgATXv71I*2}T^~l)D2ZNlud-xNhT-v_sTw@Zp=0B!yBF;52>Y z6|H~Ah1`ai8rJ40>VsOw*o)LUor+*3t|Z({I+he75N(?rA!&M>+q$6BcF8otbcu7B zKz1p@mxJ9j!Ct1ZDc&%KL@PVY1tt>l!nBJ>eLS@e-m(&bt+yW_3)ylgZBy$BL=XJ- zTi(Wb-XM{rxU`7$x>hc)hx6QO*kY%#kx)_OtOG>#mj!K^upGE?4dONIY+iC(BF3;p z5mD8D*j+o@2>rF9%&fdVY!XkQOcK(vHR6t3IE9t}c;xnfBHHnxj1B_`tqbdnEU+@K z#wf8eG}O zAI%DJN@+MLdx5-8?l2(w?%8|(lIZ1MPm%=ktrp>EWY9u4d5VqX8ozWC9L!TQ22)?3 z)qu?#L?W(o21n@*n#C`P)*nwCxf8yMLuiS> zt461$QfI_A7v8V;R#w7RNC?!qXsTCHf{dPY3+u)*+ldXDvdZ|ZY%tYyA-6$c4SXjj z8SWE(-@Wo#MBlg+Br6Ff;}HqUHTn`Zx25pwH7 z@&2zm_*>}mk?wVoIFJ9{>UQVPe-@>1<{YUWoTfVQBKEfxmn zf^zm(dB2P`i4(Edn0y)|jACn4rcjSq{uP34xwZAY&}}pj;WDK(63KVw(<*Bz3upd1 zo=R2)GKF+K^z(6|Zy%M?`~8uCSxbO;oWrrnVRa1$?1mt zMG;qyFD9+*oH4kD8V;WQr_W%&^4qTk5e?=fn`Y5sKC9q1iXZe#K`7=JStoUfXxdb% z`2pF&@PNo2n>pKQS0}{0FvbnnuAC{)wR{*HB6S$yG@o2smb+Juij`a|Y*?1CoT53y zw0m&DFo%sM+R0x`W|5{j96R$SETVH>r43iqlA2-q@$P;o6?b7hGuF=THIy(T=OonY zT5SYJ)1j6Y1|3`oi@L&}{oOp#eeZI)wLc)Ppwz%QWr%vuL(O8W+2h2FTq!f)5BnuH zC5@Y;6=1TUP7|$g&Puqx(UuPQ4lCQjGdvm_!~;COmQcmfWGF^$AqK!R36DX<<`Zna zExUv~`jRpq=St}$^H%!BHALV4o{-TohNT$z7FkhC(3ggEMudzeAN59EBxTTfos{an zY|Lg7`65jc7r+#xPRVdpNYS7x9m_2-IoLu>bXqSkY!7fLCQES8(kueu@ar=4_DgG* zv#WWMPxJD}RY!2h=y~JG0~{6BTku0kDXTV=j>yH$Fmyw-HhwKY=266Gm5IThH+2j|DlgO64c;*l~ z8;aavlpD)B4e?Z!wK#S}3`NCLV8o5J@iR{!su8{E8A<*&f~1h2XcC8$Ggs4QiJqMt z3r@$Fh#7g*4>37F!lXZL(ncAKl;biFyGbMR0(J5)8PGvLd7nE?(xbC9I7JMu{RKL# z7crOK=TorlOIaXS;1oVBeLAHkK$;;xr4%HyQZ&@C4<%)~3%~u?yzi6WVZLvlB=n?F zH8zl6;Et9wH%*6@5+9U@EG!O|sVOu;I!&Q&%(EPXo9v~QHf_92oQo|cCeYXnNU-4b zuD7A36X_bsYcl1r?OCo-8)qCp+4A&eQ!dFtPon`Q$*9fIbWJWP zU(MxVFdPXm4U>}6;tVzenrpp@b)s=El&3>0iT!BBMwsOFnUW;KTs$n85zp*)#)q-j zS_iH<{iNI@#G9t@s68(AhsF8|UV8WEzD@LRBNDNl?!r%4c+LWT4-?#wCPFR;_8+)= zkg_@^*5hoc0zrCbLjqHbt_0|bTs@@`VVm%VP3X%y4ZFdO=j{C~rS1<5>A_8GMP6e` zLwF!6boR*spNe?0>F3SxNHEf7{ON^Z&Y(Zb%}vp*G(rm3XiTo62E0T+J^Iaix!9dT za+}x$2K~m!|Kz1O3Tjn6xi5)Gv2tg4T~%|I{9D$H+eulbzMLfj3NwDB4r8tpo3wHB z-BX8y#0(|gYR=}NcHD$h7`6iH>w&(KI`J51L-b?UMg~8pB3w@}8utQd%N|}Em>M68 zY|^%ITB`_6I}*d?AS3k;=f;3gX=$OcC)~b==&?T*nwMWon2*$^&vApWtQOT=PSGqX zX&jsA6It@e^v*T(q9Y@VVUqL^Jvi+t%LR|kPj!QdEhhmAH@_Vxp``9v^K;Ipk~&qj z6V5VWH))D6Kb31|PesC0(}Wb#fpnRgKol_NE*C3AG1>6A;uRnHA<>J^lt_Tvtwj)< zGI+>{idSmc>(gif+12Q}>(V0dQ{%~a(p@W4sadQ7tc9IeKA(48GeKy~BxZz@tQWZ% zJXfbgwIE{#tZ8FP^RU>!l-*-f2_V1Y9NJkI#e$38*y z`p-#(Y4%w!ot2$N z=|RGX8LowKPRXoQM3P%~`~*+aE}70*cekRIJW`Ha8giutU@FSbv z2y>jh6f@Ia)ynE@SMri13Tk4|@y0HCPWzsFi9UZh$nEhBbc2HY3ae}=^G0)>$fskp zDK~(kZZ1E6GL&nCoS}IJMeVrt3sVERbr735LJeJACWBP;l>oI;IH<-;U zT_g`La5~YZ&QV}65znmCA1v5efJ%X@Ks+_FJQkvgS^uiDh%=-ffBTPOWwFYj2D>2L928pTCX8hTGDz- zu00Y+x&UIQF~w7=6<)v)3%6t@A{^M*e(TChR;@R3Wd}y(P(mi$jO%5UTR(U(4A|So zIQ<+En#(C$7c|x~U2biYI1B2vcv=@;?6P~yT5{5A*K$(*-+<4;Kh)#G#j_y(-*MeEYddG%%n9;JZg2MGe zX6uc^mdMM8B}{}uJ&nnj8`)qvqCYF4kWNdFH_|IRQN|=>pB_MsRKJ%W@D@!{HzNbX z!xD{PiO%3Pv)VB^Qw-Z;+^qjTUn9~Q@@b0p+>kO6hlcxwW?Jzyk0Zg?I~}2VSgF#8j0lO`P43JaYx)seWK0`F zJX_sw2%}U|;ZwO`gARNkRMs54hk$HGn*4LWf8PZ}&-gE)`+>a&XUQmFhA=WKxi{Wm zq;wY#jn}U?a>R^;D0ElaOU7;poT`V8<-KmhYOZQ@zPeO6b7*%$ke*Cl;$cW`v(h|S zp1{rGn&5yz6SE#?ib=t@KMTKWj*999KIIkzZTK374f)i7Ft@%@u13PYmcR zxIAd0@r{E@x1qxM@*s}kN{Fqy6C0CUKi9AU7PvLiAv%OkDhXD<8TZfEwY6!|ZLV^% zwT>_7Gpq~kbp<#Z;t?-$jqK+MQ!dp|n)P*$IiCIbx7`=_Lb^oW0T~bA@RUf-uCaYz`Tap}q#j*_}3 z(zbflx<|P+PdL3q-a;Mx*}87!(65s+ z6O`40#@bWN)4^7)j-&pVMLbODfV+60v~XAoXE@YXNt&wUvQYhpvQ5Iy3e*Iejx~3cu-+iAIPbnfx>3O3%OBv zT0Lpu=-Q?^C7c;G-?^0NFnO#MO%$BUMjqab;?OID!-Bz}%bh53A+hBXT^k!+3);qb zx`U_tTCiflBdU8#>gXWm^p7)A9wZ@1h>;dUnH!{d-gq4HjB_F@=KO?rSr`wZ%B#8Fz~?>y`Rs9O8KE^h7V!cx+-ZHd!8$WNyf83bl^K?0FQe#fobe#NlJuz|^E$ zl^Tc2Yet5!kQ@ z>U!0q=~qcju`8Jf%~X7`9J5`is2vS&#>|Cgpbd9(^-^>LBt=8agzXBl(&%Z@iqXvV z9JA+RI^52!p^o9CV5*a=-VQf(F>iRN91Dz-t3!A7sL@}=xqVyzUx<_7D z|2fh7-w)zjkBWInnd4bc@3~lLo9M<%7kU!;mHA-U(`}A&(?i>1+=~+R1Rr#?6MYCO zH77ic(F-HhUW-^ab6ji8$LIK`hR3uSIkRVrmqF(EI5@NqiL>-<{F0f+2CC^#w^kKBh)_}cFvxrFi{S!kgmi3m$Kba zV9YLSYT9gJRmT&$wbR74sm@?5IGfCQJR9sk471A9+V%O7X&X`f+Aq}voOdkRJZpLS zZ3coXPD>w0gj+S{QuwG~%Xl=|wpEXHn#0EVn77c3teeFKuHVvVs868aViTGWw$6Pb z4&p~H`OgQ4cHSYS8IZ$1GfuO;kl&~Qm;~hKeq*5GX|aV74a0#9oMkW=Q{BiKwzJI;}-Ns@FY!vV4T}BXm1H|2WF9u(1iTVucjL zzaSo*4ba4&)NzeqZJIXrh{eS09dQ}HLqWZB$Q$(xbI%>*oMT)npGVvrvUeIs6Ph3% zK$)0?z}Jh{eeSLCZ0+VChyopN>>0*EElu^vp@SQF!WgKrxVIJ#zY33!Z^SGkg5#Zf z-QARW2M*k#=&)Z=D2)Lc-1FR4p-O4$qJ z(c!@8)VY|;aU||i;Wf4MIcG2X$7o6)!MXd z22Hm5NwVrk%viC7DfEsvvqYAerQ5Nduw;vAjVvAE1CVpEO#9e4^jS1xg|3mieMDgr zR6|%6kTC6mUU>o~7ac+l9Q;G&C7!B`$MYiI~ zxjB3j53VP--haFq9=s$rEc}xRSHLb)np>#7|MZIjF4fpQhbu1iA`{wKl7$>LtjlKK zZ0LT)rH+TSh|X2?n?^Na+bkXDDw$;SFWAF*4eYBUY{A(y@^t~+u>^0Ol21`EUGT+18 zKiEVtnT@bFjNNMbxO^2od2k&5&2udaHEw#%lk?HQgm$=J^-i$s zjcL;eR_hfXZ=*G=J<~rC56|7e2QzH>Ebb_uwHoT*)l2b>bHhA+=Dc@s-r2w!F>(dp zeR2G%v6CnI)dK+!h{Lq0cVa-t>~rl5NpsUiLuMolrY5E);@-G-3M*1PF=Cy=x_C-y zY^*gL&L&&CjAm(6g=)*+{`jrjInIUrCLYiyTb}gLYk1V1LS1fz{FddfvD53`ILY0T zkHzxGGd!GcBGsaKTEuBw?m2FHZgB(zVmBF-nq#^Ie|ZW`+>5&RTXP4?KPw(+MHp#! zmmUU90O5E_s7@jrJea~jg6Y$!!OGyk%+xUH8CK}<1BV z9dZ$oap6d3a6j)~Fs)EJk8o2coyS{oPth0?tS_UJnAStXw);LFSHouqQ8&>< z3r4|K%UpB8t#K{jA^wG*_{o=vK8tpvC=BkU`&s1!^th0{i{TRrcZ6VS${FM(Bb^uv zPMorr&~R zxzHo+kr|koIKSt*K{!O>nf4``_iyIX@r|6`4!TZUzV3McqAP;%?d1+Do{Mu=R4T$Ji+K#?;Y1#=b%G*~cYl zhhW&!u9@J*>Fe}1p6X0+3YQu2+|33v5iUqie);=PY9ktw{@u|}6MO{Z?6=*6kY8WI z=QbhBKgIH2+8dggFuaV<0D81$CBqjI%g^lbD z!E+uJ#i)A+mY@TktdGaCByb1^6Lc<=h4W}cUuxbgRE%YzA{yuI!}1H%CG_? z!!$x!IFCm3rRFViG@@r{oR_9?Io8n*m<%g`%7wCU9*yWr&0FMXM9WX6|q8;yj+R(|-q#5dZFB2jvihR3bT`=T8uUSB-!TmJCQTUhi{r&lI_K?XXx=sTV^ zMAS@%0`n5VGc$(5tVuB92}xXe0^m|cFclXZsJ!;4?`8#E^+srECFPX!meDNlN-*Je zGS`)WC!}aXI8b@*m$y7XbjypO^OclS&Rd5jc~=5efQ!qvE+x-f&ew?MP)tc;*1P9vXz$QoBE*Wgc+>MQC3@z?$YJuO1l32%$G`Z+s+7ed(a&=8J7n4~p>fKZ zV~Bm}*1Ksw(Rn$&t1BKP(skolT>0X*B3f_?e+YGemNPp?3lw4G8Q&2jk;a~(67&Ac zfQL{-(a!62ez2qLYaGhHcJXM&-8ik70!?q*Hc#`kV~0}v_9c=gTpZazT^JYF4dv>KZ?91~=Xjl8SL_d@3L{;S{^hEyU%e+?M zC1Qzlvt>ba&PNJi@f+$4+Kd?3dBbz|684A02S1$7$$6Q2ozp?@Th<{StvXM7N&W4xf?MLyzv@gcxbNvNBKqXB zi&R^T0#>%BKsy)^`RnTl4nPmQ!F_d0MXsEMAXjWkn>_j^Z|@*FX|_PDDBtA{l9ak~ z)*Zr<rVcj~vgEjtiG4Q+%^`?>FzE-an+|h70QxlKsI7T_)^j;GGR} zlXd;mgzr54te052-RWCn<4-gsd{D#HH9r;Tb}uub^oE`_0m%PWssT^&QfdB zsJ%fbmizSA5Fwg+ng@=lXpSnh^xh}^ zjP5jqPoUL%>2K`)Gd>S}`Tv!O+z||5pM;yhtg-Mbfh`jNwitO5C$;`1U}@Hd*HzRk zR^fCxiN5miOFu*OExG5v9=1$4c#wYbE(iY=bNo z&^*#d`pd|<{NXIP{$Tyy&r}3*13uR`7|Rh?9r69L!{i*#C*Dv@B|7oAJAX*@{nFwJdXl+10>xU;IhQHso(Y!h8^BWi!CWV3jzH`z*G~HO2?(K64hLBA z47|8lJNbj5yH4YoFI~AvDV*}?`vUTNp86`R7+SUvBr-N7YIh*FF$uZq@b#2>H0_(- zNmw{C_rBM9yzsU^!8y_QebhHbByW^L>1d$^QOTprgf)SNmNb;50}ksxQQJV`9kiE2 zHpvc2;O`4^Li$$W9cGhRSju-HX*z6lR=VH$ki(e76v}};;|!^Qci;8I|Ht0D0BCYl z_2Q>{dX}EehV9u*k`18LOon6<`NM?eDbdtSCUJSm1hQAi|dy0mI58s6_n3l_797LcoBC_~)X$R8)irBFe-4pL6Qb)z#hK_sz^Vn@#rn z?N0TnQ>Usz0f4{y9@EntD5KA#PUwmoEM#-;2mLPWI z>ZNMi?|6?0T-6#mlmJ9wM-qV~m1ir=;#XjB^D7#6R3FRGkacr#4Ivbp8)3oP9DTy? zz4na{qjk$`na+crlnmHav} z;%QVA@I{K|SK7$dOF~o6qzqc^{cr-z%e44VX?hIp1A(f^QasZvqWSS5KEQ(|K}&e& z74LmF!2dc;B4P7YrJ&T50K9{sEUy$mPX%yIse@IDd0W7WgswzBnySsyQcEC9N2XC4 zEtkO@rCvZ|Tg`&zva!Y61APmBP6kucL>XmK`n@pQ6!n!Ei zVQ@7Yy#s2KYWZlKBUrD*t9Ry4EZhw6$uFANyp<6k2lnTPl39u_%WqV!ktt|T=^r$P zvC2q8N9^U-;8|2&*JFIX6fA);Lx7%&*XXq_MNd&me(r6beGI_ce}?0Qv8^^_1PtiF ze5L*y1Gcqf<1o4gm)SFXa%9B{J1kk>JYfT;Nx`o!mLD}J4lHsWnYxTuV3#71)A1QX zV6Va0-3`lHT!Xv3>h9OjW&Rc7;L=@LQot!BrdCZ(S4m<0hUXiWA}ULG z&I<2+S(%zkw=^pSKu+GA!&cyF(KHyQAk0Pkr{!BB{g6Cv@ z7Mfp0S+DEYN8bNtfUo}s(`aXJL{ zwJ0eaM3v_nm_oTc47j%ViV3VFCss{IQi;60n4q6DG(wZZPyD;YjNi^dHbZltd+0y0 zYmw4EZI05&G|-h;2f-xL^)m>Oc2^EuOuP|mHGl% zFQ@IX;ODTaMZfs|zj_?NOJ*xfkH#MaWY+%iAdq-d27v~Xs727_RW7+dh*dJ+IUStS zbQ)Tn(p1dYJl^on%MS-Q`+WhcS#fOwUG>@adA!N`^)~64u{BgxFFi)v<1WYOfQAv% zfYyey3btO1dy4rB0L#;V_$h!txZN;CXY?{9Sh~T8cR%RTTI)F?bjI)d&a!pp@<*QL z*J%}zu|y8p6P+|mYAy1d*S5(FK+RX|S{@uHA>&|DzFfb{vlDZguN1j6=>(auU?NXz zIooi_pyy1#)w%gd_g(IxV5ZnkSkj)GmRm&^}eeMvC1$+UgL;iJ1nvIRPEPW1tbP zp9N;#X`OxG^UGhN`TWp#nfB{!Q*dMT7OK=^t57kc-w5r&*NhtY)z=#ZmZU1l3hcSM zD_(!n^v?o3?v|L}2yKt%Mbte&#f)u3IL359$EY}DGdd2}MugVr!7@*I$Q9G%=bw!E z&CoF;MEhVm#-P0=JXPt(JwLjedS+t6Gs;)F)_a`erXLeCOgD^8WZ670qP3xV@Wd)G zX0$^rX7^&nMooC*-~7fG0KV{=m|ugjf0q+wXJE{@w?oGakaOjyR(JhhfTv$4aovku zdNsO^8QTpVGvc{5GwWF~o(tEQ?bQ~`o60_S^|B`He&8MpDT$2tOWg9Lx3Q8fB zM@)M{%i4<3A!%c%78Jx-S*+1+1zzSVd)!psy;x+j2N}{JG3Tj4ks4;^`OytriUx{=5#3GEHi%6_=e^GR|Zg~9ox1|2gzGJEUAARwEehru|`k%YKfjSjiJVWT-Z)HTE( zqc6L@S;Jni@w4j2b2LM9Ap4Z;=Mt+qfJ7ybT4hc#6H6PkJ&H_av>Li8uQnl?qeWft zY5T9b5#SE9RxBqjQHe(?a?CJ=4pH7&)IMm0Hi5PqxJL=<#yCQF@qG@^+%j&ygWZGY zrN)Ar(l^YM2J}{-q2(fbGN9e#AgL~Sy&%<4_q5)iIVe&&5GF0b47l;k3un3KplPz_b zPNgzWOw98hwc=m)(&u~?;2W3OXr-LGz5M#TR!%R_oJ+^tKBL7FozW#zIX1co_J+9= zXV^XDdlqsEt&Iea($2bMc0*s3>Qy}i^?nxEK};wjK!rKEMGR- z+3(Q@A?g!;|6o2JYbxbG)A?*aK5`<}j^)i~ejKs=$IV@V)u`s6aXu3EcZ;{b3}EUn zD}1cPoNX{l3P)Zv*x~pe4=}IZ5(atMNl!LGkPqwSKN_L zejQ->l91=D!u_Jd`j#A_0_IT+tVWfDL4&X)nO#mtan43y%&4QevtIeSGxh=HL&1A|$-h(T^m~l@;U~9#(wDKD)VS)KY zzmW(KbyM7HDvDR(rBxi8``9~o(4}c*ZmE>5!U#b}aSNMgt=><{6~TwNT_N2U#CGX` z%J{T4Z-lbPMgbKw7#)W`>^yY!62MIuu&{2L9)K~U4qK{<*nLK$WvZx|q*ESckBu@a zW-wIDh%kBZ(7ORn`v%iBOGmoZYgI9$9f}ub%Eb^`N6ft+FWCQX^7F5MEao>sagasK zo)O&4KE`n%8Jh<zVgqarSB;Ln5#Yw!yDm#$%;*m^cjvL$hxrO$b*`+$ z{A~xujAI91m_Pni0I#_-<~!8p;MQ4afL@VKjGqPYu!)%O(ft#}TR?p!bS&WD*JhUi z-o6m?o8dPl_D2Z=Yyin9Z^tIJZ*XrvwsZU(-I(B4>6Wi%Yln&%0}L?00PUdVIjzlC zFy_a=m@&Ynaq3w^LjWh774uu6V#X%Xr#o}*E5-LDfPAp^uAcSZy*uV?4qx~}%-I~O zJ#g>DzI`!gb2xlB<_yq=e%XBVZnz@2r=njr?-$~^=IBAYZeX98Ji7I7N3{nA7+`<_ z`h{?g31^(n^v2{lY~pW{&e6~3%`(_Rx5*!AdVm227+?U#Y3aco6h1fRdo1h-B0J&- zUN(<@l{3HqJzx~_Qz&fRScCN*oD*TtWBKjzSTQ%O30Q}52|KEiEr=K2k zdPTo>;g7u)`sVi-H=pxfg89up5O@0NF{f7?^ETf!HgCDj=Zq20HTMMEoAe)GfB^>R zAHrE?duS7{^EXScz{(8(Hz0G{WUz&QbkG9~Fu(u zjwS3|yLl(T)rVsKwgN%LtYZl)E4*ge+$%H(F1tCLcj0^jFnmGG?-855wrPE~<5<8c z`1)%BMsA4tA=Q|sza;_ zj2R6GC#n`G*qD_BZ@uKBZwL74KZ*HuV9aPnsX?yJ?B4KeJ?nQl$>5*S|zttp>_d zEazg~x@3ExVn&4Sx~M4Ln#1_Yn^%r7W^6l_a0Uqc@+o9!DPrT5t!J%U8rRA3SE*npO72|xcs#xCq_`dcMw(bdVzd1 zH7KXQCJ#_O=ajL6zbD7QmWcxGv7%X8nFN)mx~Y$0q(S(MN5d$7`jHqqsJni$Osplmt6obJS-8DO{BD!Xojvv`Mc_kXwalZ zvL6U*E5cZV8oeMim=5TzVP=NEACjCXk%m6$4cZagXwMd?YSfIqv^Hj0F_dtRM9}pE z20}f;nn{~xJEJLxnjhQ3YxJH=uX!TCbFPwzDvgJZfSUROByLup9IO7GR7~PhY;jGc zZWh>LI;;@_B_UsCBdk`FLLdi<384(jll3Z@!GF9}DaWdakGvPod_BO!9vvpx#IXD{ zsJBFH@iw5TP>jxmIXdbHLPybKQncKdPZQFy`1Ou(XV6y@ZaX?U7Nlmc#R3{OSh*JR#_M z2HG1II%ILdxfwRD3gwfvIf&mNC-gRTl%2K(l*7$a9Y>(HM>e`upl*LOa%f^)o)|y_ zf8(|;&d@O<00#7LzTnxf19x(>6-ufO zG60u8#|Pq5p;ns+mml}o`vctm;E-3o>5O&IOi1Nc|3pR&OGr|^OeJBJ&*f;N`StXY@frx?an>15HYm0} z2>Xc2^`}MHBy$PjWNb=N8`(_=3zpfSH|Q`z)m%6BxeEc_^tq5-gEoiWYY9z*UPC=COl~4A@RkF~dT|3`TYdpA?>ZFy`0LFYThCcCQD< z41i}J_q8ViJoH;JzY5L421i^Y`qy*qD2_}u6(4qIZ*5~GT>>3(+IL?#4)FVOc^^T= zjH4bpX7nHN0;4nB$*bzF7sA{yzy&t3euC5eXh~3Iy@u^V+puK5w_IlvmPLr#orPN< znYbWVn1-uPykVV|6Cd?5RY+aA5!YeDJqvaFYiQzjg^n2;h6XrrAi03NeJ)OdEYzso zJKIw%bj%3QHSaQip=$}wA^zZ>%pU<0nbAoaNwG~;Sy98stB&G08jnTeg z6W(0|o7~YlZjO%PHJo?i%z30osfhML8#D(tLvKdkPH3|iQm_%Y`Pm%XL)%1M(qQb= zrm>jL1ROQn6qzurQH8I?!I_9n?cox%2=gvYgh$Rl=s^IFnwE&3vwJF3?7UTWn2SiQ zbdeNEc&A;LVKL18z`HTER&k;1>tnzsaJlShskTY9DQI)(xS?a8meS=$mRPTt5jNP_ z)J6n`F6B+U5!xPu<`}nZ&}jI=gyxo+0|85$L(w2zLoYI=_skQ;hA+{Nfxcmce%sNI zeTCF2!EiQ8=g~I}0s)aLrs+ zv^gb2U847a>Gs|Qy5s{q?SlQg0G@Ow(|N5^xFw+-!xkR3P%#54ZC)+O67qDPLz-$w zR*as8wwMeOHU{;!b8(DVT~XHIt2p)Cp{D`dbhS_M)>Z+l4i?HgG_n;+#hk4{$Bb6kcEz(pa1SYD zcSIIW8ymJkcHsq-rwHFA(o@ye|JZHT$qze2~o)KgtsK{+|p=VoBH#c1Y*p1LvV z^^DMj^*f$%BdwfokNG{-EYLBd6L2HRFcA zP_&0qm1u34bjrKkz?flyp6b^qz%Vj#HMe@_Qpg)%fB^;=V1NMz7+`<_1{h#~0R|Z0 zScdybvH7c_naeOKW&S#RNAw=(V|Q{{K3+so`s^OKwIvClS{e$t!OvyC2LfB^;= zV1NMz7+`>V4^)~?m>*)?L!knynGVq=vvK+EXq8vyY2OJGDcLP_h}JS&uu=J*P(Df> zejBIdW2vn&8<+2nc6l_>m1;^`T_M`bY{o|AdqWaX&2)%1nT^YLN4vcJwfkr_rLC?I z?PWG&qw*WUD(spTB2&t6@_a5U(?cj_QtYP;g1lbDV$~6um8j)yM?G(ega3Z(TLG3; z$=Qnj?dYV#Rv=SjF(W_iRy1rgF;_P;`yDi1Y=yo@>JpDuts36%W=znkm^jgI}-4y*7eQ zHt}g6xbE6lB7FQRDQMj!K8U}svqrUz6+0m*M)?zY7Mg?kT=O?EFgwe!o8JLY0e3o^ z2C4EyQ}g=kxit@N++P{PO|M z{c}-AtU-M;%9hBNsD?ztCDaOSYVyc&m?~FHWl64;3KMJKDVI(dkIQA4WJSR$MgF!~ z6lMqmdt}P}zlT?1>0CVU__H7UyUIQL-D^#$Kh~A_!yfYvi4iJIvQdzyT#SMRR{rAG z?SVoqaC`YAKoTdoVjIDqQP(nukv|RX;quu2Xi^J!=ne1w9KhcmE^`3vWd*5clw6)> z$!Pgri@+&Uo$IyIhdaQ3%AKM1C~jC;P;8xzVGkmVXW1;=qKf+}U7X4@DSs$LK7|r$ zw*VO~1EL-`C)7R02=+CYOKee9yv3PDb6#onCESJ7SjhH#`A)c)-KRsFIZ0>SIVrD4 z6u-=)KpAh7PGJ5vbw0oipG0A3`jgooQcN|d1(toH0#XyJ3lzOGg`F97IJ2izm{f-} zO92~uDnmLGEKz*iq;=50XN(}6P9@1(PbZ0WcooGr5->uRLvJ9UIcwl7wyK638YWVzdU%eFIobNEL%`iol0)D+H zufG~DL!FPN>!KC1i*$qH;z|14WJq+d?b$kJd7$hcQBW+YVOa&3^_TH=k3vz97ie_X zGzzBqTYs3a9g1mgW96i4-%vZN_9QeJ^e5izuzb$5 z9s=-BKPFTejmM%y$~)umwR?fi|q|c`{#<)pQbfmA`8n7SSiGjM3rG_JoVFU zUG(k|+;y}_k=bHY!ANS}eyg>TcP6elIRyEnlS=qC54?6ywOoR8eg&Dl;$2pp7HO`K z6J>5DiP>42#!_-!7F_jWEl?n)nxX>N=@iPeTn11I0=)mSZ+#u$Mc+5FJW=4nIGrO` za;;NXAwj)r{TPi5f!6N}z}2T&vEL*z*QZB7v37=3_%3N7TSukZCiVks)7&JT7G#cB z(Q?~N1A#v-axzkoEt7jI-b^L1O3F&0bOm>pWf;{ch8HXr>j*<6JH)dDxlL{ChmfAz z!DdF4+R>BFmRWwXc=mqklgAiYG)$yiBk7(s?%_2z36$?F7AY+hho>gS-W~POTnvJd zTxL#3@t%SEvS!ya7EFRkwH9G-1I+A>U6jSOnS^YoQYmOK1FkLZVie ziyU)ghZ%>mqZ*-2i98Rbuu#xBH0AC`mp=E**M5ekt(QpTX&@_>y$EV-Lfs~Br%rg1 zue{n+DlFE^cyHFr^HgEV%FwLJS*$N^5n1tJzO0tdydhn+jFRCO6JDEYp2?gT8B3di zcrmSVl0{yN>$mbN#1c+i|UReko61dXeRav&u&h>d^e(7sVc6 zm;Po9eEln5`8R;)UE~>Oaoq6fAxs7BmzK&d~{)1G0(E zFIC`A4x)G2$jyQju^-%!v8Z`o&e!wk9k{_fqskUj_CKp0fNf!&?8NIrtGP%@BE?sSi*{L5gHb`Mht+YRK}$ctL)%Sx!rYLNq%9 z$i1_MoW*FpLIU}UNf99H&(kn-$(ZXP>m4U9vX*6`j6WgEYmjPlv4V0Eg6xW)xsG@| z3K(w3F_-$+Qr;Qon+>8WaICsjp6y^!trBZ*(F3gGcp&SH%q;TYT*7QeZw*v9Ehx0w zQ_RskgF~#PUBFs{u!d|*y1GZrY7&1(VT_SMwq&H(NK;HqseCOjNH|+4^Up!XSB6}$ zQs#bUZtW?7yTvJHxR$Sn3g%?UEH0WmK&zc!_}$}<1NgZQiYU72htyKk4C)O`VK$%I zVM^tm;G-LN+y)AA>3c~i``iKTF|qe5lsI`!Y_s5kG^-=MmlczIz#Unl<~dOXqE?lR zcc`gxdoQL16se+U4Je;N59bAt?Gk0^Y|M~pVYXiB(uAx-Wgw?YP=UWS z_w4UKmoD#@tqjOQC6|*n1HdVsmWeX{z7#i*a*t z5aM6@nJ--r@W9VoIpMOZqKGzuk|b5?B7CJ6W}P;Q#f2M#8m9P5;Y8dHO-`{z6s1-& z`sCtLCPYCln>^AiEsUXTWv5&h5>^p*f{alPOk4Q6Q_jPRW90sN!geM>^ArYr0i9Szs7purJC!crMeP!HR^ufPKgxC*}!_C@Ey8Y zOr(nbu}dkViQ-+fs3;ZAx$Zf)0GzeV^hB=qD99IN+guYv@f4)FjI?%%p+tT{P4IY>m02rZ zm~luxH;dGe6sxIQ29l{%ZszH0$Mcc(Twk|;$=sAeBT~Q&1tV zUtt`VjhPhVKX}xc06+CiD~?4<+QA6lBECeW3FdPvdp~WKzzXDaVm{a7JV z?3AZFXBCBWFhQ0ivqJV^kh_g@Afs0Es((ScAolL{nrsIxlHH{SEQ%C&<$n zeAdiIXlf`D1eIk)l4X>q$VVWX2iA04PJI(ZO)R9@m{@JEco**vu(QZr4Tib@q~x&x z5<63vDv<;3LTaMfw`Gprxy&{rZ<|AqIfG{VnU5d(D}VW>AuWA14h0)aFRFB! znvhQCndqylLKPqt^6*y@F}*7~v277Z%W6f|NSEov33@-~eA%%Aw`H=<@oQNcErq}t%UW)9% zT852uJO`x*Fy>}iYo5y3wPn`V6@e|G7=k1z$VsGNB8x=HwHhxV6K*>gr-nV#Z{hkA z-WMI(PXpK_QlpH*8pJg+c4ym5H2vs&lumnE_6UV5hlC{2MC2wca&It-GswM{z*dP| z0=i2wM3loDPCs-$z?*)OBV<%%p2OfPE}bm$VkMW;I%S%*6+*U17aGMVtlE2q!V9-y zbV*WnkX^?_OJ|s`Dq&_z*&?%Sk0kyT|P{MB-Q)~BB@ev?-X*O zhO|~^^OMXgzWk=E>D+ORseyF3p9Yvu<)MsGs}Yr($kiB+UJ25a_s!VN<;#ns;!*NA zoaPLscgh|y;MHm(-De&Kc73>Yup$+xC~mJ|u)=Hy#taWtBPvjy5|wIt8CiKHv zv`HIPVOk4%osTi1cs~Ps&)y@*6ZyUgJExvc%v4e7&xCzVJFXU2ukMd7{34d%NL57N0@Vh z=46e0&@|gE&U1mexeX&1#3QUf%Z<^Lo?T%3NQ#nSB=uw9;3<#Rg0K2CdeQn2*b>-` zOLQDg#-$m&^@&Uvy);=)7kqZi5^B(iaDlNq+Y^d>*YJ!sPlHO10~y@sl$1;5fRJYP zLfqQ60d{=z&A&M!o`{CM$}2fWLd(sfe0EMh<(aReB2WH-i=QV4KD~_QvYB2WzmR@q z@jl#dk}tOkMlhFikv(JM+Vd7zg9IM7dGLt>Dz44Y`+W+-jjpWad7y-o{7RsZMJ>0p zJ}R|@rf5-~CFLGor9xrM2l3Ks@405=Zvk%nRf#B@q*=$@uEPc9;xy7ONe{;FI`;o0#yr%9PqM3vWbz*j=I6|P!2Y83*YNT7bM1K zBt2h6InXK?mQ6uYV%YLc!+Qm(%e0GAEvPJ?T9I&Q`CjWnW)6Z%Xm-);W^%#r*I?H0 z%0?N}yho>Up0e_VSuSdfTe4G|WX-Lzv@w~PwHc-~s`Q5C?|&BHLqG0Qv@wRQPIF*r z*MF`Q{>HnO^uUHTZjo^=b1$BdWa%6q?R45dn@e#zXskgJF_dL`@aa(p@ffP&8|1;f zk~A!Do{UYatpvHJSOmpSc}lP;ggKjqlwEuJ*hA>r|BEgun~{Sy#aX&K5%}@KV8Ke$ zlnLY@C}4r*7sA%|9Y_^cwd^u^aWaDMgH~zh^SZ*_4A4{0xa^8&(X9U3GOYy0j1bsC z(cZAd>=xQ|ubl76J4V?$reyCKsfZYNWHE{K2EL+Eurp;k@HB>!{%Y`~pzMZJ!nfYJ z@F;-O|4t(IydyOXBj?SnBDe>{;H(MEYNbsdhFg)7oY92r>&>NKR9eEE<5PD<@!_`%$ zz__S+xFNh3+=QAtgFCy&Q`y*)ANk7wm%qzKGueazIj4hcP20N4Tz1N-JZE7%tv6#f zw|gt#y&nVd5(m#^$itrH5Owf-+Z|xmlQks0ofG2bl3hRjz^78Z-$+wY`hm@qOvW5B^G2pqw|AQurxAGnTWs<~0dk=Hv$HY2D0+!u+8}E=ZD_8>lHP*u z7hS-*{mU1oev(!%@>@k&>5IbTIf;T*@#Gb_0We*c{#v1b=zHz~j-VX3)4>dp6~~RB z-B`g2yAMz@%U8WEdtgHp`2DmfFi3?M2Wv@n}uW1C6;cOv#rWRRjBD z&P+T&iy&W*YLU-4wBE#r41VmiKRp%Tgh}S`mM@f}!DyIDr}3k#sa)C06YBhD_q3|s zSv`qEeU@`^?Hack-)@DD85LlaQouS${bfMVbYbJQ+NgRguYHeeZm;&G*zUZ1{w3#= zsUB!zC|L|$X+dTCA}q7)LF9vb$kn4P&|QvtY_vHokO~Vip>n**fUZKt3JO%ruu{YR z0Stx$ds=|HFB#Y!NZaTsBUSJq1os9JvfBUo#j#hDz$d^|V|KN2-hH&inhPWZr7QMybyd;G+%yn)C#QbG3V|GG<1dAY>N1sKEw)MMfF?_sU4RN)o6q^X zbN>b4p;v*}Df9tdq~&_o`)^Ve3NY2+Ep?Pu3A&|UXm-9fbdgr}C>pC;ck--c`tLm6 zcG7Mj>x}m{{XVQ5mCGW*@X1%4^&EglKG$%;?M!-fR;-h^w&v94&?)bRpd}Q&Q{$`t zVPxO0y3)gP)(KoEwr3roL|185jXHU4e*OjUqd)tsj{v;+y$;M@;+|+8!AXq?_EPK1g#Ar$T&nG_p5`fhSo2tbWyfD|sVu}My z>9mTeO1QgikD)nuAm2B|9QnzQ7K3^w23^`HxiR40z>RP&NC7ivsz&dqoKmnPbxB6h z5p8R|F_9;YxQ@l*Dq0z>3cU&=EU?H9kld&zxsp}-Kk~V!-H)z^)*mdHZ=YoUn9OnM zahOkul&j8p#g5yKIvl5B-6jD$+Htmpax$kI&s4$L$N z-7uJQo5gDjLtMHX6cEv^bJG7co`~3PnGLgmM)*Osm%xm zSuI6#5R?kMOqrMS9If5yztF%ZL7T3Pl-v*&=I}4P;P$Tqy!oG85dyiP7S~p(2{?bX zqod?H?8Ii;+f}+p$hJyF5e?!5HYoeK$%}nXIwE;yT_!eyhmIKmv^lWtO{|b7vCI#; z3izd$-v4a?AA7%%nyF|((i~P=B#(lLD)MXZ7@bVnvaa76%&ry!?@K&@uA>w7_>?Z~ zW;G{NjL4!YU==F0!I4a~GYFN~4 zvs~^SiwX3Py!p}}0Q}~E=ZO2|Q<7$ilmppXF%J*$525+y{<>@rXz86qhUPpboKv3E zZEy-+Mo23Y(gqFHsbe+?xqeQ}4u!T&V*{7SLHTGZNflob)V)H75#(0*7;lv+9}~#4 z4gt(V9Xz{eUVEb!5&f zUA|dvpm=eEEu(y^zZ6 ze**B~&$%>tI$+I4VD^hNVo4L0Jxn{r$s~Qtn&#Y}n*QSsX=m;e;KBM1334UAcw`OtpMSuRM z088Jram8w*jU?8ISlaStiP{lcoTXI6s*Q=DDHyQ(11VaCPa;lWN!yw`%?Xv6K-G-S z2qkj!I+6xVQS*?k!DXbTtqOM11*OZ8l_bG za>*-?-SuoJp7d3YD`q2e3sW;Q=R`~zz@*8iB@B_ld6^y?&62swQsI*YB)U`V_QS!C|!(;gnfO13?!K7fFuily}x~0dk@@vpyhvmoo z%UeNz>?xk1xc?l?hLz$Q%Z1#1OQfZ&X~6gIG;A98F#bXy7e zC33qs*a+k{j_bf6_muAbk~v`W$xohlG$^SG+NaE35bo{IUH%VW2KdA8 zFz&Hv!~L*H!)*m_WU*RKHEoX$-QS8_Z&U>;W^4$` z99B6P{>+P?1o|6)zw8o?{@O(uXbeeLNN6wLwF=W2=m=%0BRa!WAr5UeK0Kx+s=9l` zh6ZNun9#~seaGJ)7>4xUo*SlvGvPX!ZkpGdTB1dVi&5a@jNffkLIw1;L4*8;6a1^& z8Ojk;p2eF-=Ar0TAP2qrN|#YlLtwYNZkncR&^P>1$q}d^EK;?wANaC?AK}(s#=~@= zeSAz;l4dJ0l(5%U^$IhxR5UlPV^B}cKo~Q?v=%$}N&t)*U4SL|qc3{SO96i2f0Y~$ z{t1`nBiVY*Z0|1?i)Is?|0}% zt;IuBMaf{+M8_rO@r5K$%#$w7zAE=ik2KKxP-w6;YKsmd4cMk>JcM_~-+%e<{5OCn zof8_dQooVJrA71jBdvqk$7}vjI+>x+$3yh^{P0FlnKqO?Chn(vXk)3hI$tE$bZ3;K zbDPGgc(o~fZTRQD4r8ZR=W}fj+@91ZFE1D}Pn@&PwF%Oq>i@bD;|iO{M}Ht?BkRUJ zt14+8t(~qKsBOX%-Z=U~fP>e%c<2PTajzu%sS!63k!RUtJ_cj7WK8XILmmZR;3c9i z$wP}TZ6gr*=|5yLF~4y!w`-N88V_0VvwXYh6O1`+;Pui55I#J6@;|J-AK=&D79=-- zjW72>C(LeQlbb90mnSM_*U|sM8(9#I@nf3^^X>zB>U}$gPY3wnZyCod`3_Sc%k)Ch z^+%Z&%B6ecd-6Ra!0#Y2PnNcMQorHr5e;KI8?1RL4U&ToP0;p7=siG7h!tKZn9XHm zGTrn1R{-p~p(`}3{3+` zLUUy7+h>lUbTi64G2)as-U%#Ae*HriS4uq;;L|G9k;s&f7hRMjhYsz#WA|N$4jnvr z#~lX`-bFZgkmmn`ah(@kboSW?4<0yl;Lz^7N{znx&8n0^oOdfY=NxDKefu70f4N|w zy>sl|?Wj`vNF&of{Gp?ZqWE)wv!V&w46utX0w`_1Z{NX#y9v(bRfIM#x!-j6{I(6F z{+Cz#_TBfsVM>Y8=B4zJhZ%bo-)uf78k-+Dz&1Z{pzi0fY?I9^^=u3F?JKF!=HcC{ z(&nY~R?+Z6l`bf4F$@R(m@M1)vyQ6GH{<8qZ}WJr5qv*p91ZyPw;eSM!wTRfV)Iaf zahN#l-*?<`5rO@jarW6s!ha<==V4%*vn=PTqF!?U5Oskdv0qy{x=_B`l5Bpb`%Z2Q z{_r2$ao;|+Is3V>IRO8~vc~57_EkO?c(>r_wE1Cg7_#{nX_ek+b2d89DY2h7*&GhD z%~@8u>Tbo+Y4Z}j*t{1%cQ&W9)DgD1on*w$hJ4hc0=~>Xd_4T9k{&)>(xJ@g;jo;l z47Tu@cCnb>OrLU%z8Tk8sdH0#+g02#q!9B~*f&Bdbo%|g7Z1ev5c{!@8Keh?qP!P&&8sEisdLodvEjy#?RUEyLYpl$=+=D%h>)0 z-ZpgE5K(a+hh5)$#z_F@PRINUL~ zF~$FeK62S*=d{~=2;N9n`3o_BfX*;}UfP^y?}LHO&%TWQ;yex`-`;&Az@IF{{Cf_< zS?0*m2yl4c9sBM$a0nBXUvVR^4i6txBWi@!=Vu>2c=Fd2f7YonZ}vC;@_K+TGLy=2 zd~B`D(EMyp6aVg@?;{=A#E?JuXk6(E9vrpt+?g9D;0q z4ZsUyb{E_O{Cu0Y(s=Ls@>_>4|NP~*e*U}Jk9_w>D4;{;X!7?~4ffykABO>+C%*(O z_s^sK`4Fuo9b1U^w__SQ?P*^ydLh8@e9Ru8Gp?m2N4A=0kISxo9RCDT$piT2=a7zW z#g%_L3hMf6dz~9q4{{P1O zRwxOv!aD|`dEFvkAko^n>y7&DGh%%EAb zs0{YN63^~4AD%(rU%nLxqgPH`tEw4Fy!-I!zXIAx0@&FlOK7;9)L$9(~SZ#aIk(C>^BGUdCixQLv*Btd9t#Xum6kO zyy&4BSHI!=F9Eo?XE)#ed9q*V$%8fx^5|3G47SFl!0%q)k<%(>X6F*XXW^s6!yg_- z5tGS2#&Kuu|0jS`$7B8go#Eaw&r|}dJ8=iC9T)iy7UWqv0kWEG!OuMDc~1uTn=i)v zHdyc3w)4|wpkjug{!QQ}sF=|S!F1sqSSoqlm;$x*M2d{6)m-gT`Pi<#6Q+J;1^on( z!aHX_{|tbaJvP0?r8TR{)uE4}vP9$9iD87ytCy8m!X5jB%Jdn{rR`H|PpCIiONhws zzQTr~8W!fJ`K-!|7*MHVw^VM{_mIur^u|y82EePn*ECP7GT>^Jsa+TrTWm}pP_qY0 z$ch!+^kZ{{$U8a$hKIcV^<3wx32L0zz>+EWyz4r@e^$wfA@f#esF)D} zU4<%OcD6^asM%cA)g^yaF%P^EV?8iD?DXsaD_kuma6G?lGS|pkEjjP5^1(MxSK%x1r9NO0mG0+hfi+7&2o7OG&3(TZS(m^?*p#ub6tSm4x zy+|GrkE6*H>9)<_>< z44@kO5@SXcWuun@ZjX=`@!8kLDmpc$J=}%g05|RuUTc&_C|J65wOL zQWc~Lts>W~M$jDXp#e>%*mjhaHZ8*Xq7o1IRmfK1I^eBDV*#Y_Joz0M*E0cuDZvWaer^+CxSEKoM;Y zHD~c69hL4Yu<~il3C-b1Du)U*$*GW$Y7QsE+#XhaW3UR?n1;(4$0p%CHaU6X@Z5uR zrp@P8!qy`#Dq*K)MFH-*&rf~_;3WV2A@StX6hdpqEs-dvCs5hk#r}=1h8saS;#yrY z`w0Xde7al*GIQIzkCEmGAD^$KA-~>4H)nL5J@w*~EMfvgKSaYjU7s zHdCCi1Cn$#EnWw!ba_-Yz>Ga6&phj~{~y4At(j=eNFfTZq8xN5g&Dd%seh2svKn&* z7&A(QW2~lQi>);W{&U`?P>PnwCMD$WYGyJF^xA#%UHtmyeE)ipnfH*hh2QY|@BJRl zEw8fqN|-{OyW7stE)_WlcT1Hyv_8KleI(73_SPD@71Xwy40K6iNg8OV7+%J;D&q#4 z0}MIK!kx{8?OHzz{7T`38%11XV*}6N2xG}ik`|*X;g6?ER^a8#n=bv(uK@hS|L`n3 zQSmLk5@W9JfGMQmM$L{*fU2bVn$1!r^N1mKVHL%@!h2L91~PN-g^=t?GG@$;jSbVG zkYC-Hca|!bqr`8%>%wyt-2CG)za6pO&}B;6W?&Szx+F5@Sl8BpR}{QsVwVamrR(lu zAVutrn7R^6Mx`9iKT{_9%N5p&dGh7l>yH2aeGB;6=eq<47BDDu$@i30Ak!!ktsL9J zG(-F#VmLH(+$JGP)HH~IF+<=DoXD(Dh51~ibcK%7IA^h*1RX3z4Y{9{ACz*kit{e-$v`iFTK{4CRj8F$*%#VbgXc=;jcO7qA#?b!ODtNyvRv~x$A}+UtqJyw)SF71gSoS#8)tFF0oq7) zl@NoMAB>bUh+yD$SY5OE4`?eJEkqmMl4`=}YcE=T3&3UTaRP(0m|r5vQj%spx{wt{ z7Qc#`jjpP!5>|Fb!e%|Th6dwRKEl?DhK$|vmHN+=vXw@uDo3`mBx-mXVB$eT0FS)b z3KW@1YE)Ue&lc98tw*P{BZwZ<=>78**1mQ?+k@~j;9V_ElM8>Sx8Qvq&C`)KG9INx z_w9SeB)~iVI7r+Wcnmgm(7gvO6K9EV9&4P_BJ9X<4q#!zM&t6kSX0N0V+jd=%?RC` zS{pE8%Ep@vC!hSL)99poKq5Vi#!W-R_Ld)^i?eJQLHWJ7b_HMk*dty5@Pc1+aoyZE z7&930py&zwoXz&4I8vSK8X`aLv>RJFw@?h@Qk6ZHc*0|TloY(~{FvVpbj)amG6x;< z`i%YMQ+C#x8fp16es*M&zWS_By&B;3al=O^z^Hq>fsPpt+dZD! zU|Q0qZcnHgs{{tL4rq`!y_=k?rBtEi#@vkj5?bc_8ea3pWx9g;%$u0beW9I)f2d$< zOIs8Ai^gginVUn>Zj8K;-58SDMKb0ch`XZhYuwxZvwVzfJ`%j=xy@UBS%t`$sCLYV zKFXkDMgy8$z0DTD7WY)hj-eaUZ}`m09W(}l?^9t(#?Ue2C`FU`Hi@<&qj<}Mt(i~7 zNik~LoOs+{EQWTj2{fY=^Ga#YYD4|ntZxu~D!R8cL_F8&+_XZgLB|XOx!&ZXmLg@I zp`Hk#bY|xkRT(fB|Es1m>&t)L#an)zQ00cPX8Cq>7_OUvJW|nv<+g~l8g&)wIZEMu z65b_G`ED80lFEx1-kZwc+$eW)#YevJM1XgFrNRyDD5Ngq6tTOOC8L3=Kug$XW4B-! z=G)ZR5<=I~5~e&o$XZ-l*3djMd$t!~TJtWJz#Mm;aMNLcu@-ODp0edSM&MbF)fp`n z^c#^sMuWW@B)2a@anL%1$^>?8Bx#jrXfx|cp9@imf*8YuJgAr3&SW7K@!n|_)6 z{I4rtTWPnuXeqb(8f3zkel@s9?=9Rcv^m7SUO`);@EaOc`cZREEg@QpWtP)bpUT)@ zi4i8>{tr8U1>heSLmq|^PkC1=_*rT+bZAJfPzCWLf}S3E?g7mfWp0bF3>8!}okOcR z`3KPEzVmI9tQ#9mhXUk`$umE5;$;9=e9Q5I;h}taTEdLuIq2~;s0ba=5@(BuI)5}?J+7ajf(l37+;4AKTb4IYG7K^eJ10BU{ z(DoRc<|u-W85;$U2DI+g*?e?OwD>wQ#qA$8v7W4=W5(SLEq}2q1nAx@T{%=>9(xmn z<)n5N*LLzrM)fq@iJ>}pn z03UGQyi@k5Ibh*s)15&+^l`H}uMHPgSpoB3{sQ<$_$du4J-TJ2zBtvzsB0W3A1$c> zsuF7{kWFp_RdT&B+T&cqOtbjg#s3C)g88jPTlp0HQUV_bqBRaP#j{B**hiD%Gb@x4RE zj154=j2cwTD8X$E+DW7t=V;?O%?HS@U=%N0vi+es7&`sZ9{`;3dp2tabFsmc)53{4 z8`f=ED@Zl)jvh4sw6K%HXpbaQAjlS_dB#_Q!uOYKlUF8~C49#rfZu&|$U}dK>x|<^ z7ZBWd7S#Qq3v|rr0IFxgz3xK^g9AI67_gn~35*jjUH1e(^zOCLVFbfS3()>S?69(& z!Ccmj0ls|xQ}0VXaZSkU2o*E#UBKSVTmw1ql<6*%I2%8O{3P?qglbp3_VfGx9sGM( zdIiReV;)mcTu!E1&8pkjOKEb*&`mz@fQMX8>y|4QT)Zpl+Xwd=G=0XSm#I|SpzwR= zz>m-|=%iZkd(znO+WG1q|M~MC0L2=&QMb$~a-L!%WN zorR7SmftE@!aO=FDhq=b^iqJtV8qU+E<@O{t~s_d_$1MWM;P1sbb<+h}@B9u4u zMHd}7boSYY;V|5FSC(hO7FKTGTaQr0ny$^lsM`Lp``Qf{G?)LM;*ah>40ZyC=L_6Y&D`L(7Z76MC^Yh9x zx!rKU{9^j3K|I$SO#tApbk{Wn*#j_Z`I39jfosvxh{N(_^uvNUZGi2;z~*-c!nx(% zgz79)(jmV$+Qh4T>>zJ|fed;+OQ4)9FS_W^A+%+il&e@S2rrZk0-+DX+bO3p^h{ey|_Qf9neErLTXlEQ{J6uOIiX zxk_|^Dllf$z~9UvS6t1r$7QRJ3saUj5iJ#9<-5Oe3c&k5S78p|VQ&<)-<-=+vFOwi zOyyHck(@lHTl?k7A(%Lmx}$z(9bkYqsDLWz-k<`iqa`2P%BvP zB{3R~C#2Lyp!p>tGfL4c@eT!F1^89qK6e9JSAR#O1N(gTgYW(*!V~_48a|js_Sf_JljW6#I_TWes~*VrG-?z@yucp z9fDVGbCLTU+~Ed#^h(@@MvZv8CQI4NLl)252Iln41KHlwqONDv4$E-Vm^4g)-P5Nt zi|0o$#6uY>9e)~!)YW_VJM$wS@bR{j+hW)mFKK!RVTF(;l)9cUmIaQy$$QB@sxG^C zjGPI&rLKzh_z)JH8pqPW4KGMS2*a>bwGKUh7uoY164uvHBa?;Sm-zr?Xzz)Y#$1?2 zgs+SZAjD@2O*F4do*#mmVcN6SfqCuP`4-NEmiMhRZwioBI*z|N{MB+zH13`*g6LSw zF3=POZy%MG6~Wd1HoEyAejKo~2X; zbCVYY@@Fh~bCR6PtC6xlprdAq-(a|SILgK0wsUFg38nSsTMirRTjA=xG3#j1> zGRGvHJzN-&O<~Sk<_eyfbb93i#;N{$;JV&zD42p{?D+}b2ENVqPxXKtMYCIqcTch? zc|+ARNU;cSvl05p8e^Le3KL@>?7Wz*-`4ePvgA@}S%HyXVjjl@I9 zY`;~Zk#4Y*O~WjTcNmY~+@P%z+g{3ZIn}CoFXF%2x9$DUDRO>T8Md2|S>)v0q1_5d zYSdR$orv>Hpr)z)$uqP-5NCKLX*lefs}`2k(zH>{VF66un@0`p@z2g2+VB!J_Azud z{B1HKsLq3joDy@?cmHPf>QQ}~teN`r3l6wkv0h|w;fzk|lP>;kPKLC6Q z&MW7vO*vm<=DkS=SeDk<^8me?&oe?!nnbmPOWsbb?+xX9#>u)de*@j*G#m5MeVZl4 z+GJyzx}9X5^nf9_O(v=hjJ5c&L>T8=}z{x(LRmDg8%}v z9*m-XiDkt@1UQnaqwM<)^nAGO?6CmzS%_uAy`^?o>gF6L|XMAQuw^F}He%yM@gUAB=*RK}cL zEy(a3A6IGmEeT9WH__6^WC9U<$UvKf-5|=ysv(xDfK?4n-VX?eC&*!iF@4*C`~Wtm z&7+M{^)qwsaxpe3nOw26LK+74Y3DD_4xfE6M~JF{*Cv@mMGLEiGYVT>$0HVro2+m= zl4Ph>n5K+9i!>hDtf75dxZU6!kzDG`$Z>e_{@{YBCl4g*C~?nravH@H{Fy}wD~|8* zjLGHkC#}}ZeK1OEHd;&|5*i{tR9aL~UY&Yl7sY0`Z~E((uaO2ij{t;q( zwu-AxCNjEm`X|&h(r6tXn{(Z5oJ`of5nUzyNJl_!D?&N`p94%(4R;dJk79)Rqj3q^cmM1@sMM3A@PK{I8 zcsTCA4cP;C?pg!?LwBHQBM2gfMwEqt z4d??)9_>>Os1173ygo#~!I$FhZG&bg6XjoFhC6g3dM@s=j2?AP+-o<7?>%#XeuN)% zuVuoX_>>Uup4Fd^K{=!=RGeI#*W>gBm)}$#vox746 z+9ZARlI-YvGq>8gXkY4s9C||qOfoT7@G4q&a%Bjy7f*zGNiCsh$r7JLY^o?RKz%CJ zvq3SHA;{tIAC`a{Tap<_mBT-uPn?J)aPsf5k_EZq!c55_F8D+4}#qYl6loGn7ioDPY}L{7+4 zb`7gV?I}?~q}k5u5dEJNT^(d5+eznTFz|)!djk#s|G<;$C%CjC)T6s@Ie_$jU>UZn zXb^iq+=|CS+LGC(lzki*o~$8C4d(eh-YU!N^`52K z$7d}5R$3^BvOk@2w#KRgB9ry<-AYgkd1Lr9YZb0rBw^-9!9%Ef!568O-|M$H}=9WHqwcT50HO z**ta--1Ql4np2iqBBGO@*ku8gm%hYy_*xZ®ey(84Ayic*w_I|Y}kjDyi^+h}x- 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 z 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 z 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∨aTEXS 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 z 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�P#AZUorU@a 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%0AS*CzE}(npm81U{&x@jsno%rV4`33_MP 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
    BFL%}B|fAJc4fvIMz5 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 Lr;Vf=kKq3UJM|3` literal 0 HcmV?d00001 diff --git a/hls/lab2/sw/lscript.ld b/hls/lab2/sw/lscript.ld new file mode 100644 index 0000000..6b49b6b --- /dev/null +++ b/hls/lab2/sw/lscript.ld @@ -0,0 +1,322 @@ +/*******************************************************************/ +/* */ +/* This file is automatically generated by linker script generator.*/ +/* */ +/* Version: 2020.1 */ +/* */ +/* Copyright (c) 2010-2019 Xilinx, Inc. All rights reserved. */ +/* */ +/* Description : ARM v8 Linker Script */ +/* */ +/*******************************************************************/ + +_STACK_SIZE = DEFINED(_STACK_SIZE) ? _STACK_SIZE : 0x8000; +_HEAP_SIZE = DEFINED(_HEAP_SIZE) ? _HEAP_SIZE : 0x8000; + +_EL0_STACK_SIZE = DEFINED(_EL0_STACK_SIZE) ? _EL0_STACK_SIZE : 1024; +_EL1_STACK_SIZE = DEFINED(_EL1_STACK_SIZE) ? _EL1_STACK_SIZE : 2048; +_EL2_STACK_SIZE = DEFINED(_EL2_STACK_SIZE) ? _EL2_STACK_SIZE : 1024; + +/* Define Memories in the system */ + +MEMORY +{ + psu_ddr_0_MEM_0 : ORIGIN = 0x0, LENGTH = 0x7FF00000 + psu_ocm_ram_0_MEM_0 : ORIGIN = 0xFFFC0000, LENGTH = 0x40000 +} + +/* Specify the default entry point to the program */ + +ENTRY(_vector_table) + +/* Define the sections, and where they are mapped in memory */ + +SECTIONS +{ +.text : { + KEEP (*(.vectors)) + *(.boot) + *(.text) + *(.text.*) + *(.gnu.linkonce.t.*) + *(.plt) + *(.gnu_warning) + *(.gcc_execpt_table) + *(.glue_7) + *(.glue_7t) + *(.ARM.extab) + *(.gnu.linkonce.armextab.*) +} > psu_ddr_0_MEM_0 + +.init (ALIGN(64)) : { + KEEP (*(.init)) +} > psu_ddr_0_MEM_0 + +.fini (ALIGN(64)) : { + KEEP (*(.fini)) +} > psu_ddr_0_MEM_0 + +.interp : { + KEEP (*(.interp)) +} > psu_ddr_0_MEM_0 + +.note-ABI-tag : { + KEEP (*(.note-ABI-tag)) +} > psu_ddr_0_MEM_0 + +.rodata : { + . = ALIGN(64); + __rodata_start = .; + *(.rodata) + *(.rodata.*) + *(.gnu.linkonce.r.*) + __rodata_end = .; +} > psu_ddr_0_MEM_0 + +.rodata1 : { + . = ALIGN(64); + __rodata1_start = .; + *(.rodata1) + *(.rodata1.*) + __rodata1_end = .; +} > psu_ddr_0_MEM_0 + +.sdata2 : { + . = ALIGN(64); + __sdata2_start = .; + *(.sdata2) + *(.sdata2.*) + *(.gnu.linkonce.s2.*) + __sdata2_end = .; +} > psu_ddr_0_MEM_0 + +.sbss2 : { + . = ALIGN(64); + __sbss2_start = .; + *(.sbss2) + *(.sbss2.*) + *(.gnu.linkonce.sb2.*) + __sbss2_end = .; +} > psu_ddr_0_MEM_0 + +.data : { + . = ALIGN(64); + __data_start = .; + *(.data) + *(.data.*) + *(.gnu.linkonce.d.*) + *(.jcr) + *(.got) + *(.got.plt) + __data_end = .; +} > psu_ddr_0_MEM_0 + +.data1 : { + . = ALIGN(64); + __data1_start = .; + *(.data1) + *(.data1.*) + __data1_end = .; +} > psu_ddr_0_MEM_0 + +.got : { + *(.got) +} > psu_ddr_0_MEM_0 + +.got1 : { + *(.got1) +} > psu_ddr_0_MEM_0 + +.got2 : { + *(.got2) +} > psu_ddr_0_MEM_0 + +.note.gnu.build-id : { + KEEP (*(.note.gnu.build-id)) +} > psu_ddr_0_MEM_0 + +.ctors : { + . = ALIGN(64); + __CTOR_LIST__ = .; + ___CTORS_LIST___ = .; + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*(.ctors)) + __CTOR_END__ = .; + ___CTORS_END___ = .; +} > psu_ddr_0_MEM_0 + +.dtors : { + . = ALIGN(64); + __DTOR_LIST__ = .; + ___DTORS_LIST___ = .; + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE(*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*(.dtors)) + __DTOR_END__ = .; + ___DTORS_END___ = .; +} > psu_ddr_0_MEM_0 + +.fixup : { + __fixup_start = .; + *(.fixup) + __fixup_end = .; +} > psu_ddr_0_MEM_0 + +.eh_frame : { + *(.eh_frame) +} > psu_ddr_0_MEM_0 + +.eh_framehdr : { + __eh_framehdr_start = .; + *(.eh_framehdr) + __eh_framehdr_end = .; +} > psu_ddr_0_MEM_0 + +.gcc_except_table : { + *(.gcc_except_table) +} > psu_ddr_0_MEM_0 + +.mmu_tbl0 (ALIGN(4096)) : { + __mmu_tbl0_start = .; + *(.mmu_tbl0) + __mmu_tbl0_end = .; +} > psu_ddr_0_MEM_0 + +.mmu_tbl1 (ALIGN(4096)) : { + __mmu_tbl1_start = .; + *(.mmu_tbl1) + __mmu_tbl1_end = .; +} > psu_ddr_0_MEM_0 + +.mmu_tbl2 (ALIGN(4096)) : { + __mmu_tbl2_start = .; + *(.mmu_tbl2) + __mmu_tbl2_end = .; +} > psu_ddr_0_MEM_0 + +.ARM.exidx : { + __exidx_start = .; + *(.ARM.exidx*) + *(.gnu.linkonce.armexidix.*.*) + __exidx_end = .; +} > psu_ddr_0_MEM_0 + +.preinit_array : { + . = ALIGN(64); + __preinit_array_start = .; + KEEP (*(SORT(.preinit_array.*))) + KEEP (*(.preinit_array)) + __preinit_array_end = .; +} > psu_ddr_0_MEM_0 + +.init_array : { + . = ALIGN(64); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; +} > psu_ddr_0_MEM_0 + +.fini_array : { + . = ALIGN(64); + __fini_array_start = .; + KEEP (*(SORT(.fini_array.*))) + KEEP (*(.fini_array)) + __fini_array_end = .; +} > psu_ddr_0_MEM_0 + +.ARM.attributes : { + __ARM.attributes_start = .; + *(.ARM.attributes) + __ARM.attributes_end = .; +} > psu_ddr_0_MEM_0 + +.sdata : { + . = ALIGN(64); + __sdata_start = .; + *(.sdata) + *(.sdata.*) + *(.gnu.linkonce.s.*) + __sdata_end = .; +} > psu_ddr_0_MEM_0 + +.sbss (NOLOAD) : { + . = ALIGN(64); + __sbss_start = .; + *(.sbss) + *(.sbss.*) + *(.gnu.linkonce.sb.*) + . = ALIGN(64); + __sbss_end = .; +} > psu_ddr_0_MEM_0 + +.tdata : { + . = ALIGN(64); + __tdata_start = .; + *(.tdata) + *(.tdata.*) + *(.gnu.linkonce.td.*) + __tdata_end = .; +} > psu_ddr_0_MEM_0 + +.tbss : { + . = ALIGN(64); + __tbss_start = .; + *(.tbss) + *(.tbss.*) + *(.gnu.linkonce.tb.*) + __tbss_end = .; +} > psu_ddr_0_MEM_0 + +.bss (NOLOAD) : { + . = ALIGN(64); + __bss_start__ = .; + *(.bss) + *(.bss.*) + *(.gnu.linkonce.b.*) + *(COMMON) + . = ALIGN(64); + __bss_end__ = .; +} > psu_ddr_0_MEM_0 + +_SDA_BASE_ = __sdata_start + ((__sbss_end - __sdata_start) / 2 ); + +_SDA2_BASE_ = __sdata2_start + ((__sbss2_end - __sdata2_start) / 2 ); + +/* Generate Stack and Heap definitions */ + +.heap (NOLOAD) : { + . = ALIGN(64); + _heap = .; + HeapBase = .; + _heap_start = .; + . += _HEAP_SIZE; + _heap_end = .; + HeapLimit = .; +} > psu_ddr_0_MEM_0 + +.stack (NOLOAD) : { + . = ALIGN(64); + _el3_stack_end = .; + . += _STACK_SIZE; + __el3_stack = .; + _el2_stack_end = .; + . += _EL2_STACK_SIZE; + . = ALIGN(64); + __el2_stack = .; + _el1_stack_end = .; + . += _EL1_STACK_SIZE; + . = ALIGN(64); + __el1_stack = .; + _el0_stack_end = .; + . += _EL0_STACK_SIZE; + . = ALIGN(64); + __el0_stack = .; +} > psu_ddr_0_MEM_0 + +_end = .; +} + diff --git a/hls/lab2/sw/main.c b/hls/lab2/sw/main.c new file mode 100644 index 0000000..3489a87 --- /dev/null +++ b/hls/lab2/sw/main.c @@ -0,0 +1,102 @@ +#include +#include "platform.h" +#include "xil_printf.h" +#include "xtmrctr.h" +#include "xmmult.h" +#include "xparameters.h" +#include "xil_cache.h" +#include "xil_io.h" + +#define MAX_SIZE 64 + +void mmult_hardware( + XMmult* mmult_accel, + u32 in1, // Input matrix 1 + u32 in2, // Input matrix 2 + u32 out, // Output matrix (out = A x B) + u32 dim // Size of one dimension of matrix + ) { + + XMmult_Set_in1(mmult_accel, in1); + XMmult_Set_in2(mmult_accel, in2); + XMmult_Set_out_r(mmult_accel, out); + XMmult_Set_dim(mmult_accel, MAX_SIZE); + + XMmult_Start(mmult_accel); + + while(!XMmult_IsDone(mmult_accel)){ + /* wait polling */ + } +} + +void mmult_software( + int* in1, // Input matrix 1 + int* in2, // Input matrix 2 + int* out, // Output matrix (out = A x B) + int dim // Size of one dimension of matrix + ) +{ + //Performs matrix multiplication out = in1 x in2 + for (int i = 0; i < dim; i++){ + for (int j = 0; j < dim; j++){ + for (int k = 0; k < dim; k++){ + out[i * dim + j] += in1[i * dim + k] * in2[k * dim + j]; + } + } + } +} + + + +int main() +{ + init_platform(); + + printf("MMULT benchmark size: %d\n", MAX_SIZE); + + int in1[MAX_SIZE*MAX_SIZE]; + int in2[MAX_SIZE*MAX_SIZE]; + int out[MAX_SIZE*MAX_SIZE]; + + printf("in1: %p\n", in1); + printf("in2: %p\n", in2); + printf("out: %p\n", out); + + for(int i = 0; i < MAX_SIZE*MAX_SIZE; i++) { + in1[i] = i; + in2[i] = i; + out[i] = 0; + } + Xil_DCacheFlush(); + + XTmrCtr timer; + XTmrCtr_Initialize(&timer, XPAR_AXI_TIMER_0_DEVICE_ID); + + XMmult mmult_accel; + XMmult_Initialize(&mmult_accel, 0); + + XTmrCtr_Start(&timer, 0); + mmult_hardware(&mmult_accel, (u32)in1, (u32)in2, (u32)out, MAX_SIZE); + XTmrCtr_Stop(&timer, 0); + + printf("hardware: %d\n", XTmrCtr_GetValue(&timer, 0)); + + Xil_DCacheDisable(); + + XTmrCtr_Start(&timer, 0); + mmult_software(in1, in2, out, MAX_SIZE); + XTmrCtr_Stop(&timer, 0); + + printf("software: %d\n", XTmrCtr_GetValue(&timer, 0)); + + Xil_DCacheInvalidate(); +// printf("out\n"); +// for(int i = 0; i < MAX_SIZE*MAX_SIZE; i++) { +// printf("%d \n", out[i]); +// } +// printf("\n"); + + cleanup_platform(); + + return 0; +} diff --git a/hls/lab2/sw/platform.c b/hls/lab2/sw/platform.c new file mode 100644 index 0000000..0ee2dcb --- /dev/null +++ b/hls/lab2/sw/platform.c @@ -0,0 +1,111 @@ +/****************************************************************************** +* +* Copyright (C) 2010 - 2015 Xilinx, Inc. All rights reserved. +* +* 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. +* +* Use of the Software is limited solely to applications: +* (a) running on a Xilinx device, or +* (b) that interact with a Xilinx device through a bus or interconnect. +* +* 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 +* XILINX 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. +* +* Except as contained in this notice, the name of the Xilinx shall not be used +* in advertising or otherwise to promote the sale, use or other dealings in +* this Software without prior written authorization from Xilinx. +* +******************************************************************************/ + +#include "xparameters.h" +#include "xil_cache.h" + +#include "platform_config.h" + +/* + * Uncomment one of the following two lines, depending on the target, + * if ps7/psu init source files are added in the source directory for + * compiling example outside of SDK. + */ +/*#include "ps7_init.h"*/ +/*#include "psu_init.h"*/ + +#ifdef STDOUT_IS_16550 + #include "xuartns550_l.h" + + #define UART_BAUD 9600 +#endif + +void +enable_caches() +{ +#ifdef __PPC__ + Xil_ICacheEnableRegion(CACHEABLE_REGION_MASK); + Xil_DCacheEnableRegion(CACHEABLE_REGION_MASK); +#elif __MICROBLAZE__ +#ifdef XPAR_MICROBLAZE_USE_ICACHE + Xil_ICacheEnable(); +#endif +#ifdef XPAR_MICROBLAZE_USE_DCACHE + Xil_DCacheEnable(); +#endif +#endif +} + +void +disable_caches() +{ +#ifdef __MICROBLAZE__ +#ifdef XPAR_MICROBLAZE_USE_DCACHE + Xil_DCacheDisable(); +#endif +#ifdef XPAR_MICROBLAZE_USE_ICACHE + Xil_ICacheDisable(); +#endif +#endif +} + +void +init_uart() +{ +#ifdef STDOUT_IS_16550 + XUartNs550_SetBaud(STDOUT_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, UART_BAUD); + XUartNs550_SetLineControlReg(STDOUT_BASEADDR, XUN_LCR_8_DATA_BITS); +#endif + /* Bootrom/BSP configures PS7/PSU UART to 115200 bps */ +} + +void +init_platform() +{ + /* + * If you want to run this example outside of SDK, + * uncomment one of the following two lines and also #include "ps7_init.h" + * or #include "ps7_init.h" at the top, depending on the target. + * Make sure that the ps7/psu_init.c and ps7/psu_init.h files are included + * along with this example source files for compilation. + */ + /* ps7_init();*/ + /* psu_init();*/ + enable_caches(); + init_uart(); +} + +void +cleanup_platform() +{ + disable_caches(); +} diff --git a/hls/lab2/sw/platform.h b/hls/lab2/sw/platform.h new file mode 100644 index 0000000..e273e37 --- /dev/null +++ b/hls/lab2/sw/platform.h @@ -0,0 +1,41 @@ +/****************************************************************************** +* +* Copyright (C) 2008 - 2014 Xilinx, Inc. All rights reserved. +* +* 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. +* +* Use of the Software is limited solely to applications: +* (a) running on a Xilinx device, or +* (b) that interact with a Xilinx device through a bus or interconnect. +* +* 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 +* XILINX 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. +* +* Except as contained in this notice, the name of the Xilinx shall not be used +* in advertising or otherwise to promote the sale, use or other dealings in +* this Software without prior written authorization from Xilinx. +* +******************************************************************************/ + +#ifndef __PLATFORM_H_ +#define __PLATFORM_H_ + +#include "platform_config.h" + +void init_platform(); +void cleanup_platform(); + +#endif diff --git a/hls/lab2/sw/platform_config.h b/hls/lab2/sw/platform_config.h new file mode 100644 index 0000000..30d16a1 --- /dev/null +++ b/hls/lab2/sw/platform_config.h @@ -0,0 +1,6 @@ +#ifndef __PLATFORM_CONFIG_H_ +#define __PLATFORM_CONFIG_H_ + +#define STDOUT_IS_PSU_UART +#define UART_DEVICE_ID 1 +#endif

    r`F2WmUQKcQCHd07gV;k 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

    LG;6iO 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�=C-`*nTVHMjwLU`^ZEK(K*yMXdd86~BX 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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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

  • !T%PHQmsj5p_`Q! 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 )+y@>7XI?}f4+I`w>Iusy?M{O`{s zznbJXf(}*fXB=#LU$B5dTt;JtH#@i0*G}wdRJ`@qxY988LiM|qptLhc%uLV1MM$(J z_${^`)opwySvsM`@M_V*&yhs>&f|pX3gV0+s%M`l`|C6}4JWF*j{j%963E~O&dWzL zo*rI9xzlm;-4U?)5aFf9F~*bPptvH>2KKO*+1`(JENAlMxf!;Di}-H%E?nm(w4;Nz zWA7fdeed~&<^32zQhgvs!PGt;l;maaQVE$(B`&m$u=uymlb_ap!avj%|1t}CjqJh- zBc4;`S!di1?>NG9oqmp&z03(0HLdA+?)t3rhv@ru<{XD3?kCdOo;UN$5r7wL#}r|H zm`~|oot~slt!5(9W2S8^ZgfQPif^DFspn>wJdiAHLT3t9JzszYN1ba%O^J`L1zP|4;w%W#C&|qZV)U!Sxwal{_|7qSR4ZUe=Mz#~TjaOKc zF}H0Ql^Efh%sJGqBTnDl#x?c>EGc{WGf6EeRW(S+oNp`8ZY_5xcVrBv0*(5zXEFN` znmp{3MbDRRktI1=v1c9UJ<@9vH5M!PNBcV42AD1#-3@$?S+XL9H9e&rqwL{?;q?hvm%9SJ}Y+AIGCuR_$+kb7ye$2Zp|Xk*ArV%HB-3t*dX! zEfYhP-iwx(3`306cei$AX01H;wat&M3;8Kkv;)IKwMthWpF%UP3F=Ko(v=L|-?|{| z<1ZvOAi)pU!Oy|d`nt@_7EQldHv%}4;a_UM2833R`b(n}XUNk(iU`S|H*gO0Be-K! zNwJ;%zj4~y_RS6c(=2CgB^%kG>&-iC3aJ75zFD;+!bK&LZr6)tls0&|k+VZ<5HXM? z$@CqXo1sAB1fSO{mP_}Nu$4=B3@8wE_)1V1sE_Hnka0PL~}Kc`%8|vLasfv4?7%x90(q-^cpI6voy2Q zQwN;=7Mfwc1lB*!lW7n>5J2a|u~&uyc`90-lzC2=ee1iBE8lU_(m`BTeNclGuK)od zuG5o450zPyO?6nchz);esFHbOyrZb?o4&JhHWy?PqaGWGaIkYl#9Du3$kF>qkT)2~ z;XQfYwTZL`1Ie%I1Kt3JO0zfFOI~$gPG6olHcF^k%lv3Ehe1qJ179Dz<(sSV6sb20w(kL7wDjQB9CFd;E5kSOw19??bgnr_fO z7$2kMet%H#2A=;q_65I}&6WAzIFYz3+Z^=TIb(A=Y!hm3J52~d{>I$SVPUNP|rMU=1L3n1w2XKq#JH#fxL0{s{1p zvh?}sl_qG8cz?0Z>>Jk`tAn5lyMO8P(PSke>>_-t10ysft6UE)yQ?JwZEorQq4eX9 z;gdI~Hcie{9j46JO7@h`PxwnI=XNihnZQo=q{8%BG3Q&6W&Aq9*pHL^!ns@HkmsH zjq3}$e(^q$AV$&S^~RJPsvesuBcvc5N=u|K61mkJFqGQ;giS)KVZ-RHsinEQU+2Un zduJTuIgB&B%^`}cc2xCN2RH@-EN_t~dHFi2PE14?4M~kWJ=f>=`_K~q+r09Xt_INV zK-Ba&!^k3({$M>(f^e7(J+ep@ojqBe<5tj7b?Msd zMJr}J2rM={+vYFcGrDknfo<=5)3yGoFA433r+)Qn2TFMj!5$erbD{|9bur+GWs_tve#1&$(-L6rf#vA<5PImF<&9ffKgv05N!OVN99$F zdNyQpf_mP&2As`KZe7?}b$af0tyAsS5UO-geCem?`~dnpJeuehwOcou+VKSMX+=f3 z*Kb;N)_h?9eFSJ1Di1kfMoe$W!i@(DG0rvP#JSO(_4soj+i!Hv4y4Fwh|O0!xVO=~ ze99?B#XAcTNw>KXWfh1EjiVUFDY&)qgsjSRsFAs`CeAG3b%#da*|^#_H+g(}ge%5* zr-X?0VGM4{<^%!v9-|FUCxT?e1nUnRYxC61Ae&DIr)~$kiU~ban8QdjTfnYhE`}(x zl5vF)DuffHu>`0VbrUG4qya)}slT=}(w_SV_hgUOD;|X;Ï&Hl|m2p?)b`eMRH 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Ï&Hl|m2p?)b`eMRHzw<$TCvS|CAO-VY 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
    YrUJVuvqj_Ykghxk(<@4H$9eqCTDOJ+@V2V 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
    ^3 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

    LG;6iO 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 J?J9kAmvltmU3-e_lJI;JC198U($N) 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 z zV?b!hctT&z&oo*NrR=Eng1F%?-}XQF8TJ#EV0%PC1iaF*E-r^$P1ZwD$n=|}chK9y zySB}8sC*x1^d(H7M4;Lj4;x5E{#-Kw)-dV?f{v#U!&IE=fi(chp^!+LQ1aXBc}ap6r1tv)kk*Sz zko+*1e@$TLudClYxKenJunnyz218=*LPZ{=8X?gt5e$dXD64g!#0-Pa=j9G#oZp*6 z1crW!z+QIagMJ*cis(4r7DA!g`KO?;>P`SzYDBK#bmC9QQIzyW#>vMg;eoim6F}%b zZ$<6)c^BRT*aYL`M>4dwdgaZfbrNDu>c*hMx+a89#$~2baZ(cJ9^_}^d*67MU-;5n zC0qr=5+^GcC89W#-X-nFWWl#G`aTB&*Z2XDl-+_^F4W~-nvk0qBVP%Tq+EfiJJbtt zrJ^oExg6G~p_<7pg;=;bHj^ zW~hfC#8nnuVsHU7C{&s@gftY_B^4)zfUw=frf|=hJBYsYzQo5Vxd}1Zfj$JGGAT*V zVFQ~C8m>YD7S5i56sjxG#?mm#j%z=h25K;kV4z$aUSYf-STX>?vl0ULc_c8%%5-jV zL&5}x1@i^NAe;Swdjl{*;@w(2P!5@M^5O%|N4r1s@NS~oZ_rRChf3k#wYI9AJcp5D z(hgy0!<-x!!bfz%xFUc{9p3>w=X^`z6-<#~kb3mJS4bcY_10;$gN088qTdb&!H89o zf?N2^$8KYuziNPDLs%Ej`pgbPX)Pjw<4=E^ndPzKDED}+eSX2~ln&pSGDXAm6@s=+vy_IdnU3mAZ zjJ4jZp3Hy%IE4w2UZrNS-T|Hkd=t_CgbWq&Yow0La96@Rh|sTRrG#Lx5qd+H(nNtD2IsGXSXP;p zk%Yoc$SMedXig_pBFViJFd*K8AmxG3!gU;)0SI=L*lJ+76OM(d!uKwIFT*W)|4RPQ zW}?6O_aUT~;Np~I!b8E)+a*B#0=tA5U9?W-62pjYD3g$ViNjC_eW{OSF)7gCJdT8S zz2x#7mkr^(OOnEtoZu_3Cmzz}!VF%s7?39!>}?D%&k57L9=IlG!36YvX=~o>wOsfTEsfg5mw}frrL~~h)mqRHzeYG=jNk%Vk-LO zW53%Wy64Y<#h68|cO815> zZ~8jXcmIlDVO}T|ss86Q3O5XSyd~@qFZ9r5^nYMNj5{ET)^h*ol-&Bs5wHyyA~CQk z5uhT0oskZmFcdYIjR_xUWJ2B8@Kvvbg(o&K@x$a$iN{MF!sV(7#K)Jvw3Gu754Vqm zqkZ9a@E+uIKMrxZ-YbRa2;AcYh#?h9a?csUx+`ydFKaCzgENVON#j2`>y6Lw`2Dni zW_-~V>6}xgi|pvembi$Fbs(GAKrLY5E}|oDGmlj2u6M|7bg+|VO_3(zY;5nL(PI8L%j0aj*uouA zG5!QeL6?!E3;RqP25`>}zXs?b;pm~0Xi^zj2arJzhYRl@9Fb1Z$MPACMyEs~735~p zMj^^FBsPL^%NF%@O#P5SW-j2RYwi{-HT8QH$G$Sdy5I18yyX1}bHM!}6Yj;KQt3YM;UV z9N_V=@)??h*x@%#$Sh%eB5k(RuHXFyqT9pRU&@h$b~a%arN*d1l>q03p>SE5e)B?8 z3e=GGH5^Ey6|mt4l7c=v`P399T3njXUg$V0%2X!R??^h1)h3KCv_|=>re#=GOYj3X5!%Bw_~RcLQ!r5n>&eu)HCt z-WoPFMToR1FQ$zIqvXpsa^wTmh9DEBeGsl8BLNFn%E*9O@7@@C96Jt3%&-U6@pBk3 ze2%5`2$K-U{fQ&V9hY^c%9)y?@n{^E&&A9Fqwx&}eIASX_$kcHC7QPMGmUF5BKpur zWdM#?4b~`z?BZ)p!c!CH9O)_s`7H`-9YY-mORLj2CMZKnSi z0x72CD5)P|C?3gs7{Cj-j=?h?+0nbgUE@vR0;kbZl z@i=}vA&cL4<=OeF!${vuj52qw!O0cZkj(L!Y@V{lH=M(^b16b0*sk0+At#j2BcBXs zjT*-WJvM(ZenFx}5Rdmn=w51YYZ0`87V~K8SQ{bkf^#Ek#IbOgGFxvMcC*=lR-_W$ zT#|KJP8)jXk?&;*y5J|1h)Vrg0}poMx-F?Gq6Pc+raaqa0Bk4 zAc=dOJ~yG1r5;5DD=bo8dFBB>{G@6qmf~1-CYi*IyRbb3#s8Tjmwy-0;y)prua`Wb z?M^v-&eO&_U>`~&mJh^NHfW1CCTegD*HgySEv$}vNZ-tDCW7{c|pIn3o&xcaZMBT}u&Jhgyk&QB>GeR}8cL4;tp2S|Q>^7`D6>W2aS zvR={jIPM17?s~34a6u!o=4$kj2qcB)56e45`_yY zHjPnn9kO2MisSw)tFQ}^tH|TbG)?qigC7buqSDY6Q!%uVPC`Rva9Ky*4QbRKz5-~malF6R^i#y|Jo z)7Vbjwv2#P9B33{3Lq*etm~P$6W^<4Zj57YmDns%G>J}>S?FEZ4PlP3cZQiY!|`$5 z`BT01Y&q`K&Ur??le6bIxJ~k2=D0jXR>fRK6K2mnmsAyho46%n0@2E3`0CC+!R_e{Be8LvhO+A_m=^Ye_g z;fOf6Kw&$mn>-$scTfJvJBgk^v6(H~9I32@+ulMlyJ5#!nTn26NeoWSQ#rzCMk774 zfjEwqvpCKUVj27Gs62d?0C?u{H5`^l$q1AbCx{Jq8eZI2`pIR%^T>Dti4}}-5DFx~ zv4K`XfB;%RrN77}rwGB@iv!?#u8qJAzpkyBjTw6!2zi${5+?w>@hO*#7a!O62H;Xy zRvZ4~@ndHY{ipMQ3*u|znC*G2MefzJO+$$b5($R~%SXBHq&}?}qYz%7&~X;56)6Ve z0{39gdW6i!Hpl=n&H)Q(oK%QuTJxLOOTKau!Vxr&f~f=#A5dbVbryj6c92X)4MSS@ zy{eR%z+nOuKj|-e-(gV*DNSIv3NzR}24V0tiJd>3Q59kGD+yTC3R!0{isIIL|MMM- zL?8VCJp6TW3*()vzRJNrZcmSJ&XiTKAhiQcf$G%Y5sVpGVjDuioEVWIk{_{AVJXVz zx!bvs%~lRrx!O4%`!r-XQ6fs5)jjlfR#zos<0&@UXPmN4&vBzmo>H;TL6?<0h)<7w zVh%cw`5~MVUP2V1*a<^62A{B{Z-)fSrw_xzZc~Tv`RD;bbul<%`*f*@TN(R@451Es z6pYfcmoCrnlGV+SmsTX_JPeAU zfOcUN_+sEYuA77j3|5$gU6?+NO{S2vvEoiED`^=eYCpd8Q$(+mF%eFlWU;D%F6uWK zhk`=;GW&Aa9U(k1o>Yl@&#?M|CS49#Rw^zG+RQ!3Rgp1yFOf@-0P}(4lhz{kBHXCg zkv7vTcqS7YSu8bvU<0Jk;6cr^m(pQI&K&S2( z4}L9TV>k{w-QbI1+suLynD{SH)+fzUWZf=}K#ZLK=5@k)p1Jk~|x4ooIY%OJ3P=+o4ee6<`uuy>;)0Rk}J zWpbv(>Th}^nJV`3ggz3TpIZudA=4TyKq=M#1&v;iT2?SKjKOpa3@Pw%JOFGmMRh{GHpZo ztpwCz=hv&ZKYDXaH{P2t)`p5~k*^NW#>7MLYDIgOK`=+%e? z_2WdfTkcw6Rk8_@h<=TiMTopu`><6Sw&+O2QB(1Ks62-zKc#hDV;JS9nh>}tM98Cg zIkvJPAOEPIUsgC#gDn%B{X%z(s^L0kYS@u=Xo>c;Us2-`Kq>!AOWx-gA#v2{hFxFY@e{L*+WqyYIcaOW+v#riLNV;+#q8M>u zUN_>Nmf0Wp7oY)sNCtw@?iHBFZoLIB7%*@f!GJJKt)=BWLC|MR0x_~}@W5vtWyeQs z2_M+YMe!DM51^}4@vC0*;}qAw2d_V-rku4C^X!bwv<)%I#xqXCSUebJF68h`FS>&;htfB;XF@$0 zdBLFt9BWfvf{7TM19f%+!Q-2J5EHYn)V8r(qsGB`Jh=HY?%8#Q^%5&@2r=Xrks?DlrXAg|FqfHj%AS;`jIp#^7nZ>nRmMWftx0P;CVio!p zX5LA}#P)QG^pwyaQO^`-RirY(d2&KL%3bFb7E7&Y5^Dgj_z`Bo5wy}0#E$vKLL(b+ z)lKjC?okOR~S_tX|#zQ}n$V-lp5Z1`MadPi1Idgi#Jd5uQ; zyOh=p7a}!ZP9Vsp02KMP_8iD%J{PgFjV6}}9!gD->>?2n@}3(rxlx+U{rx_oKRr_- zK)GE)vBd0Ya#^dWr2x)P#W;?Vd8=S)PC4Jem!T^m1|>97!1= zk3PJqaIR|53@AQE_WX0BIfE$-Tl36puo20eickh5o-5KKKcLkTD#Gl-sAG~srZ*8P zb|hlw|E7fTYwS6Q!guSzxh#u^9xU()0XO9K%iQ_BNy_Na=OcHT>R|h{kld)+!hB}Y zhu(K!jA&m8ud1Y#Wy1Imup|Z}%y~;Nl+*KR=RJmhS$T2j>0q8aN98FeTRTRQF$?!| zQ}%urWfK9$lYKl|QU@=Rx}OS_*}+42h|q~;#274nZIp3rgcaPfgi65-75aojY&|Tu zj>bY1F&c?Bw`oKtU6L4o46M=X_E+Eb5u(4nBfPs%5NykmE!5}{M8raI=S#xBX?}B< zO$^4e#$hga)ic=7%rO{~Gof*1mC_9)uNX<7V|FRGC+5pKIO^6q~n zdh>6m;Vn64ptW_QE6x(r7Y^7 zV=cy1Vb!F)cNJFlMWH4PSX;tIW-P}r5mrquV?|}jC-WEFPsS~*DgdE`LsP&~Gj1xf zKJTOehetX7poi;f=KAY>-UUPbbo9L#6ukuxpB0h_%wQr@}4`{t9_y{gp)e7vKXDAM_r+vunMyl zZNxFwvJ|jAG*9_?CFyVn%gS@6|2gG3yqY0`)REDyw<>5bh{G@v!?2{4L%w zcSm=}ZhpcwcSpd&zuW!Rw+_pV&|`-$J^lSZL_u{>w_9Ost-ClkcN4#yc}Qq*LpJ|> zOQ~nN$Ea4hFu6;*BG6EDqZ+i=f)Ptx?g{FxI_350|E&> z|LJ2PmH($bD<=dpveW$%cwVEi8rQ`Ncs@3p|23l8qe8)92YHUWaKZE1nD9J&qZ)u( z_i~PTtX3=%Eso7_@A1^dl}dg$?&>8vaPC_AlL5fp-FIZK&s<;IU$`D}o?$om4IiS} zL+V?yV2#EO-*V?~9U*#)e1m3S?$&5=X3o*!ZjMEnp(0Q4jX4Q9msc>pI~I*Kk1@|z zx?f_hvYdw-g*&ye&0CrA>21b%fY-;4b>$a#K8u|58|5o=65#-_oM&(~a`pgs*T?1- zS!G?EpPQ@XR^XdGDR~~`96YBTh3g^bDbItP&+cYD9eAEmQ-98K_LT=ETmd}ia?XrZ zyWOY80?!3c{w5wdt$@>7_zJB%o55ADxh%^$BpGtfeum|ol@2qM>rd|3Ud!`tH}D*C zP6M}^_h1D)r@(V;84;f6D@m6z#PdNt^K!uPQrx|Z_23{LRt|Unw{NC#)-cAAzmV!N*5n)y z?)YBmbZU2@iv#CB%Q18pXJ@%3vE2vQa~S%3|Nhz8)mdm4>fUwN>THeS$;Ddj@*3hR zsA?^wbNDdcq47C(b{#r%Y%KU7PlwJ7?mi6i|3pH8Il!|0K;f>rJF=|N7x#nb+5JS< zi*CVv=(8fNMBlUNm%c!Bp5WOYBj{T29Md9)yPM_gV!&HdM*?@<1#J(We|Tku?vhrY z-lkq##Et2ctk?k0xyKNmL(&7!R~VkGuB?FP93tzIHg#BrrL$wWp&bXD6wd4l1?zE^ z`a?1ocQV3m<~hsx1H13aT))T~J-h!^*T0HgLp+xgTeys0IPGWH0Q^3<+pL(ml#kBM zEwT>HWN7AsRL|2drj7)}Vqt3~aC&7Ij??^ocAm-{TFJ>R^<(LX3RSUx|LSUx^Dd=w zo=M~!S_+i`$b^2GAQQ8T;BtEFJmjEo((=5pOXPfOVHfLi*67(C;CXh(MsohgUw`!P zSv$-4^2ibHKv~Z7`5ddxjHVfNe;TK-#;0$ff}E#3-zDBNsi5b$zPhg%^A<0A#6$`_ zhnxqVL(VfjIq!~jRzuKCBIm;Ms&F}x^K5owo)2o7m(T5cZj7l}8-f!%*sZ#|x;wf% z7Vq$i-CLD<)tA$-+>ecce%r@))rq#rdAZQYY!@Hsb`cN9v6%0qaenI(wy`O=CDnw6 z=*jN0Uxo`Yzjf=@VVm3P15J1J*=LC!d@zk4 zbbWW42kxmPOuy_Q2PXr}vdoO_CqriTuG;>w{n_iq%{JPX2hKWM0T;}5PyYHJ68*rf zf->mA#xbfe7IVor4ezT{WL9^v!6Ck^MilRPThp#$^mDogPZT`(9s+2>pV8`Pv^0I zxCH2fM>pS>XDsFMm0)v+z4J_S6l+y>-qL}hd4MWa+I;X4#veR-pHa8a$eA}}mN@u> zXCK_`AIW#}^oZvyse?uxeK(!uu~;Q~B&53rHXoG7(fdF%bLLK_r~82NM{js!v!{cc zE_-jz?7Z)&XBWqhcpgF68<;TU?c@L~dng<11v0UT%O-UL8z>y56TjEg9D1d-dNCfP z0pJ^7Jc!r;9O0PabYk$^Lpl5m#ThaZm$7RbP$t~)-J5I#_Br$LazRU;_=wXAZkcth z;}e1Be|>ifxyVQDh_;#5AMgDB`VSMW{t?i(KAdlpe>m^4=8FU54|>o%>=8?Q0jD_S zJQv*fGCgcs+m2}J#D3I76D{gsMWk<1GxmEtChxtb&zV-v7& z+oR@l1{-P^{GMnJ`8v{N?(*T>HCYPX&A#S!KmC*3+x_n-2TbRG ze-rm|-ArbdR=bX1Lv!!;I7WdI<)x`@{OY;xY;I+-`^+=WeRTWSG2mBf8kYGAWoO=n z*%G4n{xfJv=2FI1@qB7dsi&X5ygRphb_}i%TYx8zaj3ECVs{R2-R{|EA3i)g3wNy+ zW?%s6{7Zl!D<=lFZ^tv6S{wp_=diZ6ZXFv7JO@7EdFucNIP>kZR}j7CKLS5X|5%%w zOL?BobEvPQ=W3U~cd~#K08f&v>pUwFYI~}7ujCljTAL7J9$lIVTi`)gC z56U_4Z{0e}gc$BC+ELoUw%A*~20Y~4-nhCt*UgBL?__S4Fj<~hahG12j#W;XWAc?M zJ@c{rm1A9`0)TP23OWC9cu$5ulB-~eKQ%+da=toOferXHY^ff|ycWy(>|A(X?N)Zz zlCe|`Sr$m=Urszc7thzr`E2b}>1`Fwym>Ek;WPgTJmh?4rcwz!=f*6tv7DzSHHFz* zz$qfFm@!Lnvy8jlUCuEnmQg7?hO>Ak1=A2!8rKR2Y zGMU1n^cjFnV`mg@pD7dJNt7VyySZ zw||Xofj7$@E*__Tw!3(wie1huPZ{R9d?ibvD)I{0L}wOeFUE{E(I=1XKzm^M1<#w9 z;$>|{duQ(o^RpMwxxLnR;K1QZIzByi@uQEXGq`jB8at3-&U3aGqBfSfJSSu7{tV2? z4uR(wT(3gs4lwqfb3`Zhz8XZ)SJOy|IhwNUEB*Y{{{fIUrvK zF|*#IXE=O$`xt)vGcYGRq&!bbI>7VycFiWD|LeLfpCr06=>t#wba(OCjiJHTGR*Vh zad^%>+3dw#k#mkerD?ye8`!(DvUe}*7U?0MqW%ZWy?Zm2p2S{!}nD}y@JYrpW?gSN(JuP>PokE2V(SWeRQ$vMds4K zAsV|o7wBP?A_k^eU0E4h>3%$ob8yc5(4ilE1~hQfG2|z><^5y;v(C+uEj$+&Y?lCn~d)fN_Z-O$5wEb9j_un-s%z?MF-OPs)H^~?vagUu1>fnAI{XI6Xi2H5K zbGUcSHdpuG6=u|$D`IhUL6J0rnLwZFCb+uYvE7G09^MkWFiEv==&FB8j#8)ba5*-QL+I(lE`-IwI)%$=N8 z=aSCm`);_;EYS@IAG_r!=DIsK(7Q*Dj+h%SW4_9KKEuq7mvEf#zT_4BHj~boA3Vyg znPfg+=FgdC=@OE8@=rXnnZq9SNcSMSIbG1_sk51>I`{D{o~tZV4Nq#x*$^m}7&2Y=+~}eEd^Ozw`csv<)i*l%MomW~Z^8)RC@U zD>_0siJI_H!7W_Iof^dkRe^>Y*N8DAflYQ(yP7y{EB)PevnT z8h3jZbJNN~W}(&7bG?L18tNq^^1Y+fV6T>EpJl?ne}?)vp1RrLH#bg^*9*D=QS}xb zbUJm5xEg~UEnHT+S76^AXWAu1@(YJ4kyubxUYYyl*x3^=>|6%n^dKO&_!YTk(4lpr!=fi1R<6N}39UDFZ~jcSMtSYODGYDoo@ zA<#(ya(Y!_ip3BC2bT@I-U`Hw-3J%2wqB%Nh@z(zJ;LB;UnN*vITFDqbnNzwpN3 z-xGGIIy5o1Pb|WDU{I@toNZ2~LhTa9Co1!VLlCE7khU65&SF5<7n%eYHqKl{{u_@T zKA1;#zmsilt)j7aZv8Niw$Xh8v~AF`!{s8{<|FGT5HXYj z;Y2MEm>G#^37Q8N9`JCJxm3MWg0rmC-EEM?Iyz-Z5{iS|hW)g#{ybZSkat%9?-mcx z6Kd=XMH=UZ2#nrE=#W7eQ73A~Ka>&+ZE{NIi3SV(H~5~2z4Nf&3^Zf#XmfEz@SC)p zedD=Aj~>Ar%YT&DTxP{82tR0R9p@TRljQ1MXX1U+9j$0ztLSg$_Qd_8 zF8K!=F^}Uj+@7X%iL&EUVxh z$iYg@g1tDOgF@w`&l3&d{C?R3OY@?g!<1+INrPr9q8{T?bds`pE-MfArtS9MdGbD@ zFMc`1Vo*_ts^n=>YEYUFh2un=*A6^_@Mh`G98E^H2oL7z2#&Rjbi<60&PV6aYhvrB z>sd=dWq9;4j%zKnLU((ReJcc1WU8Rrqa}7%SjlkMDN#bvIEq#c zR3{c9;U&paC&~l^6*=}b4kx%lLgb(bl1<8H_f;1!kaMD7Bj|~{na3X$I@l9MVl9m3 zfy;NQC@H}PoxsU3BzlGW1${82g|QSzv^>Gga}B3NKL=2#2^n`@?Dd zGF%s>#uB1t*J&l$^6ud|F6Vj&&$BSEfB`<<)!3`x`$1RHjS#rj~ zeW`QT{``M6^n@j9mW4aSUA)xX2>Ev98t6;`>Rzq|f+i|!i zLs5B4L{;yZDd_M}YoRW%(Vc|3j^-72(cA&D?-q2@0$^n5-YLWN=+Qy4&d0QES-RH< zHH{nx3qQ=!g#afSZ~#mHMfR;N!x>v-)uud$2)hV(OvdKi`_KIWqWAnQu)$*b(VrgSAJ>PPgk( zG!t>(5bcpFwMe+G**wLYx2(s0f<*adLXrN9=JbrwS`a6`{mz?VX!cepqy%#owJK6*lNhv}N z5Sn{T^|Rmi#_dFJ{RhEtkrudX!{zT32wCVn3hFnp{EllGx^u97AqL!1j9xKXrdyIk z#|aCi#c;wvUTR5>^KuanO{IJB+=vheG@(L-+pP6{$G7n=ZNZBV2%8ShX%3_;T=4xj zV&QWE2GllD7%47e_c*yZ1r?Mj zuGaGMKMN%#IAv_9M<7LEkCRoUK) zLH8U&GxmJ($15=2_sCv$=*e!#9STjt0pHO)fOkttH#XuxMkF#x^IR`Wj0Cx3z04xx#ko@XAL>Q90m8+ z9-T|V_nhNgn7s7q|8`)9UH#Vq@XP@3`tQ=WYd3{fT!&iLL14oO8iYlRXgb-q~CLsw%=rh`ABngPR0(lVgaRw{Z~DVYy}A-CKvM&$YSr=owKv z3zUhGihyO2#bI9*2_3&WY82ZV7lx%)$X?k2uS3(2`f)^WGPu=}wDo1Ql;4B?(rSd zjL=fJdWTIHbivD4HhnO&IXl{O?qG0Vp=BnN2elX)OIiyunadb!U?t)6oZ=SjCBLIG z+3ZEf__U}e6pB$p@}Vtj3$beeSY^BxIOmPfiT(bk&iECg|8#x8iwadOlJ5+agxCWQ z9}baWJ!~Lu?|=`BYNV%gAJEn&vC?%edlwy5C>SU!%SSbIiL!9I(*^Ae*v5^P8Va`96#ds-PyQv**X69g z_-3j)_aIl$0$Rv}RK)@lTV~mfO-0doj5PNO=__fcXFqkN%0p@k&{b!#R^oh`Oorlo zlo7?j8if8GXN(7&E|G?+$5S%z6-Vt{hpkNx^a`wbGPnUX5gW@nb;{g5ag~u_ljFui zt}T8fW_vbqpD?hgL$qV45zA&ss0E7&Kp$|To24Evd+#I@+<$7oV`dDM)S#x6n%#PH zo>eP4I1apIrviEbF=5&IeEnGf)bSY_mu?QOCelB=U3TZiZ4RS4rw5QQ%ycH>g;y>eArj|h?6m_C| zXe4gw*x=LIJa7wj_KN&6lGBef&z}9*ds)VRNO(S_-QM>3+;K(VBM)fmUq(mj;TN?R z{F0}Rc5(?I8atWGXwr}4ZZ5aPuNXAyOU_}}m1a67S1jVYRW7TiV&_@M)km}b2ceLd zV%g1`Mu&%;_jt?WRvWcCSi)hQZdoag=xo=ZnHFYrr#t90j8DFxICwsPIF1VbPJyim zH>ki#X3aGl%LKzETt=JJB-9KRU>ozC)S7F|--e^AA-rK#WE`0dhkhdg9*S zqVs?FE1_QE2|4au03TyaQeWZpVsQxcMJ?421%AqrB@TD74of0ZP6k$q2R?MTB(4-f z{?Na>fbdvuLH)QwG19l8!k;jZvClxK;sn`i15!kOIN-$(aKHNp9!Y)w--J4ov-BNm zgOW>v2;bfnPUQzXgirV@iw}4gsFnf-_3RX7%aVYTB{2p07>-B{_8kEn@~O&k)hP+q z=YA4h!cnxUG#3)N$Q1IHGJH+Fy>#FcW(nASyA1KpQ^4N?le90?O`CR3tH0*?1)4g+XW@))Qqz*C}{K1VElM9_(4#E zK@Hiw#Qe9W8L-)B;y}Pi5|efjC8No%`5<|&35}pZ9kZ)32?ke4%zH_Ufr%?ILEygg zJ9Te&&+PIk%J4tCbGz=jr|Q-{b?VePr|QomorpOr z1(QYl` z34`k$!b2SZ2jaV;o!8S$GVu|M?EK?x+A}4;!|1A9 z9s`Lf8+cC05EP%3EQRzvk5VW;ecUH20FM(Mg^LFPsK~U>gxbOG!1M}cJDpr}640vJ z+nC?iyjX}vD25NuOqg_tca7k2JuB!%&M+yqj)1|}5w{=(Ra-~VBN)6D7W9W+k+p`y zkI5uK3dpJk92OqQnOHw@@Ixt>0wa9M$>(#-Wbi{n7D=QhPk|r$cog1hkQ{CeGHrhO z5rd2U$mzZdf(oh1yMMk$bh5~f6N|408H+g;%pZs6EQhSIutmw0;HEkk2Eo+gQ3qYz zW_ve4>Y$Po%c3ZUq>;5_4#ZNL(8C;fJm3zJS`BV3;xS;2cjX9?r1XhgkgtsE0VF`% z4^b5B(=WY_Wqjy40pnL)Clu6wn`~m*rGEjic$%4sJ?A(r6l1tkL>H$Nu|fa`xC3~M z)k)IvRzoDDHqfWbk9xHqSyO`_6}Y}sFMUw3F6Ex?pFv&)Y5ym>=;K$j0DX9|cS)-d zJ`qq@AqZ0VwX#|;r3rKOHlzo|ipJlho(vRrqzPS~nt$y0r)9#^Ps{PF=(9To<1Eu_iFiQ;JPVD#=*d?MF?O@B};L$yS_^Yh17-Q$8wKYHK1dP_Wsgk z4WhfTYO{NDgaA3MAmnMfYw}21)*(9G0nKEWeu{JyW#3N|x`2;C5t)GZ>BqdBl!&R& zv`p4In$^40IK$1H#J7A%XLT^$`aB-U^q51+hg1r3)}vSrE=W_B>ZMmhDyW$t+6YR;#YJ4p*5(LtJj1`0K*EE)p3))j@M|e3MB)2Pb1INPR?^fH0=E|N!-8--U4a zP(d^5T9q_yIrBaKAEjZeC1>4naUN5B)0S><$7Dl+|Hs7}LW2K)9IX~6i6or-xWJ{q zJ!WQ@9}*&%wl1V1wLq{F%-#(#-b-YCW+E5SYx%BFz)Vvg=j2`!{o_Zk{yCyuX99T# zy0nX3Ic}*IXRF$gvMaMaVzCBmq#nnu%2gHg1tyzs(N$X3b@0WO33D9$Tt3(@9#P8} z@3FA9u#Ow26}61#u4H`7G*_X)EnobKXLBp%!U(>K;c>#wK+C?rF7tkd7VogFYT7$J z#sIhlk0FjO{DjzKM%yp(!1qDF0s4qVi+p6$En+=nF;MXDmZ0ZA`ENzOyZL;)_8~Sh0XmUt*8&b=%Uag3cKtu-|6n5CD0^_xer#V3Wvc; z&yiv=?%-WuGKZaz;|sI}8j+$=9p}Wuy~>1lji;5Yi%zrrs6gR=Z}QbSH;z#LIGKItmq^8I&Cs zij)~FVrB*VXF8gWatO*qh%HZJV*iTb3|25m^#oSy7`N)|#|e(;TK=&|;$+bdTPv?n zVVeVf9&P7<*He&_v~@ZTDRBR$cMK8z)Tae2OklYVCa0CQbvR@bb{M;&C?4R`IM|f| zFB2CR$Fj1kA8=I)>3*>_QYP4|fXyuHz`$-O@2S8ffQwn-gdc*+-#~PneE*QGFzG1-jl{}y+WKjsmTx#uNj}yUP{w+f4(!*)YCA>l zUkdS+vc$y-)v$`M$@-MRVs|};-i9ECGIP=KY?YQBhMkxPjkGUxRV3jqsO>Jo0x<_M z>W|_-G91_@u9x(^0$wQ#AfqZpQ;#J=h!T0Y~_HbJqE_@^V#lh${Xuy+!yG29^M$ z&`@KrTZN7$quBm&;HJSyV@J7JV>8A^l^Kh%=-)B9yyAgdp!l(VRvrika(*p5M$Q@W0vFQT*%M!kNRA8)mIsilG#imVQ#OQwL}Qf)mm@)zw4YmY zb;664+=5ZWEf-dIIKH5$twKXr!%qOI%#RROHOwPwBV1sv1yEiDOj))qlxOYWV%2^Y zN@~-*{SX4ATF1NZ`N_`_z2{Wq=_;6Kibu?M=Fwiy(_Oc` z`nyE${5@QZxh=BtY+uVp5rP7qabv-t?p^@|6KPEBbI?rDiK0vb6<$V^mI9H@!uB%z zL$3u&q}4FFjI$CE^3d{zi?Sh`haqkyA0kul8|Uh*aXJ)+-vmt@78`lF`sVw%&g ziE0^GsNRyh0#;t3$~RK-ks?&4?F=*KO%n0eK6=)u)MAFm)MK0tb_U;!3hgkbG{yxM z*wVHRcvp2EHA$b#ig2@dIAj5in}XZest!NV@F1V=_0 zdkBr|xj+ksE>v}knF%XtSXac^@dVfG9KQ8=V0Zcy!Ny)@Sa*o90eI)_%*A1_;=v9ekF^Ub=+1 z$peAq7LSNsL^2rFU%7DcPG+8%@dm>s1i6zoPCFYhqaA@h*18kH zuTPYvFTunwGCw^EWyXdGiFEjgs#BPpz-w{SGSTe%*FY{vi8IIt>Wp0*xZMm|87HYE zSRA}0EAo@Q@GkK9`20A)u0>=Jq%FOV{5;A%ZCZ|xdg2b&R5Jn!j3ks2>p2svVN%aO z`hPS1E$5zh8hgVjFBcVEMSJ)io7QIJ7QAeBH++2YyJBO~R%~(WZ zI$jWKL-fNqGL6Y*W*$}aIG2VCT}a|MOl)ncV~{|MA0Xquylwd;Hf{Nl0vtW=-blgk zkR1+9*inUzH&ovmFQ@KVlZ0tJ?WP@Vu%5p2wL9OLJOgmWDRgT2Z4R_$fRpeUiU3r>n@||hHhE^s$XHlrLQZ5tQL5ny= z1}yb7#RXZsVXg;X;p=>tqC~zh3J*)3-ntV);j1A$@mjFyPx{-#{II|^(ds2mZVTno zWbHXM9_evNC@W6Q_Oyk?XmXZGBi_;593y2e_jU~ zGvCKWX=g|Xr@iNc(hkXpy)3Nikn$0v$nOs9lwP(trqU7@(hRPc;jl z6mTV+f|$GozG%AgXTY#0M7rXjs#&LM=d0I@kuJkZC;H6yChwv6U&WA6)4h&9g6C8; z#pA6HBLZS9GlZ?W2E83cgR$Q7zpAmCh~&f1beiK{bSoRvM;L5{I2g;|83%_ zo&a=8SBr^Vgz-d7crJ1*+&_+7>@1Jq-h=bfCTYX0Cumu0NdXtr@|l;}PZ(_{x?r)5 z^GNiO7+wlr(x$1J^ry#u@>-&AeoOLmuBfmWVf$a-VV)SZR~PBp0jLTw`XWEYBPdm> zXVO%0fG)SnAFB!!RjwpNOEgTp7Apo;5=Z6P^u!E?R`B~-t_M-P;UU170R#@?>2TAI zP8+~;!wfD+gUE;znUBCJHq3GjRzZ1k71!IFOcEoftyp42}l297#*~ z3LYTzQPqjA{+*A#ige*)IJJZbRy60KbeXxbZ8KATmM`hcqci!kGnhXZHM(QXZRaVM zr~EV{pb)rJwizo#uja&YL1u?};AZ@2%qHLf2q3eB9WW8#6rKib00m)qu@56aMY_|Z z45=dRl|IUK1r7(c@!0urqS!~dQ=+y`9tjd7%31L_JiPhm{`M~rz4PBBv&<#uME8eX z0BJy$zoZ>AE+^p;G+pFbSGx^yG{Pbn%^_%bq=}6uEP%n0HQ6v*EGi$VQB1bQGRnpy zVhQ20+=VR_Gb5E?jP2nyX0T6iUSjm*%O(%jdm#&4Cp#sS>j{Quq>dwCHUdkWMuJ@z z8_g5y&1N2>#=ROfgFNK6;;+B!fBreq%f1$Rt{U*+;e1q@KIllf2`Y2iX<=4vQ7JF->C*w8^!Kt@c$}dxLc!2H{+X{=*%}iNY|U zcXkmQ@=w5x3#-}nrx1X#bcY}ULGvFDU2YTY#P^9n$bOVP zdlG5+0BnS5nvPr>UWo5lG$X^5yJl)iFE&3p6IbX8S9gAa^OVt){2S#>%&rjB5V^%M zX1%OsVqi2jDT%>e2c40^$aa%D|HcP-H*st~LT`g30sQFbcw1_|?f_zJ3ECj#Cu+$9 zk%Iu1p+aNr9V^N_B#MQ{wFfYge*Qhb{=bO+K~|L-ERmbEOyKc{B93q@kUTt0iLPPp z9AU<2VA3CFrx(Y}r4HlifSYcPDJ#7KU)GWMq-VR-8(|uQn-?+FAGIFhU@CPk+@|lt z$&CUioO#a0eF(eNX()ef2Q_Z5QaM>afO>mEq$NCoPsbd_v6gWnO553m8Dod~Cc;w2 z#i}vUUAO-J9YmM>byfsnCqrynS;c7;xmnRjlvf(d6g-u+Q!l1i-F|{hgxEqm(y`aZ z{AO#ul{e#ra4*#njG1gY2hD&sMOncXiEWVRP*WM}aaYSHZZIrRIv%w~B1f|LZea$b zUNZDU_LbtN19JOuyoG_1S`Fz^37-nzoglq4QFQ);?8xI?zd?F%nU*h7s#ePvW?I|+ zmFTxVh5Bzz+BdDNY}>}VrnYf+jcSDNHE*5Rlx#}wm-06!jaqTy_V4Ez&fKmE9nX==3_KUgZ&@28y;+iJDb<*Uzo_MwE88onBR_k&39-ic#U z!Z8C{NvOkR;allTOH21oYz209V&|rQsvfLugC8g4WT&Bw=SY`I{OHVcq<1DdY2@Iv z*m#g?RVvl4C)&6%Ul{rNKYW?!KQ98+*49$W^Ixr%KZTFg;=8t6i<_1%I1hA$CvXLOecE+&)@dCQmK(7%M*-0UB<)QJ{(t2x23xu zM7kWlo4)#c<|_?32hR($m5U~1B_(*iifUaz;By=sli#^X>Nh(JIS;|bJjF>PK{wUd zr->4}sD?a)g;zfJ8!sn1;j^IHy7hsFS5~(2Q|=_@Cl`4E^L%<@Q)5%(eq^T2DSsg6 z_;v4roaf5!Y>c$I#(7(d)JU#hhMe!-4LL8(Qtfo9+a9S((!gIVJl`#4^u8+(*u0qs z?b|8+K7DJsIE~+WHUEs@d7;qHb4v~J&27BMIwN1Yep%#v;FEvw=GPOQBYPBYrG$Bo zRN#4ua^QJ!6LTORcrK+enI4TY^L};~`oG z{oQ+SNM>h~B+q3Mj|M-G8gTmTu(l1J zE|BkxXK6^0oCir1w_467D)0M6qM!KvSH6R2;^B;*=;W=-OkWnMyn9c;m8#`(_+~kN zW7a2?treZi=?l2~u(alDDE|7_siB5wZTrF-sFciZ6+uomE!`m+one22M{Dq$E0t@6 zDlzQtemOnsvG;#hDqcfivEzDI*DI9zMkPsipN+a3NAGOcYQOkCq8*?D@+|4L9!zVXma^#-(g`S3iKeZ&#vJo-IaWa-9-9tveJ&y#w+(b&wT z?A*Dj@q@GmXP>?FDQG}eThz$o7$AIMDnKIGlBOl3k2|jK(mI9%oO44QzqT zZUxWLB$=G=-%nkhCsMTlePW*4G5KJ-mmudb-ya$Jwakw@jbC=+Bwa4Ubw?V!$nEib zZJEzjR>G2BP=l+U{^$dZ4$)_B54q(^saH;;v9y$>>pPD=8tL2~wS{?}c;#6m)20Tq z&LdF3RNL=9>nzad?>>kYYNT~Iy-^GGX_QgY3ttH8?R&P0eU5apf*O^UL6dBS9zW$2 zNhheor)RS|gqp8@_NN_WF@7qgl7?+o5=#I~SXr^%X}du4Ti4yp8vb9eOLGHC+^f@a zsuN4yGz;bg(x;yep0jPlX|^#onIj~p(C7=;LglpnZfBWW8-mREW#)NE1*>HU-}_<+ z>R#|-Es21e##ZR@YBejf(by$r3hg?EpcyjA$w-LDU0HG6y4T8;3em%*%il!l_qkH| z$>Y1pMx&ICesuO99DQ_1ZP{`J_#9woH$~7eXUQAYmCEvita(!9Q42h0z}8(vFMJ`6 z+xJwud4t|6P2;#!LGxBmK^p#1t@P~Kj4qA0txM?Rd64rIR#vj86Vc&ie9O?juk&7_ z556_SGTeyKD}x@-nGswa*#LQw^DfMa>~d>%dOWAoue&WIR^TE)&PjM406;JRI6Z{;nZEwCm2HyM}h%HL#&bLpRghU6=Sf{ZSWs8n{#4 z$p|u+4qU=NG&ivEveL`HO?0cgdw#Q-8&E!X;hjU?3~U(k%;LGbigf2mcMf%icID=B z7v6m5&0HcEF@%D0ePC0kdkQbUev-I5;`a7wE2A9J+2iKRLJg7#TKC{EpcJ?Y+4R4UTEO!h< zmX4K)@viBlY)Bl^{3D}TO0#-;f%8s=MTv6gANJB3^;08cZ@Q=md&i`CS5vJI@I+^j zZ~8A8U-W0u8ODEUu|+;=NAxAL_$6P!DwQvQ22UEBy@thb@8Hkebn4wifADP-u^7dR zESzRLdA*AdSgd%K@vTKpM?Nyq$l~@U?&Lw;r2h0*&M=GAIm=M&w|l-o%sRPX7uAXHA9*YBokd}nQI`k8rK)h zHnPrj3Q9@%FcW@Wu=7R_gnIv+w?gzH{%x z&z-&Pw%nfC8th}l?H^41pKfGJx|SUBeWfO5ue(h>teL)=RJO8L*$8$uY;CEJL|NE= zEM>SxEm>xK9k;z8$A6ztszOn+ISKao+WHGta^4sGv~>rwU3ae`!NA(`1v2@9m@Uz( zA9((UiT?I&8BGQ)#cof@P>HRNi%iDtrJtVxb6 zUsnHMIQfWu zZRC4y;nd~ap1`}o|0epcA283C-~s6GGN)P21J7v>yJV%zVqDGh{5mF z1s7Co19L<~-`^||{~m<;*ZLUUYmfB>eLN38wF`vjLC!yP!(0A>O~S#9CW96X3}#EI z;IC^mZoCm69yUkpEAVsDVFhN=y@7YX_tSjH{n4Ld)16X-9$=o=ue;4}JCNu5B;weW zbK!Y_TCL2?t#{=-4GlrgSJ_%w{diKjOppF}J6Y z`p>`q%;iMC`pvZzho!$Evf6}kLCLp|-nYC5sm28O2^0(Y4c;?`_4@tQN*Y2Do-d^y zzuLY%NhCtddH3we^ubDPsnG3$4Eno}bEIZ*0MAcC`DM}EfIjz_&PUnnRI?mh=RrII z{;kh_H{0f)t*jvc$oq@`5TXd6eQxqFb*gD>ce>Y-Qcj(Do}Z|tA@PJY2=hF!RKh(I z+xP%E-@g1;X})upi~V(r{wqzGSh+Z8-8e=+&#%J)Wj=GDE9XD;oOfXF*6*(+ zD5Ssl$}ZhY!oB3)@>j&bQ=ahWF2RYAIdpr+v?s1~FQ;_q7dA@x+Y(0TmYqhn# z66D;_tPNWKq?6)X9+l?;nYLLUX)ozyb}gPE9nZEL_s_raiJv1n;`KQDTz5|9bH}B5 zlYM2+=XX&fDQQ4YZ_@BzVsYiLHSC(jjj8Vq}Lf3If@Oo8tzMZ ze%R0<^HsL?&N(5RW!Dc&Biuw^k&iv?VIEw6{d2l;@=`5#I$`}I@9R&_A5MGzEQ@|y_rJkrna%1<9AOTqvCV=v~N!nC!gzK zi9Yy29AynzDcre{oPBn>`(S&_6GC3n&k{_V0@NN6G(5#qMpL@Z6OVw53NI<@1nVr_@}EeB&t0(aHrou zlXJ8|H0b~R)IYwL=vf~|`lP!qx%rZtH_mOm@aDVl5ziriXA$&lZ=Q(AUuVc0+A!qj z20Fk?nd(ZJyfL0pL%TK(NnYFw@p;7a?;g69s<$h|#!p6^yqcRs6#QnRK2Oy{E(Gl^ zz6}j*yhP&gouej)IvXzp%}Mm$>fA}U#~UxXIVTTtWo}O5?R>+dCNW>&r4H*ET=5hGi;D+vEXT%0CDz`HMgz6#vxQ%VV9c~>i>dV5{(>V#9`tz>=)7~Dn`Cn9s+S{GHH}?h5H_1kx^Tu~jM|;H87xCJF z%%M&q9FIL45Z{jckQqcgd^>SD6gQ*!CcVm#3Y(akMNTPS961w3Xlg585Gz0a0wes; zQ54UcMG27)jm(g0S|7z`aVFw2qeY-?WX>{+vTGIK3-Uzk4P>*R9?z|W&NU+D5fwa8 zH~H;t!dn;u{qc5$zj45;R)PxKf*__{0V2GDC7YAUMbJd!h_MR|N<{p;kj20&w8Muq zqu4k}@c_{4khdA~jw5bw5zlXi*tev~>6on|JaSDPG|x zY?(=O7Nt&E8dhTE@#%ct@!ho=!KMq5rl|s9KN*#$k1`Ga-(by{RLFZ8gFs9w*}eh= zHz&2j+va$2U5%WB+oW$|GAW_WMAvx1tS?}zBYlIU4>Xy9kvJZ;!J%AngC|P z#;$6t>6ptOrLYeMSFz1apiE1Ma9_?jHjGM2V|dEXJX3g%*~O@(tQmggyq#M*ayQuz z{3kAWdM%rT)v4;RCtn#by3i6c#Y2%#d6**>EklEj3yEVa32TBt)T?&mbb|4$bvxW8 z_UgcxHr`8;t)!K9)ZyXV;;mkW1(@ti5@B;!&;6l_#+WM3&=Ks_I&6nD8Y*o2RfzZF z^2>Q_=m+Zt(%Kxvs*)>quV-~~NIdYm;WsQ%{9jG5!D(j07<)Pd7n~o|1%1u(rAJx# zu&FR)U;9bVXyXRKN#tBm7GfO--44-bktch#cXC5!+LXEiYQ2IgO#^8-OIAzlMlyx> zjGGT76 zP8Piz-CDB^U(hT{)SgzlGB(krwj~JsKR8>$S2}m&{0q;Z;q&A*D?J%Vic$NEG2BdlBui|8 zA9T<)^VqFy@ZwCj`mya1i@IvD0oiG?ineuX+hQJ#*}}LPQ&Z8|+kBLnN{#_oEaS*D*-!wocnw8&{mk(v620|*pk=IvuVd)_EJWm}`)2M46XuHfPRYEfP!^2JCPa)WQ{_ia}eEcgi`*4MO!}l{2i1 zxWz6f&wi=%*jShKgLT-@g7twfwAt{K{Xqe-_pE!EUSY63gxxS7=i!W1Sf@)MSDKqO zx#K62n>!#ZM&$Ja5RL51&0VCIV+;d;?Fq$V>WhE*>X(ywP@>*!3gmsB-jA;^QZzLZ zMdeOoPR-9u9t(vId0jvK)jj#_~6Q5uC>L;8~n<| zk;)gb52F={kZPs*F(A~5$53O=rnzIRV6Ms2o1Y|!5=#B`0+gp zIORukF%NXELMgYHH`dGJLpUe-RBcEf7n^=+*-#k4DQYt^UPRE4(r>a@*(jaSFckGX zx0s5dspb135gYSu9;4MDldG6}P}m-+YUgbkF#(uGqpBkHkiS(-w!K|n*Ae*Dr#9s^ zOYJd`G_o^0e{k`i5$*mAF0)}l*pWDn?4lQHg8l%VWQTtf6jd7>W0K(OXv7$=l6bJ3 zLwAXg8aij*%a)qpzQa*0%Wy3VAYTK)_7;1zT5RefN?+65m6oud8cOtmvWbwMl4^%GneQATvdJ zfD5!0M^zfoP)HRsz9~W^0kmjZc?7xZn4Ae@rqq*!$EBG3TEuEtQ%2Ms?*pU_643|< zbv%iOxVEwKmqb_ojO3m1c)VSR@*=lo#*DC~JWQ%-9J73G8YXjO-Lar<;Uf!N>KGd) z@xqMpV_HmiY`PU)I3Tyvh~P*MA?z)0={S6&dM?&rFUdAx-eREEXfjhqqpE3Ce2UAd zauunH&l1cD!-H_+7@ozge!!;}!rawN*k#LSSeI^TXz|DD6>r&p_|M;Z7STl)3jrI0 z_9Y)741i79jltR`XS;@6TY`a}vlMbS+WOnUa=Y*@=(fPB3=)ZPpF{;&y}*CbB=Nwaa(qzE*di- z060M*<#6zle2O5{;K{+-{??U~tWYJQ?tqB@>2N3F-9>Zwf!`q_c3j znEqt@i{3)?e5?Q>-%=wibV_S$Bf0|Ij9EIFAFtGgEq8oxRGN!nWiB=K&;*W)(-vc) zMF7|PX~HhBkn}NbKTYycDRB0l;nc`uSkzf6Vh@xXIHrMV?ja{+>RJ>x^vht(*P)a6 zrkRCV2$KF(0dDY=fjA#MaOp=oyr!4(ee7%A_O(ACy63`hm8FPfll@L5`%O&ISD7Y= zXv|)?4SqKR^H2@4)aMszlDmK%nj!7X@N12k*Vx^U@5w$@9F1=P`?Pkp$X5F(Tt_L& zxB;Y&O#2+Z`l1k$=UznBCfC~eu`w#w$8=qxy`=q-1NJHs>F_Du@p=Ha7LmdN|1E~a z`WWH}R>Sa{e)BS-5Bx`<@N|f=748Gdg2u#N#GFStdALC#vf^55JhS7!@rqUKTUt!P zSsjcDVa2{o2K zxGTsWMc_hQRF)Ig!2fhdp~&*B=;{SK77w$~kGpF}V&=ChGqZ9{TR`#K6k)P{tyQgy*ykSeB(!JA;flck35FaSPEYFO+Mr5?e9@+T4I= z8^2X*V*Mv+pdHij$hZ!SitO_Yw@Oo4DqJ(Fn;6)vj{Fp^*6rnRi<*NATtuYbA7O1| zhh$v9HikF-#%U4`wf!J7z73QF zW)~fz)t+W1L8cJ|@#J@$fjKr7MT51Y9=bm-ihE3Mv8&1Th~R;GD)YTQj~iN#Sv$Tx z>%q}bJJt`LFO8>TjOR*SZfA^~al>0u72Fl8=um3`|2Q=54+&3P>OBsjUfqfYh*LpH zfA+q5&mYn8?|1kj1;KcfOlTa;&jd<`P*NR+MfXWvxI!2%7#}Xg8wmOvH_UtRtRocg z-REVDF+OB+xC62wQ~C#q;C?0xizt=B?urG}=OD1=(bfm7kp`){Bgme(@Gf7zYUImz zP;|!?@PG0$3Z|USOJ;eh$$H3);5sniGl(WbSTB-6I+Px`klt2KM&`o_7bx>Zgyu_` znX(dX8a~R!__{)4IQ~~pw}ru!9m#5qK>z3>?$;uIXprWAY)HiwhgBj1r^b=|)$sy` zQ`^p;+(&e)yayecB$mzkIUQ#f0%X#%-Hu5D%?Fz^R@u|o&9ozN%xNea0auP`8dTH+RBlsPsh^^oOR)T()My270fP(L`v_ZD@gACb^d7wkz_aZRD%RjMZY{jCG!a6 zt}p%Bd#?QaYRnS>nH&n>C8mhj%mNPMg6bZk$1N^Ddhlxz0tf9q2Spwf+*(8cdoaWq z|F-frqSwo}&oWrmH69rb=tY2xvrm--!juX%btz_5$+rLGX#$5srcPZsT>`rbQ0EwN zTaeYMe8e3@XMJ5R#iBqF#pcu`@;WN>KZQxSm!BfjnDd8>2ufph?azKH3Be*T!H=ahJBa^Zq z5#u2ib71@sa))WOIE@`BsOliU%JrnyWkW0)ER70CX@r;?_0U%H!;=g{czMB|@(*8e4XS^s2i zlfDsWdtY&FgF-kI@5Tz{;AMiBUFe;HnzFv`IX-8ocCaGIU$kYYE zNNv_W=#LNFTEwG(Uv+X2@$>)Z_0J-D-Mw;RR9m&7Q&N#N8s8iNgq&S*3wR){oCy-_ zUL84>G*iS{98U^ar2JUYX-@Pfp^-FY2!J_xeGZT8R zLHgo9`a@QrFL)=itIl)0t4G3{v`oBf zffX)IJulgj!xQ>I?;bYg(Xbwr;#muEPpA*t>`Y-y(pJh(KXkOJ#_I(9T10q8gV3QC zGvwsIANg0JSN(;cV`{nzn0cTvamubw1Z?()*RjO=IBLfQ~0-TXFAkBR4+(E*Zlq1V6?ZnoSP5XUMATck`#iQAxWmAB z7bzXP3U^kMi#&e3gq<*JtFT+=ZOcm7(o&nEK^_$*xd};Kh4ou;TJy{*bdLHpN~@cC z(%>E$A&>b)L8_b9G4=IqK-nx+wu8Sybk1=B9bq?x^pQ05L<*Sy$-s(w3b4vR7P<2v zu7oL)P*6zqY2LL;Sj#fMEGd5(_;BPLXods%^OQm=rav6mwFm)WjX=~s-XHn!OV~I0 zlhZLXqjfvTZiFd{b}tLSc2iAoJ#eSjEE)ve7HDS)fcO1pB(0f&r24s>716^X<+^9< z2U3B~PEx-umeu)OVHjtWg^O56mc@f-=39Ny7eD<=U|kMi_+Sl&30C1O z!ZnU^u7L3eGvB#GQ{hX;b(j8yJ0X9#{B(l}6_VP7gBj+>m+4&^N#6;9opB_cW8#k= zTfCa+JIjJRn-x$z3PL+FCXI(jv>RjyRz?-^)-JYBpx5THC{|-XhRjh<_lI|wU67E< z5T!4?$W@wgEVFs$6O;=Y080_X^+W(nDeW-Gh`9K!FYG7Jqrt2tvmlH-!E}mTkKjav zvb4lq0%+Z2mi)`te~pK>Q$7g{+aYCZ7UW`IE()>*LqT|jkpT$c#lYd5XvyGdI*`P& zYy-dsO{-UyVRJGKdoeOLxX|A>gr7eB4FD2*;2_}EoImZb`Y{+V$$AfG8<*(R=}FFjGPuCzRamC)*g(Wl?S zW9a#EP0fg6y*k*w%o6Xie0m`jc6mQj)1`(yi>Y-MT>_WpY%~V$En3hU2{VAJGx(XJ z$=IPGNEPOA9s9&Y+^%H@SAj`5?V2$CN!BHKuHZskfKqd~o`G8xWL%FR!WzJZACX(s zIz+@N_wMJgZux51V*xCJepUJ{EVd_(h^T5uPEQ4~l>$?}gNC`rp|CkUI1o=?NthR% z_Hyk-ddn1akjCetTM_BPOZbAwtZ1M-Gnn&^+3B>3!y!y#Egxp4)N#kTx_c>^%fnSY z9hw_yFUJsye`Wv#I1;OaK8kH6PI&L{zJlm;ZoEGmrOqH7#<4F3k`X z%eO}HbgcZTfBCyCOZM54-Fe{_YXdC&R$*ZaxlR$)nH=E)okea#BPPOEVTNbIcN0)H zw!Vq;RFqW_Y{Z`jF|ftM%`{r1DlAWmpjD_INeoBHlweUEj$*i~(=rxY!Za02 z^Q6V&sC2FZZ5-mcS92 zw4Dp`i@O@UPF6wpSo`>E&!03L&~mF0kK;Zf#2J%t;?oPPA`nXiOvxq4QA_Ky@B9BQ ze<{(cJ}#Hk2;W1gc^MS7Hoj@*I3KDJwSC1(jhJK{@7GN-D@J{uDKEq~rmJ9;-adf7 z#l0kAwW}i4q|amf5mZH6?QjzVw#wc)c%vxPg@3CS9kfNZrC$JZ=dg;aGzZk67KcLX z#qBUg2epsV@gzL!x&trAU_)C;Zg4ldpBB{N&*ZA!Q>m6llimcr2~s zgwlc=3z7=#@g6aj7Ou{X3CSGAUcA6f#zcf2A%{Z9T(?sR zfOo~hZy>oA%7@#$Me$5j!3jkjqvW0S(Ao~iisMp{u%@W3m126(Cq(NFL@@5KUQR3y z(4YL@<0V^5vc(|I z%=?bFJEU=)T#UzKycHoy`O`Ta0iin(d1)fw6W1a^QA6apWk~do!&Rw2wqOWilaY&~ zyKceD5yB;apKQy5k1(Tt{+|2JB0BA7aLzv9Xj5`ncr6ys8Fua?16FtlZ+B#OVQDB^ zi117SGt5b!W0R#L?18c2(F9Xz53}O_x3N`D6IrZawMw(65N{B2!-i^Z3J7fZDqy=b zzW-!hK{Kscw#3J!c(qXHw32mGpE&a;|JthGeVD05&K9lu-iD|xa#gp+M#v_6QUd0< zBxNxXt;VHr6g>jwiU?A;A^sfqnv~NHM}sf{f(6#dJRVy`VcHs`!&pd!_be<3(PU2S zc#N3k_hX0MgMxipHB2_#Ji>V@nb6R62yW!d=lQe6%^3gf&T%o_%4Yba@or?8=va!& z+Rd{^Pq}n*Uf!30LgvKWDCZg+n_(NnN3j;^$F(TspMaNyk&5X2g;=F)7qKa^w}r?= zR?kQf*N&#|h^9ipSzhI+;3)r5E~Ad!*tiJW?FVTi0cJ=l=CeyrF+8cZ>~cMp|2{iy zS{#cDsIc=svM1lNhv>8N?m5e#ykY`iL4QA#>QttP#<0yC*cc+$8o#m}o#r;cIiG5C z-WF!-HI#`G{+qbXgmz(pw$GShQE*=W3lmO-8hI=SXhM;omLCF&Yo;s`1oBZ?tBC1~ z6vCwdzAwG*z^z3vUktn$Lw`5-jkgnR`gwTyY2%*AmSL*KXR0KlyHJQxISyeq^D*WWEOTZr=ZSUB zkBzWDS@ar9G{)GR86!K)jpkSlYo};t1c63N&AQ5M7(F&q1I$cgj3?v$;5j6%XGsi3 zXQ9_Ky@Fdu+`=11n3P+!s;4|EavEV=IzBC}*BI*^r2A&z33885(K3IpDb8&F2K)WF z6XlxYtDbZLL2N}G<|O&^3|-4!lRk#eO{`BL@Mv4e0&*D(LEM89ZfQqDiy40_ojn)JFkqIQO>YcPug_{PK)7mSZc>3wTD0C z;BOVh%eSB!QJAWp4D`qPUpe z7#7WYEUcDsUssX6E;en;?Z6)FsMXjyz%ajbq}yIfj@UxEhwT%bjHxJ|559@u)h_Klf7PUH}e~*`Tq11+p(- zv?B<#+|a?P7g)pr`wrDHTtKm0Z29`_Y~~D?L)6L<%$8!L7THZ0xAEn%eS?!8=5=e% zj??H^T38SCTEu#SY!Y4|H6Y6H%+IzP-u|ru(FK9&HjQz!CV1H*P zh6R`gvNut@fjU`8pPyCnynK4p%|jJTvZnBKhGSKP5`V&J7acoLjE}T@5%b=fj-jej zeR~aKM_F&Q#3H#4qV#44X`m(TYP)pn9bDHqAgFV(V@}}utA&w~KfLt;qUGB~X03`M z=4hCSQ~5c)0O2~JNpDk%&Z*4D%;=UBV?p3Z=G9E(!Uoy7QOGb!J4HgKxeXT_It=^# z)81BSK7S3wjt74+I2oHw?z5ww@=zS!O&PqVj4Z@{sqB*Na|T`v zw$D&+m z0lTi%$!b`X8mH2vuC$0hsTpPhefVRF{hxoo3)h;l9qp>Dnk}e_&9`Gh9w<3a<&5 ztstHuz@pjiJGn_ud%}8W<$TNk&bMwPx?a9znF2Vyi}}gk%dk6Bl1jO!kI1u{)@?1y!7~Ay(~fW-<)At=Mui;?9?b@rk*4n0)&@m7iqcGx(b8;r zgvzW;S?l!G7|e1wWi74wj)Ev3Tw13^u5sq8H*TtI5XQ3EkVN)#^#oC^gPaYKc;%#>S+PY~6$M zx9&_fm3MEh;k&~%e7QBLZM>g-fbwpX+n}UcDlOdt%ALD$Oiu6BOsT?+pPnpER&O(d zg;BvxDup)}m0GT4bUirOH{I6@^jED0p3_7^33z_;@Gria=&L^&uIn?ZmE@O$+;`|WNt0l*k~lv_?#|Pb~d^^ zPg0&Y8s3+8pG&tSrCODFp2#7N5!8Xro?x)u*7DjP42@JMEIw-7Xp2y)^ z!U0MZt4fgbdseQy?dIVtUqkdghYPtJtXi5_dM+q;iiNbi zisuQ5oRb-R{(>NytW{*r`=GG07O{SypXaq)pGPON~YY-_PdOTVC0kByk-ywcO?|{r6|1#0Du0H+>cJIF=7nUKhJ(>p}EF}+J zhO<(G8oAtgtdWR>=jF!!K({ro|0>Nwo0hT^@lbj0xm3)F;@<=%x?I1wJR1b0jOw-A<>` zI1j6*co-}-rnhccNxsb*X#e-htT=?57%|J;acol~OF_=}?}wao-V&rd$a%7yY!SC$jpSc%o82cp#{zUmLC7R-9yUS14zZJ)Ty%P<)9PnjpHN$E#Y&KB^Jegz z%s)M!{k}|}a|$MQIi&%7?7D9H+gV8ltX=T?0)-P`#2@c||LC&F9^PfSS1ab2Kd+5YIJJ{1t zzrA~MUzXr}_x2Up<$0kja-Krt`Vb&L9peP#T%gk9Ipu?#QxFPO_=M;Rmh;=rYGyp| z>K1}df960=zOkUK~{sgZ0L*8}s&|ltliJ3d8Gte2j z5;TnNAgHT$@rZa7%Ueh7nmesi?92@uMRyMQp*ndh%UPT7rqjiMe=8jM6|g5>g`N}-aypy zSPtqv-dWbZ5P7P0q_Dl)5sE)!WY8>b_ei(TFlY3oo8+5*d&KEx)Wp|xRahSV1^(j( zWIPe*k;aX1dqDW{gNuVmb=BU%z^_HD7tpdvPzsS|h-_pjDnwS3_ctMG8!nDFqe?VR zQ4=&3&`5SnucZh1v53A`QhXF~wt(k!l%*{u-YnVlUXl)*l;B+?p z;o|rXZtkeET?^viOqU$gvl^dHn4PW9X6aG_3l^#KPi>t4R;t~P^lrg?ZZoc(viZ5M zy_fa*zQ0HPllxb8Q5z%czM&P@X&^G5-?D$UG2Pjdd+-Mjb5BT;WNTyV&f^>9GFzIn zo#c&gL^-)6S1p#38e7|be{tVelHHBQo;^!REqVAPd{|^0LN48!9Z-KZR>*P z^?I+4c%pC;c%H~?Z!iTn!||T};^*G^@Hc*o=sMYBfg52L=JF{@hE}$*oO6=pyxw4* zQ}X?XCK3S4c^-1krOzfwQB-~|m%Ho@v#|G_+h4r*AE$ShN_@RB`tRF*{YEL7z5mAU zq@I+%j9SI@VlkK7DK%_O3&ErE{6Mw`^YrAC*Px#+SXIG{=hv}YSQDNHITxP))8@@L zzw5fQx#tcC>Xns*Sk9M{p$BJ4rE<=Cz`cf&ZFe65H$FKzUt!-R<#_`U70+I0znoWI zKrH9n9uuSg?wRLMALpK1YLt_noP+22+7HX~iIdmroTmp69bXO0q7Co82tr{}&Di|A zpe2ud-&a`1FZl+ZK&cyR`y2cAS)rj4jwL=;Dz)UcsF@cao~^-Y~9-4#&rAkZ{hL!0*R_KeZChtc|?8w=+NH| zPakAnVGn|6l`n#>$n4(2Z15{KU8=vpe&B4tHfp)XzOuD)5@s3r*lN|1(sD?%_F~)e z)iSFbvfu!D-BHAnj9L|+ID#>m-FcF`2a}F<&9{=T^C%j?qcbf9 zfm@LCluB9)xFw11o?4~9VteR|+!zT~3Gg__e;3@HByHS%A3@Ilf5-DjlJnN}qYt?5 zLx`L+&u@O{ZQmi`cN=$Td45V0dUJhX8?U4MgxodnfS#!DPkLK`GT1EmrLHeJ6)-4X8CB z`h%)%K(KnPf~}=0wj59?>aAj{mKKrLpH<7R#mgTlKP__p>$}$MefBv??nBXguKd2q z*?VTqW6!Kvv*x*HZ)7^_nG-qmkB@y8%o=v?ESMW?>ywxzezXRdZ!ffZz=0aEZ@zwh zI|8;O=T>i%GOGY|K#RW}w%pDJ{4w`R{0=I2iwbJz)g+6g2(;q(eS-Jn4dAtPE782!_18HoC zpIpM#tcdZi!g}Nc$ zY2_=$WZuB@@3xx4(v7F;RcNF$*O$Z%4r$?CQ5siHAcgq?)7Y`+^vKzXk6R=vJ zi=0ykx3kVoN^;)ES^mo}_H�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%0D7V-nU;WhhR`;O_nQ-2BOk{YJ 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�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Ï&Hl|m2p?)b`eMRHzw<$TCvS|CAO-VY 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
    YrUJVuvqj_Ykghxk(<@4H$9eqCTDOJ+@V2V z1pKY^a)5NXIBjghfXOeA&AXlO|D zrAe9lB6}RwCY~E)ep+@hnblC|ca8ykGe0L;qsi%~>(+~itCmtT3E{s1Lcq_JtXajr zNh=u$L%A>x=olKX8^n;7OO8TZgh8zvJri|*{n>H5DLkXG0J_Dql|JpK#~tLFVz{@9 zo8!>3qfT`kfpfY-!*>!fMdAl18&iIq`FTbL^soW~z|_4dha=N08DJuct97RfXNbxE z*U{$nR_B-3dZ>ziYY;?4M`;BtBtfNNMii7!4X<@{y?FWh_M|TgM;mapq>oG{gg7UO zMZ^k-q{En=y6uiUIX#$5NjZSMLz5U!DwKiSj)tyh~Q-4|^4IVYzr>ldP#P8Nf8w={L&Wx3ng{ z&wOPcb$#L}{VD9l=B(@1r3QQF*G>{B#5I4(2l1gFGM4(&&>X*W7la=pa|9=?hKpr_ z{#0CkWAhw*vu%YPoOoU1diT@+a*x=R?+Cd;N0KqL8;}#4Oh)B zJ~93db1Zyx_QxgbrvbZP)>3VP_7uT6e}SptvgfVSh?02%F?tOSp`%_EcINfx3jw@(zmekVzy{@i zj;jCr&HyWT#7LtO9B9%pw?y6@fd>ivV;MKXqsP{2%9IqZO^T+Aem(J~ePfel-(nkS z_kvb>e@`3NM(9|i_2`qWj%4iWQ1O$4#2=RgjdQ<>r%w!Q_zgTho4zJ1$KKhK(rfpv2V1U zG)P3>UY}wh8iBb9{=A`D+Cc>z0c4_8~cb4*2V@K09yWEF2*v?nf{G zFqb@tEhTpf6kRBWVx*)j5yw%%jD{qOIGKv{Z{du4*ZrLC)UC zE<1?63eo-hbAPE-L#vdtv-p*4@|3{}-Jm_E<5Ai#H6{eV`~)9;&#MFX@8;BO)6*N= zL$IZ^-r~Nq{o;z9+O5~Z+<`T*{di)px16w$1p39xCEr!tiG9KcrUP{+=~MalpfX{D z&wFt(66!s&(>^Z+!I?W+Y!rK|IGyu`Dy5RCH$lqv;st3QdVY!ZR}N!9 zuXjLkul^y=-D<3;P4qnEk^h|5pV2)P^&t@G-rg>{1-*xC*F!qZon#@1R^W_62jnG& zcBQKHYD?-`kJp$QJMr$i7BvJ|tnImI2Z}}u>*Vu|7OGlq*)=!^IzEYcXk|ld?moJ8 z__;3L%c7^LzNi9fbNixEd_j|O8~{+YK)iiI`!ydS|82gsHEtC1X$ulep+3ASk^ED1p*n1DZZT&B1i;@&t?4X(&kD^1D+1o=4CQLiQ74I7hrl@=0iI@BbV}& z>Mk|ExZT;%&XiqGW=LY&!KWCzod_M;eR`%!6$!#Md2c^3s%`@9-p{{vHeFpxPcuL| z(jL#eKp>&t>S!__|MAumDeMb)=_M{Q6@}*6t9IsLxqp6jp`8j(`e_E!;m$TaDyMLwu`8mb}1n{54 zvPP^sWJ1;Yumb5i5XOSZx>gT^f_l&NS^;r;9rHwdy0rF%+%R$V0fc$UYwyCblZpeN zk3(M1?Mm^=t-?P_MY`}44{|*8SAc6_$AD9Pf8ZiiRioc z$AG#cF>vdM6)TW+06HJDTK6zs)F_ z%1!^co_xhRy$@Hcwgy-p2;73{D~)FA=hM;;18wN()4R5R+?ak zs21Qc;EZdh0_7Nhw%ZFW`gHgvgS333!EHh7L@sR#xT1*%F>>0D0o*%206RNIueozmV=XhgTu@CUo=jeu8-ut3hB{5@n)!5 zI(jMTA34!gXbu1SV5hE*F+)7`m`Sgt7)l=8`jIm0tr0ni`N@#*T{3R=sLT?S46ghI zod_dY#Va2J1R0iMVQmzm5BGp*rme1Kl?`X)XRhD50lSq$_&34eKX}dcN5vo=viU*?&Y{K=fb)-7gtI+w@yEZ}5I+u{`GA&O?s6=D3ozFYMqq#{B zy<>o>(YuHJ9>M$^5utuC!HNPhI2Piz5rer#okbN_M#1lRet+Oq)EqZKSS#e*ND+@` zjBcESTQM?e&GaNjGSLgt73v*T#L!u}nm_eiDt&b1eJUbyt8Dh-NXru<#oW^fo8%~3 z(}dP^i4HRgr=jk$pKd5Joz0Z>+F1!Y(C_EFRX)709~e$kwPl#j8yP`_-FLI;MF=rr zC}=`SPY-C8Te`GenXALSykDGr;PVeX%Rhv;=#F4-M86NbFj^Q?zh%%nDVWQ7RJW#~ zAC0&I>%808`ddfQEfkk>Hc~v%N78^X$RQD~wrX_@c#2OH-o;@fLKAWE*@I-;VP)A* zivK1{GLrw+PrsSc8u_^{lj~4NnKHZEpX~)bVoyA9hFj1s!FQW`_g%Uz<`a7!&Je4RRdiB**c*2#S^IQI zr76RR#;+}59obo*2cW%(FR86&3k?2m@7l;h{pPC>9Pts;m2rc{boqmk)%ePKSF#ZC#6!C-VLzcKguiu} z(LLI1d_(uS=x?ZgIKyF|TDwmkJ%h5&Va2CsvTobI&!tzmwu|3@PU70?o3>SXrWhQS zXxRGoB3-er1>W+;c99Ewl#$@>kRuj2om`{}Fy*3X=}D!2TJpbrjt1iPbv+l6_(#Nj z-{H?VkDLHQK)k<68KYUxyX8T{K~|0b_L1+j%&0g6%xH_NQ~s=b)t5D4sZw_|FHm;c zf2zoLPVndw(~&CGUEi3`u?CVrd7kp4D;SE7(d8k<-0d)cU19N62 zg{j&y99VhYW|A^|y&&CN*!3i*7f?EZkjAj0w-FF$U@CL=jG9Wf^U6Kri$m9+Zf>ke z$|X5T`zK|o0sKPEu1>1>SpEH>YZXw-#8=#sEtTJn4{SEyy#nj8Oqprn4-1F_cfsj5q`C z!0=F8husN|DkG4ZS&DT*N1=aRj4s}GKVNU88-}Hn9LR$vE!u*rCT0zb8IigT0+UZB zbI%lmXX$F-bc-}IZ_TMY!)8nNQ}$(44!R&!p~F~wHfZSCXkF=J?ZE=XsqU`obBe*L zCZ3bqGm3MDb=GoUk_0VYzq?WJPj*p(4M7lBVVFAk6tF~Iya8?5@NT8)9`t1$>O^$M zW@BY2tKx!<7&zhvMedppKc8Qex7VZ)UyOa3zkLI2I58EmOY(tEs)l$m#90u0>c-(0 zWzfVf9nsh@#G(JqlQ%qW?2+#RFS`N*WD-)D33(1pnENjv`K0X%LbV~>qKA-rvn9;>9QSYkN>xV-EzA#@B_ zwYo3jCyM}T-y8XK4B+wCyK#-ZsGObq|1ou*;cUO}`%kN_*6gxJw3N1r+FPnVrD|2R z_Ndx3wjiXXs9h8-Ds53SQX@98W7HlYc4E{{j0hrrz7PJ#@qdtK@8o{JkK?+|^K~Y< z?)!JdAY~*lm-ppmzEG8ZIfp@F<{npj5bVJ}N$aAbXDjCDk;a;rb}rIoBPKzY62~#I z7Sg$_bszBBxy=>MSiqwsQ&0x}x5P;dsQQh_suF}clgCU%9?Qe6PmdpFR8$)C(AApv}Q{rW81 zzn(+-LX_c(=idIP(WXc}1djmf4BIzP$hxsP`wP8)QSWkTOGIRu?+965m0)B=vC5r? z3}WV)!)8k@)?T@+8jcL4z)w(@1v z9;or76OU==1idPxGgOhlnuKPDf(Qr>lToO2!FtY>AwrtxW|huhl`Ovg`}CI-A083j zrC{SU=Q?ATO7MhJf^_Z3r&nsMpC~=1A+OND17)Ve1Y94KtrynsF>dcyG%-2Vb`J6o*&2y17l ztdeW#fSL=gs=~Ihji(m^|@I+Y~oDE*&Lzoyu9LPn9>&SF1udj0O zAKl7MDdH0HQ11e?QvWxJFLJ_3Q6{^Qs_IvxWu_4!#)&s0p69HwYjZ-UwVJh_UR6M{ z4aw3i8cd%7^v0{eahZd$S)I6`ldxO|?(Uvtk?R$oAOE2Hu&JDC^TG``SF~twtH-}U zyvhHO@6AJle9WyY+dldRO}-QHX?iw}F8Xu*W`Q7iDBVIF;(wdI)r~;afA=qNjLUvY z+Y*LlwsAOm@0|gJw}Z;&X$(y#N|3-sbUTc3&YAYOnsl3dn4(G4zS|>JWVlE7;RCkJ zfNlhS5=?P4hyvCOBo}wpS8bJAv=^0+nM%uFN+YN$cCThG!8}!(?UN6;+eFNGx#$pQl ze9PR!3T)Ns(~S<38^|g9M4ZXT2f+KvtS_fy2BcU~(Esff5Rq9E<3VuaVeHHIjf5;J z0Fw;53RPrN| z5yXaoiI#o#4(^0b)X2F)+(;@w!1Vdqnyhr%1LPS39}Njc99%?Sp>mwCtc3wjzoO0n zyn02h*D2GjN_ocE%y*v!pPjtuVicEW{j!?6G0Julc>;1h15CrOsL1;d?)Xu(2T#Il ziWGVSlMZYR`x{tgih2@A!I?OuxHBby{ z%i5<7_Oag3wX0T1Q~k8*HV1n*f5V3Qj^wsB_lTr2yr#xGBGiC#S+P+F((rk9BkUxJ zLDgUkB3vsql+ZAh2aq^yD%oOPYoJobz_#^kZUn|j~0TpT;Bqt8e4X8+*UYySUpE+co+m}xk&!l)P2_Uo{@SrYrvYbBrehhMj`y;;cEbRq z#^E};x0XxbR=j_~8t4ywgl*%!5S-u(EoLXo-a zIWSrU+zFqAw;vC-H-(s04f_M5yeKC6@;r^|g?as@+Sw1Evdi3?+*W8M@F{%R{&i{GW&Ym7;2#~%ad+-+xmodHS|6@gI?Lm6Aj*UfJqzIyQH zKk*8u9iXm>B-fsuRbLc+`k?tq9GNp>;SA6|Kb6{%iRtJ%F-8@etC+L>RP3{@c+Q*X zJyB64f7Qlo!w&ylUOx)IU-~g}ZTA4QdOX(raCmdyVkv53(UVRbui*riJ+Rrlv5*wm zEKcdfGunLmJTt2m_-@#lXePW>!x9iNv{b0b>y1T0PfiS=_rc+30Pcf%meZW|ad#2h z+ky9Az1AXmp+5cJMFtPSKRm6t{OAL@$|gGZ+4sfxyUt}b|sX+g}}r{Gij(o zG=4tH!vi>2ccSbuO5XqS#~9bhUwfQ*0M$ErT65liloVx&=z6|pxb)`?7iY&1d;0jB z&#iM)Pq$I@o3~E9A@Yk7o2vxYD1Pah@ltoF83@N?JkoYr^26rAVdy{7XHCru;2nFj zIC3gQ??j3Ekn}rsfoJeGBo%dLn{x+iXe+Sg!lgk| z1u^WiQtlRPHi&E$ov3f*T(56(3zfoZXS`{M4l-SB?~16g8j+~JKt?u&37-Sj4KXlk z7;IP2_DAdFz1@Q<_|5`}T9T5l-Bln~mYC$2=}xU1gSjBwUXL$kS)?3Vj(QA!C7av= zYbh*zhMWNyj^;a$tAft}F+0dRA1yH6(n^}3_W^7t{-he(Rg*=Vs53w%I9^33q*ScA zJa?^f&^8YQG?`ZQqz{Ws%-ElDL&5Q+i_i6L>Gr-GaO{EW#)=jXF-t%-LH7TK7-*x0t6@VY%)qx#0H*IwI zi%1ro>^$Df-Pm1dlQvBtR8*t`SS{Zf7aDB3NfU;2ZRkl$VL;^gMf=qxJZ8g28Qmv+ zJ)oLJbiYCW^gCut>^v?8QGDGNfJ|#N0a8FJQtuQY`{k-cF0ff4fYXu3oYh*6w7ZgM zW>rP|@AXn-SrRV=NgBliBWav2N?mZ0a+h1NP5Hdr=}!eIVJ}|jWGf~N-3yDb;h@Pt z5~sJUg(x3Lw{%9hOixh<*CrGaM|{*31j2yk#}NeMh&%`n0lYc5a0+S z6bXSp81^NAg@T|$5A*vV0?5uHHBHBQDa19<9GFTIIW1~_JPlddp6J6nC6-myuG(Ji zbCtfFc40C4uNKIBe=y=4@{t`SNjSR2fz)#wBH47JOlsu=XP3HEof*3dJ(?nf3b(lYx_2}K#KQp@DDN(?UoeH%^Hqg zK=Ct=LY19qy!lsoJ%(M2jMwzP1m7{}AAwv9 zK3$)IKF3y3{EoH-QQ^u{f~FsXra0etNd*v8_i}zW>kh-*CF0GutA?hi8l;X`DS3?| z{TJ~ea?fneOD=ov@+m4z;E}JQ%~o8xAjt0s0bg<38l39WuwjO^ipi)NEvS9_VFT67 z3^)UP%-MY|SUWEG#H_l|E6nn03!PwL>$~S)HO(8o%-CM`gW3?lIPke2@ps*Cz6V(@ zlMrMY5=VI7*%&JFgfaYUq$efetD6>iHfAmGB8f7443&a?p-NG2uQB%dtCnwdhJ6m} z$&_#Zji!WnlPWOn-c)C}uX)FxQupHAYpVq_X4jT3UJ&uT@(lXF?@u3{KfwDbsv#*O zrV)5fdu-Nv`IyopLsQJ}R=(yA!OOyyl@|lw@=wDq8W!0j_pT1y3@}u496`GzC2)Vo z6;MU^m2$Ak?@#~BF$gRZBH=gURW zCYyOrvuR8ay4HGwSm6;=H8ES*%|l+NrZ(K)Ib4|R33$Xw{jvBuQJ#sW1C^}H>V)xD z2`ATR2bDhc3A5b(9PCFG)lpto@{~@JEe*>Io3~*3dT@X4()a|?6V z(T>vBfN#$>8f_~vtQ2fp1#QBH4|RRilyZW<+*!hIC@>~&sc^gvN(;tP*~-Wh1R8@x z5Z_)OU*eXkh_L<}mBJ5XKGu?MrN(bltj(-!vWHti zq(#R>#YS&}f98{bl6if`(@9G#7+i*Gkl4?$!~|h8 zQ0l>8Mnini$Asc1M^6OaH4B_(g4}dqxGWljEU^xyr!LzsZ;-u18>))p>D-gFz`r-+4g(q3_{n>LQMJFKaY}v? zh`En4A6X%aj%xgTI5za`PReQHN{bcf1OZEdLBYvgXJzL3%ame5+sJeBNsVrUwqZI3 zWlaLbm}|9aPsG!WM(ZIBzQoX5sWg4~$h)+`z#;?koH6iMxAvzA0e1c4V$^=)2CyKe_)e>^$kW>e6^{ zE@uE{k1+Oi+Fc_5hrCXvOhi;xUY^0Uir zx{|SJ|5@`eZEQ7ue@3+di#Y>S(^J_F3G`b!$gowzdSY3`HBt7A-wk)u2B}q^W!~?7 zF+aFu_Y>hKHc;jfkgG+4&vQLYJGRG)PlmVdQ9(E_!C533qYKcI-AFyZ!~f0zcHbR@ z6KEV-Ock2FNfOaw)e+N_=IDG~&t^8tNB8ebS)e;A8YF28(rpuIE3xG_i`DqBLPJRI=i}3VdAF2J?UExbxOZYUcVukA zRhCwsgPG;-0H=IIVi?LTZ|*r(a3@}LYhV!ihMPXN(Lz4vKkuF!dfDlAd$;0Y>aQr$ zU84|(al4O|qTp9~beT5XkXVcnSbf5Rz1@crJ+BjBTSA(l7fX0A~k8QBUCPd`>`z{8@kIl{wK zphP%wDdNQXu3*+1o^Sei{j2;l1OT=LR{cGpEb`<(O0+@cc!ovd+*`D#=8X7r-s-Tr zvQZ3>Xvk-QvA&jqc|9bvk??B8S9b3AkJDe9sVSzbNRi+4Be*y9R{NYlEpeHkclD8(9ACjDmd23rGXM`{ozN*~T-{Hf%AC1n ziTn#2cv$n%zadok&~K>p8}Na{31~(NHUQXy1RM zD7}j3(Gk7WKKM%*!h0OS4R3Hs>l3O=OG-q0z@z5wpJu|`=WnkmMKuWFR+56{*X2gC zw;h#pd{3Mie;r1&Y7b^TQ=FvAM#I*Nx zlD;TuwKL~YW~j{;t_vZTA0#c4;UOul2if#7`xYaV;-kG`n!`mI#V17s)a z2}=#;)9?A4pW8!$Afe(sddr)Sr+71QrvCTu*ObE>Q8Daj#H@4h_vPrFL~-Kb-$xvfHD zs~c!MT>t(JIlP7qjK0t?^PO{Fus5 zm5P(Z5qfAa$uxMG8l0Ff^cl0pdr$(Z|#S!tF8$$9^0^$aP@p?Rzh8Y~hXx3dv<F7jAKoQtJr=)PtjMzwDC-PnrtXub4!uye8k!W+;uV zxKaB6H^X~Cy=+c0i1|%o?r`rGH2v~0es7fP^s?R}nfrb+SZpOSuWQ17DePSy>A!a4 z*awI$dkcR{t^mFYAOc`RU!R?RP((+9c{${T#F8vr#Vmkf(`&Hp6 zDyhE#@en_1qZ6kS@@Yf`lpQ;%u?c&aikEWZSFA}guB}1WCPxW5vi$o>K!nvmdSFgX zK(gpqBkLlV4Wh4Xs%tbmJ1f-}^5~n5lseV+69M2o%30)26Q+nfs~K_kTWb^zC2C^Y z4ET``)o(Up8S*ukyLKMeK9%lcCx~3)tpI0s!A!LX*!L=zg9v(N2=_;xsB7baocO00 zI;1X%CaZ-Pi4-QL7gtxB&6=hBi2N>B(+uirUN}t*6Iw%aH1go#0E)zuIBnAS!Dvt3 z#$r0?q1e>v;u7IUmt^8BrVoZ%ZBOEWDpIiid64NhH50O*0vZgMG1>VBKQViy;|8#_ zto^zJdg@KWxqio?#=rj^#&|$thoZbnH-FeO5vU(*f?SmLO^i48M7?Y6$p`yL42WS} zej?LOtaQWzk;g+wGcdxqP7&c-(S%dE>7KZb4EI0#H=#>!Psm6))a3`&0k-9y*+K4M z?X6|P3%Sc4-?(J&jB)u+g*Jp>m*it%o=Gw0%%wiCHfQR8bW9hQ%DSE;LPyty5;sYoCq|6WBe zAm(r0E>3vIZrerRUgbXs9;Gq#lenMKlhdlQS1;b6t~*4G;vcN=YyB&D4|<0LP$fto zm9|s)e=_&is#(6$XL8H=m`GVk!iBtchVqh)O_I&6ZMxIR6^g(O&P4BjipU5*H01%X zBS}mcW3vvze@*dnR44cTgJxskvQo^yax>UNU$bl||z=fHk9{y%IVO6b0Jt8dFzR}emxJTr_V;O|ve)Q?xA zz|aKVoBv(?@1<{5K$%hoIpO>5Llt#&P!&^D3;);OeLRnQSNWuMB)K+rllpG=@M7-T zDRlW<@!m4t8e0>5Tgppqt-W;o?vq77JaASl{EFI^%)>rGJD1ti?u}PJz;^;e@je%} zC=)__;C5I{jrHZGFB)!6Dn3lf_m^LsV4EQ|_(#X`Z59&OwVd3@b>q6pGPb!~goyYv zz;P$^aDnHPeSi$!+6akCu;aJ+Qs>ypdt+NlbQIYvO))Vib|{JUH~p=aBwRI&0-Q8P zocpnnr@7#-?>b^;qfi;*7CPZ=Ru^|de4q(d?@RTw%P%FKT#?LyfA>8O?ASuHI|f0e zPJ|+Q-Bcuc2F1<**fKj^N`c$r;7z49k07_)?jJJVH3O^~Nu(lMQgyT&;ejlu+D58M zS^EZcu?aNzqlgSP?ti1hA48IEzYe+VPJNTVHbJZ^O`bLT`{O;UE@@}X#DO4c5of?; zKKrj)PHNEW!fxJ^h#!MXdJwg8k|*#MrHI40uBmp2;PAPCRL2KmnJhc$fK?$Q{gEtU zDO!b3C)Sx5UWfC{B#vhls4}xXKe$7g{yEh{%(HQ04@f`m?fviFOend9pq93mSMFiA zODy2ziwtp??>sLB%1(P97->FmIQ(-;N)jmVxW8pB;m>IiwcCpOt8Y&68^X4{rsTJL6R3^s>ojbTJ2PKC|A}f#%p$){?FyFY+@gOHd%x^$T>EiXX3g^#2`zWtde_F2-b+rt zKCOBPZ+BWjzgOX|*Gd%3+|>;4o%0!yiEw$z3LL4RJ%Z$5J7~(ajg?bN-R<`@rL?Xj z#qi6FLyhoa>Sbk@5@b6PggY2YI};(Cgz0>Te{)xw$4&kwN|tBQ1@a7dTYr34S2w+@ z_-h|zh+crhuBmb2!Um4T>k1(o#$)2Bt5*INAs+gokSfy{(en0H#r=h9n)G}RXdzc_ z?!uo_xY#=ijC9LrY(GTL3U9+|^}F-c>r{oV+k0J4&j8nZE`2Zz8`LA70Xl(yE+2l_ z59#N4M)@gRvf?V`T8XH^y=`~DCdk+Dlq>|DH#9o~a6y$9VHaqfN*U46w=}j!Qhrl! z-;crk7s6k=rUNq|Jyv-S=mG@_RXi2{C1QZnM>$1jfJ=6#DUFPzngyFrD4Sc5FlGxw z`7N;fPT$>PIt;#P)kw7zFV9#d38 zfNp&h-rz(h;?!*wP7!yCHEF>md`f0_$!$pX3igqPuTe}goF1T!Mq^(*fb(f^rtq_> zr{?60g+Fpyo}I~or$G{PPxP#wJU#s$P;}7suq13O<3r`rYT{Px=wwAxsX?$Q+xHAN zCr-{C%Ihvn??-6qU(6kE8`Zv(S5`_FmZ)?2J%ft|z^a1<1!vCvZkC|j$?_BXkkj${ zQ1~|7TI(WOzfp_`YzcdOuAAO^W%CfQZvBJ@RP@oX^~Y%y-@7-j3M5A71TSFm|2xdu zC8lh3*S?&ol9vvxY=8vyqQPkU41U4$H`~*Bb7wRU7g)vC^}e6H6wL2Kzi7#ZWEhsQ zto%LL%cnWBF5O=5_Ng&r_R};^GfFPM8sFum@ap3mo13m0&rYrdavfczL%K;9NsAd3d2wf%Lf}DynxbUx;>n22_V;3=t##N0t zW{D*8oB?ju0EiG?I}sK5CWv^r5FNXXI!XFuEnGVcmdSFet9Y89PBx^{&6iye@LNGO zKZLa!Q}wREe?!jeD#`=YR_uXr(0N6lUa)MJz5AMJbrk8kj8KBV0|lvV1SGG_*GO#9 zkytx3S)-xSc-E*KZc1oqUQ~`~leA6tmp-)NH zb?(8pCjF1(Sm{i)1v%~NYdvFCQmbz5Q%hd>zOvpGmW&++K5>Q<&CdX_IFZfVGU$WK zQK)=@OY@z?=bqr)8W>80H(N<-&;6yzdHB0TpwB#FpIdpB^>^-wK0eioKEA5NivQ|p z?=Dy>u*oUqcGTvJ|jHvnB>t!g0fP9l&+?Y7PjicPyT zq*7ya#nM1FYe1}vNsy7LQXR={- zi^vb~>ZA^EqP5zP%o%{+nL8}v=bDM;u1<_t=KP9bTgoII8fsE~zOuHOFh$LEOJg*%-G#d)* zo)agTZ1J2(Qk2^R!X6R9A7$oQiz@AcV#K$v+SM@3(De*9D`OL3twyxlur|c-{^`X% zqltr!I7>^!zv?%CUa7sy|H1_HY|LCg12||B6R?}_lNN25rrqYRyGsZu#mh@d%lz;+ zoe70`i`LXu-o+7}SG!B96L_h~MJUK7s#ut3@X z2h902K8$z$Mt471oAAk#c9SauIMRFupxg)%umbtY#LwK+f|{hFG$zbPRhNT}98SLc z8@L{NU+`{IUykDL;N}6@gPy!kX?=^}?uRj_t<0@1;b3V{_{lj^wMx*0p%$n4P!qfX z>zb0@L`I3#qlrP))%0`bc8d4zruiQhB!cX$=+8};U6@p=l#a@Sggakum@%{bdMNPk z>OW`jlrd>r9teaCiL0$!J={C!^cl<C(rEx(2aQZfxQUQu7SeIilHx^bPk#4rKqWorunK zm7Wi1+IV&t z`}3wL`o}aJ9@qCG=yvFjKW`b{E=7qP6vFJmQRbL-*p#%+{|0gArC(Omq$_Tzw2EYM zecc+=SH}>nkR4}$sl(@#TmqPR1B>wHTa9v*#(jl53mq`8tCmzZRLC3Od|GPfWO;?I zpoxL?n|K^add0GAx^e}`;8q_UF56n@0=wwXr?z=9PDZM;mJXY};8-IApJIGQX(0Uq z#^l@|fi|4PNrF$4ATbX$660qz7q>R74kKt6U9CAty5=97B}rHEZ#%@GYW*eELLq~| zMJtEZi0$7b|K@!DqM+N?HSOGF1$(}ve*Y_(on(0iFpn`>)zfx?H4eXCo{+F!=}OCQ z&ojkZLbAH-C}&=2VyHy}(~@C)EXN0RwkOZT;^pa96KvL% zhQSVOnOjk^@xk{yUnt1XCGQyZBE1?WHTtF8oL7KSqOafY>G3_RnYrrWM{%!Q)-2!N z_z?R?@%FHOUW&N@0}n#j$Hh1Ht@!qRdYSL{*Y97bVXPNEHu1-(W*?00KoeitOr^f29R6Bk$Ep4Ny;j41 zDD1+&^hb;LKrp9?2t$OH;CbY~L6;nreHh65$jhg>RFGVyixaO>0ok%VW$SJij~8#+ zY8@L!^Hn_ZmMckL2~Ho@i>`={Z@xsE3O0xaBMXLC#;f}35T5%}-;Eb9zAY5Vspb6; zPnyIIp&3E;p^W6f@kYs?JtW3XoI!$$!z!m;%|(mAs~rx*&2PF@4HgGPyBht$ZgwZG zkUOX(4oEuYMQwZ=)&ojsp5k*uvMtw7fe&U-r6NsCZ4G-kE(TQx7aJ6Aa64cp-JSHz zxLpK7>pq`n>tKJv?!V3#t^ruP^dt$ffzg)#?ZU9y`rTl$DJiDPinZg|w<&+C|F3Aw z*XGq!H!mGg{>E_MejoXB?rWq!;e^T#(fFatwZkZh+gAFYui*rRyxBix-IM$5uND%V~n#ow{Y%q-GG8-cPr+}YkYml^X7Ywnza=91@fDv zOPQ+umI$AJG>h*_eHJ^-ouFy@j+~pRixSZU5+6Jo>Ort?s@Z+y_m7aS(`I>vAt6O` zG)L=_Q|uD$o||zP>qy=>QUzG#9Bdh)*ZEQDKNFy1OAmd*q-w~)V1BR@hV`Qw*F+fW z8cm4A|1F=w(P8fJS6a*eR@sKroZ3ssKq%<=V32~*I`32Hvmk^PVXf3(wB+8d=ii1c zPnO~LBs+Qq{*S9a%VNRL{C|F&DEoWV%%|L@CUIKT%ttB1wAM#|fQpp1`-HFEl{*9A zq&<3-kvv|#UdjYM=1^aP#QR{I4y#))Q??m5vSuf%+}tV(-U6UA3q(a#x4k}cGv$x%w&Wu*r5hx zs#294XMPFSz^baRe$2gye!CN44Wt~9EdMvUF9`AMdOo-4$+gQj?(>5#+jlHy>Y%KF zJWw~*tVA0co^j1#tS4I6;UB!#11odvEd^e%^m#H6Vp2#IJ^j+Ces1=M6w<<}PFMP| zDmerHHS_9wWoi@QeQUIJJ7CW`QQSLH+_cHvXYqdT8%5m6>im4=;pVM{CXK~}c)3Sr z2w&d7^0z#Z^vX$|XMjj&s_w8KIvkhHt&1}oyY$J-{uMp{0=6&=WAYf({&iv|vS!ch z*E7!7ue1Rsf+x;voly1s+0fbEzCABdLOE*&^TQ3i*7WjgI}0veRh!5h*sqy?{AyT) zU-C~>V}{QqGtQq3!DQsK`qQ*WVb>^NV-kCG;heea#Ke|QMa0*xPRI5K3*pz;mig(j zHu>d8R*rNKZPb>7K{hgdqPyKV^;#$sdVL$g#~B>;R5asGN2q5mxrti|QgE4x+wf;q zD(KF>1m%I+_fo1UCFa)#KVwo4B~rGjF@`C^-sss!r^8F(?LWJ@Heyeqrx{?iaiWRF z*79^Q9(|q0L2FTaOi9H{aGZ0Yo8lv?V2Q4ykzk3EW|zhvKLz@_1LRcFq@9h@VT;wh z>4(O5(nQkm&BzDgZ(vL6o>u$uOl-~d?OBwiBrfc&YRNWo3fpE= zv4im=mVNdg+bCCr-{2yT` zd$;e__{SGF-=4t#t_E;0=6GF@-QxFm@l$j8-#o7?kWmJf$h{Ly<6HACgXdRyJ@W@Y zPMI@ijJmJ&X28qG7yg0(v-?eih0FH4b>v9K9xqqTs?KYMGkr-v%yYE7aq=hlz53di zJ%1ko78%AyH9O7NrU^j;7F8th8+=-uHP(DC#{V^#h`4`tXzVY}O_^FEs7miy^2^m% zRHiUOH7kirlB-nw7r%!O6edpu+hIf_&M@JBI5bs+TefIIrom&5n>J`5tgzY*Y{IGA zza1wJYI??JcqHCr)!+H2X^?g06b zXKG6?mk#)R=YEf)O8OnQ%xxNTom;vt%NL%;8+T+TML9m&ecJ5xW`;uJF8S@^v(8~{ z>B<#t;97pAGQ`E{q1J8hQi5A|Nl)>y>T+lP{IQCMv?MRn(%x48m4bg6Eg*`}VY>v7 zN=Ix)p8>9k#6tD(dXS`QGv^6cljrxUlkYnYuqBC0CU;-*wYDH7(XRElEe_&Ru!}k0 zNg`T$bW2ih93!88R2VO(@+4aFmeCvilhVqeSdb}LH5MC)^HFQ6(m#DdJ$~x zKVk5&f#CHL5E&&owpw_lh&BX7p^%+Pe5M;XlZZ3GB99A0e^H0{+=}v)hJD2jP(a{9 zjR>d8UIz*>JjglLT<{xeOcDIw5dz|80QXP(@N1L`K7I1Q+{EsvQT>Of(SAmILXl}+ z+FjcJSVw=IR-x?&S=Mq`h&$(~b_;4gLUlnxD&L6WIc1C!*WIr7tth_ay<(gFc5?~& z(nkeE{(D-3vYD19Bn-xbWt4fY-K&i15i`7YwY+R*iQjbBC)9iBwa$rSb;gM(s9nc~ z{@>@>`T4k6BMaxgxw(h6_6er&WKBQ|FD*#XzjoyNuj2#NBz(0Slf)7Sw`@cv2!|ZLH5Z`elM9mmUmfjwa_IQr9kJOV7IGWxDXk>PT}gka6{dZ zOcz%}xK>WvMt8bc<%3pZ+45qjI9A4h@pri#+?)Tq$VITk5-7oGeqG)?;i&FQrKPmL zYDq{3h=ZzA1i1oanbBVUw@!N-|Foo$0E95n8prx_HZoSs(h#l?LirPZdz@P;Ap=iagAcS9HzB|HVAWc#|G z7V`BVhmvB^ELFfn&>yEZF%H@-G}Ax%=35+YAs$74-+GMn)xB7dTYMkHpZl{LIhds_ zR9%;_IGCA`Y+-$e#9vf0tpyHh=>9~FiJ*l(aMjHXfZP3JmZn|X%3m*#q`swiDhgiN z)tB5jX#}>6_e+q?l3L_%x{!fn+k-TLP3*fu97QCaIle5hz1g_TI(WU*8IN+II_4ZH9etVPQ z;;FCdnvmbwW-0k>Pbf9&4B(o7_X{7wcU{kf{IYUr$F8}aGPQ7!^JXUHw0bd5V1Mm~ zTHXFm{J0M5q>(yF#`ipUy0w0bmQqZ2Ipp=RP{F zJbD(W#(Vm4AM|0Ktx>edb)H*|&%D%RXm-25qqMM;2Vx^6>bJlS*ze|&-DQU(XIui+ z{B(<_W(8J$CJ5wF;l`hwhV^W-EYh$& znI%8Mdc%MtWt}5XN1{jNQ>pj_KR$zUQ$1+!h+W_rz~=UH-M!$NzEPn)b<3o>{qZxv zX3S!fj^7q3YjJ7s`SjPuL)RnKfwwf&+C1?kJf5F<6!tFZT<@8nAOf>|XJ$=g*tpzJ zVR$XB%h6+S&%n^HuKJ3wugyXbc)5pNM;Mmv7xq}Ef z^)$}4gMtIhntBnADu5y`59CUc7-qCNjg~QV9{0+-3~b@9gUHG$=6idMSo)d;g^a>Sy8VO53)T5Hfc}7 zK3l_Dt($o%=yq~IJ*bTp0P(~=t4>r{s2%uz5sqEIJ;BeN1TMvH}polj_REk$s_dr|Qgs|VTCe6Ikce4ly$zVw!r z^0^^;!JP79=78^&EamHPk(-E%tmK#*G&rrE+FeO;L^$yDc=gE?H9bFx8;$tiPf=l` zFU~1T8TJ^u>oHFi%+yKS1la@0iOo~;Jwugk?()?&}^KD8g z*YnR?d;rdaC6i^REk^vTC?2@=0FSU9)HGmPQ;Pa2Gvs3X6p@lH^ei4AIa=U)>T`~# z0Ze!m( zO61q+r|2uW#K1^f65ro>=UNMh9iIWxwcwW$UDuyUa{~rknv=ud5Bg7iTS~&NR*tMj zCM;?uXI+vexDv`9X2eoOfzkO%eaZG_S0Fn^6r;BE`U;JE{T<1r19tqTVl_DhqZ=BN z40Dpze<~-I^^~5HPZL8X4x`=uxMUR4oe%q~s#2@oyDNb1+aQBisD`;(KQ^SzF?aud z-hUfB(UrPT60#i0|E@xhpE!M`l|obfM|aUA(qH>VVCZ*;BZCvgvOLo@!56hors=W< zGw5%7-SaP&f0v)A<#|v$kL-63S?d)y_7P)5y~b)2-HM7n_qum2#iMjQ+KF7?WKVlh zMxae^HC4l{;MtGu4$0Xd_{0BND;f_<`G5vi)-;7c4`Y!P1j4A5TwPCRqapKkhQmJB zjT_K6)R>mm*lD8BE24+lFvlXC?#-5ZRk;Zzpj!T=CFiagu8T>0?KGB5x$Tg(W+neo zrb)V8O=-vz$@;zEv`o=4{&Y9C<+B#$AYbf5&gh~Q!=hhFKoriZ@NLFNAWMMM8(jN1i5SUfkFT?PcAl&%d)5YvmqyE|9tD_U{fT2c%K{uP zY)~a(K0l;p>%e~j9Ro*!;$^{fzsxCN>kIwvH(qqW8hal<=BjwId6lnZHI7GOi_cnt z@!Znyp$C5)9#Ifj=1N>|qUJJ&8d z7}2hD`-nFi)ii}N&)!|pme4Ths;+mJdt9aVYEBxuabxC3sE;fBqerRP`Da&Uy=TBU zPbV5oRcW8 zx=Zeh3HzFa2~z@1aA<;@y3pWO*v9o$Z}}+l{V9&7dY=xSw7KhA(%>_F)VSAec?O8| zJCt;Z$saJYP56Sp#k1|m)@NZ>dYsZGWLU5Fb8vQJqCRVft{t4)@4fOIadkEwBzk(E zZXZKd9+mjtW`UP_hYnb$dN*`HY)F4yNd8v~6#hT%S3gQS-hY7pk!*MPBb|wFzV{E! zi;|dTZ4C@QjHF&DglgB6-_o#+<6>U#;)?s5)w}cdT8}`|qCg?t-s<8?4J_An+WmlM zR@KxqAnMgO>IDRnz0coCD0s{qwPz&_O{uC)jXxZKo%%WZo^S*VjwMkZ)U<+F*3SUt zHt(q(NN0XNB0A|=Yn)-Z9dq^`2QxadC$#iOWKYZIy)mpPF>J3jvxa)B7-K-95XIpO zd>}JJwSv44!lm(?#D$B2RLa2UM*-3VTE+v_Fv!>4U$TzH#xYP!9!2i`1ISu*PSC4Y z>6m)1oQPotZ0DwZRJ9B?47F^1eVPn`$6{U zm<(P|Rmq+O7zE3F9t~&=s`vz_MV6lnp-&Y|^qTAB-Jjfvw)tY0nBSz7xhD#{;4&wg z$zHb?@q%XlDO#V3od;GRski1AGrHu60g=FVIJa;~Ve5*kQg&uu!0^|aw}ZD0xWsEW zSs?2nNC&p^yro|#HRf@uRZy8tcTG*=+>M|3??lcqG`py%{+NF*esB##4YA1Gg2q!j^*Is?=;KL6CzfID^;(wGffO$PyY7ekVZNPNGw19* z`+0tA&YtnOFPJd#i<}%R45NyLzHO$k7Y1hSBip&h>k!vm(tnH&u3W3O5ZsY@f3c5G zBLJ`#M+C+&L?=ldF>2{0SP|cuZd_D0{*npGBl?r%fqYL#wN6YsC(Ux01|ldCY@Hbr zBd;di9mdH5k-U9#$qgx10BP;}Td9yMjA>gIV%~>#jm=3dja*fYr}wkW5+fv-lZOHF z<~@2tX|a;jxl8`@at6RZ9_{ANZyPkOzCR-(zLmq?(*%i1m?0y)zP+)??sz6+Z3>Df zA*!9ziw7blb6ZWpQ5q)ROIBZY-4B&k7eDOfy@B2NTPRnr$%O04)cUaWtuSfiZx~xJ zU2@H8PWwsNzpj1T1tJ(*H`EQhh{5Q43c51`;I^a{%Z@)SWs&f{O!Ml*-zR{Jt%>MMn+`8xGqP+zDFb^wOl4?PFd{%DisN^hlA6wqV1ri3%T)5I-3Fr^#ml zRSLaJQTJOEV(;=N=L$5(>GI3``aRlJ9Y#np_8J63<$LZ)u9h7-JNkp6mqVj z^cz$SZ|__WlJebpcHtXeXDfBHEZrkpBgUr1kc#M8< z0yrnsVugsw5^8Hpsu4=8Wow5P3Y^aqFWn*cqJB!|{!Ei{eJVbX6xW^Mh3R~*>2h`d zuSq~C67Kn@+-Aj!A`2fwb6NKY?is$c6DxI_d1UuD8iL#czu&pLFq~U=RkaVY^qRu) zLTqj;MIIw0zw!LWv}25Yl21~I*>~54%N4!`?09(CHQBo6feTW~e^Ef0weFy8(OOKr zyHE^nb->xh_IeY#FtIXkFeLCJM=n*{3-tAIWq(4sU-VKA$GX@2BX7~%w{OhOzW#g& ze81z|eE0#6eil-pn6>=qN)Qy5DHn_z%^%rqec)5{@cIeB%q#ar?{C(>>g zc&iRqxTz)S51RY6O>0Go{O=5&J8G0*`N~c(EypIA`6;g`0leP zr4+xm##&|BG-{-Gj*+uBPEv{S&)9oq_Tk^E_RAq^g8o9@FE)0uTS96EVk&m@*;^*l zKB7)x{O{$YL+{$104}Z6nM>aanJT){jJxE6IoPuP+J8jMu%{LQm`*MAQw9~OW-^%Q z6~((FrWbbt@QZ#3(wc}6wY6pyp55=;vP9XbiXBL#JI9*L4N1wyrJOr+f#vHgarVV8 z3_PttVo39x#(&K7p6|{xVbr~c+R_70@g}gu5jXD9;M#t9P6~pd7uNxr+xxdNs_mo>Q zea1SQ_W`IZA(1HUolP-P-O0%&b2jW%G%q<87*&by(8U zhKAr#c^C0CBO>P@x+|-eAB4%y{90e?r8`vrBrF>N?YHzVq+W%%@PopA2OjF)On-nC z2>CJk_on#TjNT$1pWB{emckhBVD&fwEaiu4EnK5XGJkL<>3zRi@%hFL^LM4zmwz!O zq7W~<2f|21ak4W#kETeKb0q{i;vmz$R879Mc*A%zounnQ{mY($s@bl~uX2M;6${lX zt!Rliu@lQdCjgp2qr2aLde@|w-Kv$%<56v}-B@0wWN*jf>Iq;PVM;M6Tc0T(=@WyO z>x-smT%b)%g4l@0BVGY4cI{~on zQf`B3T+vt%9!0P+Ab2LZ(bQ%yF`L{`&3h2eZrStMBah+f4+3 zU(~S5U;61YJ!#}PvSz^I;|y}YVopoIJ5%F9&9L^gk1)rt&+2&}vRqDRGn3PP0sg)^ z@^6GQWSn5l2LX<@am!3MynNG=&Sko$-pp<}KGNaP^aQ74{J)(j`btg3hmVi-*woI+H{xw-n*P{)RhAWM*@3f}@g1@ex z7yov%gNW>$PCJrGNF| z&8pk2A!efxPCrSNc5X@(*7J&$bw#qC3%U%kD(s_QTjTW9J^M(+uLr4sg5)2Hh> z<;6VO+(sPltr4mVPl)Q>7_f`}oF7+b;E@#f8U3r(78S?nJl>7*lbNE|P7o63CKHt^ z-@uJW3$83Y-43#be|bNjx#){+V<-1fc(9(#&|a-uH8o>qFUNLt(>K>lnw5D>uP^SH zl5YfxoZ7Z_@6&}E;)i{N+1prk%|v%?VogEo<#=1~hLZ&Be<}Vf=bW!a9V!-;7%n z)q+5uKh=TN>InAU{$iascZa^Le3nJ}{@#MWh7>?9kdCsElhu-WYIB@VSZU_V48MKl zgi!g{%t+Srbaxz&q&?5)<;y>Z)sOuKLU?||<4hU%2n!e~v2e!xUs0WOW}ENLuX0F( z!Di{7izIX7KEDpdYt{$N)4D;&>;93QCA>Fx~ zg8Zz3zvzXEBd%+(Ket<8&CNN_Q0suw`i?rox>AEnGZYgK?v+dt$&$x%Iz}Wegxsd1 z&uk66LZIV#Vo5CzZ&AM95OBpN@a3ahjchpTQ>B>;y@SjfdLX=am~)Bcbl(!ms;svw z7KkzaPU`UnKgivI#3`G_ZRORbH!T%vw-M%QFDiw$&6EehknY^D+Nh>tyIummHL>R3 zOmjFeJ?+n0ougP12`fVWM3k@nLMV7zl@RWy+oQ8$;(G#^fkVa<;&O#*kE}fT;~GGp z@-xruOn0l~!v3@xn^8^x*a30Nq%Mj_k6uCi;8_>f#E!#0l!nj7OFz(zPIs2&`9=ac z&84#Qd4F-Z;PGXEk6zz(&1G*LPa=XN8fTW|>GqMZ&Mz3-!dml^j|t7osLLn|eMdZS zP&Iot?6wpz^+Uf(!iRJjP~vwpF0SKc*ty)>;);uVp&rB<{makIDgHrXeAsmaiD6N? z7aBtBG8?t573NIBa?Oq?Zb&gN2GX3!@&E3ww(qZBUWSoMn9L%b^Y~~%r7U4t0nxDF zE)H@=@8PDi2SXunULZ4HAHw#lo-ZwO{&5hA?|j);D+ZvoR&z+hD2sprCO{R&8N)>J zsI&f?EU*IZL1-chXK|`Uf;2yeP0?tiYfEzTnw%TLqcVp0ywk8n~i(^ zlz_qCo)U$376uDov7jsB_4}fpmuGau=j`R=Wzgc+LY}N0GRtI9hrHU_lP1LiUX|vH zrjE8YyqvI`BniY9qEh}n6dq*etCV*4d^thFglO7XrX1@>-EhyB6clIDY{DD63M&Z% zVb!%F14HR?<~JiS!t<+5t}j2+r}BSfi2AvqTRG->@H{Mekim9$dQCg8O{f{gqSUEA zgT>AV`tx>ygNUmieo!5Vnru6KIccmnme{?VPS9&O^T<2Z)&{r0;cTXyUSDnVcx+aA z=hLsFSiJck`H0o3^1_Ri#(Q>4=juAPx2U!o-0e#C6AE*ZFU{-Dr-0S&egx*NZiGKr zzkq0M7h(){T&BI2ZYy>QuDLrwZuC4j0o3$KV?y3NaDo~ivUo1~izH9Bi_qJAL)iag zV9Yq5rRe?Cbzf_VlTATVqBVPmum;dZ8b5_fDEb3CUn}$wZAM_g-%fht<7JPKmzeKp zy$Re_H~qqJz%C+ueU|LcX6I=KGWVPSriQSPcrAt6g$ujVt&&UG14=UWPo;BtSDN_F zg$t%U#IK2bTSk8my>+Tufi#2aC>hFAExEur``4K_>)nes8uz;ca{sp#Ju_5sbVsZI z$3RJ77L|{xm2EGYsg;R|o2DpJ4JjDxTB4gBh|SM{1zB@-)pq_@uh1_wc$e8-m%5kk z5*GeeCxFZ`Ls{5mEw?o-iBrPVJV<=hc>?fgA?hS3_7AYr)l@v|&S%Xpubpo+)=VfJHG7{8kAo6=WRp~YPuIVLzq$-srm5N_ zuYd^8-POB*tgS|ir$FjYv~X5x{`|tq`oE~ZVghkx9D~FEdFMXx_#)PxN7Pr2Qhh+tM)$k5ZZ?e68E}){LM~h0 z(R25`2;kKDckd#fiXaXF@ucVaSq*>}l_Qo$efh&#>J|%ek_5>hr zcDw0iU zpEXY4cYfF>Va1N`DNg9H7-qMrOs!SKl^9tTWRtWw>2V4&+wd5mu!i8k%^JvDU!CE- z>hOGE#?~(65v)^*lvf)n(NrVnp`;839A5IaJxA5(^IqDeNPxTV-c7ivP7U1oa;9HW z-tLGIG1>-WThYCNRii! zY)88O|BYAy<{I5F_eZGzAOMCRiaix84sD9jtE{Q5}%tZd>q+xww{dsxop+`$X;<`lk zE_Y#+?F6XGHzfX}e%U_XC(G}zSnz^5mvh(xv2Ce1^!xV9lt(s<{^3?XEa>WV7xS^3 z>HJG~)OC^MVO+-}>!EGuCE!`g8aZ#+cOix+)^RCncE6^7rJy`tQb37q;>|tqD?P-> z0AvYAYDuLPBCh6WF;tf4&hD!v6hDM{CzFY8(+@1 z9=Yb4Q`zbchVc1Raf-+iFrijc3uRrGwTc}OYcXGN$z;I+e3DdEHN3|Pz4^_ykwget znqHuwspNj<6vM?@9|`BilzBBs%JlMUHl5w?6uLm-LPF<3)p^~BC>WOlnHX6?YA>q1 z-c%pUTjTDa@_WcSDX-AZMDMS(RNV{l4(Qwopz3s}gUko5tK$mpFI{Niw$_l&WL7bjAJEy`F?P6j233{R!~jMeRh>jFKk> zN3zw(K%t^YRhGTHrrc?i(biy5bjM-}gj>Ug5DezEaP}7)6aeCR8eG?(3{4Zv|Juzp zUjFZa$R{@W#}b9ieCppr9v^BjWAnPtQ?hX_bKd3na@#$yZ2pH!-!%M1aYYrjlUj0> zWsAHAieu&DJxh#<8qP)k0q@|-Oz#5Q0nd9FQ8uHVAXDbECT@5jLJ?7un1ZizIE>V= z07j9_ciu*Na4QX>?*E-fDV{IGg7EGx`a`#M1mR6~|5XipBz8Q2JcFLrL<1mKs29aF zS8YP^E^{Z8C3kTK<1#acop}^+T?He&W0miVThU11ui!5DtLHMrHQpK|{C(;1*o!%+ zsm!Vz4sik~Z3a*0|KSnVqU0BD_>)fnPSnSlpY3jl0K<9@0B9p(Kba4$#Y)+KLZH{z zE$wm*VDJ9?V`5a4~NcLH!}8#1RyFz&)SRWN_F#4HrDD|}FsqfP{i&iYMV ze%~3po(nQjg73X_J9|sgn%rXjMBLe}i5c5W1lVI@R5TgH>3o>y#t~MMJd|GUC10CE z@abH{wFNoSu3^X~!;JG3HYDQ;*}zUaX)%^`%_OY+zPkSH-y6fQBaRx^{NQ8pjn9}^mm6aO`m#4Z;_g4hcp9|UnBZ| z=&8CJ_fLPF+EzX5GYB^B4mu$08?SxNO&B$gQ7K3Pse1S?hWR`n=(Fh(oWR2jvY(9q ztZg(+at)AeKIZ5wl`g1GQr)%va^`G~%s@|IiAJlSLmP5Y=eGcebKPiRvwrMcFNs)}|VxL-A+-WLyR~xAfszN#&+JWJ<~FGetwCBcK<6|>6x4O16;jM2 zP5{EaAmOhaPe*GhAwM>%9trY8vr6M0mi}Qmv#^hNn!#!kx8kFc8wRYox{vBv_%-y$ zgc7s_Q@3ocAJ^(R96ta$-IO40?*KK&r&q(!^Fgq79^WKGUbQ=N+*&g{ahkrjbmOCYG6>MCI6? z_Ti%R5!8hlmax@Dwh(_rrG_Jw74gUQ$bH9s20Qn~ex=i16(tZX%q~0u$FfgDkc?Y| zm0G2H7|g=J?FPA)G~Kx*rmIsvw$=q>H9F;me!ig-1%V6$5uL`mq+6*&LRQS4qu&V9 z@qSp?Rf`SsNS|W&_}{o>)_*9?XrF`169BoCo}ghty%88~P)p=QimFZgfLK^#emQx( z_H6!rum-d&q28j25*xZt010aD@b?EziU!bs*;DVI+eI3u?10bc2nA}Yj}+Fj*}LYw z32Y#1P{d)2Cjhp-;=rnMzo=SB!=tsEeS%*E?_rRRnlRh64C=#BHj3Y3$Mou!5rMT! zt$VpX1ksUr_Xr@k7SXvoq`|*8G=pGVq!Vw-oZHM*f$#<@+uCSGxYQpT)?Lfs50PbJ z=hZ4;&(K&cXY>H8hEQN$#y?>-qIUc>CEJVfhUu>T@zWEmvtA_u98BqNu5qCHb1$B6 zr7Vf9{9DCO!OY>(u|Toe2T`xoIq%f>Fnu^eqd`?`G)|l`z1r7ihCQiOsAzL(nYD0! z5WDMQ=Yuy9Mf~efHuTO3mlXdEBs_)11|-+~ zTTLAyfK&*RZL;vF=1}^r)VCT?;feF~s#lIQ*JjEV!Sw}&nP_Z7NU9ue&tIZ8NmXj( zH}Q?c)sM}-<;N~ZTx>F{JOA;?K9FK0^RJX=E6dyD_G!v(jrN}({962jZGQQWVDCjDLp^eet+j4h4gl2C2^HkUyw zN+i9l^-hYOM_~YpzjByu`2L2qw|QQ<5`G(B6q2PsO}#5KK(XroM+a6Dcei<9->p!d zi)}6{7PR8o@};8duX18_`L?DepP;(o6!FQl(8&hjbCa#hDtE6ps~%!K7`Q#eLv*_+ zqg#t(wER`-Z?&JflVx9U*#?c;_jN>9j>N~88Hz}kJTB0yyQWJ&vmd3a|I~;|B3TQ6 zQMUrVuPpdVrh#R$!L{xufIs@wOLYl}>=AydH%#V#X`>%};h5rsWmX0lQc%>hvk;^w z5a}L(=eyn7kIp;xoNQsD>NAk{9yIx$b0U8{=O$hMA<4T1-sLm!dL1Hk0(g}jW+cOd z4Dg=U5j(I!OS8Q7f!|BgJ1FFBUx@L6#gN&V{@0k=;V3h$v&2PCU8Kv{jBT4(f@_ej zZCTpDuANyjpZGW4UPM>kHHZNY7L%2>(xSB0Um|8|*LyCukG4hrZy(iB4eK_z`eLLN zL}=(bo-Zr0div{$U16U*cjuW#=sjIc5ZeUhuyT4X5Qb7FlL=tYyREwdk8X1L0_c-M zRU3~zCxotXPNI*}S|5CaSXz{$uLcdTor$o2VnUeD@Cy-*n)j5j+nh#0)=XRVVI?+J zDApN;dx$$R1rnw6yd51i$?5;j&mkq4xEvp}Eg>Ro#VEOB=$ z!u#7NfM5fR;e1eK(&1816>GkZ=)caFSFflisi1&qApzUQR8Sxs8x~bk?kvocZ5uUt zza92jP)Ejke`6yK%aGk1b2z|a_`kWp9IIGv_;TWDDNher8Pw| zn;Q0%*SsX_qOwjhiVrafOUk`A;>!-8m?E(#Jd4nBmf=?y0iEHw!Z5>|9oKtkPm4YY zz5l%#rlodDxhBnJx>w{`n`Udb@)2LJb5(7wMkAUgd7}#JuuVR-e+&7Y(rR zeGd@4qb*FH=t>@^XFw%r+#^t-ISK@oWt+W3?UR0;KKF{M{q|N4j{`_TT%|{41Clpm zGT89iNhC_?Mld%d6Z(1g4E7MqolRa}O_%pgRCBz%m7Hr3u+j9f_~%hlK2`_mmu))k zK)@{sow3QC_F&&l5TzAX^>`;>TMwTN?^8|+tJ)2J$gimSX7r`!Dyc< zK3?qO9}$PygzfD6NZ}JeMnx!yDE>Pg#?j%{>kDEU^CJ)?ly-<5oNN>i(~9Esx5(zTS=Sy))D_QIV;w-0fS(X}D*yK=f7{1bN6 zQBMp7S_g`KJI+7CO$hQr9bN(OC>lRfwsn=dSN?Z4&98UB=-2KQrwlcd(F&wO;`P~b z!+=XQKPditt80$X1~KQ^<7&CTn2=xQw_zTOPr;Zfex>~qM> zma>{`IOy}k{Z#By+EZ{T48><&4})C-{0<*|6tIjt%&uSb8+tmEhs;QI9@QgHG$wKN z-?rQH9{u&*S>ptN-Ivc*Rjt63`1y{CLd5%{!0mtE^BiXZ`bV}`J37p-)ox70fILy)U2Lm#JTtLY06q!E|9;CrK^A5s~BItlUVA+1$2!!G?cfh6ZrH2VbB12YH~hdQs;|49p(CK0$to&{5_wFD`87!iFLdGZFM*iwkw2i(rAd3Ze`Qpr0F^Hw@l&e4@|Z0(e4v~N|SO7w0qLplIT$1Y_0|Symt1J z>m*d1F$dvN+>O<`ibjM!xK&@b=xSb}(1iB}W?T!B{QB*@Mo#M2={3b=s4)L$0%8ic zAKH<3PT5WC$M*@}Fhg=cN}xl!VYzn;7utvC+My=63)Fz_8nDC8f5*l6ZPX$-U1G{Y z0$v%^SmQ694{ht1vp!DFts4$?pjT_yQy;HeLQ8Oxy(HHGiT@r*J}wPj_V~TLoSK?S zLP!xhI^7?=tf9Ie)1$#t)&_To*ZGF_K*mT?rA z6WN4ELkMQs2xgjeW6gN0h-WEfROr)2?seq~Albe8PVtAEfbe|JH~FHesSrt8Fr_7o zIEIZ}izP89BV^JZx7(#l-6ySLoUd1DFJX(iqh{C`KaUJ zim>xPk~47bOqP>wcV~DlHvN~Cc{-6%S`jz=v-BN@_g#{ zQWBKNa45*nh2J;fV@cQ_vNnmgQTB2xEe+5d)YO!8uHZJC)q2k~nu0TMmJ)Su(Pc&) zk-k^g$ts=zSY}$QYG(@4%M@P!xq$i$F0z%(7;hK;mvz9y4=o{o?>ViR&X&hzzfW(Q zoi8+m;9l9Z)KLw-gzbbb@?5o?<;_kCV2ZH$68w3& zZ76f#b}dQH3~Bj^nJ!i4yRKSn7#$kT>dO+qi&G@?Y$K`s6n!kbQ`4u*R$@ZYUD+sH zf-Ub{Elg~M&(sIr9Ben6J4-_rV{}-%VubkY-Z8Nio&B(DW?1VmYd35F)P;3QXo%z7 z&9H_QCx8pEL|@3|g$Hi8zPRwxk0W}mNr!-l1Tw<#R77I~9ecRd+9SfSyL{7>(hVev zbE>qQ`>*V87L+PN^>l>M`p6ax=qKPm26<^RmQcY9lIDtrpn&fcw-*R6YOpNvHq3an z^U2?xyjo)~)P;>2hyl(GxfKfr!(Emu^Hd9Y9PO6PjBn-+BqxtCHB5fr`=hkfWLEDI z1PlD0L8Ubi@M>W*<=HDFj z^{(v|r!`;v@T3`iT}5FR=8g15}%Qn|q5zy~71Vv3YIj=*0G!9uU4`E!70-SzrtJL- zj0VHO%}*M_XFKKdnx{1;e^wCXb!*a})TMc3se^9Is9R7kqi+?gXKCdx+4yf>SkBsd zW-RJ~T=AXzzzCDHLu#EH^NVK{=DRyBI$rU0{uQ_vchFhb&mpMQQVGUNt~NIx6<(Jf zzE{fp-~@m!?~Ahg6gk)9lk4;1->Q1%XC)K;+t5o?CxGqmM9|_K zDq3-fgRLaYgGJJGVSSu-;PeKj6|&w`hO z55x-}Q8}Q4Y8m(jV$#;1W_MC$>azAeOKgN(+F9JUK|{&04p+n!k2O6@L%!tJT3l3} zyW<6z7$@~w#MoI}N0HB#*^6?hKt#*bk)tX(Bo-teBTxvL6PtBUX&I zFQQzsd;g}dMf5RMc#Hgs{Qi<5NE*~sCmQJ6Aifr?VN?#vE_~C=?TA$A8EW}ymdkoi zvYUSwse?{ZDW@*5&)Zt}DJDd5dGINdwCbuf+s{u(nRCEP5QV4E?m2ZHjFDq~sBYt~ zpenV)t(1oTXDxUFVCUNyyBRZ)s9JQ>k$W<_uWZTP3rIQA1g#ZH5EyMhTALn4%XM5! zJrvYR5hAL03v)X!O~`1dhuwu|<=rtHsj~U)zmfBn9)ebOS4f%Z8NE~fFaKS{Cw6b! z9|2}Ms;g=RoEElvf>UzKJD!#swVFVk=4vCQ9pk&I-gSnWprO%Up^&|;l<*)aL)W_> z40C`8qx(X2c~KhT3T|VrFS>7@007T+P5>awD#z~>xk;Fujp=b9Iwc-(uI&_-BZH_T z4dS4X2E{y)o!?tD3nHJRcGU=evfp4<_Cr)EUr+Gy@uYUfQrUomi0Hk3g&>i@v-|T^ zNT9-{4Gm@DrLBi!-KCitg>Qa~xDWBJ(T~nTZp<0WmMMLmYYDz!jLM+Z*ZNUx3v9shx%l5FA*ypTH0#^g0LM7MK< zKAt!L@!L2DOJ|fl9_ua!?^U0I<@vBV&IO>kv7Y=oB^7Z;8Qed0JT-Yziq@W~eT879Uh z(zeQ!?{O%b zbuNZb`I{Cc4)S6<&MFG9?6OU@SZ`bfUyHi+YW*d?ujgIx+I-WEi^g3&?X$bw8k**Akh5j5qc zCO}L!{Y8lXdlkWz{}%t#+|x4Ju$4Gn<7`T#f z37h2-*E}z|o-KpX@9f}pK-Yc+QjN{Ck;k{X3&}a;byMv9!q7p$?4tl)-m{Bl`4)N; zo>hGVT<5NSC2IWyl0m~Hc`t^wnlvbA{Iz=CpN_jw4(PD096>y?PGCU1+iZ9P&Hu4{ za-?C05*p3)lg%f=A2G4vDlyN|jNey7hLhu!)H8y9{7GbE04WU39K= zd$aPhYEP4yB2NPRp}KEnIQz^Pw(jtw#(JnT%&kJ?2CGc!XQ5c*zKx!s0d-q?mL~!+ z$tU$~3{U%k>^~c+HGcxItni^K+inCu^Ov>O*xV}*ms7sCR_Q}4`=R<7IHR%>ku}E| z=tEAUL>A4K$5yy-A6}vL-EfnFmm5RSdeC*Zg2d#`#o(ArM3@uM z4;QKtF|GOqyROA(rz0iSascB^W1HP+ekwS;nGEno3V0}s$$ZA8?tAGN(oA4Z4_YKR zf2G!Ks~gj+LxYqmyalu7zuB8!Ks2uO1SiwX4@;6dZi~ZHwzl^J%fZd^ChG8y0wk}N&Z(ztQbbjHA*mxEXdKYoi?*e}H-U~InM`mS4C#((?-)aNItP-Ur15B6S z%&~=bCNYYVq9;3)>R=e-?&bm>z4{(dJ#O$dp#Q^g@GE~@TpkisZx)O9c-`GrkScNJ zX%~}{n&ae8@2?Hgl2*WCZcu$ul8o744bkDd;BjaaW`Kh}OYC{4DaYU59#X1 zoBeAiN`IGs>%qwpK>|Jtp-V1zM1gAa;#Y~9Il)Cyp>tZt_VQmoMZ4w7VmiEBH|!~9 z#T0~fkd!Yb#?Ab)RMpohjpbwh{Y~68<>U!4i>hQn0Dm+-7RP#tt1;EKd4GpX-^~Ey zgJC*49?x39gK*AL?q~)lOANpGzR|}IzYNtJMI93sBS__6nHL?Z&W%qV#tZ$sf0kt> z{Vg9(yj}7eQGC1NokH?TJ9yVGvGc&;yNC+flVW$z zOy0hX=(7VldL-gteSu#mH_dV6I&JKA3ILAb(;?z4g*`)BP=aTMQd$AkqU?UPD z6)MIUX}?DZo!tK!DV%A?l6uj%|Lt*VU!^dPjGXu>IEC49kTz#4K6C1rcgZ?f{oV?T2hNWRb(t3sOFhuEcWA~XcHF@2o;*UbON}M+y6QXKXFi`aLrws; zbw~6Q04p5(R{dsFk4mQi%!}prU@)ojFZ+y07e6@0*9xI-xbNqrEHriGv$vjoZQ+JnHe~7Li@n%L*A`6r zU)#YNTLW>|wv}ixRxvX-FY%@KNI-B+^cZT=mJgknSBNsT(v+Uu6fnIb(9g`gwe|Ex z)?6Czg5AN5Q~CT3yjmCbaQ}tX7l-I&lfPU}y#PSa?uM~5uwkL=t^-|xL_D`r9$wr{*Wc-l{S6f+a zJUo?|R`0zxIj=uxgzI>$SN~b0N;XB8nbJLTefCqesB)wvKPhWHi^$z@GL z^QUgizw~*!$JCZNF8$9JC&)-k@L`u*iOjHjq(`sO@WvJ|TPXIKT<6U!NMOqc;pR_G z&Bu;f!xAiF2J&0!IK9Zd*m8RAp66|@tE?^BKC@Sk;`ZeUFcZRC;b)hc(w zgw#m*BQppALe`;tz@7kRSbhhSvwzIqaSAZFMZJSh2sdlQ71>QTRaq1&YTJ_Q)xA{s zbLa0?Twb6^xPO#mOhE0?nU@wswRLQ(bXH&C)-P^l(K+bJr{)n7p?m_kT-)X{28MUX z`*F(I+HzugRE{2?mgufH8H&^pvQJBxW=?25)OV?IF|C|`YrVqcori`K5pAcT%;J9n zKUKxI3zsc6n!DSp*r&Uah+0cmmCP%{YL59a*H-Q*6iWXLe3^eIeJ3R2V=K=R@V_86 zXvXUw8>7k+XLaM&*45BYu$uO*l1oP(->aI(`8m4lN+U#kXd-b(3;Of~QUvvta@S9y zXx?;d+E|j;MP3r>1c2B-1joU+6gnbu{~M2GS^a{G$lW2jqEj%l^6tXpq^4&Izfb&;194XH;kC!zPgqV7?nHVTTx*Fu;a3R zEq>FOkOYNW)I3Y(Zq4iGP-%WpVq_Xz@SPe+9;4 z%5C4>c-T_Se8VRv_ya@$)~OEZY}cUYkyvm2s7~#^0@+QUw7NUWCDpa(ljCtc@0Dbr zK@YsP!C3s-rV0m5mSR1_{M(Z!5Y#n)FW%C$DrJvr)bXwcMsB$`ND6Q^xATc_9{-L^ ztIw(HdtTRQVX0kX&eWpx=+0k}&ST|08l9cNvA?M4-Ib-bPF%1Wa3+88^?2Bu(E3R} zAvuR5IXT%H{h?Lf9Sft}a_o}1TsjA)habvfA7jM(CDQaD5KlX!OBtVUtsSLf#~oUe z_dB*nsIQfO!>57Bs)3*&=WFN;?mf*?kGDv{%cr$4GB_g~wD@gCl-pIlA7P+`eb`%c zHcTFJKJ@N{7`pY0YvEDuTT?V6@X@$XBPf%rrhIcIE#==Yq|dd`_w5#fWc;xy*PDFh zYp(pG)s72?FoF>)+c8%ntp0HhVPw$`UGYv>l-?@!YJ91&E~6`5pRZq^@5qV(8aL}> zTp@VI*Gaz2blWM2db}X8{2Jv2cA4|MM2XNF``Or7llwT9g%{^#$c#AJFsB;ErVWXg zX*JX1pjt>GJL8hF^mo^=uprMe=QlSGbvd0cvB_zkcijd~%Nx62CI6y)$geIB@%Y%H z1Cy5q30{Hm)5`w$-RV&6aCS@?G9%#9OOu5c7zxvb3L?C37fG5?FnOLGMs#@o%ejnl4~4GZ3Qa_#w<|93De6HT?@ zorhLIc6`4PD-DcGXHGBZ0i8Mla1;p%ST^2gui>Ce9*0x#!IN4{Ey))yUrj*o6;WTf zEMP#j%1P24YxPyWusun$MBW93RQx$g2Zi}@M|ei&SL!`VP^%U7NgxaiVQ+}j8hIDz zI|BOT!K3m11c2-b!cTS>cDTc)7m$!kH1#FfrH)Ad=JdJ}ZQv|n@8x(A8ovE^t@!D20ZkEFl1 z4eqgtEDMdwsxp5gT@N*)>TH295DveKTBx9+@Z}30*}lDJRA#+YH*(Glx(=E?dwXz* zdMZ-?Go|QXdJE79It=8};2~sS8=^h5xB}5OXv`yy>_l6qtaHxSRuXQ+ylRvEbYa_n-!OveY~{VtD$5Vq`?XH0I$7!Y7utZ zB1torRub_e&zKxf{(722?`c;korJ@#ycr3=g@&l{`!Q|u+95_xtWtA+kfQ6g)=NTp54nZs^n>Zx`OOT@qYBv|-d#}lkTIzo{~pBH&NE36&iPgrSZG9PWhi^+2`#o z-d^`hPI|DWSvB+r@H(umWYg-+2_R8DbNpvv(=M!Tts54Vbr|bgN6{~ERWr;k#FTsb z6we-I@T5fii`4m>x%m2>*7Fc_V_+)dQg(hHp=Qw|`KMC@yqG4{mUPUp%53d!efw%b z`d!dbGXa#*6|9u(R|!FSx?V=}aDFOIE^)BK0L(1B2?E{eUYOP_wtW8Cd*+#op7XLe z0NvTgJkvNSHZLDiJ4EAVUJ~yfI=hw8_iZZ+9k21A2<3UMZFS7~+tV{rg!V@seYi_a zBDpFR2(}YIr)xVeO@W@#nkb_)p(qoZk)^g_##8g>!NA*>+@m z;yz^_#0vW(Q>oM@1@#)69LaiD7~uGduV)^bX3)+OnEx{Dsk$fIX4m>Dq+b=P{|D{I z$j}#h^3>$b1Dz`0*@{iPMUz^}dS*wh|Blu(zkBDZ8FiEal6i*q&|(X$Ms~Vm{YL!Q zx39r&AhISR+jn<%HgZWBgtaC7P?x8$bMxKyiEQI0tH6FifH_GlKl7GPiN8)`pfUN! z1R|9E$22OxFH9-bO@Z=}1D^d;?*CA9-QjG$T{x|_+FC8ON7~Y5*4|R}t65UDXR3;# z_6i~~irPg{YE-S7sXdC=q4tbbLTplr84~gN{&@d8@AW>Us>boh{v7<>0h2i(kIy!OktEbF$hx~q78X=s;}6+HE18G_IjGfq z7UmlpskarFU+XHrG{yeWpm(|={`0!RV_sB&aPey6iJEN%Z9p4gxGPI#dBl7{mp8u1 z^&9U4HxU7}NAkQEY3k$bfQLo$x{%O2Lfbh&@XRS@J^DRm@ix#wmXk3fXh+q~s^x-b zj%(MwhZ~tay?$sj`*U-==hWG>I((k?!FxPB`2=y1Vdx`oAqSEY7zXHMRKOd(LU zk%oRLBH&OOq}s{c=4FYUT&<6*OX*mrM@N_Y5F^z_%1~o&xf$yM4{F4kG*lKpm6g2c zw#swzxsxL}e=A~i30Zhz==t=Ho ztIyDD%w2eIp43$LgN=>b@afgyHc-gs_5#XGw(`@H} zU&!t(wJwFJG>^a^&}5xttt@<+PxmihYPtatJCAqC-2|lq|b>{=Tljecv!a zKNq3)zD-Mfcg8jsZ<%lWZ=1K8_A6Xd5~${QgngqtQ!!jnjlkZqNDot$jofYaFNfxJ zy(k=CN|LIpsa|MH7JE(BD7KZJ=I9W+Wg{@l}FqQv)e%nU1YywASXSQDs~^z04sksVYCokWnF<|LEpf zfe$!jv8FB(Cjxmjl@Phyx_`(a{O_fUFVjMAFT+Hp>=h!~oG8L??cWUaU)So=s(fKi z*cm$IZ4yiK;PdCM`?~ozvNFEa!HR4PEdjTx_Rv$3^|{qb>h?)6hB`{?Ac?x z6f8h9T<-6(_)$#6B|kmUjD43?zM`qUe2K{0DbVWh&t3Hc_LN08V_7li@}a{X{`j)t zwRy|H*CIkfJXtv*|By?}!uM2rZhUaqF9}GEdzdDcA`$L2CqL*D@C8KpJY#y6x-5qa zcYhX?4>Vt+Xt!E_|A~3NneuG$vj;xo+6(`sxfqUnN$;nHu^&{Lar>nXZGHoz)ZMFT z?vLuHnm{-Hnr$m6>3FwE$Gr2xuwIQVU&ec`sreiQ8Yz1Gc73*S72r9Gi4>JmhsdiM zuduEd-OoM;s9HVhGMmHSex9rJ>Dle@4=aHfIX&%_1MI77$Ke!>vou%R_wVfHc{mmw z1$CUKYTyoLrv+(`Z^2FIek#|w?&b;b+l9?(FDZRQ_BSyIm>OkD8r7L&F z4tI;)bnbBEdN*Dnx_qK8ahq56n%m28zI-1UgguIM*DdzJxKz2?^0k6|l7_BZ29@Q0 zAM~e6`pX<&Tm_T%F_M-#3aN6VFn6j=iX3D)QtXfezFGpRZUvr~xY>*@KhPg~CVx2S z@a`|JXvM?JQ&F`J?oIjstYm+R88N4uJBKmunyyTsKiBLs`PJw0SZ+P0flIW6!JsSx zH}!@ZS)MxBgg6@R5sS`XtS!^HAWw`ZeQ`~REA9|7{hiwUVmZ0Q@z(*Ut_W3Ie_QhsFKl-xtmCl1HwT14M_(Z@yWqU>0!m^3TKsh$4)>7_5dnd{Fi8r>>z1k)yw`ldbHpn&F}#CIqEP`(i*yLSucj% zDEHuPAI}7!Q{?|Yj{X9|% zkxh&|B1c zOqbr{@*S2`x1Jw_>{6G)<_MQ!{$OTx?$A@BakFEY=~jZPi0w%t2#S3p|9!eEbW6vv zQ;5}0Il+8$r&V~%m~HDfKMZmE)#O1Dh2{TO+F}>ylGTWY3aA8OirBK1NG^4-vf-Uk zqw%9a%D@epn=01$1KN$-B=b9+P!6M>a4&PjX654?LGk7PyA!`^Y`fP zgiYUNn4#s7^-pu=)UGjD1q|zIoZR-%i?vcgl3d!~-Deo2L;Oly|sLij8XGy)edK~oeWwbA&iCG|n-xwt~ z+dC4UW-5{%x4NZxVreplwH_w=?ZA;F$kKZIjCZL~1JUQelOrX1*K|^%v4_b6!blyR z6$|q|2h4dc452L>R5$}S?q`#o(k{BQ2%8aRTKNs<4P~Jt2N}3;WQnzwKXU$S>f)ad zw0<0x2ipyNi{-FHvRbzr!3$@fyVM_J*wiq(y7w^IFTIgm{HTIy4+)~xQqOag{84w` z=xwsfmr3gNMUur)Y6N*HA;JgwN#zECn&;*%Ch%9{rOAhIvq|5Oc3uU>tVsEbLYbP= z5dg#o%+`n3+Ll;tpMLObns_47+hjG)TnOk)NHNlr=l8Sj6zX7y+^$^=#>}QBms^{^ zA5-72F+Ns#&U#aV^AabPsh4pw@*Hqwwf~Mj+N2fOpoWM{Q3gwGn z!-py?L)#%f{sgI>Ij+GZCbX73eNx{=eH!FDB;+QN`Z$2yWuSB0Y}Wo)-RBw!*Y`7F zHWrRo;MZE)iC_vd(2)2jR@xa1fRfu5M60VaUWELZd>d+(0`^V}p`Cvhm|e62;ee`d zw_6Kdbh@l;+u-!?$+p+5`rH3MYES6D!90N@?q#N1GA(}G{?1(Lzn}ecT8mmP94}vr zE1z|%&aCKA2cyd0UY(uCIAC?_>ncy+FGXAtL3{7|HwPu+EzBqEr)srC?X2SNVQs@J z<~nnDYuy+~zRuTeyYk-6Ns7BQj|ZaX(5#KJaTa8SWjVZ=?(l*yEaZS!NZ_x! zkC=R37u+7l;X1Qv#jqG%b0QV;a`02}k?ESQIl!g+T%u#9kQEAo&aC4?{>Tg{A z#JnSP_bX_u(cYz6i5pY=a5K$5 zKSjEJb-VHd0KxQRj7sXxDAu7+<;!mM(z63x_C%x6KU#e(B3jn^dUXbeO}ysX70=+R z)BRm@b4ZV_wql-anlq0@y^QVfA=MJYSkk}U-gjI$-#d2ccdiodd%+GaaGDXdtkKir zw#=o$FxW3r(6kdTaAL@)$n>2O?y0txkO1D#h{F`Qo(XEA1siZmqZ~g=?<($w`6feV zw&{Oc?D!@~tORx3$=S^5Xs{UEpI1UQ)Wm8%YDA8Lrx%ah3B$1$R6qHGfY>-M9ifN? z73B|NP4xMtvh_71+Grt%vGClWZWx*@Ns@-K5cw>2@4)06i9T@|_RfkQv!%lQ07G-~ zZRSop85uM!B-~5Od_f~27AWKuNTNkyMmSnH&aFm4!vnW8P6kdB~ zA`Jf80;0z#UZj-fSq_Yy&}m6fX(8-tBxn%OG2Z%~l>$`?>0!)hX6DWah$`N?_8f3+ zX>*qruaB%r6cRfM5OS!~>QUZSQac+*9TpdGJ~7M7z4+4ER_du=$N`4W{Dm|8<$ETf zkl34)Boyi7YVG)AVsZ=*ucC)< zOrzBa!YAUro+NX-EN1wRpDU#V%tRfT@?+Wgs#S|>$~!R`-qU=S%;~g12uIHPJT@T@ zT>THn%A#rLGJSS@v36}}60YkUP@R)*>$G4YwEPms@3z-V^*J#jznJY?ItRqgPG;19 zuH0f_n-1K)sDV1v>tO`rz0M=4Nb6>@QA=^?^L#Y9(eN_#@BrC|nmg{ydv=x&)2f9V zx1_#6=ZS-Il!X#Riv3ZF-*ERQD}rpu64ddGw07WhVwsCH1LM}NX??@z_JG$~&m}&) zgNc4Lb%>iJ8pHUh!0pnQ^z?Tb>d7Bo1}1@Py-`)WJNwJv+3MxNv@nW9zf6%2che2K z=}#pE2?p`OM96d4{|7=CKx39Pf`t!*fUl~FtH*P5;NQQ-_*2cw3uzu`PT#@R zQWW$H|2Adn71kvyk&iAl6N1uua!5a=-B=xc?P+QcVr%y6)L8&weaP=1=Y*&Xw`e7x zZQgrpcA`&fvWvG}keg-n3(1CFL#wU?>r1#t#8nVBB|vv7jBJfA>T}MWwpMeK(BUg7 z1*Qnntn#AC7c`P}GqF}=rxH>>{i4D-9H zpq*QY$QJdT%D90R(#o5F@vA*MrL609(8A^t$l7dcc8&I5)#+E$K+(Sg{wkCAHNL#| zb3s4Tz`fF{lbJ6Y{LT3fab`G3Zk+DlJERGARx#EZdk?%-3!$?p^R2hwUkMjV89t88 zEty3|A2L|a*krsK%`dbG=Xd5SEDfp$H;tv3nG5|iydwXn@33q&Nf)KEW;Z0arR-(U zzhWXOEv5XH46bgDkmtPD{5q+K(947z53^u{+&YXCdl^5qKz=8l`|_4#&0%|mHFsRt zE}z0>C=jPt-@2MMU`@+=4iJ>rj*W@^{WpHE=jFP<+pk+ULtqeN&#upYSd|JbG1)L0>G7rSbQY(fiN0qLtgK8vE>dd!0P5yb;0e<+Jkg+6 zjOLxmj1rCliLQcS_N}>R!P3Ypn}g-5%WFj6)ZckY%C>5be&&ohat84YJsRdGq4yF~ zPc+y0l@bbqILWjW9b#nXb^^0(gwHP1=F{F!u0N(kjF%TwM{G=QF@b)TIlUj>rwc4Q zSv>mJNccO97g>Jdt?bpscXxd48?<%8FD5-|yMY;zqvS5scfY1Gi7nB-+3`+DrA0QP zqb2fanh5-)WJP}Nb-6lAbmm^YO-ShNXEaLQr`d(g@e5PKT?UP28EE}0 zOMb8lcmq;fOea%(l(8Bkrov5X?f5sD_nWK~B^T|{0=y!_5x_%_8AWh|uq6TOXkF&z zaYF(m(wpQe(*65IQO{^cgC(N`7^_9wP{Dr0PACd32RWWe0Hf>tOcuDgDZOtsd^4UE zy`|*K(AmnZBehTMe0IZ{Flb(Oa1}|-HkV}cFF)q>gqW!4I>R-%iP8L1j|txSc&2jC zV#Vq7p`jiK<<>)@)b4DIp^s6*@YsrJJIF7Sn0Uvk8bA|9{#9D9n(5`6%W# z)M$>*RwBD5@bB@~HfE(d|G-;A^JnCZ4@gHJ{7)cHupmoDP)M1@uKEtCemw zjhk*w?eS|SDLFq{IFQ5DITKDh{W4I0PAD2R_!V-{5n23#x4*@SqI&X%D>#6JEtS3Ps0X&bMEN4B`)#wJhx$z`} z#V_5ywr0B{G~ast!qrkR2+>(HS$_g4wMaj!9x|n@n(kV0iIdOLbRN1paxmn)fWoGu zstsj7Llc&#aviSDHz|!eE&wBzZ%e&iNVTjqz`RX*c6j$_{gC!mCCP+L3llg8d_*t5 z=#mYX9N9M#(D(505%OB?C?E1i|Kba6=Gj$=xb%2-FOVN4*1z?3<-}X(bcB*hz)+Z- z!O1UDYO{2DMh3Y*KdK)2?`ZEkuZe^ZJf#D=O})|0mr!JF=?E9BbL9V`akZ}8b&8#t zCiWe3Z~m#9%HgT5#|8YK5nxo2h@QozvlT9DLY(M|qs-|J-`{G8PG=#7{la%KuqVzj z+(97I2+aYnh{(R?U!E$P8-D^!1`KdTT+!0s%U8|;Lc1G*(hb)6Hp85t3<|!IvP4lM z$s#FYlUx|{ao4h0na8}JcRZE3b5EySqp)*XuGdmULIt)4JQi6`b8(9wpAb5iSC4nP ziFCaa&HT%SiOu&)2SO@poTDUcr`MAT2nAZ}${O+%G%0aO!~k30rEJ@&@X_O}^hHb3 zl%cEpMzH1fX! zOI<3ik&reIe(Md#gTXT?x5q9}A z8a@uoqzAgs|K>5&Fb{Oe+5u&tJt`?jYqexWOUg|`8C90h8nP4wG@1}uV3$?xDjT>l z#9sO?IesS)({@3jS~;8{G%ELJNuk59N0Irpw06zOeOxGx_Vyv=-G_^cT&QarQF!S>`~m3>~le@y|P_3Qb`(=m1q8 zhv(K1ulQlir?Pw`=F8Y(Hzd{{SkmK_a8pf835x_va6}HXG{;IpJ6G+&eI}8Wd7BUG zclXlU@P|q!pQxRu>mgKnipEqe@)I)8NvP~O>-CS8!mbcs0QwJzN&AqA8@_;IIyeX1 zDcL*+&>ze+OFg)(m2rDrvxTk%8-U2v2eUpeO)9#B3H)cIEg5Y&=BEVdK@kkZBKr_L z8Ez3inllaewd!4f(G}n&v!inWLEr7l7P~&KQ?}^CwHNdHcJAI*5;RGHU+RH&o1R5dtOzknZXKmrvR$**>B~%aEG(Os zfmLOLf|+mL1^W`GCkC;Tc^snl4qQI9uI3!(=K#tbwCec5V`}G8Ow_~qrxG&X+qc7p zwD@x3d{5aaY_?06>R|RP1L_+XZY2oJpM?^#uD%QSo zs+9xkr8}N=Lks&+@;?pT&LXVPMQYFHEkQ!zPhhYnj1pr8OaVBPXcsRtjT8*M(HTJR z-R%r4(bp?5&HwbpX;@Rn{~Ulm2gHCFTBRr#mG@%_kYUT5FKczjMPcl9mqb4RPy#vNHr!XW9~Jvuo2Ydh+;l!1cpz9WsIq%Azx}mL%b_ZXxyFl82zl!!;Ez zD7F}Dl=HP@Y4(^Wo#bLe;M=!Cu^sW*tqip@%guR-4=EVWp93lvW6M&^nn7hQTYeTG zP(cu$z}}wCdU0U77Nn9rD;Y53+%}W@udm1cPye}m1*>May=|Q$rs0Q|N`oBSA}B&k zpMoGI!GP%ci|)|e2%4Jq~Aw|fQ8 zM+oNpN8$~#@p1^_aZ$2<^ER(lAz>X-2deSIKOxlPj(2vE?WPm}JB+oaVJ?8V40Y`= zm0327qUPY8Un=@`@6UdycxDhS(pso;66FMnjO>wpZ3>ef`FHSG^JAZMne_*(&*K7j z4UZ8_6m@|BdqV0gBn35JK7}X#eBo`r%v#4reJzpI9vXb(3S&@dwrJQ?nbGeIxry1# z^y*?ny9VX<)5Mxxx~=5y2^LP84KT9B@PcxNMnMJ4>u05`%qJ=J11{NF4WNPm#EuKm z4?Eo9Hq)dF>dN3tD1#>TI0`&{;kKp~fX?kbM8mTuk>BAHD8}_k8?N2p8W+ByO)uUq znIGWCz6?Dk(d*HjhL)qD^~E(yubEN?bL8d_?Jt%1?dnEhir%KKomf}>c=4S5jICzL zi^P3I2#NyDE^szX+J3ePW2MilyFt50Q|!E2Kh}=04>*zE%>p z!`usgt&lB=MwSP?0QI24j`(QDY(`=H-$`MHNgTP*<;u9%Y%e$^>LgV1Glufr8Lj_h zvIJ@CcReO+_2qTjU2Hssq|-5GsY4rXBw`kJiO1H1R&L(^>^jw~Z}Q@N@)j8>ZrHhv zxz04g7CU!hhgyrr)^%)95ViKe5W%LxIQ-p-4gQc2AM$-jTU2FvF zSbU5V)|)+poCQn$U!!;Pu-qJto-&uo^(e7Os7zlnn{oHN^^PUUW04cT(BjYq;!$DS zggkLqo* zcqq>Svpr5QP1K<#P=t~s)}kELJ*$^1oNO7X_2z+g5g?Q7HQW*uNcNz}l3a++-L1S0 zB>#s=<(xLK%AX$r&t~2A6y8F6Li)PD=BkD1;1CnR z)oqFLBETUAfz8jkx_dC{@nd@X#!q3CgQh@z+$(jBMMcvCIgXpf&Ka{@`G?#lnhe0 zC^^?Nj~5q;jn8|(+?=Bma@(RP?p~|uSB$K zwsLjbNop;fX>%9f*rTBB^f!MetXdNh%VMFwNNPICojHsLyzou@nAW@Z|G9Tu4)*8a z%c9lBtrLsdP|BG{VvF?5 zqK*X8V|1r1@kP#2eWV+QK=8HLpjDjTGd-|UC=)0yNS~d;dW=2#SUI=BX5QWK)!u6A zg?92>3yhY0lce~9#7&$+TM(5pJU7btu1KUL-d{L*uHhnHL|WBRw^^JP zAv@Wh`_b2W5gw1SZR#*>Sk4<=ubym1Bd*SNMIVJm=bnrdtrl?H1+hE_)U1bt-lsQ< z`z@XL$Y%8YePHpkt|WrgrrqFwePsY_2mJC0cAT?S~fYRg2K=)-+%Lyb}~ z|G&>*j`gC0_1d%6WSGl6ghr;bLw5I8;J=lQt!KY zo!pnA9DqN?v_q=17Gn|bP_gEq7^&%{BwZOp`|y7g`9CF7ZQ&BTu_7_Dt@Icm8IDKPJD1|*xYwuTp&1@A_?3nB_O*IHz>B)7DyN06Y}eYnYvF& zF2AE%SH59VXbPFsPB2zW33Ikbz9g+>(^`>7OAC!fi{=d(59{OZT;mA^z)_KRms^9* zeuA(?RE0^zdv@abM|k^E3uuQ%FO)lpPwTV1%YYi;AgPqt%ii@W_3D9r57peo9ws#%#xy@s)! zH4hi*j;g#TA1>o|FU4z?aUih2Ky0nzP@z`@Oso_WEvZwZfqPauacAXCksysaZjIwg zV0`8+B{wXvYmpT`47r1B27iY-4cRrAEIN95G+m8tKnVYOqxbZhWbbgm#(K<;%|F`f zAn6jX2f3$FIK*t=vTTC4e9d23RYJe$IpEQ8J=yBhU3y!kY=r|Sr;ZrU>YZHfYtZEMZ$}59HBK70S#d=V;kkWCY`^F8mle`&X^}S=37D?bggE`+^13pXk zwUz&B@DXUl=e2$`u9!+}E!x2RpL{(gAbP;TUeLsfGDsJjd1mGHmCybX6<%`(NY6=> z&9%u7t1>b&vd<+Wtp0F;3In1kiKGW)I23ghKxmnYD(GaG%-r|?^Wd6t82}Kf5)5a> zE67sV(aRB01tLwG3T~NsPJcQTH5%G*lv86Nk>2iwY5AHWNciu~}kegW5 zsaAa2SW?t1247u_YP~*=dW$4IVaW7YY?n#nT`kA`vAp_Gp1WPZo3Hj%*^vn8Y?VE$ zYZfXd`5BKN>iE~V+XtFm`DWP&6sH~M@j>>3{@;S%r(%G&(kz=tcD%_&AtFYGnOCoT zHcj5`qZ%EgQCL7nu0)fz;aHDFXZ?;}+P%?zGCMGABDz)3OIZD87Q5K{%#_r#48EIL z{*(G1<0d3v&4|o~;c2vw$vALee96s_^=%7jD_;GM{)?wKAO8sc|D&{cl-bJV*Qs-o zo?QlwG9+{9*mg(|p&hqrL`e^U2sVh65#{OT8xpfYh0ag!xvYTh= zAOFWw$=P$?cDw~4)O4`;zNsNOA!~+OB#m22*}pl4=Rgi@6jL5k&H-w`=cLGTm?BZg ziHot=KY#J@tf)wVcrUHqb$R3)k`MVkY3#8G<~0!$vp#pv!G7w&?Dx|rz3bc7G^N0U z$VY`9Ip(f01%2fZ4L7#Gs@$g_`H6ExxA_%GBTPd3Ocx@b=IA zWs{JE7KjGy)`fF8DY9d=5bi!)xw(36gd=TaUOfJG_SM%g%n97)IN;Jk#NvPNwqGa$ z;|l*g1I%_}?uR+wd--&87G;gF7bEd&bX-t4v7^A|$zOd{dQkR&G09XctKm-rb480z;eXKT=c)M;zrfIV_Ibo}} zU3ghJ&iUn8g;Xj2=A7#9i4QJoiEk$JO>vob?(T@7zkW~E|E%>&au6O&oyfU8hB>k# z+6~oILQT4IWGzaahnB@@ZTN$)tCujon66Idp(RF0fxFhfv?y%7jt! zDW5Y}_ffXCGBo}9HQfI8PqlEsda+W@zmMiBc7N2HL3ci*~4V74@pa3 z)}1AL#N%&0{YR_4??!rzzz1Fce8*xH3~XEFwRYDupn2pZs-ZbN;R3f*m%wV#d4#7IU&tULkz?wLG^ zf5tJS2Q3Ga1Td64F^}1M94PaSMz{l>FPH&!u9mS1Sz-$RU zI&n&zNU0P4)?hKkbTEJXoG#o1TDrWF!`kc^w7l&b-?MMr=!_JU*L)iGCwOM~a!b+C z1(t-yS;NE|72M*Gs2V9VmK#E>j(6MI=CxM+Pl=W_?p2mm7J1{TPh`lFEu{WsGJym_ z%UQblqosxv!)n=56Pu+M8fMa?B1SYhQa_&Ypu#{v1$I!Ng)gXP2ai7tvG_vb?Nuh;*^_r*|g?4-NK%b6RF#Syqad)G)*CwTcO6cq*%uaTc|F6_) z1F={@w$iu?8@)TV#wT?CWVUmD@kr&*4r-`iL0d~DbaIJI9v)Oljj5{|esN9l z=oR33bIf|us>p<29SS<)t193#XgG^PV6(CX&RSGxoSve+Tngu=w~$I+5^Vk7{cq!qv=av|4!dzrK}U0Q`sS6a402AdGx^z&?xI(dQ?T29a(-ZmMI`?4!2Jt(k?0WNIs>atWJ`}rU5hDD#+ z9{pbz?F>yjQW>L&i58c=&zM9aG01wrvSgqJ8*3e8!%5{M{d zJ$dk;o_Hr(x3{-wAS_FAt!3=$3Gbf9adFj27i>)N>Sl7b zlX3O*ABD;T=`k}3C~0r--TqtpKNdDh!Gh892J%L;roo7&05~g8<5e>~ueq@bYYUOz zDI&*UY3pY+qVwxh!Q73Ba<&K83inqw%C_gRhVWn?w-90FqR^|%F@tN z{LyHxZN)iEl6+p-Qfu5`oMh}-#E>BDK~)YaEhq63Tis?Hjv_~u9CKBjfBq%8dMG!W z-2HltrwZHVR_Ht`USpRZi;VOMWI6=P zOOMv&OJ!86q>#=57oo*V3MX4>31kZrl@DYLE_d|wKpy^?_JxRnWM5x;I~ZTsYA~^? zC7muV`!$xd&+(7qWgT7$A80y`5dKDfOBW})>eX~(B=539sN&n^si4R0Kfgl7e!I~| zf9=yT{P(!~g&D8sdj-=m`wXy%@#8)-*g!hdxRRHl3NLi_xI;ytK4aLZbv(t6q4mbB zM84;B{#;!7gZkjS>{*=M)Vo?>Grh_yc;i}SjmU%A7GrK78{k)W(*sDrkNSD?;?g38 zZF^ax1N>1o8~Am0d&@zNIlF)Ch?e$ zLlOi2l+x;PkUbMKG)J{*LW);`Y+hd*Uh&BJJ@3@@3A_Baw14s@h}MXLjnW|hyXnoy z$8prgA@SGw8Ka3@9tj;zq(zPKgWe@F-=cWrK#T7fltp`7EY-f1`6ZS&@gCi=gY>tKmQ~KFY}_GCZwTd&ODT)&crHMaD%bJ!xCafx zocKX6g{g$I#1dVX#&>&jj`teMx5XkoEY-q)8>idub6n*%eB(!P3SM_{`H`b3pEdu85;rh(En~rAVuIi3dKtis(IXKP8wBD@>E6r`&M3_Pb${h|IPSBM*DI3G zk*sV@Q1;H|r!U%46Vr&*)<^ z!+*krmabs()APUenLc~e`p*$&wq!(Dsl=z-??1oQyOFI5MA|qd zv2s#%H`nXju^oJ#EnTi0NFp(kp}x3>36P1~VBli_9+i?Th>Be%K*oE7-CzoTzSfbv zo9hGT>3@@#Zp!l9PVA)_Z)N!Z*f|!Oqihm{uz&Qpki2f`L0>S%*iL|}@OWmF)=vZ{J?HT+68&-g*34Rs>R^zxX_ zFQ(r^rUx%LN~X~C6UhfWYDwV&CU`eXtr0@IX2yC}>G+xE|W?UV0;qvBw9 zGOkvn6!$&o9*HtGSPg$O@D#dY5*T!rTR{?RcWu`4Htn&ESR4?p{7$zQEC*QeIXLL{ z4?4=eJ7NC!o0kw?7;L_pcco%)7o-=jqcErPwsC>k}sdAuYD$SaaC7tE*P^?e zb61|fP$OW2^VqK)MS3`ux12MhLuKAZa$3LN(-HGM`*atqd%&jJo+l5h&u- z{^7DjAnr0s1unADdLsrG8B>1nZUBZxM_@hii zNysMkT8v9m`Q#E1y8nwR{b%d6cBq1I?IfnO6NxEXXW*e?MmoPEK6nPL#fNJ||Bl zrCOgeaPaod^50qIgylzQ5C<%;Gf>m8P?D@0=Mr zoON#5wu!{-=CScNSXWe5R{K>$mkmiw{N(?~`c;pq03a}7;wRE{Z?(3|xDIT%RqBK? z*lN=7GP^;p_saU;W+o(ch{|wQg{bl_mu;^{F|HGmHPZqzFWUw7_RE^lE(kWPXNL6+ zi|g-Oi*RaJMMNpz0AVXp1Y>06Vtv9+Vi8G5qqZr`ES@TaNrgsC5BM*Etv$WkkX^_q zmD?`DHHkUmR*h&5v0&}k3RW1ucJc9Z_X1x zCU0kfK2Pd zbbgVQhF68s->p<)V^@;kS*3f&M}J7DBFYESXxVmvlP+)8YG)sZO?)Fiaji9vkPvka zcq?1^s!6P?G{$9SRivGtdRgOybuR(0=7{Y_MyHLzl&dE{P=p?GO)2YKb64g-^7`Xq z{iMb7IBM-|1jjO4wzEtqEQofl$OM#A4x?ieB1VM5;voW@-o>%2Qgl&P%N#G;dNu_&B!|@qX z3reH4E^eLp$I;7+;IEzTUOj5IMfIFL5|W9B8hBQs+ET%BoG46@fNWcMFfsd-jlXz{ z1vRVH^SqmrUb2nTHgPTkGZ3A_i9=L5^qd2jC=bpG$|z>Un`lGgwTyDfMPX*Q#w2^= z&egB3_j;AGgHD0({{Q3k0y-j$Gv_!ba2 zk)q1dU2GXt!dm&wWB=}3lRqC0+E?I8MC(=1&XR2RIe_$NvbBE6N@^=3R^dyc(`8oS zjRvc-Y5aumnX}+XjOAb5#zr5F&ZeAh$Sv)2z#emx(4zr395g&uJ=_hteG9Q{=WcR_ zvkt-iUpmlwd*tDSG{cS5h0z;+wD*;~htC1lt%VoswLr8h!&t}$)WIBfip}yvS@vv} zvBK=0$MYd90@gOZRLfH?+|gL=nEj}JVD*w5_0jg9GDM9lE#>+|4xxtf;{FQc@2xz} zzYs5YH}IERCn{#~S5XfWA2iYJn+YMdO2bZA_=?ApiL2_Cj*K9fhT0BcIs}sh#G+b7 z{+eykcGoG?&xklIeyT({a%=`)S3Xg8f>+BPnOXj-?}G841L%O(>OkVtMh+#|-zSTN zs>9u8X`zI)098P$zXTM-0cLa-LSbKGB0WHVq&}JL3wjhSU9S2jQ-ZqsDy;2{F-T9* zaIsEyhnKL3)!2DKKy=S~W5%J?=-W~Mj&tU#u0AL6{;~{0-1O+uJ^SntP1fkzhrPte zicwxxD91aN6Im=%JkAPyVhKu}5L@^h@E4|YF_;V49wWl%+~dYIGyB)cb?@JNmDaD6 z9R=CVZL2hV&i}`UkSquZM}s6IY!2f&z^OAAnz8Ul_u2f*a{iNi=6*DfLo|E=@~1PE z3D1x1M|@IPmhCULV)8uLXuZGPC)W3K-ebrw@f5QNm%KP4H<xrPn`S=bc;5#S!A^e zD^vm_6CN05e{E|&6wntoh>yEmz+RIOHNI@!RGx#U3s*i-n&>BLbg6cV=6UTAuD=!9 z0f(Fe2)c`mB+QX0DTT=0#TCAgQwB9w*Hsvl`Is5&09U;Wo5t}ZZd;){6G)F7I_Gvt z{7i8w5>Cd)aX2BNao*V9D4$!#H|qILhLyK+tzY|UrW?c>%_oF@po)-!dr?G*1~=gq z*gR%7hoI#)$Be=5CP*jZ5}3M|bFOXoMwRYzrp~0hvuZ;_Mo-VI_{J zf9#b9;Fl)ewgs`ck|veUXDO`@El9FQDFj4RnUb>0vWV(C)1j0{L+^$RR?h*>iDB{i zJRT5hn9dZ;rX0Ez^bTsW{L;Y6GN_u&x~hqN&8QtAsPfAFJD!ILX0jH!GwM*b2y-RO zo68hGOfHc=c)qX?Uwlx{=othm2udM;Acdj1ka)YLMFwc{a(LI&(b35CmU(%;+trq@ zBKxlY0MgVwHg#qZx9(TwzZo!RVWMV9>36IR?{a#B`Q1MN==7KE$}JWGE0E!WRM@-u_SN`)<# z<^sA-@@uNiY#>nsGTO|&1Z3UH<}hn;glqycvxTkwdSR}jJY_Gu8nBnRF6`eoms~J4 z;ZNSQO#yY5-4y@EiDr{v=y}6Jbt(MSsCs>EOD3W)!t4e$oz>LmR6FA6oa~#qy3oUo zO>oU3{t=XP*Q~v5Dv}sTU_r#Dy+RWl%L3p3cJE3IvU>iqv`~mu2V39c6GO?s54NPH zK-SO{xd-Z89w`k0#afezWi1^9j9sbg>&>AThW}h{CdIf)`)sq3?r!veSt!BO@@A72 zbt=cm9kkycYH*_L0LP0Vt-w<&I5t^Ii;=t)3hR)uyY{WB<=@zfDME|9c zxj3KC;)i_1L26nJy@1^-+@XFS$lV&*%)T>{JXC8YcI?d&rESZmi~|qDBcz~KU6Xef z_I0h2WiMpF#(2fbL*BH3VH_@CP73!@_oM=lk0L%g3TYylH zT!gF!`@;Gxu=zN z%|rQOR=C>3)xEV$0ej2fe^bJagB}NbeVkFbtTN{e4ZM74J zFrRBdmZu@abv$<$3b17fdhb>);nsY8MeLgS?7!;0+UCTs=N*#wUXT%@eLbEJzF%2s zbB2<{3}V_G2h{Em{3GG^kRXqQ^oV8L+r;n=5B^JMfVT(Tu*!&BX35JVHf)hu1}-KO zX+~=@!Xh!9QMfqITmO~0L zXh`6h^RN)^`=WfpH^w>hY9v$|-vz-+YCfy4Yp6{!anTHGGESVuw1g!S3|3+Tt@OC$ zBq~cENa#d<@!GmfsltbZ^#e4 z*Vz8l51pf<_7=RoS+%^7Ze^f`m9a0=ud0+y8L%_BWhq{JK6FkjA2u8q+Y?;lJQK3z zE+VsRGA{jxQGZdNGC9S6Gsn<(b}I9kwjoCnh~W(20=y0mwTz)-AuiR-rsAWXMJeyI-jSuP(Y- z5mJ%+X+83N+7qP};0_!seaRB+YC2=Hc39CVJjnmT;P>|pgezqS#O;V*uU06r=5aj8 zdLg$T?X`s2#dHBVND*pbUiO5G6Xn9M+xe0dSI_l^#?XQ_)kuLZNVHV`g^Y;uf+rq3 z0SDcFZytzq=%%zJ1e;{3*Z}k36-qmcSc4cEW5c(@uots9S>D%4=Kjb6$rRLG=?`&Gkg z$Eki~^Loq_#T~!irwVD^2Z5Ka zI{)BUQ0RiaEe(9rMKFK$i_C8ne~2D*H6wnJcK3ks!WK0z61aB`uo{X2R(kanj#}dC zZPMwC`eE8foc**vjoD~I^-52;OQGe0Ylk>G$o>O!_>BPJ+Dit1%_iY^udKD>xMuNO zo4Mbk+Dky( zL6+K`G>I=O0B01w>N_#GU_aRwqOQAg6~(RtVNRC%ciXvnhkfb{upI|eA)?wrB#FhS zLOcfd&CkzIBEXEBPfR!~n(^xC-SXaW6PFORuOUH?Lw_FwNq5r1)t?Z|UQVK~hTU0l zS9ZJ=9H0`MPeuk)LqUlDzLtUHqi;y30B9 zl4Z-Ub$^BS8Mx<`oZC`$Y*RSeW6?||8!ot%=1CKgpZmi?e~F(eQZvg@%?xi54x7UgyS<@zp(T7ifa&wA-W5nkF4l zqZ?H{uZ)Dk+xeXs4^WBfV%U;B_HEO~u&nN(9MLfxN5^bd^!M{^)}W=jx>g}lJXvT_ z=cm|Lq{v5M;C;aKlHUfy0Y!WtNxMv5o|tHJ2eEXvf@>bh&1nJpvx*;yfnJ@M`8z~z z4m>I5hl*6_O^rg zHfw_?(*pAK1b&{kNZ_&?yB{nVoKF26-K~m@lK&*(?ikruZz}QQL4f}T;vk*!g|5i= zx0(qe*}!orUS4T=gMpKz<0 z9r#`FG(jA(^f++oaF`MF;v|}O#i(%05`+6xW-ISqla^++_PXBUf&VJociij&Y63+P zF-{ZYqo&CFp%d*)7bRW`L9;T~sxbtWUaV2kfaW^m;)A<=ivVP73dETMj*V=8T# zR=E-zFa0vZAPJ+ynwV6XxVgB{rs0c>1^WhoMR<(h)B= zw@Y2p(ya}3H=dGad3h)**llo8wxGNHGNzM7(%mCfF=74|{GRquj`HtQM6Uutn!+t@ z^uMPA4%Q9^se37Y>?wG}S>mygvlf=IPo8Y_|#$O=*ZB>5%#NHx_B+Cz6qp7T!z6_Q8*nF5TJwzT~ zJ|sI0V|it^N^-4q*oUuim&Zgc9B8lsZkYjh2s2;6sdAPtnhXcAm#kAlbC>h|f3!V0K#nD^;g363e@I6cQa z(off>S>@^}ZQqJ9i@-6{@SN2Bm8Y9gZsCW0rrDcj>xph>pf60X?BQCh@ZG?hD@+&(tGCmht{KvH3z zs{WLcJ}gFBt~)AYm?~GuVtLF<7R zK4bY4Wd#j$X}>#p8HyuM#&$vt95&q2@lU7MYO(n4plD**D&!0xn5tRmEM$~BDK)@S zTPt*$?PZ{kT}Sv}USkfYoDTAuqF~Ve? z7%w0FFUTL3$=XozcVSToe5lJc-zSvGh9a4A3Nwl8M0_zb+GC4Aq8G9>ww{EQQ?s>x zo4NQ?<&J1D^f7411=|GrXi59hsCP{KA-N*1bM+)rzz6w)qL4sbxyK#Wf*5Y!P6X$j z0q`EZA9sbRxlo*=LqflmNs90R?D0TcR!eo_U??o?^GKG0<#lwX?@8|TKsBSj|H3f{ ze(1Yj^P8LelMbKiSF-|>n}yY@dS*IGJa?iT$2rA_~|;f>>sc0g5_*tDzU!TXz< z_HmBfs5RPAXqV%LHxad|O}naBR*oR^1@>#50lvR2mYGVdJH@PWQ#dk~K<#_+i@Zm| zgctj~cSc9=`IbqoL!}m|3Hxik1otbfbK%26nAq?%vh8i%X0v5_Ii9^PdgT?gZYz`_ zD0j|!&mrpZC2vp9iy<331p3wkf?4<8dkA(=$@H(JZ>-gUy)TBlgwNt#@u0}N#1Eb4 z!jlXuF7UEmx4g0r&<(bUPwFeGX%ReI)S_gGg%lNoR^eo~s~VB}Q`WYnyNB zB4&FC5>enFzCU87n)`13xG;xQxxB|n8wIk{IA%#&m`CF^gZ!@0pAVi}UP{vXC5j|B z`~G_XnGhbOsRlB1z@5+}(9+RFF52qtB(78dHStb(aKW6iky!yaXy-g_D+}}nGHpE` zV6P;Pddg?+?B<)LOqU= z5*~d!uJHU1H*w76^H-^Gp`?*7vrXX#_L>yT-tH#?bQy%>SSm}ei^6E99#-{=cHK7; zNFWTUExi+8L(ZnrE`M8w^96eAIdu%!3v@3@vwx&i(G|3v{&PL$^%)?Hubi&q+YTum zmSe$0*WT3+7@SoB#g|lYTGzccAuV6&zG`Lp&rw;ps`v6I4n9t86##4AD*rlLOe=^a z16@uQdv|yS;MqK-c#C(69wr8PVL|hNjor+RIKhTNpEE#B;ZDX1Vw&8g#C2MLlz-VN zEOo#OOwiES{_Sx|1PtD^MXP=;5)4$!4If$a54OrV(vEIhD$%?%>I;F_kqkO!dKw%& zDjt>DbXXp&4s}?mf7V%D#e4zNrdnmkg$SxTKG5~R%1>>`0YM*@*$Uv#3;PeZWA;B) zslig1lBFJ=9$5LvXvJ~;J{*2WlS8!A)X)FWb+s`bOTRS$<-)yU4tCPWMn?YE93 z{D9strzV`PZy%>AVmO#?CHA#1g1SRS2Qnxjmtt&jyVxwpJ+`?!CI}3r|On``p;F< zLCX9!P2nG?ma*HP)I>~~TE!`;pT-=r2ovWUD*qm_ zXvmiYN$%lhE@|Hi|J@TNzUJ=`^{|BvlMi*CsZtjg)Zd+u%gkQ?g1s?RywQ_(tkfDX zBRK2hnW%Uk@ygQ3)$+r*yU1~x8HemLbDWh%{jlq*-wklJKyy_>-b5SA{G4rDDsR5| zm_O4peGrPqm|tl9)wF~ixq(KRfe{G3i`%VrS0NV0FHTO%(~1e88fWIRXa=d2yq znQXjSy9~cGukH_8V{i^C{BiayDoCKm20yWCS8C32aP{SQSC(%;gaD%Jxl%* z-(Iorq&8wW=}Q|AOpcV?Rq2A?e6Vd9cl>ht>FnqTZy!fwk5{IzfcVXU<@L%E3&}1; zvulq#Jw3m1<{uuv|Jm*8ll=V8Y~^u7NiFSub5-eE}%`||p| zyCv1wTD0B%Qu(4~lVG85g@lgRga25Sd{LtYANOH{Z5)~`q%BDx5l$e67X`xZeXp5t zTMsD-3E(wPU;aicSYLX_s>Xk~3tGyAdl)Rqis9meb z%&bkgtvMx+tsr=%@Y@VgjyO_V*iR4Ez+eVpMUu?f;wZ04^*`p;;XZwG=}OBGn}=SI z6HeMLpM=1AphIU?xd+0OW^Vdfi&xt#6HgCp>A$Te>iwmO2G;4}&j9a2#lx_Aj?(Je zFRlAldmT9vRG3*u>kl{Hc|X+X?QA0nId!oixRla+zPcSYfzj#^sLYIg`#-q|?KNu! znHw&~J{i?Yg-iy|bC+xIVUyV<)Qq6@(#&^-7h6*f5flz^hf;7fpgfcLmD!`8nW1EB)dPwmE#txW}lBHvQp>E|+r`Wu3 z;q7vje1-gHPRC#HXpxr1zhubMYSNQs_!PEh62#<)r*>x}f7s+D&8Q9vD~DH&3YG?6 zN4}u>LVaUP+BjW-PSn1G`A_P1PY}Vhn6|fUq&o#@@;! zG>|mqNx>F-f0eDyy4MGx)i(wB!e~E96W*PK!NT%~>ut}~bm%fLr(Lt1({b2n>;F}OMgBRW`O(FP zcQ5QY$GWGc>*iG_!f{wo?IvzHfQPSwicN7R!1ONp5%`S2+z?B@jcAkAk@S#{aZ0mVCN>X;4D@BQK4eyh~E9sm~I`ry50U#wUDQVdHc)yX3qh z`!0T-HBjKxEHM!ItaWUc zVV*llYxSBBBAEJyn%}mBXsa>9xe$_#2+<#NMkROA?3L6kQShAwk(bvLdL0047?Jb? zDwxKCCH4K(Th|lK2!hlqn4G|~{F-N31o+z+X#wrMM=k+L!9>ne z9YzXYG$CS*<|01@a|`XRr>YbgQ22rf{&#?FV;0fY*TZ$m_Dqz;NV>;wEwtDkI00UC z2C-0{6+2hXS=D@UT}pZMfImRUX_j(eJycXkO*qLp$ry0E7LrcY90e^!Eb`TepJRp; z_K7%~-V5za!7?Od=?B9!?k%vM0U`q_VTJSPH9y#0;lt0RTt1DDn-k3VW+!WLUuU~z#Pw97^WGh=D@ z@BgY?h~~m#(694t&5Wpg&rkFO!G$_EzOh_bP_wS3J!{^JkEkquH?=A38Q2;@VA4cQedti}Z2N3Ga2#e_n7*7+CjAFlVnQ>8L8Ve{ zmpZYw>N`a!H%u7(f>PxDN&1cbUa_6$cK}6!?yLP z!ZwFC((UM2g?Kg7zoEf{-#32%TK&FQ_+tu(taNN@a6T$lWL&~mjSDng`#W}huxXD=<>=J^ zbVBz5`st4vijJ`pWQuZ&{Q;kO*sgdXp`}1xPoOrdRqN56wx={{czX*?C2fUsl=MWe zk=8z^jzkm0TAzz)oN$VDfk{G2U4tQyMsSBsoCzV%)f*O;vPylj0SrefKMLHV;=Wi> zc(5OeCq_XE&7h@N)HSUI-N%_niM0_hw1G8#q9@vC)%t#EjOwK!$e|LwPDB7G0i!}D zF$4cKXobyM^nccV5p70KLU^m%b{bBhC(UuFi=lS;;j2T?-*gntT7f3r9{qnho1AQB z{gGZFn@t*4IKA73_t@yE$g4$qsQjxIzjhx=ijG_%1G5L#H6C0V+0}QZtMm+@v~&je z4L2#F6!w6sonqwA09Q!;VB9_7sG0oIc6IroE{QD&Ug! zF>}WHl-G{f|gG1Wlg4O+7?@VC2xN3K7 zl^rJ@o*;Y@hq0qM)Nk~9h(t5)3}77zW>E@i?%bwHck1AGR#ccj*UHB6zNom(XYYs!X@mAAl`;ctoJ*IH9-a?;ZVdy7K zy03U2-K}(UuovOS^j})`f02$l+lWFK`Y&mKcDd*ba2d5Tx*&k}K#HWVmvAJkgq$dS zHF!DAgW^(ouYpoP`tJlAwi`?z9)i@`mXc^fB+wES)SU|CR+sw;QN*MYVs*;gXTV}C z2TqVnyeGlIzU!^Y(OA?Drj+uKU>jc=$fj3Kg698wqoMkAwBTk6wLkmAuerR)o|Q}5 zV(CQW6eEqPh+ss#=WgMlerwr)+ro8ADSs#;ZwE*(B(yE!!jGWCOXqx1E6nl9UF_TP8e2 zB6Y{ncMlrHvR{h`cKP;>R-^_*8*M|i-1%!uVoWKoPGXBgpAiV`~8 zyoMP*zNB)zN-PFnfN6&6Q@_=KIh_SLFixX~C>~2iWa+PbOSRwnk1lYuw+jnr$_Na? zDz_H#(4Hc%r5>wG;}U+3A8$PU#C3U=+^~&+k2Z&NA@NY@uCkjOf1j=} zK>+)sl7ygWvKjfSu5@Wi16+6s9KBeBiEHJh+$V^=qk!N-BNXHQ)3U|`=F&D_WDf1g zUy}^@%yw@ouv!w+-X!o?M_n=urodEYCVJs(`$jp_YQi@Fk%#&iNxOXSLfh3_Q7nvI zlQf|~P;kTr=h6S1_6VQZ1ggP;w6R6JF7P9;I7x0MZL-8PI7AM9k;l{OD*R0=)g?M&sgk6FYP7v5QEai^H`G zg=fZ5{K)(iMGC$CoG>S5sdKa__&R?v=;JgSS z#P0-5e6xku(yV~d@=$36-?l{%Ligci>h$)Q*vWy3QA)_D<2A$enpgWM%5`9e=KYB? zfHR6SF!>QFBR3Fi`E{;SUWs8a%@CxfIWapHErMt~r@V9?Svicml^Y)Rph_zeSL=9%wP~O4Kv*zX{bKA-H$6$&TAJalGa?`(hWG@8o2w4_BmH zjLApFF%kP2I+=+9B*HR063*er#_a-U_C>I7*$N?XclOt(-=;FzL_YYW3#fm6c}5u* zHwhcf5T7=lz8(GH4B&veNy_b-!L&n}NhqD<4%OQ1#>q0@3MAU9gXj8Hl*wlN6OIosEp>VCP2S^fmI!Xzut)$IOs6Vj}1AYrD``XE=d@?TXX|?y-L!g1T{0VlC z!g1Vb%Y;wKE~2;0mR5c(`_d8~Zk!&^cL+GQ2O289%Bz^|aeuG5-rH3r_Q?MxYy#R< z!5?3nG>^HLr)rx0dDwN6%kGs;GBryujuK5crd;P+-soVP-ombAhZBTt>sm*rGSqab zz=3oZ%mpd+&VmRHKOh6bAr@O#T=fLH}xc@uX#GjsQWo;^ntmupezEkQ2dYlx zD&+_qMC6NyJvCXZ8PS2Hx9y(@Peo9eI&x$c_KeRhbwQWu+@Ub43~qpdv$&P}3V`$y6w#GqUc|ufCpW^v0#|-M!pn8m z!juqQ1NqZ^A5_gEiO+d?h=tU`Rq3DO zyKn`;d(?L{VUpN?Nn~SuYKwyt&%m6H^U4FzLXR3orXcYAfzF2?`%^gb^hP=@r`c{v z4SJJw+kkDW9}{fycUHtba$Q;@kSgBSOSzuAET6OsWt@`w%WmiOP8AqDRNy{P<6-Q5 z(lP_eO2N1M)3U#cMLjtkGwM{bgHL1)>_ATMCexUP@lg*4#3ByQ0ESwRK&aqYnm{4m z-5-ZH$y8(Gvq*qjB5-LGBnM`O|ADwvWvoR(FDW8zr7twdp2pPnf(IdpCbSp~|{A0OREa1cUxUl)3iV3Pt zC>Vrz1w^_7Z6`5OVro5j;2i2<_vsxCUKbv5EGGww#K~^>Jdn5w96}PSASvzN&H!)w z)QW^xhi9aTEhI1@dRgg1=+))a=1G*gq=;GS&FY!3tfhEX^#Ydo>5f!&h8n-su}~}W ztH53?rgPr@5uwUu;r1w0NM`ymA@BCkGjdg&{rZLAY*`sF*rg5spF!lQTdS`oPl8y_ ze21AB@KZVR8TBKK@1IQX8Y#%pT;JracR%d=Q4wu21;^v;u6-|>(wsI2d$kF#xRXy{ z=opnOPm?OVA-%?wTPrbgJ4Dmp!#vPnVEj46R)dTb(BnO{H1Dbc*Tv}f!T^c zybdxd$@%ZhmZD`(-mP=`C+6q2<55uK_dR-MNgtbg}59$VEux#gSZm3rwLfx&R5rl7KQtEk>|?LWvpf0U18@7mO`x92OTc*H>ES12rVR(maN zXOk>Xc}hQmeJCXPC2a^jc{nijM`k`RN?AR2}Qa_5|-rYb`lM2lUS!VGq_T2W7w7A<@~>i?GQivq7rQp5g|tZk$)ixZBgR82$E1C?w%c%jn@^-a#SYPd9yVGny>rw zk-~g>(8|-d7Xvu@KkICWTpS7kUdmss(e-IHT+_=u?n05oQ(FrE5oR`FEK%Dpo#A5~ z$5rjU^8o(1*U8y|r!f>PDJv`l3;uL7`s41-+uFwF21wRdWkdat1276y!PX7FKyjp2 z(eANv1cKWaokmN`3#0DZJ>i$pz8@tdc)8bS=!O}R_7{YIiJV4&Nq)tF{u|5l<#ojh zhuL~vin@;OmGz9GL88wY_??n_WXuE|{thW9s2>oa^Z{!mA=?+P9)?LBci^|UPSu$p zqW!B}S03;X629`A2H>>M02h76Tkn$CEb+LuD9M$vJ)B-!roO+&h3iLKay0GQS&9Xo zyUTziJRGY4WF)ca{e>RRKl1IotNHfNV$&VH-gWD!9=W)Uam)`|x26DoxC=a8O}@UO z-40}#-3&;VNS-3aNNTFwN)`I#y7`+y>`l^V3gb&2^^xy^*V?09uK8;QIG(X@P=SVUQ&~`(>^C zpMh;JD@T@Se`WNS4gd18&f&EMK&P}69d+&%N%@{t+t>(W)G^V?NAi18!nxT|>Tc!&JPAe2BIR>V)+M}o^X0jHqDf`SUN*G}g8_1b zmI_+$;d|fJv^)=0AAhUb^=SI7L}h0RON6mNuRyC27)hu0C45UEPH*{$kdi*<;;pze z^dVK2HQ+T&m_S4=AUH^T9j%&plh#b%S*r}rc$OdP{EvEhPR*oTGL73;av#S_y*+Z< zY+u{vcwr){X7v=V4r15jBw>1ydJBUTNg0S_7X-Ncm}w#yU!!V(|#l0 zreExhYW%zk@Agdd6CwjOJ5(1hw}L~(Ma2fz)rxk^)<`rk@(Rc@q2^NY9tk2RHBJ1- z)W7m~KG``gHjLq328ds_p3r?za@SkAgwsI!y~Cf?;kYum$99pQ&aD>w+~mGgK+)$k z#8#eUAR|t0SrSaUq9&or(i+t$nUY7d8_!>R&JuYf5Y~qpIRnreXR*ju;f28u?I(9zMkZauB%WT+6U<@m-gO?>~Sen`eh2XFEbxLGYtu2-RoZxyZcK9$#wlt9U(mLWlOX=%R; zHS;5unROD=(FgC!G$t*f zOjUlpT)el0q@iJk+h>4E){-R<;`p>6@AK4x6*%Jq+O$7B^BoWKO)9-({=j8|IQ5P8 z0@(RuH)Gal_i5dYN#eS<|Ld5}=WJs0J#5F^(_9)nj_Cu}wNY-^!6ZmZX86!-j`T?t{yc8E z;Z%NmHLsqaEuB-dP3|c8Ql=&^zO@YE$C?k9o$0Uon0Y>~GtrpdAj3&_7(3xJa<&M= zaX0(Q=J@md#K`k7nbhOs^;UfqWcAMHdLFWP6-W9PO6~Y3Rs7+ccBsKEM z{gnLiJLyqY+3m*9UVFowr(w&|B#FWgP~TXql0}wnj+W8X=i@(CeMm=#<;R_i_@`_i zW>_mPj-HI3$TEuGkBE;<%m$rK?A}D}sNs7}t12UD?DLoIm5$&4uM+3PK>p=5tdRTX z-jH?w&6BTTFRHANad5m5a3)%pT23)@S4fETD-ez44EPc^u=#8AgosKx11y{8=1^yy z{>ISaYY-$cRL7ty?~i)Cbo5^8GNp4phfl*(d$Rrvz)LqjqA)g6UH2>3mw_GvDt78K zPfy;*ZSZWV9V$#vb2<5@24B1Gz%{}6Qd#ec=SrTMwk*%+nM!a^urPPW7FyDxLXGHd z?>k9*#em(V&SiPlipR~4L&u#%(`Jb6V)d|(&Wbci1l5k>aH+OJeXtuV`25-cD#M&r z58TKH&gfRq3XN&On2wQ|xDz+V$%4qo7b5wk48nf2d6)n1`8=R2FJSvNuTI(r*v76} z33AaXDiSJ*pFcFaO6;4sY{y?*cmc-wrTSxj9&pLIY760y=#&)xb+e!9!d1VA}>6)#d;cB*l#Vsl=C;$%?zF**VUHkx>7He=Sz_cJ4*tOI6{~@)NT?>v3}Y zUW71OK_z+P-S74Cur4ZQptCP z9@~{D@KoDMKuSX>u&j=+zRm-3YLM};GO-OiG=5M6+tdQRfKr72cH}D7Ze{I9rXz9x zX*<(|X@Bw;_d(wvZPU<|51G4VOHlS@wXl?uR6^Q^Py;+kXtIWnD*3Gf>00-e1@Qng zK+L~_mOHCgJ@a^a_GtAzaM@Ol>;mh|22!gux%zTkU(HUU~CWHtFM|2wOSX-S9wu04rp7 zk95lkp&i`@DHH5A+L#c2dri)M;EL=(!U=!aLsWR*ZH?9}I=K)eku$)j9Q-lv!_v21 zo?`S=ybkSJAZK5?QEdCT=`?tEd?6v(bQf-9sn9!9Qxe2T5K?fhq%e5bWwTc#>OXm0 zcvu#*TPWTRy6upACmDkK=0aD82gwuaFcZodV4kCnaK72P0Myc@+k6Hf zPGu=a=W(Zrw@^21X-5m zchO|3j?}3P(|(x>m3DjasrmdRS(OXd&S`AFrv4(mWx=x30DfwG+S34FuX!MFPY0&iUBW>_`a%v@<^qcOqp@J`Up zGXSKGhja$e8d)8qX#7Z~W?cNEoOB5m{Z|o$%!d^LKd=;&SayFTJh>k~EiBm`IJK1^ zv!>mW_R27HRHpTIs3C!Y0*row&(09Y`ukC|`3C&&USQixrxN%c;Xg+!2DUSHjSG zwxdj9BvXp=mhC5sf%DH|O{``t>$p+D$nVgb2k3a&r;V7x`qb`YiG96;Mz2JY&)&8z z3;FRhf-}@CU0i1X_d0PYsVbQE@aCT8HIgIQK=ljv-F;b=D~~`j+sU{=Zy5h53cWXD z+QVD+&28tcqcS*=t>K?fw|9}wbgi$2__W|ByjrJfElOThGlzNmjro_%_@;^Aa2lh+ z;d*?2XYRk3Go2y}HuYV0bDwi(n$2EPzps;S5tIxX&2Np%la2TD-~VJ-2Y80PLwV9& zK9q&xFp4z9uk|zKfMx$5N#`BU=J&tu|>^L)D}A;Mvagd5fbt9`TqVtk8_`M->-9B&+ESL$2qIRId4UO5o~e< zog>djvw(d?C+JilrnXBR{K^T9u=EWd?oC2T-#te*dZ8~B>o$iO=*!kDQ}&~^cd zlSGK61RP;mJ2|lSr#Vqt@QaUBO7D=W3>eh!iTp@Q2onL`&}o%3jcWlL^_1wpOc$QW zFk|p{aSlm9WvsS*=^gW42|v`VbcIj%ry#+JEDRP^?zwaG%~x^*9JrN(D?ZA#;iQa5 zEe0)?Jf-ScW$3Su!@;E>q851O%=H4>cPJvTBw6sypdtNHh~aTm=j?h)(N5*d(s#4d z;di5@r6`f$WVAsh$DO=)$2Ud`b(ORHSGn0O85r6|YfAKG;y%>9ZPwF~801eU%q~t) zVEFMCU4qiG+pDZ@>cj94ZyIMbUux=mXFCw&!O0F^5^p6=vCFReh>1tNQdG_+O$z%1L8ED^+VNTSfu*C) zm>c*1+(<;W5;2|N*^nBc?lmu1;K|0wzxdYdFUd2dJ4Z>-+LcKm=H@`8`9uptvAMNY zwZ)uf?V6j0#sgLP-G1~%)>D8*GQKlC z%}Ca;gVft<5`85%>M#@WX)L|_-xee`XyQ8>I=(au60e@=<=1=Ct+~SzncMty@!5#2BQyjOk%b2_1$B1t#E0k?7A2zw0Y3o#jQ`fz@NKz0{fZb;n*mPQ7vp2=pKfJP}n+aPODM4-GTu-?>2(CK*J$6Ka|8 zQ`P91`@CfN?bH3gS2hoT-^1k3?4e}bFX^oZUbUie$IICE~`ME18qC$b7tN z?Mb-hqbOLqn*@IMz1D^nfHjr=m_F6S*^P*68v0a;C>%vH8*0rgP4+>G8GlAyd3Id9 zRzKi20&-=Yal(NK*N6-TB)OXZ9e(>U&67VqE$xxJZt*k1oTcg`nc-}B7pH}VTA|IK zzB2f2+J6ZWE#76aT3^bn|KNofAqf!I`Zy@Hb}`5)=by0ZA& zriGBncEXQIc&_J)*Alzz*!NC;&HFT?wzq7dNHRl5QaFl(Qb641+MiduHmIR%)y?1H zF4x)r{;DkiJ(wd6ld_^@TRA`131yTOlJpmHqhEEW>QHKMF=%UblhMjFcgxoU@-i>N zXWj_if2(Wn4>(>vw+SAuZ+{~UW3ElR1Nq;=RYD<69IH`??&4F(Ld_PoAWA_Yl{3E#!)*b(yMs z;_}xT#rW@j&$`81y6h6J%~oQALAiq5>1?4xAItvAhI_ZM`$ zKgQub+JdI@=(LBN0+h5)0WQ{ZvpaU1Gw{jvK(UR3P)_{m#!og>hUw~Q7 zp`?H;|M_U3#AW6niWMdksWmYwhTBsvv*oOgFWERg;sy3{ePXD;V+lT7Fd`eI-0KLjJivDKjQwab%C5D5EX)PFJI`+b4jt* zO_I1Mu{LEkqy*~Z2jW2SvP0}A#j@2}1Z8fS<^lfbFoQQXv1K%?QHWc?+`819kTxXx zTr~RCAQ#`r-}nNPyLYQ;k?i5|uFnl8B?H_cAj)7Kr-6z2 zGdzQXWA{9~zvRHuH%&BUQ8y+stu~G?y<;-H^9*#MuE>qJwiJ*~lD-xzi`g@rit?Re z8`Q&}Ezc&W&M+nA3Jn7ZMR-5h*9Jt?r)pBJE_vQ`c2j;gAn(?A$jlH5h!zkr;(CQ#=egX9N5 z-;F5gx#sj?PMPw+_pfK#mw#!_1g7L5{cCKj1k2ciQSb~|;?*U-yZNDX&FUauvzV?- z@z#U3!ApM_)CpGTIH#p#>G4$5J{bH;hC7OLR^(clVDC7a{@ZepMOuHMxvmCuWhSfR~+%w@Mp~ zNBq=2N2NJ)JO>5`GA?28X_1m~peo4D{*HX#bkb7kF&M4K=kjQ~;YIN6MA$S!w27k3 zl7u%`yQ3W_1S`CTjtlI)fqF&Tv#|5MtNnD$tQpf6$Ru$|uYbnHy=8j;>sDGF;f~F9 z`$aQRTvB|KXq?Iuzkcod`SU*C_Dhx0(c%J|1`VH-Khn_8K3?6>`hDUy009znIu|v& zn3cQOTyM(Q9DN=TFi7`hrm+@-zUzxg8*hvy$OW}x-+EE*DrgUBjs&W`#~g&hSk~EW ztWwQwt^bBydP`wjN=zcLteWqyf2aU3(WfglmkhcFL1+P%#t}lLly_l+58TRnJ|hOW?DMDV%L)qW+f8F)%_&Aw4P_)XIr_roSGaJ#e2;M#)vg=*a+Zt<)^ zFK*O<0Prp~-lhg8D*w_Tui`RVFdCRHXCSM~y#?*A-`l!&0RpO}n$7k%ZrUhQk_u=l ziC5*gP46}ci)b2I2yl?t5pnzGI~82oo{x2a7Q4VWC66rXbMVv@+OJ|$$|+4wUDFSF{*D^;j#K>JAD;fwEq6CC zub(PIH+Y(Dux`_*P-E71Y1I5IR!-J;j@x>#h2r_QLLUfv+pO$#KV0f z2{u(gv?}}1G<~?aZ32%i+AD5f%^5W^F-Z;yuEclQ8XJeDArL8B=A&wI&LP;?o)o6i zLz_2A&Z=mOP032Zv3CWT1_$0H0mqC-Ei_)>6}rg!f^0HfqdxhFJ{+$xe3#Fz4Xm?| zV5ixQ9waeuaCi;UzxZ=UOXXYx{Q(*2GGvD8_@DhX;u#5(qZpCUxr z+pC~L#L>pbYi{poQoaWf^@~1=xo%^D)n>MN9nJGwb?y>6()hZ z9UjBmp^34@>J{r=^Xdb>Km65xV5FAd2}-OVXzC~F{$6E)zwaNcTOD?K#x*&{Eb2-B z)s5P#$i3dM`G;0?WcHnANikyW0^h<0{o$QHKNalBQ*z|ZeQ~vnJ2O=2dWp7mvz0l7 zG1cW+UNv}BE%}AYorn`$Cf*&T;4Gi>klyp!H+1#rj?_e{vSdQjGmGcERw9reL8?KB z2SivWfkWH^i%#$t(pBA07tc^LzLcs!5G-?NO%Np>zCD_^BcA3z`n_5IdGc=z-U#SF-}0!yQhKGkBiUwip3Kk3m?mK4xnL==R!zb8G{N52 z7PO3Wq0iZ7Tu{mRin>gyh)MFRYd$mjJ7)Kr`MZOYdaQNO__T1hA5Z;8cuOLiHK4X- zL%@Dnh+s}9IdphiR;=tN7A1pjS@~2CDv-~xI+UyE!8XZ7yeg1f7 zR%GtcQLNnjKNw$aGr!2>e4*iRmylh~#v@p&KBw#&Ldkbj%xNwto-yH`4o`j4mWwsb zZ+MGlcM>BU<=HY3;{p1(Upeaj>$er+oHind_KIkOH6)qQL`N318%1@8v*^}wJz^ss zP}Oxdmoe7b2lRhA2FQm34ny}#n=C!$=A^jT1;7pnnCMg^E-6uoHBQCgB*jHybKsZQ zcB@+n>2e7}%zp4rr9$-lwZ{GPC>X_)h}ENbS4;(U4GOi6B)^`AuXJUo%FxQ1Nju%& zC41Daw~W1MNU$HjWqE(-*_yjP>tpg)2g8CCOZJby?@h$JY&6yUr1+D3H7TjS-U6B3 zGxO>SLR^FXbc>YH7BL*SlV6@}H!e|`u$64NaU=i2fUQ0*1+BAffUe+99Pw(bsNM=h z77V_=_lL@be^e?bu4#U#oX5o|8bo-r%2}3jcZJ1K_e|B!QxAM24im>)zx)4p2QnCcTP~WL4C5cQBQB2JBcX9s+ zsW#5Hhq0aK%Teg%R>Z?kO4=6lu{EcFZr~L36o6|j>g3neCCTN$J(~PCpWY1SEK8D# zoo`?PSNbS35^PTr)MSG6R21=^F>0(Me$5qkSJOf_n`^&#s;}*I-=6^()hjTde8*O? zlm~pk8)F?as+cax=$uPLkrBjDa~~5?zuy5(W9sSp+51c8QQp_Hh|pd0x-l+V!V8rMVcx@#Bwu&|G_S-F7+eKE6Wy8WiAofsE2ElwWi^Z9;(kRnT^2oAUNVV< zJDkmGGfnTq2XQ^+<5R$I2?{rA1jl^0Q90M@e5kG2tDBBk4^^>b${YC^l)$>7$LTe!8)1Q$+)QKXj|w%_ZGguqFd5AYDWKD;zSHCFz4hT zWt5sEpocGvuJ@*_zB>i58X0n!C~SqfbZLSmkdr*I!z~`Ijd@c%*s4Z$8o}T#DdQN_9R<|R)#f(lN=3I z=X1Xa4>}8FCbP>0r1Mr3izi-d%&{<7yk?WiiR6PDJz;%TK2Xs&bSs?P^QtLFX5;>s z2&0EOi}tq0DJ3&kRQ#9yZUHbFPgC~^Mo;J=QSWT`DC1sj0xia0zE|Jh(q{%}2yqEKUD_PK5s4G$T^|BOFRM!aG+@l>EUm`{` zQTKaD*fUN0(H%$gJn`KkD?5RfFhzvx$v5$}T8d0z*bnKf=rli5YH#_PCoa)#OJ=~S zu462A(ILo0qkK6D-A1|3Kx10~hl6h9*AZdS2X~1l$i_E{zJi1Absrtul4elq!z$0q zf`rVdrs=_9g$q4bZqD|OC?$Td_XRh=>(Ox#0~krBqv=w8j00+PJGb$wlE^7Q%``ro zL-9EKfW{03L#IGB1_>Z1(b`Fsr?@g}kOAgy%2rqR$k$y|w%q|cZjoej3iuVq5l#8@ z_;7OIXit-rh|JxPu{Ph}oUAvylcxRlbM$9<<`k@=;_*ZRTL(|k$4DzKC+dSbo24hu z?8$SXnZMNTp5%y_jFpEh%cpVfodOOfJa5sA$6Jgp2K*hKeckc+qwQ0k99lTq*CxgH zU!su%{oX>5!PABjzy8evWP`2KIWqbVKMMl`!ouJh&74&2T;m+#8H@bq*IYO+o*n4% z%W1sQJ4cCX##Cva;-T+5j)5&!Fz1iH%Jq-$)i>}>0@IO-dQV;X>POM9h@hqPkEZ}9 z&)7QpZQ^R4fBr_D>uX7Ueyd-1qPed7T-{)`II%t{1-WewG1F8i{7d2>!(juO2#1?m z<+{tQIOQX6&P(PFPwqxbvwE~7^%*Tn63p2vD=QgUam-PmC^wPRP^JJ^|7(-c18>>W zQ$GR?bb3r&nz7#cAM(dEH;M?~sg5*BiXN z=|eD(JY$?lK4CR48!S7F1$(!3@A1c|sv*;VQf{hVKISb`T&{2Uu$}ndMQQosQu6pw z@T+XEQM1M!Ad){O3dI6l5D?*sP9Y;$XE!UnW~__0mx7pP2h{n_)#7K9USLLmbwyhR zi||>^C2)JIC9VJw0|C0@#U8(({#!NG%+;&t$Hm+0B||gk5)}en3@YmkiHVgH$)vu_ zbc+EhbF;mc{r5+!cRGY*~2{a6t`1x9(?{0(rl~=luik>kv!pe8hKt*6S z(RjI>3Jg%Ess+j5ViIZh&ni@Ua>#~g-H~0&}ud&cQJ|ZsZhj)6LX$ z7I_)K^}8FY3IS1ymK-QUI9=9TZt^_&lWbXUtJ&XNF>MFDXZ1KZ-dl953B>7g-&*st z-QVwqkRM2yY&8Sb)BBou{gtTNnK(`;%Z^26=-Zac;VHCGh0$1kzaT*%75b{)?Y^oT zTYl7g`Zgo!mBq6@@4d3e!D^{WNwwP>1)(o*-3GT3oT)%F!t^g_f`HSkDI) z{<>7Ztv0^CZEi=6I~u;=o^rTcUvxD1z{7>t?YzwIe74xOs4P{3qS5TQ_9N)dyzKS` z{ucBMG-L3=PfgZKv3B8^Zm9Xe9vRF+(andCwtKercJvSk?`PP^m#J&^7K|F}e#ElNDH0(woV`&-~O_>(=)NKjj`$QyamP zNw)>if1X=6I^yRh#JUn)yptBZd^80stqrOI2}dy(1P++4FFj6;w&X^a{5U5*bCF?( zlb?6=XWD`s_ip0uLc>xw3v)i#>=R^i``EajV`aW)0x!p3{y9H1!(2MirDIR5eua@1PknigPpW4&@bbGg zQKWisA@&7mm66)WL*ZNxKfb6B=S{ zCcdV_s*Xwg%Cx&PV}^52>TZj+m<%u0Nar{t`#gvN5Z>lr=%rN+!j#%LA>yZiD`s8H zmM@O-smyb~JcMBvQdipw5Zu29J$Fw5ekDTd;J;V`JQoqu=FG}IP3z8`5LvFgdMWl4 z07?iAwnALaSX#Y-G#*(lg*PeJ`%bpzkvT|)6nSzCG5W_QQv}v9N$mEK20otdw2$D_ zSU}D~SjX+FN%Rz12S~4Eu7BTeT+F&PrPS5WiD5#H!dDgG0>^;buOVA0ZUwy+4YJp0 zQU1u4wkmSDKRi5y5ABR~sftAKLwB*9j*~T(;zKm}s zvyq|XLBiM`q8ogpzj`ns=t!o;wZCQMSaSGZ*Sc`a7t^&R@JFHQ=-$mt`1BhtE!6O= zG0W7D&hhzv@?T<3)&F+Yo2rj|gKQzT*cgvJiA&JSN|UzdbQDG5&`%W5{qoYmDPe@E zb(;k0Lz+?prHa(w8FHz#HrX|uWclj?MVA@9J0!PZQk=`6_%8J?*fD=-8blEyd?y#- z4A>|Ud)n3llDDkG>PByU=t*Mb5>ky3Y%^42k>yE>`cHCCI$jzHXRR_pnp)*M3@nM7O@U=!sU$A(5}BK^T!`^9IjJIkxwzh2>3)6%ee@!NFOM`0&nQu~f| z%m=7q5UdlCkzFv>T7ydv#a5TR z7{5m{+Fpwuc8S4=Ue+m$MnltChRENrNNwt4j{=4#essQ&q0DG|;lCh{)*!we+VYxXXfRoXn zi^ofCS*L)cwktbOMu_pGihLM%B3`#KNJ~`Z0vhzf>_DN2LG_p}NAWxbFkFNP)ewOM z1C}y3o}QV5qM5rhm#=vUfj$@Gm^%DOFjE-Q_6g4^K+ZQyxwFL3B#kt-JTzp^)x%v? zpMBzX;A>5kNGHnBuYMthS`ddiPgqS!njg3AILCM|Hzlu046uJ(&lbcB-OiCo0e|)U zz&wT!K>o9kB)E}yI~RCw#Q-Cul zyp5R-qGQ14WV2wG*BAJSlWn+<$k6_4(s#rJ?0qWx4?h~WEA-(ndV{~_JfI|$Q%(Vv z>4ua3x`R5qc8x1JhTGU!L@8)71IUgPHzLQls~e-TUc&W=Co9O3@3B%P;XnUlPz2n^ zGbEJWt2HhEW4xRksD`3s5S7XL6LK6$+LX|xxPRjI&K7Qp;Qqyf6Z}oH;sZQ;w>9nR zN#<4s?SS$e|N2cVmyCL~u}2GTS{tM7pNg+g(qn_+vm1P#q zotM#3reS}s-se%n-{5s{?tQy6m5gcQIt92f>)dmE-}e(c-SIK+ZSAN#1Hf+(>S#{k z!FO@O-NQ6=EeENK_b0+wLitVsO2^r%&rP#k?>Y#>7lP=2Uwtj9ucRL*&yAB_LT0ak-{qW*y4XQS%Raet3`L z1t#`^iT-U@StCu4RcvlFjLC`1dwwq;^y0p&N`5ahq~CBJDOtwgsJue4a&RS}}CDqnn`65$WQcLUm-FI=Z zVQrOt%k*o?rzGFh>1NQE6%bLgEuxJT;#*3=_5iPon|1L3KfGHq{iHqjpk)vlawF%1 z?SV*}wi=M$1G)eeUMJ6_#&n9A6IMT}yc<;_7>y;&!_sl!G$2v0!qx>;71QGk3W6aK zvJK%Ea$nnfQ{EWh!PTHE{?oN>k;fiz#)0^{>&0Kp9_n}ZslebpEpxLx|7N7-zbiu7 zO}=K=X{ON}Prg7e(u9aF4Mb1^=nK7wn<7rj9LuM$yL>6p+Z1ESjcgnYQTk^A9aaPQ92_IFf3 zXRPE*{F{e|12#Aoq?0|PZ6xd5GLZdQZ`{c*?1LS2fmubu;eGoeE!fv*bNMmoOI32l zGD@^?;ws!ajxUYm$UOLSH)YlFcIsyq-JB-`GnKP;m)?_N;@$UE1@Ike{4woHe1ZxP zMb8VGZX)M+GwQiz`u=qut<9{o84W?lhtIk#hP5lUFi`IWSw6);c{gT?Vr7*vQr504 zH+6%S`xrU?JJR=>JJ-WdjEKrkgL9$ZfDP%BXCBga9Xis+P>YBmqqs+CLW?INc!G
    ^3 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

    LG;6iO ztBt0F+8*MFELi6p@SzOC==yRn%+cHv@P!%U*+fBKw^<0kQLXOOaSpgKGM0TWwl^=w z5rr6y5HR^3GIfdHn{KJVA9wgGFK5$Oq=U6~t&LhtpOIZSb!@6`7=GJeD$ehCxZzTA z%K%=5F*>pDl$gniv@*$vk#(?A))Vuz9X(y$jyfd{0uktztB%xk3x9|>bT9vJYprgN zd7mf>Zv6IMBjU`Qh9J-)LWvnkN7R504~l`Qet;a zC(e;42o#Wi$LGvy51$y8dYd%U!bvMF^!#e>V^)i{&AH;|Qjk*e8(Ek0s9z%y3g zt@#fv^zN5*cfXb@myn{1oij;@tfxBDoa#a#;KGjm#rT?jA;e&S=E~j(B7d8!yu5fsU8haMyUqo z{tKPy{o3e_%UO7l>QmZEPTEvwF^-xdbG*ZQl6Ix?8(oB1?BwZsw-oLTiFC9O7TskOR=czTy;e!^4uk!_+15{mU zmODTp%?n{w<*2B*{X%8hFdN>f9VO$wq}1iWoEJK^ylUQFqxo@(qb9oJn*c5n$KwVm zLIq`rRuL4IKdjR!A3%Qc*`NW26U@kL0n2-33DZm)`B*RYfacQ&2mUlk;#PE;V9BQ< z#(fZHoIWxdpj;vy7L?D=_P3UZzd&uDnIH6x4huxRr8HgC!DtU+%YrMu##t=Wv06sA zc8jeDSj{|P#B@kXaHT<ffvUsOI6fX5imJ1}ZLnqB(OZRNB_g)a`;c zyG10dFTklQk9_;6+Mhy2!V4nzSVlm@H_i^i?9{5pkQs}cPnI~9Q!y@EZN-Z;0YUL+ zgYYAxff^__^RVc546`m(Io4j<4cC`wdM#tA-f=^KqYaq)!`&2aSB z#=)4R?z5`apb!jL_{^_M#YK@HU&>zt9YTx*EUG!UbiIAYhAH85 z72%TUWo+E^RCKBCwU=ER%Ff}J^LIh4kVZ|lIbC4n#7SNq=k-Oc*}c_JSMlFFGXdes z^SOY7+t@;-6B7pFOo5C+(xK%{I@`cVoD*|`Xlsy+OosN!)7GNj8G$rSZVXeQn_qT- z=K!m4&??75=m>5sO}WnNOP931ltZ-Vk5G}aE^XWZrmhp9!y_^7h18Qjo!i;YTyT-) zPNqRzOE^nm!1g6>(2NKxTHY60K zZES3k4Rkr;{DIti-yYS5w8)KolpM>{1Cb+APY9jz!AcP$EwVRj=2q4W1+ML!6&3;6 z&DCD=R^SjU9bCQCR#vw!B>qjL=uLI&B}#%T?c*2cfJBYyY%wZ9p_LhkNKoYb^4h3* zPkAR0=cBXg%9O~yLAPnQ!@6hL2>Vl2cfiDNu zmleZ8`Pt)BG*Ev>@AYq!XT_CHjA68|9^ibo`6aTz%uVj*qFCTaEb+CAH%nlxjhEP^ zp*AAgeTD4x`_FR%394w1Cj+Ugv0Rp3eMQK zA~u843N})HgUIyl{Zlqo;y|pnuKJ|la=PVq+iv2ly7OO;VD$X6(j{j}o2=!o`smls zF?dB_tgUv~;#eJVlO+aI{Xq98Y>i_6^yQ^=)yCKKW^tq~(}b#C0bKtB)!j9ylvBtI zuJmz>m=9Ei*@TlI&IIoQ766_o_Odk9Ct5`UC$0O>t|dbQUXl{m3{uaGcTS0u5t0Ki zRG`?D^Vj?H9arwDnXkGf-Ll^xFT<#JeulUO^H<6J$2)8jx{ffeQ05f~n0C@zZTqax zsrC&eP6J#z{BGrm{YH6Y0G9rX>Z+!Yd!ebX# zgbs?$K{Ze0ynI)7=Yej^=?f5>zNzJ5CIi!qP?OV&JjAW8J_)+Ly)LHlM29E5H%2DE z=e=9DZ>qC`9cPeelX zm1Ly%Z`Kr`cLS=5{b@AjKUJmUbieRNS3mBQjFL7+Z*ksjsy{YYMI81HI~@Y%JCMvG6HTe zmFMjdKsKtL=2=uud5wN)@2voGoKDNJ@hg3MfCZRIJzDx?sTxFAt+P{XK{!l-buvz* z{6d9_SR1*;-|{qi>U1EKd}LC^#b~{Os?G{kw0-e6%-QDpt^GSyAW#Sz^<|G!APM&X z^X{`}4lH^4d&|4^zs+vpB-AUWd7*dXP&16_uDp;ZOsr(d7GHZj7JCa3eDtjo+9$u@ zb`IG3{H(-rz_iv;b=%JN6jQeyKlOUA@EqXz@)&0DR58&^?Ow&z#AykPj8N=7CsCGG z-a6h_eZ+Ch>A&&q+m(ZpZoKz-v_urqLp+mz_6X!K zHy_*PWun{_U%PU)5a;uB?I!yka+I4_{OgqbHL)v`{gR7=9~{vnZ$tF>Id ze%owQH&37U~VY2t%l=Pa>R3C3+kiR*86!rI>_hRI;aJxpv`4IE(J>~Ak zlj;MDmHw*56U@uVIsQmpNj4ll2rNM|)h5|ssG(X7F}Ezda&yJw=Z>DoolZz68E$?4 z{NtA{zjU)9jjE_^8N-`;k6*?3pj%$Q$3iMr)2(IV7YW#@i0;y%Kh~PnX<{?L0;dT( zmHLG~9{Gv0ZN-zS%a!O=*y_iiSb}7olEblijOUMm9ZdP$Q$!qc!fLpO8_(PRN!w#A z^=*zU)61k#>~Mlzk!uxCKtDDB6w#^7Y`w{R4p8#Yu$h%Qi8IeKebhLV4z9ND0Zv{+ zTn7h*YD#qy`rjqC!E>R>@hq=`Soy(Yz10M_=cs zLlySS$(j54s&eOm0F0G;&dgiF87K4SR(5nt4T~;`{f58XXwc=_Gmt;8TL4EuxWBtP z4zsbBFQCwDxk26>%L08#_EvqMjffw2^E z@Lh_lZZV$>A&eEa?75Uf@S?%X?movt*kc#|rCI;Ns(;9gS0;en2rzLvMUC8Gy?DTp z7>ANWrL=XCe3i*X9L+P8eazmP-(gv62ms15(_zPQB8dL)B$k z{ZBWtzg#uZvsCd~86DN;ky0~Gcr$#hDlx-n4J)f0aZmRnc4Kz$0KGxMyvAeg>WZuv znI{T=II$gAmP7oEd+ASV%D36SeW{dGP{7Z`#?{=|gyA{%)b--=>TAiv2}T@h#EWoE z8gygY5bFz-)ETJp%uRET14&qUS*cO>m-2y7xqY#?bAYLFWG@z9sC3i90bfHF!zb(w zodY0!oyynhZY{`T=s0i^JeJ;%rv3xy4gYHAQ>1#VOq0LG&u0ss6m5X-b>4!H;;)MXQxP#AzyUYgGkY$ z2)R=d4U~7KQw~*Yx6d5nN95bTvy;7EUc6#Pms#?>d1FIz?NJd6omX)=Q_nWnc4`0a8n1q8<(s%hRc>TsQ1`xOs`DbA#D_| z?B~=#`Lf`HYN_h_JU*say~|Vh7=GSpnHqKcq2(T$k|nnRR5>xC%S#jz`j)ukW)`)~ zz~-(iFnMJXA6gvs344+!G$Rw9W$*vzUqFHV7nBm>py;}1Y)dejWYPdf5pcOhv=7%A zf)Cqrc_b2M#-g1s1)8gNqc3+*e~0lF(Yj7~Pxkknika$pi`;+&tB{&rKAZ@VqZ3i= zCR-i*zD)8@n0aJ+KZb54@klU!Z_=9_I?Fvr$+xwliQA5(j_+$1@=p2z{{nZ)m!6zm zo|p}!dY^b6U7yzJ>fWdSNIdeVc2Hilpn3duax~9YBc9D6-$Rm`#dI{;E>K)8k&*iS z91xZ1*CEsap_@iB-$<6AtJ65+JT9@%1aJAOeK?qzuzysKKL_v~e=olEnmHc3V)L(M z?i6dmc2u(u$u4K-opw2_?0WU(YaL+?tFly|%^~bI<4t%zwWC(uJH?VO4#(8(e?$Eq zopQA>qQN5D^VoJA-45sDCk&eRTwG73t-dm|JD}Fq3|uJi$&_Dl)PGdrq*^QsO3CPU z3+y<#VJ{ydIi+oQnb(c`*)>X1PhsJbSQQxywgP-ifJ|@85Gj}81zS+t90nuaOpi{Mt^#k7GhT~8~tblUL?h&KE zBr6A%pw0oPP;i4DB49Jr#aq0l5weKhbUdBODvO#E*bL*VMUe4joZIJ-}7n zGjYrDYBq4c4zXoU|DH~l;RRmaL%BR}Jydn2HE2LK;(e8diHdus_@>8RQe0=Z5JtoB z2Cx`wV9u2*(=!2ls1$Mp$4(<_;F>XaYTA;59ct<0ThSId)=*)ZlN~|~I7>3?3vm&! zU_o&7VjrP$6= z`mdnJ2?Qx+GffI5<@6H2+V9!@rO2T7f+r0vqHdIoa^i{sYa6T!3X~aslij5Lfw5IQ z2*2uf)97@RtTK9wH#?}}6AV>F6+ROOqugltL8qZ^zk0u^l{Y99?F_3;`5lsVvop|! zdsttiF3v-tLM2OOVyR|2*E;bW@XV(bHX1uwpQ*{CEce$qbDaMhw~EHRqWA(X4a}rB z*Y8&^h^l{?0z<_Ov;VBr$nzvQD5a}J$dYG&NIgoQ516H zM<_-w4#W_%zz-T5{l6$W?`XFEH;!MUQnfm0snwRR*+tck(AF%mX;HMc6024;W=pFC zHA}1-u}6zgyGp7?6t%?&QqqW#n8DBQ-+RvIp67n&J3LLh--E$zBxmw>; z{u+XCbz{|>3R7z==Hp{5H9qDZPmGAzhM(TDXEAh;aH`Z@d!DSh`&^&ePk?dLhhiN8 zWew{9RxDEAPS`4<5bJmO>SO1@c@^_kF5}~&5s?&yjYvNW%603$r`P>|eMt54yMOy2`zwSXSltg=|8UtmSo;(O&sLc)(8C;TKu8=izP*zEZ)lhJDja#jb4W zpVKAjxKZ}pvqW4gmnr`1^6UzyRDUouH>sfHaxtRv zZO;{I@lPvW1tAR(b3lnnfSWubo5F znqQHh2yyy9QwiLCnn1{$c$wXoCVV@@?4!ZXTU#^1Ng}>r`z+YHy3%-)rPRxX`<^Ii z`IooSVY`*JHLdYIlycl^DRK42Qd~nA`;f3V&0!o|cD87W2LbgV8L|t0-L>>mhyVU1 z>mc?xuopYNYDU+%1a6z7Tu8FGkqq7qDEqeWRBO;K&ByIhf0=Q)cG^oAB0+wt{CjSZ zA6)pl>3%7!vR-|rM@>=S9QKd!vD9Pp9$%H6g1oD>@?#zR+P3u)0k-YYA?E(C*?p*` zH~f=AHm9;W=cjiaVLvaql_!(Ckoq3PZaH-ItLMC@8Xo-CS9fW#F6RNdl-g0uy4}e2GxH|1 zg{?sSNOnu=^#q%odJoTcRDjU#9^nED1J_aRqY~`wjP;9NJXxL=`$J^9b}($CKiIk( zCgs*gfZUQ%doj76uIi^QZ<^jE?(K~Vk`(KLTn{V3}@Ej6OM1>ry@7aHm#n25~jQ&PMBR`uUwSqoy}MjJ!kV- zj)m`FNjR-Z<(*a$LFqyhU>~~{(UmVv-K{cwl#JV~B+#aFQmq;44tScmGVjmNdvjde zgAZgK>6HgeTV8%fnw~KAeH@y>&5>$9bn8W;Y}HYreIQS;j`3DPO70KS%QgZhK(gL{ z6U!LR_EaW|n>^e3N!oa)YeMsjjk)J;px=vF&VG}3QWBK@^3?Cw5u)4g`1%GlcM9TB z|Gk}m6n-%JQ~&qo+g@ZZXm)=)!Nz0{I_~+gzZ)~KeV07;#XrP);DM7t{M~q_yS9HS zi`_S^tt$R=v|!3N?G}7wzA5_E?TzgEp=xeWps6Kw!ZU4BKg9f*ABtAuMN`D%H9yMx zcMfV-K6f+GiTkb9-}z0F{BVX%?e3oiO_g9LW`@_>U5zj^G3lD{-z|;X zLv*d`2MXxCIht$n!NGljt=CO3C9(W8(!kWjcY=WFV~682gJ21%zn`**U^STGSbDYU z3Gmebi9o9aI#i12*c!}m8A)7@O2s&aU4co&38aEggOKlM-)+Lgp{aQa(y+fRRkbj` z?=~BPJmW9OA&pU*X<0%IW2N3hf)sqFYl~qZh<_H3rjBaAleSOyjkfiuxlA|dxGIoo ztkHBh!F6>wQoH;W3|}wM4jGv74Xqn{hHa!P$10S)Zv8nwWTq__H_N|))#IEGnxO_wV)ow#R9GxhekoL8_RrCvE1XWD9T8sB%%*D zzEKkQX7?bI`2-L@RHB#giJ7O9PGk0?g$CwS$y&8nBuhkDt*Rtten>orGnJbKFHs-V9dDeP6oFX!ap@r&VRR%t19S z*GhGa$d>rSLD1DmcdFF~2bK!IteS+`(^O&SYR@k&p6_mdv$O+`;>I0*+4 zxPj$o!?I~A-&QgUau<}qAU?F`M5EoOmia0!K>y0IclCWw34KT zRF0udy%Jdk1Rg)ia1(u&8$lo&-1!7fFsx)TG*JlHDNe|aILt#ihYJv%GGm29dlf|$iF^RD)|TQUAP z+va;f#X4ADRl70WyevHeF26j<{j0gnHYTDQ_EhWvL;a68>|-WQkB&}fPZYf6#%qm3 zPuGt;i-VGA@tW`B)JKXud!{D3`wkENWR4ZK|L z2iJUW+O+%bqQx^+2Kj{Jem!m&v9)vpbR>9@Yx+uU0*|KdA z&@nrg$D0R|!GjdLwVPL7ps5sfVZ6sWk$YlrWbbH-MaeohONcN|(n$5&My%6cara&) z26EtR7Yk(MLcZw!%mbA#YdhQekqqJ+u-P+PtZH?`0~lB8(vYs#9xE9i5hVi#5l9aO z5}F4!6}*{1s(#d>b3T|dqEa3+GkF>V0)r*-?rFx9ZiRl6pw;BDNF8B$Lmzcco!9d% z^jR5`XWBbYTM@|L$gt?qimTQra4>uB(*l-#YbuNzjd%NGF3qF;yBl>o;Q}Vt)c$)+L?*mAcoT24VYpeDGP3fdOmEr(!3vJzni)<&Hw` zlku4XVO$%VTI+^+R6$pU$zI-r^KNZkvwe!ZD+R%RTbrGP8PmcOz_Q2u+Yl3mVQ52J zXs=jrT6<%MWPoV7z4CpFQ__aGvG@T9F3climkmC`l(*V{WmKnudHsc`I@4kE4~r!j z`fmF+*EZ)K*Q*L#U-yZvI-k7#y2U$WBuyV#fR+P@9-)HZ5*H_F+=B7fG{kJgUy1k* zudLkX>RehA7lCvH3AMR6#ZKtCwIE9JBOuv zHTbE!st79_Vg)5NzSCPlAn+QvQDc0(QYzK9a@#>z@0>tO>eQUgPAS9ol?}pub_D!b zyj3Fk0t(Y#cPVdkTTy`Cf^aiRU5y|Oxf<<2jkSSeaTIH&v6g6ZMq?4^7)M=Xy*bVb-#>d(%@e%TrL*v+c8|27q#4Ot6t!pAN8YdOl4 z0TvarbwISwhq_qol|mG@gGV^dCuB{bnZJ43WVeDPpRih{V8Mz)#Wkvag$Rtnc51)? zD^4i2t>RqOI%jaV@_~$xTeR?P&LH9{bc!Kj!Qj!_RjU)=l0+xPs-Hax9@z6T`S*&N z@TNdo#nTrV%ZT#w`0+gSg<}1LjC9JqS6=Q(557eQDE4Uc*vdPp!2M7zMc^47862in zHWBuHiBor_2pZ~urIsz)?|om|WqG&q{m$NyhTrvEwYHcWO$h>%S!~S+E#U>vYUCnj z$obwVOW8qD;;39xzKBYU&`LOe@$82Z^HF-0tR(i8DMe8EyrC75F8F$=BJB&}uN~9< z-}%4jEi^@uN&qU>bw_9t?5Phm6zk!&4cq4old`xFzX0^PT{{7aqwDG=_2q9( zyC-K3Y&3`cXszA-AWXEp-&%?`KyvmY+@7$LJQ=|b+8W|FXQEc0rX9rLg+>i3rr!jA zudPaW%UXI9J>(h@-B_jG9@+1d`PVRa-BK3HmtazHAOPkYhu)f%bQsgFXXb)#r}D5#eBdJo9dwS2MpSSaB6P8N3z$5wpXT4nPXl{txE5>FmR?nUMhvNafw!-uEKiO zqLYuXRd|uR0~Ea!Vs=ORo=adWmzp}i&zh?RV@G;_XWvCdG#@MO5bT3556{D_1f$>k z&Tc3HCXBu59xi(gn-AqTceV3N;wC-uZKLQ^6}U?iSqJp!Zr5Qe%S$y@_8f_1UsSM2 zgk_qcA#upUGv8rRrPyo1=&s5TOV9D$_K-Q$_?-oRwyHI*oak?$^a~0Ci%sokqC=V& zCztmXck?(u-a(bB3cyD`keRBPxhfwNVK!P`UEA(fZNo#}y&3=@0V)bMN18$o>`1O6 zEj~=(ad9{{7-zm}{;MNNT-KA9c&gTKaQw{zw35e>lFbt?ffm$KCPVG9!eReAbw5P5 zD|7fi_X6ol66n%OwOWBMzYJPD z1>U4Q0QEkpnZ$aD$e&9if{IjBtfQLoZ_`5#HgWFhRYjipH_8#q2M*ldCt$~;jOvu= z`6zs5mxyp+jsc+e(OJ!BZx`*=v22YIqA@VHX{%9}oh(RuheOQEyKrHsTgjdX<#pYk z!|4=4?qGO7a$sBlscgjDD?g+a3hQ~3yu9mh>|?aP%>*L~5ae>4M^a%b3{#0${yE3r zzS3{ux*g3|t~~Z`Our%zT$d}W)Bfv=g$>IReOB7?(WdwWZgTy~V105zhKtK^2Djn* z0et|O%9~^e2^=-AdpI5MLX{xLAmuspYm(SrbknQmLhl+E z50h@==4vuDTA$_F1mUBK5z~(!2^pJYd{(>o3V8%y@KHS=DW^U4%$C|Z#ZR4Un?<%0 z^NOUilp?~UR9paqh2$Vg^S>O%Z0vILg#L(^NBGvQq~|V9AyhKoIyv4VB@Cjf(*!n~ z(M7O;)Z{IF4PWI2S{(Cq7O#1zMz-M)2$C4 zGp$Z#*A=+50y>pZTU1q-;ljZ!Kl-;(olxf!;ANYHHZkXTZY*5VwGfv@Co zL}1pBIKb9@2QIl`?m%kp%IvPsz*!A~J7KIqcHJ)H0GTqsFZ{2z2gn04eNAvrLNN<> zBOCAYpKoq$Vjf98b7&tYz*z^7rxT>911dKg2f^C)*QUxl?C;@JM@H!dLM<-%@H4)E z^!9~mLCIe-vq8ngzMJ69hXR;iSH>rX7^A(mBo*x8J|nG+HVOl~euEOv!{_dVSplvo z0_*!R>OP~UqsyD44xrJIvr|Q3tuv+tyx9IpoT?F1+ty*}n)1k-46j{7u}>nQn=xC0 zZZ^wmcIe@70qm_LBz&dtVeL3|rv$*x%tnz+KFJ6_e7l+nq}1#OY&I0?GAbCh4wwHp zG!!5to1h2h`klk?JdHCv9#czgDiqr%*sa&hBkQA_3o+vB)Y;*0U=F@&GY;%BQSj(x zPJYq7o%Umn@C~;^%eeYT{#_qU7M(RivGy0z+v3L@*&CRhuz$owga+nv|^M1LClOH8FdN&`S!yGrCzee!-yXU{whDR_5rSWs_0ve@D0c<>wav%pAQ{!9CNJzyIFzfFN|rj4vP*^aP`gh7I`(2L!|i*RgOWDcU{fh-aKhKPAUOf z7u=4=^73(Kbji<OL9Toh@+8DaXUS`!2mIB9g;|okY8-7cxkNs4 zE9-8J4wC{t*@=7a2la5MDB6wlFeKj@Z%|A5>eL1+Xa&I5K7wF3U*K3MIWq z^3n+qh^}V{058ql!wQ@;*tbP^`xw7hP~gBIp%QFI>)IL=^Tw-JKR@mAg6&j_==2>9 z83Kpq;DwAMS*7_=HCHS|f3#QLG`?~DY$>3?Zim?$`jXP42CHY~^+K~`uaqPR5cjVF z!LMbo#hTYMQu#&daI->WeR z8qf|MQDTCPeXKVEH{RxByt5w)qYfYP57D~SESUQzRTXUa3ZK_FwZAcQ-?OVOx*}Tz z5a;A7nDWh4ngk)rxJ|9<9S*67Kb`r_%=4wv1`YQt75wi7#r){KdIFTxU(0<6?Qq?L zJU-+^eUVq_5A?HU6VEVQ0hit1Z!>4Z@Y=a2U6JtZeD{-pbPr%yG??oiP!g4Z%B1!9 zk&Mrrm2K}@g}z(on?3N)V>{nYQL|T^59ATudjDeoTMc2V3@d*HBAXL4h1ylwp-*7l zfsW0Fk9f1dq@z8b=2a_Yr#1Y9=!e`4&g`<~Kd8Wi5UqjSyPir_E?rkRitG#>#PRX( zZG&!?*(Q704?ShA+Cdiasvu zFj1*xFD&?ePWMP`2XSDFSQ&19T?jsG+3ohTxH(09Uzl+Mlw(Byd$I|w8M3~4;RLA2 zTAtrJ^JHT^>nI(K)czEgYx;o6c$w?k&*#%oW2i6mHAwRi{9IKLQX5Yz4WIaNz$sC4 zQJTKT--Kojyt8YW+f%?h!<~FAH~WKW)r9%C8rKM|*zorC%HlYaO=;snV|`1n{51beMPfX6dj!!ZL>&%>>@bK>li)H%fW4g z^~c_T!c4bzD~_Zki@WHG#uiazl>`xiB@-rv&JjcF{G|M|CV5=ncr_)qw2Y9?5O$CST(P#5ydjbM^I&dLM-p|wv7YR%bHwsbD3Jnfx<|H zB*Qf)DZi01)PMaizi&^E zAd}!Tj&9BAwrw{%;rLim_ zuL}C`QHh8%(f}*KNe%a*^B1SizG2%xe!~Z?cTN4gO|WJFu-GF~uhQE#xZhqv3y_ELYf)lJSL2 zf2I!jgPu7s@<=ynDInY{d!Nlo&Vc>KJ}@X`@im+Y-GR=#U(?a_8re5fdp-y*4ZLeZ zoF-}C3jZWZ))|K31WYf#C^%(l4h1@!_v)%@M zZimYF0a#Ld11HEWd1QC-t!BPQj;(P4o5MN7p0E#ffr2G9TozNDkBusu_Y$m}=lgJe z4GwDy^j3@KPwaNdpN3Sy&8ST8{YHUf zZk`%Kqfd5EI2I(Rtv_O}T1Q*wDw0b68VGGI;VmTQdp*=f3EhWvY-YNJrMOgYHWXm4UB^1id^ zI-wz~NL4C^mdC2jmh*3Bw1MEd-x_HCyzZ+#?Y_HAs?n?lMg2Dl(Xv`5i%umHJ#f56hgU5YGnaQ6g=3Vwa- zDCUq$+ZR6Pez6_g(NW!6zBIRY1M?Oe9cF(AH19x8YVD*y86Pt*=Gv1$nYLPR8*9Eo zE!aTFBE_e|Nk6w~-ZqPerF%Eh`aPd@`<(zhWX;_!1nlzRm#2E@&4|cog=GE7$VjOXRq;M@v}3TJ6uy1(}#B!LosK8vtBFuITOCXfn_4T zYE=nmIM#Gp>^bF4<$($Gwrmn*ERImyW4HhXF;fprpDg+JX!;8{I#yR%tJQH!z40{7 zIZmlsxRNRwSge|Jcscx`?tTp(b!h7N;m#Jl`C9}YgYhpOLkp5|a+tX^o6>Mhz#n_se5K zqw{XF1Jxl7dub$!`uh)|{Ea)s%^}A(3W8VroiE^cCD)Q`_vqh}sfYb8f`q$IYC+rVqUBa8g=wsl~!S^Lx)A zLUu|%2p|@c2BdYH)hb+<8MQl=W{1<hli=6SNqNG?#($Il@YR7C zblRE{Mq4EZ;9#{oq;-P_aA6A9SR$u@aF!a~zZ5zgzJ9=9#F-uHHHbuU5%pPBXK^D! zk%^dr=DpL+GZ5pH;E0G+Su$nRxUPhQ(noZZsJq27%wd5fe5UAf*liUf=E^P9!EP~S z1~EQXARf$wf&1|BaZm;T-S%_s`hFUnL}7)kl0Ts~h#{4Op*OXw9YywHasQrmwmB;n zeF(i4j?%jtWfyUBmo9&le}-*blR7H36!)2G`&@s2I$mm@ zY&Gi~ZxkWb4oL-ktpNCkcW z5rt`xf=9@rxG46!+@K$=?i_k#vWKlJK~}MYK^y+v?)=(gp>3BN)xMXCAV$jZlgw11 zS+~we6g%Q&lGhbHnq>?cHklXHwjmw%xp!+L^kMfc;NR!>#qo2#baaw&`q2vHgK(uU z6IMa9b|)AjW$h(o!v_h5Ey{Z93Q925K6-v?;r9oEhW}K+uD8WKHzRv+Hdg+<{d$6D z_ac8S$=KZpTRNqBYxjvixa98{X@uRt+owU6{Ee#4sLbBzWy_T=f1LZDjlrm5>!%fg zhA2tFo{_1q_i6+6&SA&~Dzg7|ar@ygzIMP9g+k9wn zOV`w3@`~J_6X5-85pi$L`M`4h!aE)=s^%fyHP%?(r4o9X_VYe=vX|940X7i?ltWRs z&heOs&y!507+kyyZ4nxM!Wq_$7k14h2b2X$_A%(@1rQvGc$} zapO&(a=$FL-W+vBXjG*#eArXNXE3y}Vp{U}&mzeGnD-!-BHT6Q>z1w`&wtl0F|F$M zw85cRfn2P7`2pPgX=QI*vRu9rDM!k6aG*;>T+qG3VEY6JKz$(`Ra<@h@ZX1!c_!3w zMMRrzz-c(vb87T}cyU&j4VoLMa!<~Q`&U)^=Q?yly%a9>KsafWbkUKz=~f35Pu=TD zR`(@a2+Z)1aZQ53ov!h_Zt-U-WY(J`?`p5T@jn67>W$IzRSmMKj@b#4(FZCpNb4wr zfilV|Vg{6Ve`t=bTsvCN-yOZ(tF!c723*cEz2G?h?MDD9sC?z|^13*;Z=Ge`yD;|$ z<@KKsk}UZbf3_?1?OUYSu>j*N6FrlPM+_yOwzm%-qRQSh$H_ zvs_1te%a*TpbFmGZQS}1ysp#8=D<1ZTT(%Ia zv{N6Id}_0BU(mp0Pz%Se!;NFbebu!~rwAP1|3kO>{fbnnhW&TGviatj|9~T6Z6dcG1NThDLEssRREd-)R(@UB$aPOaydWK0S@phYt-}UXM~Gva^_CVdT~m z;CsQgg7~2sY^t@@E#jWO4rSlWS6I5;Bynvk{6jkk%>gjJmT`@+ssHZnQ^ z?tn`gFM_6mPqi;OK!;2*;7U4L(@MUcE_~ay@#5F;R+Zt)ozvrEnFCQ+zLL(_z2VcN z^6~^);q2B3NY8GOtl1F|ynD^Kd8IhHTQKahYHvmC}8`jZ)41W_{=LJQxXD zRlnv(U(MRkCUpaTr;Fgi8))TIA8g~eD+H;OR_McLaQ4h>o&aO{+zIKz*)o=aM7_EW z@1+ZLxof@q@B}NZ*NEQ~TA?kd9#FCtrO)MBvG)1lswB}l`IZTKrjfaQ+<;JXn4WJt zWH=*Ot?rKD_5h&MXpDO}0O_9!vrT0@n(aY3&PXs?q|b?u8pSvI)1_{8_{vc8bdyej zIbn7e3#0xc+hsNO?v^dbd5tF>n8syDZ=C>d0e#WVW8tD}s&`4bR`HG@Cu^$F;_lEg2qfhOp%`lx-yaapJ-aTLtp4eM=MA)MiW5w(!uP3M^{XpWJDty>s z|F^yPwz`Kf+RE3kb?sZ5nr(D?$aSi_l6Jro%O6pKh{KVFWeispmwQaV=&^9NPKM3y zK~7zC#w$U;WT?fyOinho@;ag-Oj$GCN7bcvG4bLLEs6u#P;+|34QFMqsF9GRmK}ei z)&mBym5@jt*uo0m;f6gs0YWHnGiUn>PBnL(y%&~yttDbhEBB3Qgb{AW$(_N_dfu>> ziV4^xH`RmFGA}Rx^}O}?gkNSNDtS<*7gYa1)NWy(R(jrtes~T@l>gH+7gnk0i${f~ zUL+`q`j;|E#;nuifb#HGI1=#|+-AH**jhDK%{T$Vk&)Q~S+(O}nVdQXQTLFee+MH; zapJ4EG0c5Ie%+W(3ryPX3E=vtF!AQtUPpXbrTx$5u*r^&0YFja=NbbMlwT-%p;<(U zURvI)lAs3<=RN_>JB$dP0hB^L{6?nvihEA!xd#Mxl}xHf+{?9kdB&JBQUvI~xqt;J zbwm0*oV**=>e<7Z?T98^N$of}U_)LAGlrJ1MUcD*bb%f@0i$_j9bY>9vYE-l-3B=hiOV{nZOw)Ba=NW{$9c zs2F62wY)J&>p~K@><(W%IRRYg{+o_=w?{{bOu`+^ane7W-#fDRt!dk=?+zgTI|0t{ zZ0zm`lV1|b<)0OUt(MLRML!5jI(oT6`uuvIfSt9~)?4g)Ee;b|lu(gs+HWS1jBELi z?F^wQUv=`zHdA|XmG?6C={}@q+Po`@tN$QZk>!cNLfMoE-Lbo0^@KM?wqH`@qPcS0r(XimR^F{tug-{A=?k zt++-)spp@ANMp&fFFtf|47~Zw;YCEL4yoQ}q>=?u9pAM=%GG-p&dEIt`X#~EqjX@h z%-qMYn_$oi{u{s$aymrKr#v{yJ8j*Hom~#+?u;RgR>W=#a5V1Fih=_L2l`x!EVcT> zC8yUAZvPkr9FTrFb^DqDihXqocv5d(6MMTt>%D;v3QkY;kH}cY`!QQy*a<)yy(7^l zajO~sd9Jo?7mO$s^;$oI53i{tU!J{U8)D`uA|Y@Df_r7EAI{bqh#>1Q=ZRstXvM-b zjYKXly?44T4#oJwA*cNi7>_y_J-={Edm=!x&m}z--9GSv!udjvy z2c?cB`w%IC-H#mi+kXu2XT7_BleMM)j$M%!A?|1fWy-eyMkwen*v%I`u156@7jD+; z3czF0!=GK4Pp8&%jb)kr%m9Wt{~gT60cYLp5-JKeQYoh-x{*vj^JC#bnN8* z^D(}=;na5kFObra#B6qYJR`9`k&|;=*9irI&?NP9%12PQ$Ctf^ zMsz!N^BhsH@<7*^P{%@bRS)AU>m2e6K^%Mjh2qRZj6}(8KODD1!gADb<^&KZH>z}8 z$8hbx^l_2~gY_ytlmBIym4eUlt`)#WT*JymyeI5unyWna=8${c6V4MPCuI0M*?=R~ zLMe|SD}ki-FXC^VXOCnfaeP$=bh(p;UVZ=@1ebwl78B!yM@<=BMDUr|%$M?`)b9Ja zH^PPP9l1RwVr;)>^0Up!{YDuvB@9eQ;3Kw`a2uKK818=yA=~4b>IP1)ckW4xjYOgD z{-l>b+1sM7UVOR;xdAQkf`-5?Sg#?KcXtccBXG7d+ILZ=Gnm_zt@IwGm`ADb9ewi; zVHbOOo9u3%$2=tNpK)sHSlxpUs}N(eS*#kqA;stmo&$nZZkXA9D*%jmQ#*jy%c(_pB`P%!^oozRlGwl*)?3Uc zG27G{T-47T8JaEG<{CgY#iG3;wUQb<_^_2OtU?L?6{ z+y8spLINC&PEL+>`GmC{jW!@9sb9PlF_Nip`99xk!gzZTM^{LgR3M`!qBwj{EtOwE zg!?p)P5`Uh%)c}qZVj_4-akLTix$o*mZ75inNn-;)P)WZH8BPEgn~Se@-COpBJL$s(LRZ zC&f-(F!SDNCl;qo_>i>doNA474A+zdBMQXT{#@2LsKDz zQ0MYXjq{s>GDmJ&L-(39%WJ-fA3hX10uc?aa3luG!z1~N?*7!7rklB}6!qUW(@Fl) zEN|^YP+B^c3!Z*=gjl<5p?Z8H6$!Gk=~ptAaO#}SO`nT>Fcavdzf-J$Th+4$UhRK7 zH08~MokKwMSUXA0s|LTS5AlEgE2>LR_K4SyA9qI@NQX~Mex?6)9z=jwhqae}{+eV* zGYi#?Nr8h`GwoSSBp+X#(|f*L!UrM^CvpbZNSpv-Q7U(|ygEi6JCJlyCjhOiiV3eZ z)#N$jgVT${3{0b!_3XT!M?_>k7x3qYkM@So`|Xyv5b4_n>=R&FkRC`p0&A5hn1oz1 z)zUZ?LZ}$cyKv8DfrRe^I^;Ks2P>KUp>xGS#ZA8mx!>O?n)Bg24u+U8j!wbHb@LO` zIb08owz!15rtv6W72%A7A?D_2#UsgBU%%XD@&n9n8_GygFiaU>Z{*9jyZ+Sx^y0M0 z+jWlHBXkLd-p*qi6M~3bM|U`Ofub(T^;d#XpG?7R6~{cA4j8d~OU}WLB`zNd4&bbS z^Z>#ZwMabh^$637Du#e{R~;aAo}L8XB)53h&SOLBE*(y61hag-Vxwwl02&fkYT)jseN}sY4#=@^Csp0FS*CGFqqpw&J<+Znp z&yXIc*3<{{IV2C7gbTN%>Nngoj-FzHF6f=VH1+{#t|dVSv{9T~W9fmv!rl!rbW;-wY@H` zq%42Z(3`91rmw?Zpb&jXI?d#iRiOp=!Z&HWtCXDjr!HF)2*@Q9Z3(s+Vv$yt{+EyI z0s-QAXjTQ}!%L$fnQ!`=&10(7Mybif!G%3j{m&03$wPr?rSBK{G0!`Sug}&IR=Smt zgPe0dW=sVl0r))gxM#jrQ5g-wai6 zzrB3eM9JKxOk`=C0B@oQb8l|(JPw{JWW^j$G1!8N%Vpx^S8TRp51Ecxr56nM9z#5; z0juCp=UJ00okSH~2YPuF_fb!v{R!|cVU_q@K5P0C}Df5?Q&bq6lHK|W}!Ta zb6BPJYIDY5lWM3Cjo&w5d%WJNIqKI`n1=Zi&q2kix^C3zGBhH>l)Iq2+ z^|QIerztI{cZjK#rsmY#`@DSQB$Y-Txce>9@~}Weyh!9r>b@DZ0|$@QnlYSJy|DM^ z5mUeAv0&R`ey}!pyPGpu=m=7&ExZ0)U*~1^_R&Jxn&$niUvxtiH~k=xu!3OoIc-td zuN-Zk^KA3QGz69sn#o3Ag|b6@#!@qKawP`u>85?~^M3(Wv55G~A3e9-ttmQ5@cF(| zuxioF8Qk159w@Qb0(zqxG^p{Qq}%k<_AM5(3S9M!?AENSt7)4@J)KI z$4=SOQgwM~3eQ#+WR{Q#e6qWqMdN1G3lQ|nObBL;Z=@ZJ*m`y0PnS4Sjamoc#w*Vi z59>jhy7K|F0tbb?A?Bq^bZy2)Hj; zlJ#eYaQ2zl_JxtD_=-@^2_kP914ukDOivc{8)|UfCPx8*aBEg1wBHC9Fod2ub5f0R zsM_coPZHMWL5cA;BJ^{(fNZ-$<@J8g15+8?7TR~e<`nWz;!vdnO9A z=nUu_vHN;L-24y|NTl_)UD%9yzVN{21%ucI1ho9N6?Pe-c zG8G9oB_iD@&~PD(K>KDu!TOQ=Lnanjd+L3A=dhjDzYJp=N1q+dgBj2W{hmZpXHRB31qph!tNcW@VdQ+LU!x3iep z`QdIXwdj&#$VjBqV~6!&4@J3p2A&=HWnp>9xqu^VuGM8V6#{SG_WoibhxDj};A(yV za&mP5tTUTa7ccbhz=VNSs=$Zu_|VOefP%#f9J%EQ-k7JI09OrZE@RnWJ>}xRM>AP3 z&(e=15~8tdZa+MQ>Sl8lEN%^rhI>swTBlG=f^9jYehFhKk`_xL)G`1TL^5FiEqg$` zb~W@n$Zq(P60G&frU~QhvzE9fua;nHN$scU5;7KU+LRKc2T`KZz z-2ZlLCNtB%FqLR;@3(%21&kFS?2qu~2mj=6*d36ICrkvCUhviKI|0UvTW;Dd(?e4_ zRC8n-r-w7uo+_Qn4fOx7#MkmPar-NY9CunbnuKzwasBAzks{UjD72lGruw7^HxQ|x z8x~4sq0vj8JY@- zo~~Hj^61WCU9d`e8d!pX%@IBv&98KP^|D$RPVef?(}rXs9=474sJTI`!qV#y^D3qR zh=sv_z6e(!ZeFNy^-)aRamv}9TBa>I-cK@H#If+JXr^{6bHqHXhw^YLy9U|CnD{{V zNP@voeC4ow#?->#!vrxWyL9nZ)9M~l;+#AxH+^Q)ydU5fsg@&8KyFJ`m~&Z~8xY6E z3Yi^tp>Tm088c|xD@n1bozIb@!x^wx*HmQH% zi$#+OXe+?n=XBFb>yETM^1CnS~egB0)uWMH?GmHpirye$(am@iH}j zufQ=^dCex&X61kFefvLDYxMt?LM}~(RAefri&Rn$A+vRyQkt*lPe%4;k zTI>B@@AbSeS0;U^yy`TqD~B0+#BMDiR!>nvrsLsYFjF%Q=WcD!uyI+-Zxpg7Hnl*jz?!!%^SGTD2~} z&R-xk8ev$+>yU1xa3a`e7}qq6p`GvS8zG*(-2J!SQ_SsD&j!(7=X!UndIyaRI%%xB z@y@}o<-*NcBswjLo;4Wmx__Eio{2a^!?K(EdN}Mz*7Z3Ji|>uD&Fs-@xiNi&$0{HF zF3zmg+{(`VLq7m*-a~Q8hJK|5Q_ESdJJ&is*dFX>_UYRCL`QRo(=Ao3GB2z5Gqg=f zJoR=->XpqVbD;wZQl@)%M=+BEaxprM_U zmP&*DKAZDKn{zZ1p9*HZ#|}p^moPcWYV{o^e*FVU>3VxvJBzQ@WL|Ds+a9~9>J^ad zo@*M8{=rv5>C2o*t{d=@yE`VGsh7!`r02JudnE?Mn!Jey2|v5!+PQl)EEk}mW z)4t9%wf<`SZ#uj|>UG);JkzT&^g~E@24a6a{LXVg#WR;jcKW85WS_f0PpIg=_A=ov zgYtccmD6nXKG}|Z(in0k{SNW8pzdz4W5PzW`d(jA&O+b*TB{FD`TEoKbF779maa!( zK$_Kk;(;s2%ulLU+fXE3-E9y4)YWI*24%E7JU|%R|NDyY123H|<}RQI{+W){U%_HBPEs zyC^2$T{_MG`1fymzaVy|_`w~*Kr3$k9_Xrins_ixQnRo4(r!UX(Df(w!r88n2QhDjlGzG=4n%| zJ>Bk8Fc4+1-DwK=kXdAO7ZY2gtAw6ScI#p3K0-Pq1z)eugoOeZYAt&fWerjVuR~DQ zj^{BRXm@Tv@73&zcQu+h6tTiN64)^3Nz{ zu?-#_IGsb3=+j!7kt(~2Y57VhX~_m9RCx%%3>I{6_r+G>6$1DcJMOCF1Df3rY`zjIR&B^`*IvR25&VW--sun& z=FF7+*{RSl&yg@h3oMk-%sWos)nJ`V4fl4I@pCszL@SnlU^GS zz%^)SPJJao@s?A#nWDp7qK~a$iodiui$?52WjIqWk?iqV6%KV4#yv$oByqZ z_{)%}P3%IW3!Z10+Mls;`D)N&R_@dkeNjS%r1;w@=(qgttl?oKdlTykJK^yfrtTNE zWkBItB1I8pIo!oRXl6R6Y3(2p&lb2_4vYDBVaw?8Bqelmh%h)^(E~FVDU$GWX1>IX zJBJijM|pxBHF7gd;-aI3wC)vLU1fDtN_Z-wH=t%!C@Z!4(=HH_Gaw`>l&RQOo6b^= z>&C6a6Snw>=}ZPU9oA!F8_wiqJY~SHMiNIXd;u3?!jK#d+QgMvsi0cG>)Gf7{8uI9oc`0qMQ%vn4VFuqY;>V8jg z84sI@)IG@cYaTucXCnvxU9&~CW(mG5KzD#}3Jp+TG&Ji9Nmvg1l4I3jk?WANi4x*w z4St;a1)$O^3dTbBz?hfB4BYkRJfB$jV><}vI+~+^tbatQ zUQ;AA8a^X@n?o^ZX#d&V4%5$$6~K`I-vKnv(%K4Z`fc4DcQvozC{i+#9lqX z7U;LaC};_sd$cyMo`qN0=%pbZriC*>fDU1vf*N>qN;7+e1B`$oiitr!>*XL5d$e;R z9EFPLiiNY5RT#9UlqsRiVmKS5Qe9fl<$YpTsjP@@5id` zz<~}B;S35(2{DXt^V8utgA1rtf!(ygD@d(tl#owu>*xa}u3y%3VH+$UwLA%1!6MhQ z^ZKw;84rY;o0ZT=J@98Kb}o}Cz1W8EQdC@=1z%YJ?2KXQZ;R;jdUW&5W+lAcOvd$# zdoCRA;&+`ZsHK2q0$OV$7M2;QBFY&`=(rcY6hKZLuzSWnrb23PI+j?kiR*KF;@GeG zU4f#alSf0?{4}0Htiy{rxx}o58pMZ%=8aQjQ$U6CQnJBn%?r zS2$t8!^;YfDaQ3JdR|{Cz-;#pHV?mT9nEC(Zzv%nt7z2c`Agk{-o==gxObiL-8{Vd z5r{`)7BO96L4-??@1H&7tEs)KdBoHh(dn(}I<4B@mC(lH%?jvmy3EzoV%WVd_Y zB3`&$3zZ$d?t*uYFpE^Z5km^Uo>XQRi z_V4FaK0DqjZd+$@?*V8e#x%JEY#@G+Hzqs=QW`~Zf|I-vY*BEnIj;|;6ph><{koim zx>Dm`>ZNP8T;NjYkI`C}qP1yoU#;qWuwX7o=|Fu4_}LC3HVQ${{{#2Gkx((UMGffI zCE}htN@yAr`|vuMzwg-DbBb4aLkV=d{pHKQf~~h@6O~{aEC&QQG8&F2~<1!_#sXDJ%+#xNZ5Y}M1ZCMNH&9!p*o(CQ$F_U$6}NE-zOv-z2W*S7~RUgy!|RH&}l6``?gR; zoWe?bKutIHr7C0wF#<^}(r*M>ECUc$-yEC{2EfTf*!>rlk>XCjab&y4y`FUc&1slOj_zy|)_hp4{cF?0^Fw5kXn>)tFAs9U#h$Rr-O9?PQS2W11@RR`nz@`Uw9|R{#Ry z6S68Xq6ZXMtr$Kw4$$gP^Dc2?k0_e)y3=H$v}&qW`Hk z4R@+zg8^*=-2E&p``334ij-Q|)m=V2M7BZ534O==Nvp-KjYvbX|$bb?WHQjz{NgBv8KwyUH z%^zmU0hO5~FbP5z{9P1 za+ED_YtM%huPb6H3pc*NsCz%1SAeF=`5P{6 zQ1+^diL0LTpV5eg-lv0vInDc7J(B&1$rkw>4AbKQZM=J!Qm0B2ToChe(SbftxO~63 z38(5{!M2dSBq{WxSV6Y5V*s+p)qYNEDhQP#U`BH7xXmf89X>UY?;RWD#v#(=e)RE^ z*#qRyc`9ajh5B)xq&*7o;q5VLvQBwPG)DPKs0fyu-* zBA{)E3zF6A1qA&J85lwn!G=>%Fwxxjcfx7G771*Rvq*#Ilu(|klpb$`6JwEsyALK~3iV8_mqchBmCkUE1?2k`Ek0_y=!LC2+7#28%tbs>Y z9)VRxsn`5O4YtFn!d;1ofc#O^c=&xZ;(C#IMOg1EquV`X%*tyRq_qi&28MR>NJzkD zSn>_H0w#xGbQ3V^x9R6;3hS^L)(dWXh^kJo(S$EIN8*5j(7tNf?ot~!`!Gu6CWh{L zrUC@WOM@v8KA8cVf4bx>w+~sw?)Pp20m@O`03w#_%%~?;c@C`q=rwd4BRq8&uPat2 zNS?*~6AH%MGLg(nV$CZI4!^M<^V`H#oL_>ulO=~x+o0ANGoIj zX+YX{wm2&2bOr11ghL5vUkqjDdjvIvIjI)kG)1qCh7~=(wVhb9P1w}M<`g|}ibn{^$G0vD&mRR^^^dO&j_Z?QX$cg zGpa)Q$$wA6K(y^~l1R&rcvV4Rl?0$UaMix!i~F0zQwCU_D%6{USi7Ta;^JEp0J%GE zo+qDyuK;DW=HD|pJ79#))+oC1vG5)*=<|V-pcZk{k6E>~UVWbYloDjvbsR%zE*6cUI%$)HRsX(OdN9L2z)Ez)&{@w6uu+KC_ zm!*4VDKDV?a7WwlLUuk7!D&3ry8r@9HmEmx=V2bUWONG>X=_H}hZ!)bh2YL;K77Rn z^SuxD&D_n@gcl6`5fCklu+e*z&ie9+od+TpaS%5GbJ{{moC?(20ewv_$IQ*8FGyLc zLyhdZ`bNT8v%37Z^+0)y>Y9+RjJZ;bX?_Yf6nTD3Hk?XKJ%CcSkA)a*uv3BOJ}AG4 zZMfbw6O6pM*H^JAr|uP;bdzFoRGZ;{@H@xDSJ0B-!CJh&;Y>gKF%=8qRu20T)9)-H z@XN7aj4`83N$pb2jj5_>(Bu)RHxz+4BPoBwllMusrO-OYoWc{NLH< ztLD-aGDBS!>cYIxWHW;O7W765wOYAY=#hF^#Pqm~H3iJaY8fGm2fY<;hCat+9}vt8 zskGC4%MY^zBSD@eJ|kFyq^PFVjp>w28}9Cm89lhp=nUIJXY6ZZb3^3H2u1C_F2)|B zAO@e|&4;$I(Wo||;uGjn{7dXYxfnf>+UH{NWd*5sIAociRAY!)wy9hDIk&!Kc(qpE zkRHOnL@ty?zyiI(s;|%fPA0Ts&?#+X?Dyr^;Al_cPBW8_)7`kL(HYnG zRpg`>DRu*%o4f{7UsraUbGF`naPr(AZukP8y@n3b>s1x3SP%apSM(%tM~`WS!=IYnPik&eGGA>FKMfCa8w_ zYr#4Fk(1)V%S6UwnBScjt`E?7$$^wL7ZfFWl3BTPg%XAS*(NlpOHjQHqwUbdm!3n(cX;(7TPTd^`Fo?CaQg)-_W9$ETOF z;4|T~YmXj$-)|As{^j&BnLUfpyM{R|Oemxs3Z;vEsF;ndKxcEw$$-?v^g}CmI8}`z4n*Fw{9akd#Ob!2M6xCP&0GCE)mpbp8so>#krf8#m25FU-KLXP70w#PAV5@7_0`sJ}G|Qs%7LRBsU|Ex}gEXJZ{b(S>@~ z;{;z_2m6w>XKK`j4SlaBv{a{Mqc0Tkj9Fbr=k^{mEzkWYm1)AcbGEf5T?aE0&|>aC z%=#P}me?J=)^n4>;vaSY$_F`7Po=$Y7sc*PyRv?Rf!Be0gY6rj|NH#!`yk5p{|8V@ z0|XQR000O8Zj7!{o-Q5;a{>SWwgdnG2LJ#7cynPccx`NTRNGGDFc5v`D=a^6+cXpw zq6X9pg-R`;UU-d+GYv+G?RA`z^7TxvEogbmjE~QpGc(TcHcw)*2a^gVecJCjlz`+a z6f*MZb~Ec-(c7D|;Yuk>UMkpC6bSWCzk8kp5rq{K9ixf_M6~R~DGAN600^ zqG&E+A#+N`ikWa8`ZSBJVb_;?m)6yfGArHAPu-Z9LduQMwp3TiB@sw4%tA;Wkotoe zAkQ(gJ7p3|X25J_V5O2mc3R0Uh`3&;Nbp%EdBL`}NUH&L?O2>b3AmHo9JFmyTPb#; zfLN1ZI1~9Xn8J>sqo>U3%x(@E{k(kykZWaZ*==mcI1_P5wkf2~tCqBpiXF9hNgD{# zgS2myj5vq5aHh;yNM;TbB`rwQ^D1m=4KVcg!eSAAJH|`~sZT?$|C|6fN-tHI#ZWan zgj7T_=m#H$p>I=7tPokur=AETUAC8CyIdt+J1?(XzGkkc7<9u7>dX0Ob`DV|eciLc z)u7YwKt1^C{1;x0hfc{}X+bsfghh}xVVQ_X)!v8c^Sl^B3@5wPeb-TAzhg!Elj6;C6Af+MVgO1jxJ|;cuu{{D*GNz5q~50|XQR000O8Zj7!{ z!b2mm*>(T`k`V;}3;+NCWMy+{XKr6HE@*dX?7i)B+enf&`hTy2p^4acCt}+szz^AO zdp95ulJJ^e1CUaCHZ~BnMB9wj*N{@%J+XIoew<4>w{R+}@L4F3RhcMl@3cCiyD0$A zQ<+&=iOQ@3@c;ck|L^;M|8aZM`E|YBZSLK_GH%Fb_ z2%jyf0Ng*TezKz6YE$~pSCfBL6R=e-~fr>C=y7y0KO zj{g4J-QS)bZk~2Wos*dtjXoT$Z(pr`y<0!Ny1Ku8_jL2PUA-Ot>b`qeZ6CYuxE7<} zBJ_g~M?bFq{?uE4J?c!o3H$SUz1w`fOPB<6&;RJ1u|vDhzpnak`bV939t5Ma$Q!YP zKRHLQg*3r0iy)eM{y%xQ}1NV z4m0Ig%l_DlWpUoauQ4zsd|-T zop`p4K+tcGj}Px&zyALH`>TTV_0`wSPoFn;udnZ~cCR-N?0^4$^&xNO=U+ek>L%Tv zuRlC|?H<4ViJka~pLq3f{RR3VZR~YTg7@BN6a{g7GM@P#%W{>EcRZi<5VOU0y}JJC z`*!oV2Ggcp_u(i`ykEl1K_c*#$eV&^3>@ap%b0t~cKvm;dt??X8ez>u!CAKqi_)<{)~mY z$YUeZR0H0!=U4hc4|x(UkX8faWjI=#=RkhTsKH)y&r+Nyd)$)Zam$C-qxF(;0-Q{D&N{Udv#a&K`e(_U;)mrsa-)>s7rwzydz$DMKSfxrRX_EjbAq3GPmlL(x_@)Ox_*6re{-EV<}2<(m*3WR zoyTv?ulP|mf!y2`Ar~f<|H@9Y!=E>go$EDo#@o#u^ULqw)(o}f(DWAH+44qq{8%1V ze_h=?t$F5g#j=pi-4g?EpYHB9cV9dA+s-#85t}SL3K=;23MLQ&_o~B%4Da&Mby%WR z=WhL79xk2xU)NjiwnDsz?fTcv{Zl?&zE0(25^cUzuMj6#d*9YK*RO=#yPXdmZp%z{ zhRa$^1z#|Z#W?ERKJ6YmpVu82IPCvl?zg~w|LX>-B)lbgh^K8htPRm^vN7*V>QtMh zM}@v7`XwqLtk!B&7|*;BJ}QjCud-~D{{ucfz3*^`Xdv}$Ej@`HWryCfKovWMm3Wh&aD8KGDEQj8uI;Hn_ zZll*CJpvJ6Zu@86HW&d)Ga`_xIVj!VxEH5B6@n{mpB^4N z>~>I@C}z_>@ZZ&Lx8Cx5Vd~JE942xVj^_T%UHw((oF(0N_nq~ZFYBwv&b=5=1?tPq z>MI*VUDj`ZF1%MrUz(rR+bK^;YiH@+Kh#9Oct65wEqg!R`5W`1^fvP^S?vF|x_R9F zxt0^jm$9gyUZv8jE?R>V9&4gsoDgBPR-KRsFtitDbDlf~ry0ie=4vIfgESdo>B{wn zhhGS@tGiO*HByUb5_o%^e+r!AXDyy}Fd$%kB&=V?%JmYrC0m%c7#G@D$KRSr|O zAg>1~IfNqFcw(8?{S9l5rw^|>lQcES=0Kl+>wqi63ZlvJs%zOC-Q@|oZ65z-rWpW~gIGWj4^dgNcYkR6uFc3T+iZ#2;_ zgB@YDRtNk1a^jJ1IrFER-MVwRxn_yS4hv2NsATh?dJYEn*{>( z{nO*a)8oHZxbn-tZN7fv5hk4H8w9m%dvBZaDu>%G)4Am3`DUj`(?YOM~)VCs#>)B)+;r0Y040Zs1*rNpIlvNYOO z440nD=6}4J_~)V`!2Wl;*>3OQp2Kb|fPlgyyYan-o6OTLFDLA{Pj6s+vTNC$Mcj;2 zNJ_rj+&T=e#_;fkK5*7J1|QYW0U=I(i&y~?B>9{u)%L` zDZcahN!&UsnH+G+l&VgwcSFO7b2J_HWyqn-*6Nt^z1XJ?xvSOgYIU7X8{t+W4ZrNZ zmtMziHxDqaRNeCwm-zKV=-Xd5Wd#(k?&bHf47cIceo@}YcwuI{;}hG?m+k#6AH~iN zh8q0p?x1S^>*i|x6YN)934GoR>{JkUF<#c>GL9ps!=}X|I)DT>_umbb-O-S-oBddb))g2yszztH3;ZN`|9>=nqI*Vu7Y6TCA z*O(!=up#MjvdMd`S_Z*ffAw#e5gTG*(lSe=ovf5eT7 z3t!bi{4(86dYvtcRJw{D6%;xt(fXaBg8!oh1>hm>`TGeAiXP%u>Go0{6@C{1L2Z2%`XwIharBO@co0YM=uY{X zx`>Ug#*zU$4>zdtJQ>_daA>$+$>W}b*1KuIiGTMPB9Lg?Q-#M;& zY@uQ2xav}s>UH58{8VwLQ=(t|6k)Yi{S=;XXwOg8PdM!NQ`KV&4SuS+RHb@d_y#}K z+^hfMrx>fX>ZkC81Kv*?o^VLlrC*+KFnhv*%VYfk2j0rdBMy5hepg{Z(`v1T1$e{( z9~MfFI5+}j{)mHvc*Mb>KH}i~&p+beR333?V~3CCX8o5@hp}3#qYfT%z>m7rr&NzP zh?!zG?*sp}^@xKLmL73%^d52OygcRbI~)L-R%>|x(EYzLHV!Oop}jDh_Pjjh@VkD>Atg&6bbuazdC=i^Fy1w-*6MhN2OY?For4cL_UNgd2GSV>3>(lP1kI+@s=LOZUq_> zcLKGwU)WL9I%V)5aqkao7_Rpazf8B6UN#K>o}z+goAscea`=v=sNgGnPL{CI-#V~A zu(}zwF1gIsTL}#6J*zVE_Y)TsUBs`_?WUIHhI&NBmENAbWlvMNoPp02WVbpTBKC8F>rO)Z_vQ9wH$t zOKf%E{q4j3-TLk^nXYcvIVk%QL{j>+LbAX6l%41C2S$_g&DU=S!8OC_f>oVnfJL{9 z7#dKlNrruvm1+(Ok@t!&aC1y0X{lj?(Z?j@U%|)$^WsAn`;dNe;>7_tQ6b(BuPgpJ zfIJV+&K1a0_D_L)|2hYj0vLQeq|D9!?u^2S%>a&4`m}})dx5$~oj7D6^TW~8-SxWk z1&o78M+-U2kXcFo{^?P#O%>9x&4=%|hHd4Ad9m8CKK8Qx@r za%F+Eskvx@u6RXXQ&&y_R`qPfm8CKJ+0>O&fK^3XaplH2))qg<5>T7Er%ljxuc~b7 z&Kbh4s;xM*JjdFadUS@ct7|Jhorh<6j{hl?xKaZG?x`e-4m-MlpI2i@);I?@yL7FD#wHmwrp2^6?J)L+C1tm89|kftg3M#mt|Liz@Li zVSgMhf&(}xktOGUElRg}ooqiY97z%$0vsy+t00%lIFLaH+lde$OhcG58zCYiM7*5yh?Y#fD4JawcI9+A5v${~5H=YH)3fG1Z8hMW8L8wLuMS5efBZ2S%_d%0bauW(SgW)rMFoF9Yi_&6IsC8i zy+aBVb~8napmGwj?w-SsPYeAKB7ztW%Wlj;v`8+(!Y^wO=7bY(F5lhL!=3T$EcCrG z1YohuHb4IqizAhcu0pEDgULRr2o!SyH3L&29H|%-(p^LRR={<1Z*o6f z@4Hm%t|*`@(G9xmdR}@5tikJ5Y$duuca_(QsrsZ6Q{KNWPt3F9)uZXZ?<#Y#5-x&@DN1fBs#2F4{NUHmlr`KE`@1%DM86E z5nB~1dlWkP)<2#kvzGm_7su6W*iixGOh@&+;M>ja9Y0se2;Pro{&Esb7jbT@_sWe` z((#ViN>|xc+sRFqb;ART!neCDeTmjzSw8Pg&)9EfqTcYRvy46XD|^PEny4uDf>n-Z zcjHA=f6hbR#HQMen7vC>gL!$N%%HE}yCa{hm{z^*cia-@9-0_WpYFr4}dEME@AO zM@^nFsXNtZHVv%#)b;({n&?tW?G$K*OZ~6kiEQG_3Xjq>UE3ZNj>h&pYIA)<^(e*N zLWzFysG3Jw*(b@i4pF2yI-M4!@p?ca+})qP6SbglXn%*>(-W=Z^$H_>{x z-u?>j+UUUNk>HC>t81DQDIT0uqFd>`}Ca1TP|kIiZ*BEPmlL3Jhd@1 z*L(?&%D4XTGjmPb)t#%22<4((%R+=wJi)0%E4=8B9-%Z%S9c;;8QU7XC_OA!c$5zZ zc50QMvoMHi?j}p9a<#LY`_C+T6|Z$lU)w=`YFMGWjQr!3f`oBv9mTKH=&Z?#-(k{s zo@6ioxn9Hf9m_8;<8J~IuPs@3cE2&uZRvFSYL%Py_8osSZ2Cf^>wo31g%u*!isfn{ z8~R>hA0=A9J5}(#(Z*!V+lV=ONJX^KY_lG1TDWDQ9n-=MOR0_mt?;2g`VC9dbafZ% zDUl66M7v>y^8|a#3g;GXSBjgwjQr!>uKaUv+D({KGhu37#jn=ruC#~zZ>zhz^$ok@ z{7YJ1{&Ufd5I36cM6@uX&|Qhv?OQAwyH$n&3=P$%9u@ku-IRrZON;^NI6rsbr<0>XgE%>K;mek~+&VC1#PpfpSi`U?wN((8_ zFAloTK{c(|s)N4FtW@5lNAWv!Ax+cOUFaESR-3!}&H!0Jm8XqXkE?7g_x?)3u*XDReiqV>(M zg8xqAfgVy32{hYOL;{7YcWgz1`U<=(pvu{54yF)U=4o&))e5i-{Ub(#ddKjKG&*N* zBv2Sn#oN$X3VoDleea1Bo`AzHL+!;1_x7VEJOcz z(Lmif{4$LW+7k~NI!nde&|wOllxY1fP{Cg!!X9_;*og?&o7!}ysfjG} zG&omZVJ8{-$BPE4j^P(+bk3ewpzJ6WZ$oD(^iiVq&98#LM1no8-f1HeJl|&(#C!Mo z@mTfx{Ys7C5dPqci4+7AP7qF=WD-o0+G~Rp>fJ$R6m%iz zGN|5WWX8Y=II^MvvK;)y7cCf()~7A1bo|{!4SbH?w=yz9m*)5aPH}v} zKymz328z$66cncu6m%izGEf{}Ftp+Lf~hsf7j&&T{%pCRIDQ7lJATH1cl=xiywBwn zc&E!K=t9tCz&n1%KzIC%sU^qH=vs69>=q)j81R31%S|zX{<6B+Rni$-D9`Af9Qr`e)*5R7g9dxRLL*YUw7iKBsHN? zf9lDhe(FiQ6nRj6cdmG$Qj)ze?%>OjGapi+i-tQbzE9WTrdcW8T&MLuUD*ms09b>9xuQ)t)O^Y z9>oS~6U6*gc}Np*uvHV(U)hH;fl714h<}CwZ*#n3hWj&&_I3t)(>woDJx(J2K1`gW z3$RTae6GKj6J-LG<_JemF;+Eh#nIJc`vl?WDaNYGtvLFjd0hJPVw|U^Xq#48Dc+)t zvVu~1gtKQLyGpm>?&=Yqzi--1Yx@qbeBU)n>%H^1^i9h+j~8H@R#3e0nP7tk6Hsn% z0&LX;_HJ*O5&sMWzMb)|j&hjc{tTm?JlHkAcf5LlPaov!|3iK27#j-5?N~!!AKaGeUb!WXn+!1yrUW|x+OipL z)@}HhutNU*D_IY*Q4DPc4!3NF-RAGoW-@{y8plQYksh=q1m3bKK0iSuv~COWB`LHi zINY)&Ztk!Ct2IO9wL)1F*z*PZ*&0l7C|m5PQ?XSyb*LR&RME30x1eXqGJrv%wmx)qOa80VTRb4rk1 zty}TgCC87$VDG#Am; zD9dWMG97K0gzN5{QKKv?-pY(ru?M=UjOpeX722vHTG>8xC>1r`Kchn1wSvV|G(yyy z1jeq)ZPc5ZRK^6n=ZJUhgu8|~kBWBB5$xKDb$haJR|IZ+{R4EJLEAqHH@0mwwv9GU zW7~FPqp@w+=U)4sduBGkHU{=jKDoy) zS5M>g&AM|Ipu|ekjWog$Ks#u&HB|eGYcUMRbJaF|MxVo77B45ma}`kYKHIx2i#cG! ztYQ5*&3auBz1c<@!$%*Oe|;F984Bn#dd2Rt!t6M3e&*9vtc^J}aKJEu1sb>Qek`;6m-wIW%TCt_ap-H;jeVP;)F1v220qrwjN#0W5$6adDys?1svcs`kL07Fmk9RbxvxBi+LFK4F7fJv&_+zGc zj{|e6Dcu{ZE%*P2{fCwC^NK4;*Ql|wn1*V5(orcJ45K*q>tku;M_lZI#{7*-+wady zV2!^E!hvytYv*^kM5sHb`G1egH|sQtmNi0^1{K!j<WZU(5fO}~YK zHg+W8SnSxwNaOsmjiCXKmddlckz3-Td|=w&`~=*M42mygRG!}*YOVZL8^&!K<$M*! z6~UhH-@PEuDC>b%@b%3Y=lZ-e)5Av|68PS0nMlas(MnYEDJ{PMF_8TY#0`_{x@=xn zdrUCdY2gRsS6{C1;dKZvWDma1hwnE=j`gk2m&eC%cLeWWCQ}v{p9uQ@tamx;O6p<7 zcb~zBb>2)q<{2a7fC_y>rU3ZBPb`_fS!aGuZF>byIUsKKz{HP->ZD4W7Hp#}4_<lXyzSt>sx34g9OM|<7kbr8&&^}lvQGx3rm$ayUgL@!DVM}aWC}_oG7NLhgw}^h zig;O&ZkZt^063$nOc1ffmKZEPS?iAG5;kY`&aHtwTg>w zfO)s>%42|tMfk>-&r^gHE5En40S57}#j}kQApNBPQq&+x^2APG9a*?ep2bh#T z!obzGFt;p5#WH6KD_xczn6|pOm|2nrD`8h>*rl$W_{=b)Up^UbLNVB(KBzqIUct9q zsAf1j;W4&0;++uGL)qE7Bk@fJ^ zJ}KvyJ~y)3pgTgguswU{mw=-$+877yZiqvR09b^o|D)}0Sj9&(V6SI0H_^bDV)9a< zqF>p)CI~xBl+mTo>Me@S!~Qn*Ln;lNR_Woz5*~i(Vc}ATvXd?iPtpz)G_Wu+8%Eaz zmW&t#XaiEB;%JXZIZFKiC`xHE zJI;rQqp>s;B3)^<1w?X5)SMJ?Wqtx>v~p=`x&yf_fRq7QiZNDks5-IWPPVLS&yI#V z?N|b}QIlq@Ix9OgmR_}Q{3m{BaVT6?tPn>ngN6quN>|&4fy0k`}s3}Tm z2J{M$bLRiQR}5amWpB+dg+e5m(nNExg~R*^B07#VW`4+H3|zv%OD2;}w8JcD57mzs zOu=Nll+-_g`$UvNb=QR*#qeRBWrmm?tPEagX~TD4Ma0Mr3W`7LS)mNUxQ&Dqh&I4K z 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 dKq{NWxk$g??1|B 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%0A$XEPzjn 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